diff --git a/.github/workflows/push-images.yaml b/.github/workflows/push-images.yaml index 9bd9da4f1..6f1acb095 100644 --- a/.github/workflows/push-images.yaml +++ b/.github/workflows/push-images.yaml @@ -2,14 +2,12 @@ name: Push images on: push: - branches: - master workflow_dispatch: env: IMAGE_NAME: pypsa/eur-dev-env - BASE_ENV: envs/linux-64.lock.yaml jobs: push-image: @@ -20,9 +18,9 @@ jobs: with: fetch-depth: 0 - - name: 'Get relevant env' + - name: 'Get last commit that changed pixi env' run: | - hash_last_changed=$(git log -1 --pretty=format:%H -- ${{ env.BASE_ENV }}) + hash_last_changed=$(git log -1 --pretty=format:%H -- pixi.toml pixi.lock) echo "hash_last_changed=$hash_last_changed" >> $GITHUB_ENV - name: 'Login to GitHub Container Registry' diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 58a592b18..95f105b86 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -63,7 +63,7 @@ jobs: token: ${{ steps.generate-token.outputs.token }} - name: Setup Pixi - uses: prefix-dev/setup-pixi@v0.9.3 + uses: prefix-dev/setup-pixi@v0.9.4 with: pixi-version: v0.59.0 cache: true diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 32cd6363c..241031ac2 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -1,4 +1,4 @@ -name: Test workflows +name: Test on: push: @@ -17,8 +17,30 @@ concurrency: cancel-in-progress: true jobs: - run-tests: - name: OS + unit-tests: + name: Unit + runs-on: ubuntu-latest + + defaults: + run: + shell: bash -l {0} + + steps: + - uses: actions/checkout@v6 + + - name: Setup Pixi + uses: prefix-dev/setup-pixi@v0.9.4 + with: + pixi-version: v0.59.0 + cache: true + cache-write: ${{ github.event_name == 'push' && github.ref_name == 'master' }} + + - name: Run unit tests + run: | + pixi run unit-tests + + integration-tests: + name: Integration runs-on: ${{ matrix.os }}-latest strategy: fail-fast: false @@ -43,7 +65,6 @@ jobs: - 'data/**' - 'Snakefile' - 'config/**' - - 'test/**' - 'pixi.toml' - 'pixi.lock' - '.github/workflows/test.yaml' @@ -58,51 +79,56 @@ jobs: sudo docker builder prune -a --force echo "Final disk space" 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' - uses: prefix-dev/setup-pixi@v0.9.3 + 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 cache: true - # Do not cache in branches - cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} + 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 and cutouts + 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 - cutouts - key: data-cutouts-${{ env.WEEK }} + path: data + key: data-${{ env.WEEK }}-${{ env.VERSIONS_HASH }} + + - uses: actions/cache@v5 + 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' || 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" run: | pixi run integration-tests - - name: Run unit tests - if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' - run: | - pixi run unit-tests - - name: Upload artifacts if: always() uses: actions/upload-artifact@v6 diff --git a/.github/workflows/update-lockfile.yaml b/.github/workflows/update-lockfile.yaml index 31d264773..56342220b 100644 --- a/.github/workflows/update-lockfile.yaml +++ b/.github/workflows/update-lockfile.yaml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v6 - name: Setup Pixi - uses: prefix-dev/setup-pixi@v0.9.3 + uses: prefix-dev/setup-pixi@v0.9.4 with: pixi-version: v0.59.0 diff --git a/.gitignore b/.gitignore index fbbf13ac2..731b37d56 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ gurobi.log /cutouts /tmp doc/_build +_build /scripts/old /scripts/create_scenarios.py @@ -65,6 +66,8 @@ d1gam3xoknrgr2.cloudfront.net/ *~ +*.egg-info + *.pyc *.xlsx diff --git a/.pixi/config.toml b/.pixi/config.toml index b5f21c162..addb66df4 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 b0bc9781f..2600cfed0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,8 +1,7 @@ # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 - -exclude: "^LICENSES" +exclude: "^LICENSES|^config/schema\\.json$|^config/config\\.default\\.yaml$" ci: autoupdate_schedule: quarterly @@ -11,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"] @@ -31,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,GuD,Dezember,Juni,Juli,Produktion,WorstCase'] # 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,GuD,Dezember,Juni,Juli,Produktion,WorstCase'] # 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 a07a651f9..8f87ea8e0 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -28,7 +28,7 @@ preferred-citation: references: - 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 59aa9b327..c4832758b 100644 --- a/README.md +++ b/README.md @@ -121,9 +121,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. +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). The model is described in the [documentation](https://pypsa-eur.readthedocs.io) and in the paper @@ -144,64 +146,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 diff --git a/REUSE.toml b/REUSE.toml index fcedb91a7..27f8c4ff9 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -5,7 +5,6 @@ SPDX-PackageDownloadLocation = "https://github.com/pypsa/pypsa-eur" [[annotations]] path = [ - "doc/configtables/*", "doc/data_inventory.csv", "doc/img/*", "test/test_data/*", @@ -20,7 +19,9 @@ path = [ "pixi.lock", "matplotlibrc", "envs/*.pin.txt", - "envs/environment.yaml" + "envs/environment.yaml", + "config/config.default.yaml", + "config/schema.default.json" ] SPDX-FileCopyrightText = "The PyPSA-Eur Authors" SPDX-License-Identifier = "CC0-1.0" @@ -41,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 77f0c341d..9f648a3d0 100644 --- a/Snakefile +++ b/Snakefile @@ -7,8 +7,11 @@ import yaml import sys from os.path import normpath, exists, join from shutil import copyfile, move, rmtree, unpack_archive +from dotenv import load_dotenv from snakemake.utils import min_version +load_dotenv() + min_version("8.11") from scripts._helpers import ( @@ -16,7 +19,9 @@ from scripts._helpers import ( get_scenarios, get_shadow, path_provider, + script_path_provider, ) +from scripts.lib.validation.config import validate_config configfile: "config/config.default.yaml" @@ -24,6 +29,8 @@ configfile: "config/plotting.default.yaml" configfile: "config/config.de.yaml" +validate_config(config) + run = config["run"] scenarios = get_scenarios(run) RDIR = get_rdir(run) @@ -37,6 +44,7 @@ exclude_from_shared = run["shared_resources"]["exclude"] logs = path_provider("logs/", RDIR, shared_resources, exclude_from_shared) benchmarks = path_provider("benchmarks/", RDIR, shared_resources, exclude_from_shared) resources = path_provider("resources/", RDIR, shared_resources, exclude_from_shared) +scripts = script_path_provider(Path(workflow.snakefile).parent) RESULTS = "results/" + RDIR @@ -85,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"), @@ -282,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; }} @@ -415,20 +422,19 @@ if (ARIADNE_DATABASE := dataset_version("ariadne_database"))["source"] in ["arch if (ARIADNE_TEMPLATE := dataset_version("ariadne_template"))["source"] in [ "primary", + "archive", ]: rule retrieve_ariadne_template: input: - storage( - "https://github.com/iiasa/ariadne-intern-workflow/raw/main/attachments/2025-01-27_template_Ariadne.xlsx", - ), + storage(ARIADNE_TEMPLATE["url"]), output: "data/template_ariadne_database.xlsx", run: move(input[0], output[0]) -if (OPEN_MASTR := dataset_version("open_mastr"))["source"] in ["primary"]: +if (OPEN_MASTR := dataset_version("open_mastr"))["source"] in ["primary", "archive"]: rule retrieve_open_mastr: input: @@ -442,22 +448,35 @@ if (OPEN_MASTR := dataset_version("open_mastr"))["source"] in ["primary"]: unpack_archive(input[0], params[0]) -if (EGON := dataset_version("egon"))["source"] in ["primary"]: +if (EGON := dataset_version("egon"))["source"] in ["build"]: + + rule retrieve_egon_data: + params: + url=EGON["url"], + folder=EGON["folder"], + output: + spatial=f"{EGON['folder']}/demandregio_spatial_2018.json", + mapping=f"{EGON['folder']}/mapping_technologies.json", + shell: + """ + mkdir -p {params.folder} + curl -o {output.spatial} "{params.url}?id_spatial=5&year=2018" + curl -o {output.mapping} "{params.url}_description?id_spatial=5" + """ + + +if (EGON := dataset_version("egon"))["source"] in ["archive"]: rule retrieve_egon_data: input: - spatial=storage( - f"{EGON['url']}?id_spatial=5&year=2018", - ), - mapping=storage( - f"{EGON['url']}_description?id_spatial=5", - ), + spatial=storage(f"{EGON['url']}/demandregio_spatial_2018.json"), + mapping=storage(f"{EGON['url']}/mapping_technologies.json"), output: - spatial="data/egon/demandregio_spatial_2018.json", - mapping="data/egon/mapping_technologies.json", + spatial=f"{EGON['folder']}/demandregio_spatial_2018.json", + mapping=f"{EGON['folder']}/mapping_technologies.json", run: - move(input.spatial, output.spatial) - move(input.mapping, output.mapping) + copy2(input["spatial"], output["spatial"]) + copy2(input["mapping"], output["mapping"]) rule build_exogenous_mobility_data: @@ -487,12 +506,12 @@ rule build_exogenous_mobility_data: rule build_egon_data: input: - demandregio_spatial="data/egon/demandregio_spatial_2018.json", + demandregio_spatial=f"{EGON['folder']}/demandregio_spatial_2018.json", mapping_38_to_4=storage( "https://ffeopendatastorage.blob.core.windows.net/opendata/mapping_from_4_to_38.json", keep_local=True, ), - mapping_technologies="data/egon/mapping_technologies.json", + mapping_technologies=f"{EGON['folder']}/mapping_technologies.json", nuts3=resources("nuts3_shapes.geojson"), output: heating_technologies_nuts3=resources("heating_technologies_nuts3.geojson"), @@ -649,7 +668,6 @@ rule modify_prenetwork: ), shipping_oil_efficiency=config_provider("sector", "shipping_oil_efficiency"), shipping_methanol_share=config_provider("sector", "shipping_methanol_share"), - mwh_meoh_per_tco2=config_provider("sector", "MWh_MeOH_per_tCO2"), scale_capacity=config_provider("scale_capacity"), bev_charge_rate=config_provider("sector", "bev_charge_rate"), bev_energy=config_provider("sector", "bev_energy"), @@ -920,7 +938,7 @@ rule plot_ariadne_variables: rule ariadne_all: input: - expand(RESULTS + "graphs/costs.svg", run=config_provider("run", "name")), + expand(RESULTS + "graphs/costs.pdf", run=config_provider("run", "name")), # expand( # RESULTS + "ariadne/capacity_detailed.png", # run=config_provider("run", "name"), diff --git a/config/config.de.yaml b/config/config.de.yaml index a63f23cb6..42e014928 100644 --- a/config/config.de.yaml +++ b/config/config.de.yaml @@ -4,7 +4,7 @@ # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#run run: - prefix: 20260219_wy2013 + prefix: 20260220_merge_v2026.02 name: # - ExPol - KN2045_Mix @@ -423,6 +423,7 @@ solving: runtime: 12h mem_mb: 70000 #30000 is OK for 22 nodes, 365H; 140000 for 22 nodes 3H; 400000 for 44 nodes 3H options: + custom_extra_functionality: "../scripts/pypsa-de/additional_functionality.py" assign_all_duals: true load_shedding: false skip_iterations: true # settings for post-discretization: false @@ -471,7 +472,7 @@ solving: offwind: DE: 2020: 7.8 - 2025: 12 + 2025: 9.7 # https://www.offshore-stiftung.de/de/status-quo-offshore-windenergie.php 2030: 22 # optimistic upper ceiling to "Mittelfristprognose zur deutschlandweiten Stromerzeugung" 2035: 50 # Planned projects until 2035 (offshore_connection_points.csv) -1.3 GW for potential delays 2040: 65 # Planned projects until 2040 -1.5 GW for potential retirments @@ -658,11 +659,9 @@ plotting: electricity: renewable_carriers: [solar, solar-hsat, onwind, offwind-ac, offwind-dc, hydro] # removed offwind-float - powerplants_filter: (DateOut >= 2024 or DateOut != DateOut) and not (Country == "DE" and Set == "CHP") + powerplants_filter: (DateOut > 2025 or DateOut != DateOut) and not (Country == "DE" and Set == "CHP") and (DateIn < 2026 or DateIn != DateIn) custom_powerplants: true custom_file: resources/german_chp.csv - estimate_renewable_capacities: - year: 2024 H2_plants: enable: EU # allowed values: false, DE, EU start: 2030 # should be < force @@ -718,11 +717,11 @@ data: source: archive version: latest ariadne_template: - source: primary + source: archive version: latest open_mastr: - source: primary + source: archive version: latest egon: - source: primary + source: archive version: latest diff --git a/config/config.default.yaml b/config/config.default.yaml index a7ed4042f..93b99e454 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -1,15 +1,19 @@ -# SPDX-FileCopyrightText: Contributors to PyPSA-Eur -# -# SPDX-License-Identifier: CC0-1.0 +%YAML 1.1 +--- +# yaml-language-server: $schema=./schema.default.json -# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#top-level-configuration -version: v2025.07.0 +# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#version +version: v2026.02.0 + +# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#tutorial tutorial: false +# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#logging logging: level: INFO format: "%(levelname)s:%(name)s:%(message)s" +# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#remote remote: ssh: "" path: "" @@ -31,14 +35,13 @@ run: foresight: overnight # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#scenario -# Wildcard docs in https://pypsa-eur.readthedocs.io/en/latest/wildcards.html scenario: clusters: - 50 opts: - - '' + - "" sector_opts: - - '' + - "" planning_horizons: - 2050 @@ -83,103 +86,134 @@ countries: snapshots: start: "2013-01-01" end: "2014-01-01" - inclusive: 'left' + inclusive: left # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#enable enable: drop_leap_day: true -# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#co2-budget +# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#co2_budget co2_budget: - 2020: 0.720 # average emissions of 2019 to 2021 relative to 1990, CO2 excl LULUCF, EEA data, European Environment Agency. (2023a). Annual European Union greenhouse gas inventory 1990–2021 and inventory report 2023 - CRF Table. https://unfccc.int/documents/627830 - 2025: 0.648 # With additional measures (WAM) projection, CO2 excl LULUCF, European Environment Agency. (2023e). Member States’ greenhouse gas (GHG) emission projections 2023. https://www.eea.europa.eu/en/datahub/datahubitem-view/4b8d94a4-aed7-4e67-a54c-0623a50f48e8 - 2030: 0.450 # 55% reduction by 2030 (Ff55) - 2035: 0.250 - 2040: 0.100 # 90% by 2040 - 2045: 0.050 - 2050: 0.000 # climate-neutral by 2050 + 2020: 0.72 + 2025: 0.648 + 2030: 0.45 + 2035: 0.25 + 2040: 0.1 + 2045: 0.05 + 2050: 0.0 # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#electricity electricity: - voltages: [220., 300., 330., 380., 400., 500., 750.] + voltages: + - 220.0 + - 300.0 + - 330.0 + - 380.0 + - 400.0 + - 500.0 + - 750.0 base_network: osm gaslimit_enable: false gaslimit: false co2limit_enable: false - co2limit: 7.75e+7 - co2base: 1.487e+9 - + co2limit: 77500000.0 + co2base: 1487000000.0 operational_reserve: activate: false epsilon_load: 0.02 epsilon_vres: 0.02 contingency: 4000 - max_hours: battery: 6 + "li-ion": 6 + lfp: 6 + vanadium: 10 + lair: 12 + pair: 24 + "iron-air": 100 H2: 168 - extendable_carriers: - Generator: [solar, solar-hsat, onwind, offwind-ac, offwind-dc, offwind-float, OCGT, CCGT] - StorageUnit: [] # battery, H2 - Store: [battery, H2] - Link: [] # H2 pipeline - - powerplants_filter: (DateOut >= 2024 or DateOut != DateOut) and not (Country == 'Germany' and Fueltype == 'Nuclear') + Generator: + - solar + - "solar-hsat" + - onwind + - "offwind-ac" + - "offwind-dc" + - "offwind-float" + - OCGT + - CCGT + StorageUnit: [] + Store: + - battery + - H2 + Link: [] + powerplants_filter: "(DateOut > 2025 or DateOut != DateOut) and (DateIn < 2026 or DateIn != DateIn)" custom_powerplants: false everywhere_powerplants: [] - - conventional_carriers: [nuclear, oil, OCGT, CCGT, coal, lignite, geothermal, biomass] - renewable_carriers: [solar, solar-hsat, onwind, offwind-ac, offwind-dc, offwind-float, hydro] - + conventional_carriers: + - nuclear + - oil + - OCGT + - CCGT + - coal + - lignite + - geothermal + - waste + - biomass + renewable_carriers: + - solar + - "solar-hsat" + - onwind + - "offwind-ac" + - "offwind-dc" + - "offwind-float" + - 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 + Offshore: "offwind-ac" Onshore: onwind PV: solar - + estimate_battery_capacities: false autarky: enable: false by_country: false - transmission_limit: vopt # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#atlite atlite: - default_cutout: europe-2013-sarah3-era5 + default_cutout: "europe-2013-sarah3-era5" nprocesses: 16 show_progress: false + plot_availability_matrix: false cutouts: - # use 'base' to determine geographical bounds and time span from config - # base: - # module: era5 - europe-2013-sarah3-era5: - module: [sarah, era5] # in priority order - x: [-12., 42.] - y: [33., 72.] - dx: 0.3 - dy: 0.3 - time: ['2013', '2013'] - # prepare_kwargs: - # features: [] - # sarah_dir: "" - europe-1940-2024-era5: + "europe-1940-2024-era5": module: era5 - x: [-12., 42.] - y: [33., 72.] + x: + - -12.0 + - 42.0 + 'y': + - 33.0 + - 72.0 dx: 0.3 dy: 0.3 - time: ['1940', '2024'] + time: + - '2013' + - '2013' chunks: time: 500 prepare_kwargs: - features: ['temperature', 'height', 'runoff'] + features: + - temperature + - height + - runoff + sarah_dir: monthly_requests: true - tmpdir: "./cutouts_tmp/" + tmpdir: ./cutouts_tmp/ # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#renewable renewable: @@ -192,19 +226,42 @@ renewable: add_cutout_windspeed: true resource_classes: 1 capacity_per_sqkm: 3 - # correction_factor: 0.93 + correction_factor: 1.0 corine: - grid_codes: [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32] - distance: 1000 - distance_grid_codes: [1, 2, 3, 4, 5, 6] + grid_codes: + - 12 + - 13 + - 14 + - 15 + - 16 + - 17 + - 18 + - 19 + - 20 + - 21 + - 22 + - 23 + - 24 + - 25 + - 26 + - 27 + - 28 + - 29 + - 31 + - 32 + distance: 1000.0 + distance_grid_codes: + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 luisa: false - # grid_codes: [1111, 1121, 1122, 1123, 1130, 1210, 1221, 1222, 1230, 1241, 1242] - # distance: 1000 - # distance_grid_codes: [1111, 1121, 1122, 1123, 1130, 1210, 1221, 1222, 1230, 1241, 1242] natura: true excluder_resolution: 100 - clip_p_max_pu: 1.e-2 - offwind-ac: + clip_p_max_pu: 0.01 + "offwind-ac": cutout: default resource: method: wind @@ -214,16 +271,18 @@ renewable: resource_classes: 1 capacity_per_sqkm: 2 correction_factor: 0.8855 - corine: [44, 255] - luisa: false # [0, 5230] + corine: false + luisa: false natura: true ship_threshold: 400 - max_depth: 60 - max_shore_distance: 30000 + max_depth: 60.0 + min_depth: + max_shore_distance: 30000.0 + min_shore_distance: excluder_resolution: 200 - clip_p_max_pu: 1.e-2 - landfall_length: 20 - offwind-dc: + clip_p_max_pu: 0.01 + landfall_length: 20.0 + "offwind-dc": cutout: default resource: method: wind @@ -233,16 +292,18 @@ renewable: resource_classes: 1 capacity_per_sqkm: 2 correction_factor: 0.8855 - corine: [44, 255] - luisa: false # [0, 5230] + corine: false + luisa: false natura: true ship_threshold: 400 - max_depth: 60 - min_shore_distance: 30000 + max_depth: 60.0 + min_depth: + max_shore_distance: + min_shore_distance: 30000.0 excluder_resolution: 200 - clip_p_max_pu: 1.e-2 - landfall_length: 30 - offwind-float: + clip_p_max_pu: 0.01 + landfall_length: 30.0 + "offwind-float": cutout: default resource: method: wind @@ -250,57 +311,107 @@ renewable: smooth: false add_cutout_windspeed: true resource_classes: 1 - # ScholzPhd Tab 4.3.1: 10MW/km^2 capacity_per_sqkm: 2 correction_factor: 0.8855 - # proxy for wake losses - # from 10.1016/j.energy.2018.08.153 - # until done more rigorously in #153 - corine: [44, 255] + corine: false + luisa: false natura: true ship_threshold: 400 + max_depth: 1000.0 + min_depth: 60.0 + max_shore_distance: + min_shore_distance: excluder_resolution: 200 - min_depth: 60 - max_depth: 1000 - clip_p_max_pu: 1.e-2 - landfall_length: 40 + clip_p_max_pu: 0.01 + landfall_length: 40.0 solar: cutout: default resource: method: pv panel: CSi orientation: - slope: 35. - azimuth: 180. + slope: 35.0 + azimuth: 180.0 + tracking: resource_classes: 1 capacity_per_sqkm: 5.1 - # correction_factor: 0.854337 - corine: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 26, 31, 32] - luisa: false # [1111, 1121, 1122, 1123, 1130, 1210, 1221, 1222, 1230, 1241, 1242, 1310, 1320, 1330, 1410, 1421, 1422, 2110, 2120, 2130, 2210, 2220, 2230, 2310, 2410, 2420, 3210, 3320, 3330] + correction_factor: 1.0 + corine: + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + - 16 + - 17 + - 18 + - 19 + - 20 + - 26 + - 31 + - 32 + luisa: false natura: true excluder_resolution: 100 - clip_p_max_pu: 1.e-2 - solar-hsat: + clip_p_max_pu: 0.01 + "solar-hsat": cutout: default resource: method: pv panel: CSi orientation: - slope: 35. - azimuth: 180. + slope: 35.0 + azimuth: 180.0 tracking: horizontal resource_classes: 1 - capacity_per_sqkm: 4.43 # 15% higher land usage acc. to NREL - corine: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 26, 31, 32] - luisa: false # [1111, 1121, 1122, 1123, 1130, 1210, 1221, 1222, 1230, 1241, 1242, 1310, 1320, 1330, 1410, 1421, 1422, 2110, 2120, 2130, 2210, 2220, 2230, 2310, 2410, 2420, 3210, 3320, 3330] + capacity_per_sqkm: 4.43 + correction_factor: 1.0 + corine: + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + - 16 + - 17 + - 18 + - 19 + - 20 + - 26 + - 31 + - 32 + luisa: false natura: true excluder_resolution: 100 - clip_p_max_pu: 1.e-2 + clip_p_max_pu: 0.01 hydro: cutout: default - carriers: [ror, PHS, hydro] + carriers: + - ror + - PHS + - hydro PHS_max_hours: 6 - hydro_max_hours: energy_capacity_totals_by_country # one of energy_capacity_totals_by_country, estimate_by_large_installations or a float + hydro_max_hours: energy_capacity_totals_by_country flatten_dispatch: false flatten_dispatch_buffer: 0.2 clip_min_inflow: 1.0 @@ -312,31 +423,32 @@ renewable: conventional: unit_commitment: false dynamic_fuel_price: false + fuel_price_rolling_window: 6 nuclear: - p_max_pu: data/nuclear_p_max_pu.csv # float of file name + p_max_pu: data/nuclear_p_max_pu.csv # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#lines lines: types: - 63.: 94-AL1/15-ST1A 20.0 - 66.: 94-AL1/15-ST1A 20.0 - 90.: 184-AL1/30-ST1A 110.0 - 110.: 184-AL1/30-ST1A 110.0 - 132.: 243-AL1/39-ST1A 110.0 - 150.: 243-AL1/39-ST1A 110.0 - 220.: Al/St 240/40 2-bundle 220.0 - 300.: Al/St 240/40 3-bundle 300.0 - 330.: Al/St 240/40 3-bundle 300.0 - 380.: Al/St 240/40 4-bundle 380.0 - 400.: Al/St 240/40 4-bundle 380.0 - 500.: Al/St 240/40 4-bundle 380.0 - 750.: Al/St 560/50 4-bundle 750.0 + 63.0: "94-AL1/15-ST1A 20.0" + 66.0: "94-AL1/15-ST1A 20.0" + 90.0: "184-AL1/30-ST1A 110.0" + 110.0: "184-AL1/30-ST1A 110.0" + 132.0: "243-AL1/39-ST1A 110.0" + 150.0: "243-AL1/39-ST1A 110.0" + 220.0: "Al/St 240/40 2-bundle 220.0" + 300.0: "Al/St 240/40 3-bundle 300.0" + 330.0: "Al/St 240/40 3-bundle 300.0" + 380.0: "Al/St 240/40 4-bundle 380.0" + 400.0: "Al/St 240/40 4-bundle 380.0" + 500.0: "Al/St 240/40 4-bundle 380.0" + 750.0: "Al/St 560/50 4-bundle 750.0" s_max_pu: 0.7 s_nom_max: .inf - max_extension: 20000 #MW + max_extension: 20000 length_factor: 1.25 reconnect_crimea: true - under_construction: keep # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity for lines in grid extract + under_construction: keep dynamic_line_rating: activate: false cutout: default @@ -349,9 +461,9 @@ links: p_max_pu: 1.0 p_min_pu: -1.0 p_nom_max: .inf - max_extension: 30000 #MW + max_extension: 30000 length_factor: 1.25 - under_construction: keep # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity for lines in grid extract + under_construction: keep # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transmission_projects transmission_projects: @@ -367,36 +479,30 @@ transmission_projects: - under_construction - in_permitting - confirmed - #- planned_not_yet_permitted - #- under_consideration - new_link_capacity: zero #keep or zero + new_link_capacity: zero # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transformers transformers: x: 0.1 - s_nom: 2000. - type: '' + s_nom: 2000.0 + type: "" -# docs-load in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#load +# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#load load: fill_gaps: enable: true - interpolate_limit: 3 + interpolate_limit: 6 time_shift_for_large_gaps: 1w manual_adjustments: true scaling_factor: 1.0 fixed_year: false supplement_synthetic: true + substation_only: true distribution_key: gdp: 0.6 population: 0.4 -# docs -# TODO: PyPSA-Eur merge issue in prepare_sector_network.py -# regulate what components with which carriers are kept from PyPSA-Eur; -# some technologies are removed because they are implemented differently -# (e.g. battery or H2 storage) or have different year-dependent costs -# in PyPSA-Eur-Sec +# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#pypsa_eur pypsa_eur: Bus: - AC @@ -404,10 +510,10 @@ pypsa_eur: - DC Generator: - onwind - - offwind-ac - - offwind-dc - - offwind-float - - solar-hsat + - "offwind-ac" + - "offwind-dc" + - "offwind-float" + - "solar-hsat" - solar - ror - nuclear @@ -418,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 @@ -430,19 +536,19 @@ biomass: solid biomass: - Agricultural waste - Fuelwood residues - - Secondary Forestry residues - woodchips + - "Secondary Forestry residues - woodchips" - Sawdust - Residues from landscape care not included: - Sugar from sugar beet - Rape seed - - "Sunflower, soya seed " + - 'Sunflower, soya seed ' - Bioethanol barley, wheat, grain maize, oats, other cereals and rye - Miscanthus, switchgrass, RCG - Willow - Poplar - FuelwoodRW - - C&P_RW + - "C&P_RW" biogas: - Manure solid, liquid - Sludge @@ -465,19 +571,45 @@ biomass: 2045: 1 2050: 1 - -# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#solar-thermal +# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#solar_thermal solar_thermal: - clearsky_model: simple # should be "simple" or "enhanced"? + clearsky_model: simple orientation: - slope: 45. - azimuth: 180. + slope: 45.0 + azimuth: 180.0 cutout: default -# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#existing-capacities +# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#existing_capacities existing_capacities: - grouping_years_power: [1920, 1950, 1955, 1960, 1965, 1970, 1975, 1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2020, 2025] - grouping_years_heat: [1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2019] # heat grouping years >= baseyear will be ignored + grouping_years_power: + - 1920 + - 1950 + - 1955 + - 1960 + - 1965 + - 1970 + - 1975 + - 1980 + - 1985 + - 1990 + - 1995 + - 2000 + - 2005 + - 2010 + - 2015 + - 2020 + - 2025 + - 2030 + grouping_years_heat: + - 1980 + - 1985 + - 1990 + - 1995 + - 2000 + - 2005 + - 2010 + - 2015 + - 2019 threshold_capacity: 10 default_heating_lifetime: 20 solar_rooftop_ratio: 0.5 @@ -544,13 +676,13 @@ sector: recovery_factor: 0.6 marginal_cost_charger: 0.035 ignore_missing_regions: false - heat_source_cooling: 6 #K + heat_source_cooling: 6 heat_pump_cop_approximation: refrigerant: ammonia - heat_exchanger_pinch_point_temperature_difference: 5 #K + heat_exchanger_pinch_point_temperature_difference: 5 isentropic_compressor_efficiency: 0.8 heat_loss: 0.0 - min_delta_t_lift: 10 #K + min_delta_t_lift: 10 limited_heat_sources: geothermal: constant_temperature_celsius: 65 @@ -593,8 +725,8 @@ sector: heat_demand_cutout: default bev_dsm_restriction_value: 0.8 bev_dsm_restriction_time: 7 - transport_heating_deadband_upper: 20. - transport_heating_deadband_lower: 15. + transport_heating_deadband_upper: 20.0 + transport_heating_deadband_lower: 15.0 ICE_lower_degree_factor: 0.375 ICE_upper_degree_factor: 1.6 EV_lower_degree_factor: 0.98 @@ -631,16 +763,13 @@ sector: 2040: 0.3 2045: 0.15 2050: 0 - transport_electric_efficiency: 53.19 # 1 MWh_el = 53.19*100 km - transport_fuel_cell_efficiency: 30.003 # 1 MWh_H2 = 30.003*100 km - transport_ice_efficiency: 16.0712 # 1 MWh_oil = 16.0712 * 100 km + transport_electric_efficiency: 53.19 + transport_fuel_cell_efficiency: 30.003 + transport_ice_efficiency: 16.0712 agriculture_machinery_electric_share: 0.5 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 @@ -667,16 +796,16 @@ sector: 2045: 0.2 2050: 0 shipping_methanol_efficiency: 0.46 - shipping_oil_efficiency: 0.40 - aviation_demand_factor: 1. + shipping_oil_efficiency: 0.4 + aviation_demand_factor: 1.0 land_transport_demand_factor: 1. - HVC_demand_factor: 1. + HVC_demand_factor: 1.0 time_dep_hp_cop: true - heat_pump_sink_T_individual_heating: 55. + heat_pump_sink_T_individual_heating: 55.0 reduce_space_heat_exogenously: true reduce_space_heat_exogenously_factor: - 2020: 0.10 # this results in a space heat demand reduction of 10% - 2025: 0.09 # first heat demand increases compared to 2020 because of larger floor area per capita + 2020: 0.1 + 2025: 0.09 2030: 0.09 2035: 0.11 2040: 0.16 @@ -695,16 +824,16 @@ sector: oil_boilers: false biomass_boiler: true overdimension_heat_generators: - decentral: 1.1 #to cover demand peaks bigger than data + decentral: 1.1 central: 1.0 chp: enable: true fuel: - - solid biomass # For solid biomass, CHP with and without CC are added - - gas # For all other fuels the same techno economic data from gas CHP is taken - micro_chp: false # Only gas is used for micro_chp + - solid biomass + - gas + micro_chp: false solar_thermal: true - solar_cf_correction: 0.788457 # = >>> 1/1.2683 + solar_cf_correction: 0.788457 methanation: true coal_cc: false dac: true @@ -748,9 +877,8 @@ sector: cc_fraction: 0.9 hydrogen_underground_storage: true hydrogen_underground_storage_locations: - - onshore # more than 50 km from sea - - nearshore # within 50 km of sea - # - offshore + - onshore + - nearshore methanol: regional_methanol_demand: false methanol_reforming: false @@ -776,6 +904,7 @@ sector: use_electrolysis_waste_heat: 0.25 electricity_transmission_grid: true electricity_distribution_grid: true + electricity_distribution_grid_cost_factor: 1.0 electricity_grid_connection: true transmission_efficiency: enable: @@ -787,10 +916,10 @@ sector: efficiency_static: 0.98 efficiency_per_1000km: 0.977 H2 pipeline: - efficiency_per_1000km: 1 # 0.982 + efficiency_per_1000km: 1 compression_per_1000km: 0.018 gas pipeline: - efficiency_per_1000km: 1 #0.977 + efficiency_per_1000km: 1 compression_per_1000km: 0.01 electricity distribution grid: efficiency_static: 0.97 @@ -818,18 +947,17 @@ sector: municipal_solid_waste: false limit_max_growth: enable: false - # allowing 30% larger than max historic growth factor: 1.3 - max_growth: # unit GW - onwind: 16 # onshore max grow so far 16 GW in Europe https://www.iea.org/reports/renewables-2020/wind - solar: 28 # solar max grow so far 28 GW in Europe https://www.iea.org/reports/renewables-2020/solar-pv - offwind-ac: 35 # offshore max grow so far 3.5 GW in Europe https://windeurope.org/about-wind/statistics/offshore/european-offshore-wind-industry-key-trends-statistics-2019/ - offwind-dc: 35 + max_growth: + onwind: 16 + solar: 28 + "offwind-ac": 35 + "offwind-dc": 35 max_relative_growth: onwind: 3 solar: 3 - offwind-ac: 3 - offwind-dc: 3 + "offwind-ac": 3 + "offwind-dc": 3 enhanced_geothermal: enable: false flexible: true @@ -839,13 +967,13 @@ sector: sustainability_factor: 0.0025 solid_biomass_import: enable: false - price: 54 #EUR/MWh - max_amount: 1390 # TWh - upstream_emissions_factor: .1 #share of solid biomass CO2 emissions at full combustion + price: 54 + max_amount: 1390 + upstream_emissions_factor: 0.1 imports: enable: false limit: .inf - limit_sense: <= + limit_sense: "<=" price: H2: 74 NH3: 97 @@ -886,13 +1014,9 @@ industry: MWh_elec_per_tNH3_SMR: 0.7 MWh_H2_per_tNH3_electrolysis: 5.93 MWh_elec_per_tNH3_electrolysis: 0.2473 - MWh_NH3_per_MWh_H2_cracker: 1.46 # https://github.com/euronion/trace/blob/44a5ff8401762edbef80eff9cfe5a47c8d3c8be4/data/efficiencies.csv + MWh_NH3_per_MWh_H2_cracker: 1.46 NH3_process_emissions: 24.5 petrochemical_process_emissions: 25.5 - #HVC primary/recycling based on values used in Neumann et al https://doi.org/10.1016/j.joule.2023.06.016, linearly interpolated between 2020 and 2050 - #2020 recycling rates based on Agora https://static.agora-energiewende.de/fileadmin/Projekte/2021/2021_02_EU_CEAP/A-EW_254_Mobilising-circular-economy_study_WEB.pdf - #fractions refer to the total primary HVC production in 2020 - #assumes 6.7 Mtplastics produced from recycling in 2020 steam_biomass_fraction: 1.0 steam_hydrogen_fraction: 0 steam_electricity_fraction: 0 @@ -911,7 +1035,7 @@ industry: 2035: 0.21 2040: 0.24 2045: 0.27 - 2050: 0.30 + 2050: 0.3 HVC_chemical_recycling_fraction: 2020: 0.0 2025: 0.0 @@ -919,8 +1043,8 @@ industry: 2035: 0.08 2040: 0.12 2045: 0.16 - 2050: 0.20 - HVC_environment_sequestration_fraction: 0. + 2050: 0.2 + HVC_environment_sequestration_fraction: 0.0 waste_to_energy: false waste_to_energy_cc: false sector_ratios_fraction_future: @@ -931,8 +1055,8 @@ industry: 2040: 0.7 2045: 0.85 2050: 1.0 - basic_chemicals_without_NH3_production_today: 69. #Mt/a, = 86 Mtethylene-equiv - 17 MtNH3 - HVC_production_today: 52. + basic_chemicals_without_NH3_production_today: 69.0 + HVC_production_today: 52.0 MWh_elec_per_tHVC_mechanical_recycling: 0.547 MWh_elec_per_tHVC_chemical_recycling: 6.9 chlorine_production_today: 9.58 @@ -946,7 +1070,6 @@ industry: reference_year: 2019 oil_refining_emissions: 0.013 gas_compression_losses: 0.04 - # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#costs costs: year: 2050 @@ -958,21 +1081,25 @@ costs: fuel: 0 investment: 0 lifetime: 25 - "CO2 intensity": 0 - "discount rate": 0.07 - "standing losses": 0 + CO2 intensity: 0 + discount rate: 0.07 + standing losses: 0 custom_cost_fn: data/custom_costs.csv overwrites: {} + capital_cost: {} + marginal_cost: {} emission_prices: enable: false - co2: 0. - co2_monthly_prices: false + co2: 0.0 + dynamic: false + rolling_window: 90 # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#clustering clustering: mode: busmap administrative: level: 1 + countries: {} focus_weights: false copperplate_regions: [] build_bidding_zones: @@ -1001,7 +1128,7 @@ clustering: overnight_cost: mean one_ports: overnight_cost: mean - + buses: {} temporal: resolution_elec: false resolution_sector: false @@ -1016,6 +1143,143 @@ adjustments: capital_cost: 1.0 absolute: false +# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#solving +solving: + options: + clip_p_max_pu: 0.01 + load_shedding: false + curtailment_mode: false + noisy_costs: true + skip_iterations: true + rolling_horizon: false + seed: 123 + custom_extra_functionality: ../data/custom_extra_functionality.py + io_api: + track_iterations: false + min_iterations: 2 + max_iterations: 3 + transmission_losses: 2 + linearized_unit_commitment: true + horizon: 365 + overlap: 0 + post_discretization: + enable: false + line_unit_size: 1700 + line_threshold: 0.3 + link_unit_size: + DC: 2000 + H2 pipeline: 1200 + gas pipeline: 1500 + link_threshold: + DC: 0.3 + H2 pipeline: 0.3 + gas pipeline: 0.3 + fractional_last_unit_size: false + keep_files: false + store_model: false + model_kwargs: + solver_dir: "" + agg_p_nom_limits: + agg_offwind: false + agg_solar: false + include_existing: false + file: data/agg_p_nom_minmax.csv + constraints: + CCL: false + EQ: false + BAU: false + SAFE: false + solver: + name: gurobi + options: "gurobi-default" + solver_options: + "highs-default": + threads: 1 + solver: ipm + run_crossover: 'off' + small_matrix_value: 1.0e-06 + large_matrix_value: 1000000000.0 + primal_feasibility_tolerance: 1.0e-05 + dual_feasibility_tolerance: 1.0e-05 + ipm_optimality_tolerance: 0.0001 + parallel: 'on' + random_seed: 123 + "highs-simplex": + solver: simplex + parallel: 'on' + primal_feasibility_tolerance: 1.0e-05 + dual_feasibility_tolerance: 1.0e-05 + random_seed: 123 + "gurobi-default": + threads: 32 + method: 2 + crossover: 0 + BarConvTol: 1.0e-05 + Seed: 123 + AggFill: 0 + PreDual: 0 + GURO_PAR_BARDENSETHRESH: 200 + "gurobi-numeric-focus": + NumericFocus: 3 + method: 2 + crossover: 0 + BarHomogeneous: 1 + BarConvTol: 1.0e-05 + FeasibilityTol: 0.0001 + OptimalityTol: 0.0001 + ObjScale: -0.5 + threads: 8 + Seed: 123 + "gurobi-fallback": + crossover: 0 + method: 2 + BarHomogeneous: 1 + BarConvTol: 1.0e-05 + FeasibilityTol: 1.0e-05 + OptimalityTol: 1.0e-05 + Seed: 123 + threads: 8 + "cplex-default": + threads: 4 + lpmethod: 4 + solutiontype: 2 + barrier.convergetol: 1.0e-05 + feasopt.tolerance: 1.0e-06 + "copt-default": + Threads: 8 + LpMethod: 2 + Crossover: 0 + RelGap: 1.0e-06 + Dualize: 0 + "copt-gpu": + LpMethod: 6 + GPUMode: 1 + PDLPTol: 1.0e-05 + Crossover: 0 + "xpress-default": + threads: 8 + lpflags: 4 + crossover: 0 + bargaptarget: 1.0e-05 + baralg: 2 + "xpress-gpu": + lpflags: 4 + crossover: 0 + baralg: 4 + barhggpu: 1 + barhgreltol: 1.0e-05 + "cbc-default": {} + "glpk-default": {} + check_objective: + enable: false + expected_value: + atol: 1000000 + rtol: 0.01 + oetc: + mem_mb: 128000 + memory_logging_frequency: 5 + runtime: 48h + # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#data data: hotmaps_industrial_sites: @@ -1030,9 +1294,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 @@ -1066,9 +1339,24 @@ data: scigrid_gas: source: primary version: latest + seawater_temperature: + source: archive + version: latest + swiss_energy_balances: + source: primary + version: latest synthetic_electricity_demand: source: primary version: latest + opsd_electricity_demand: + source: archive + version: latest + entsoe_electricity_demand: + source: archive + version: latest + neso_electricity_demand: + source: archive + version: latest copernicus_land_cover: source: primary version: latest @@ -1121,10 +1409,10 @@ data: source: archive version: latest powerplants: - source: primary + source: archive version: latest costs: - source: primary + source: archive version: latest country_runoff: source: archive @@ -1156,146 +1444,28 @@ 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 + bidding_zones_entsoepy: + source: archive + version: latest # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#overpass_api overpass_api: - url: https://overpass-api.de/api/interpreter + 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 - -secrets: - corine: '' #Add API key here if primary source is used for retrieving corine dataset after registering in https://land.copernicus.eu/user/login - -# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#solving -solving: - options: - clip_p_max_pu: 1.e-2 - load_shedding: false - curtailment_mode: false - noisy_costs: true - skip_iterations: true - rolling_horizon: false - seed: 123 - custom_extra_functionality: "../scripts/pypsa-de/additional_functionality.py" - # io_api: "direct" # Increases performance but only supported for the highs and gurobi solvers - # options that go into the optimize function - track_iterations: false - min_iterations: 2 - max_iterations: 3 - transmission_losses: 2 - linearized_unit_commitment: true - horizon: 365 - post_discretization: - enable: false - line_unit_size: 1700 - line_threshold: 0.3 - link_unit_size: - DC: 2000 - H2 pipeline: 1200 - gas pipeline: 1500 - link_threshold: - DC: 0.3 - H2 pipeline: 0.3 - gas pipeline: 0.3 - fractional_last_unit_size: false - keep_files: false - model_kwargs: - solver_dir: "" - - agg_p_nom_limits: - agg_offwind: false - agg_solar: false - include_existing: false - file: data/agg_p_nom_minmax.csv - - constraints: - CCL: false - EQ: false - BAU: false - SAFE: false - - solver: - name: gurobi - options: gurobi-default - - solver_options: - highs-default: - # refer to https://ergo-code.github.io/HiGHS/dev/options/definitions/ - threads: 1 - solver: "ipm" - run_crossover: "off" - small_matrix_value: 1e-6 - large_matrix_value: 1e9 - primal_feasibility_tolerance: 1e-5 - dual_feasibility_tolerance: 1e-5 - ipm_optimality_tolerance: 1e-4 - parallel: "on" - random_seed: 123 - highs-simplex: - solver: "simplex" - parallel: "on" - primal_feasibility_tolerance: 1e-5 - dual_feasibility_tolerance: 1e-5 - random_seed: 123 - gurobi-default: - threads: 32 - method: 2 # barrier - crossover: 0 - BarConvTol: 1.e-5 - Seed: 123 - AggFill: 0 - PreDual: 0 - GURO_PAR_BARDENSETHRESH: 200 - gurobi-numeric-focus: - NumericFocus: 3 # Favour numeric stability over speed - method: 2 # barrier - crossover: 0 # do not use crossover - BarHomogeneous: 1 # Use homogeneous barrier if standard does not converge - BarConvTol: 1.e-5 - FeasibilityTol: 1.e-4 - OptimalityTol: 1.e-4 - ObjScale: -0.5 - threads: 8 - Seed: 123 - gurobi-fallback: # Use gurobi defaults - crossover: 0 - method: 2 # barrier - BarHomogeneous: 1 # Use homogeneous barrier if standard does not converge - BarConvTol: 1.e-5 - FeasibilityTol: 1.e-5 - OptimalityTol: 1.e-5 - Seed: 123 - threads: 8 - cplex-default: - threads: 4 - lpmethod: 4 # barrier - solutiontype: 2 # non basic solution, ie no crossover - barrier.convergetol: 1.e-5 - feasopt.tolerance: 1.e-6 - copt-default: - Threads: 8 - LpMethod: 2 - Crossover: 0 - RelGap: 1.e-6 - Dualize: 0 - copt-gpu: - LpMethod: 6 - GPUMode: 1 - PDLPTol: 1.e-5 - Crossover: 0 - cbc-default: {} # Used in CI - glpk-default: {} # Used in CI - - check_objective: - enable: false - expected_value: None - atol: 1_000_000 - rtol: 0.01 - - mem_mb: 128000 - memory_logging_frequency: 5 # in seconds - runtime: 48h #runtime in humanfriendly style https://humanfriendly.readthedocs.io/en/latest/ + project_name: "PyPSA-Eur" + email: "contact@pypsa.org" + website: "https://github.com/PyPSA/pypsa-eur" diff --git a/config/examples/config.distribution-grid-experimental.yaml b/config/examples/config.distribution-grid-experimental.yaml index abdb51407..06642fe5a 100644 --- a/config/examples/config.distribution-grid-experimental.yaml +++ b/config/examples/config.distribution-grid-experimental.yaml @@ -1,9 +1,48 @@ +# 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 @@ -25,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 64a831a82..6f5627e6e 100644 --- a/config/examples/config.entsoe-all.yaml +++ b/config/examples/config.entsoe-all.yaml @@ -1,3 +1,4 @@ +# 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 2836f7c5e..18076927e 100644 --- a/config/examples/config.iterative.yaml +++ b/config/examples/config.iterative.yaml @@ -1,3 +1,4 @@ +# 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 000000000..47461fde4 --- /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 dd0b497ba..4903c8fce 100644 --- a/config/examples/config.perfect.yaml +++ b/config/examples/config.perfect.yaml @@ -1,3 +1,4 @@ +# 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 f73bb4dbf..b43455ae2 100644 --- a/config/examples/config.validation.yaml +++ b/config/examples/config.validation.yaml @@ -1,3 +1,4 @@ +# 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 456dbe8f5..e53e0eeb3 100644 --- a/config/plotting.default.yaml +++ b/config/plotting.default.yaml @@ -1,4 +1,5 @@ -# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors +# yaml-language-server: $schema=./schema.default.json +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 @@ -378,6 +379,12 @@ plotting: hydro: "Reservoir & Dam" battery: "Battery Storage" H2: "Hydrogen Storage" + li-ion: "Lithium-Ion Storage" + lfp: "Lithium-Ion-LFP Storage" + vanadium: "Vanadium-Redox-Flow Storage" + lair: "Liquid-Air Storage" + pair: "Compressed-Air-Adiabatic Storage" + iron-air: "Iron-Air Storage" lines: "Transmission Lines" ror: "Run of River" load: "Load Shedding" @@ -527,6 +534,25 @@ plotting: land transport EV: '#baf238' land transport demand: '#38baf2' EV battery: '#baf238' + # all battery variation: + li-ion: '#ace37f' + li-ion charger: '#ace37f' + li-ion discharger: '#ace37f' + lfp: '#ace37f' + lfp charger: '#ace37f' + lfp discharger: '#ace37f' + vanadium: '#9B111E' + vanadium charger: '#9B111E' + vanadium discharger: '#9B111E' + lair: '#87CEEB' + lair charger: '#87CEEB' + lair discharger: '#87CEEB' + pair: '#003366' + pair charger: '#003366' + pair discharger: '#003366' + iron-air: '#edba1c' + iron-air charger: '#edba1c' + iron-air discharger: '#edba1c' # hot water storage water tanks: '#e69487' residential rural water tanks: '#f7b7a3' diff --git a/config/schema.default.json b/config/schema.default.json new file mode 100644 index 000000000..59fa6d544 --- /dev/null +++ b/config/schema.default.json @@ -0,0 +1,13656 @@ +{ + "$defs": { + "AdjustmentsConfig": { + "description": "Configuration for top-level adjustments key.", + "properties": { + "electricity": { + "anyOf": [ + { + "type": "boolean" + }, + { + "description": "Configuration for adjustment settings (factor/absolute)", + "properties": { + "factor": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": { + "additionalProperties": { + "additionalProperties": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ] + }, + "type": "object" + }, + "type": "object" + }, + "type": "object" + } + ], + "default": false, + "description": "Multiply original value with given factor" + }, + "absolute": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": { + "additionalProperties": { + "additionalProperties": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ] + }, + "type": "object" + }, + "type": "object" + }, + "type": "object" + } + ], + "default": false, + "description": "Set attribute to absolute value. Can be also a dictionary with planning horizons as keys." + } + } + } + ], + "default": false, + "description": "Parameter adjustments applied in `prepare_network`." + }, + "sector": { + "anyOf": [ + { + "type": "boolean" + }, + { + "description": "Configuration for adjustment settings (factor/absolute)", + "properties": { + "factor": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": { + "additionalProperties": { + "additionalProperties": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ] + }, + "type": "object" + }, + "type": "object" + }, + "type": "object" + } + ], + "default": false, + "description": "Multiply original value with given factor" + }, + "absolute": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": { + "additionalProperties": { + "additionalProperties": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ] + }, + "type": "object" + }, + "type": "object" + }, + "type": "object" + } + ], + "default": false, + "description": "Set attribute to absolute value. Can be also a dictionary with planning horizons as keys." + } + } + } + ], + "description": "Parameter adjustments applied in `prepare_sector_network`." + } + } + }, + "AtliteConfig": { + "description": "Configuration for `atlite` settings.", + "properties": { + "default_cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "europe-2013-sarah3-era5", + "description": "Defines a default cutout. Can refer to a single cutout or a list of cutouts." + }, + "nprocesses": { + "default": 16, + "description": "Number of parallel processes in cutout preparation.", + "type": "integer" + }, + "show_progress": { + "default": false, + "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`.", + "properties": { + "module": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Source of the reanalysis weather dataset (e.g. `ERA5 `_ or `SARAH-3 `_).", + "markdownDescription": "Source of the reanalysis weather dataset (e.g. [ERA5 ](https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5) or [SARAH-3 ](https://wui.cmsaf.eu/safira/action/viewDoiDetails?acronym=SARAH_V002))." + }, + "x": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Range of longitudes [\u00b0] to download weather data for. Float interval within [-180, 180]. If not defined, it defaults to the spatial bounds of all bus shapes." + }, + "y": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Range of latitudes [\u00b0] to download weather data for. Float interval within [-90, 90]. If not defined, it defaults to the spatial bounds of all bus shapes." + }, + "dx": { + "anyOf": [ + { + "exclusiveMinimum": 0.25, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Grid resolution [\u00b0] for longitude. Must be larger than 0.25\u00b0." + }, + "dy": { + "anyOf": [ + { + "exclusiveMinimum": 0.25, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Grid resolution [\u00b0] for latitude. Must be larger than 0.25\u00b0." + }, + "time": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Time span to download weather data for. If not defined, it defaults to the time interval spanned by the snapshots." + }, + "chunks": { + "anyOf": [ + { + "description": "Configuration for `atlite.cutouts.{name}.chunks` settings.", + "properties": { + "time": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Chunk size for time dimension when preparing cutout." + } + } + }, + { + "type": "null" + } + ], + "default": null, + "description": "Chunking configuration for cutout preparation." + }, + "prepare_kwargs": { + "anyOf": [ + { + "description": "Configuration for `atlite.cutouts.{name}.prepare_kwargs` settings.", + "properties": { + "features": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "When freshly building a cutout, retrieve data only for those features. If not defined, it defaults to all available features." + }, + "sarah_dir": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the location where SARAH-2 or SARAH-3 data is stored; SARAH data requires a manual separate download, see the `atlite documentation `_ for details. Required for building cutouts with SARAH, not required for ERA5 cutouts.", + "markdownDescription": "Path to the location where SARAH-2 or SARAH-3 data is stored; SARAH data requires a manual separate download, see the [atlite documentation ](https://atlite.readthedocs.io) for details. Required for building cutouts with SARAH, not required for ERA5 cutouts." + }, + "monthly_requests": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether to use monthly requests for ERA5 data when building the cutout. Helpful to avoid running into request limits with large cutouts." + }, + "tmpdir": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to a temporary directory where intermediate files are stored when building the cutout. Helpful when building large cutouts." + } + } + }, + { + "type": "null" + } + ], + "default": null, + "description": "Dictionary of keyword arguments passed to ``atlite.Cutout.prepare()`` when building the cutout." + } + } + }, + "description": "Named cutout configurations.", + "type": "object" + } + } + }, + "BiomassConfig": { + "description": "Configuration for `biomass` settings.", + "properties": { + "year": { + "default": 2030, + "description": "Year for which to retrieve biomass potential according to the assumptions of the `JRC ENSPRESO `_.", + "markdownDescription": "Year for which to retrieve biomass potential according to the assumptions of the [JRC ENSPRESO ](https://data.jrc.ec.europa.eu/dataset/74ed5a04-7d74-4807-9eab-b94774309d9f).", + "maximum": 2050, + "minimum": 2010, + "type": "integer" + }, + "scenario": { + "default": "ENS_Med", + "description": "Scenario for which to retrieve biomass potential. The scenario definition can be seen in `ENSPRESO_BIOMASS `_.", + "markdownDescription": "Scenario for which to retrieve biomass potential. The scenario definition can be seen in [ENSPRESO_BIOMASS ](https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/ENSPRESO/ENSPRESO_BIOMASS.xlsx).", + "enum": [ + "ENS_Low", + "ENS_Med", + "ENS_High" + ], + "type": "string" + }, + "classes": { + "description": "Configuration for `biomass.classes` settings.", + "properties": { + "solid biomass": { + "description": "The comodity that are included as solid biomass.", + "items": { + "type": "string" + }, + "type": "array" + }, + "not included": { + "description": "The comodity that are not included as a biomass potential.", + "items": { + "type": "string" + }, + "type": "array" + }, + "biogas": { + "description": "The comodity that are included as biogas.", + "items": { + "type": "string" + }, + "type": "array" + }, + "municipal solid waste": { + "description": "The commodities that are included as municipal solid waste.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "share_unsustainable_use_retained": { + "additionalProperties": { + "type": "number" + }, + "description": "Share of unsustainable biomass use retained using primary production of Eurostat data as reference.", + "type": "object" + }, + "share_sustainable_potential_available": { + "additionalProperties": { + "type": "number" + }, + "description": "Share determines phase-in of ENSPRESO biomass potentials.", + "type": "object" + } + } + }, + "ClusteringConfig": { + "description": "Configuration for `clustering` settings.", + "properties": { + "mode": { + "default": "busmap", + "description": "'busmap': Default. 'custom_busmap': Enable the use of custom busmaps in rule `cluster_network`. If activated the rule looks for provided busmaps at ``data/busmaps/base_s_{clusters}_{base_network}.csv`` which should have the same format as ``resources/busmap_base_s_{clusters}.csv``, i.e. the index should contain the buses of ``networks/base_s.nc``. {base_network} is the name of the selected base_network in electricity, e.g. ``gridkit``, ``osm-prebuilt``, or ``osm-raw``. 'administrative': Clusters and indexes the network based on the administrative regions of the countries based on ``nuts3_shapes.geojson`` (level: 1, 2, 3, bz). To activate this, additionally set the ``clusters`` wildcard in ``scenario`` to 'adm'. 'custom_busshapes': Enable the use of custom shapes in rule `cluster_network`. If activated the rule looks for provided busshapes at ``data/busshapes/base_s_{clusters}_{base_network}.geojson``.", + "enum": [ + "busmap", + "custom_busmap", + "administrative", + "custom_busshapes" + ], + "type": "string" + }, + "administrative": { + "description": "Configuration for `clustering.administrative` settings.", + "properties": { + "level": { + "default": 1, + "description": "Level of administrative regions to cluster the network. 0: Country level, 1: NUTS1 level, 2: NUTS2 level, 3: NUTS3 level, 'bz': Bidding zones. Only applies when mode is set to `administrative`. Note that non-NUTS countries 'BA', 'MD', 'UA', and 'XK' can only be clustered to level 0 and 1.", + "enum": [ + 0, + 1, + 2, + 3, + "bz" + ] + }, + "countries": { + "additionalProperties": { + "type": "integer" + }, + "description": "Optionally include dictionary of individual country codes and their individual NUTS levels. Overwrites country-specific `level`. For example: `{'DE': 1, 'FR': 2}`. Only applies when mode is set to `administrative`.", + "type": "object" + } + } + }, + "focus_weights": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ], + "default": false, + "description": "Optionally specify the focus weights for the clustering of countries. For instance: `DE: 0.8` will distribute 80% of all nodes to Germany and 20% to the rest of the countries. Only applies when mode is set to `busmap`." + }, + "copperplate_regions": { + "description": "Optionally specify the regions to copperplate as a list of groups. Each group is a list of region codes that will be connected with infinite capacity lines.", + "items": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": "array" + }, + "build_bidding_zones": { + "description": "Configuration for `clustering.build_bidding_zones` settings.", + "properties": { + "remove_islands": { + "default": false, + "description": "Exclude from the shape file the Balearic Islands, Bornholm, the Canary Islands, the Orkney Islands, the Shetland Islands, the Azores Islands and Madeira.", + "type": "boolean" + }, + "aggregate_to_tyndp": { + "default": false, + "description": "Adjust the shape file to the TYNDP topology. Aggregate the Southern Norwegian bidding zones and extract Crete as a separate zone from the Greek shape.", + "type": "boolean" + } + } + }, + "simplify_network": { + "description": "Configuration for `clustering.simplify_network` settings.", + "properties": { + "to_substations": { + "default": false, + "description": "Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones.", + "type": "boolean" + }, + "remove_stubs": { + "default": true, + "description": "Controls whether radial parts of the network should be recursively aggregated. Defaults to true.", + "type": "boolean" + }, + "remove_stubs_across_borders": { + "default": false, + "description": "Controls whether radial parts of the network should be recursively aggregated across borders. Defaults to true.", + "type": "boolean" + } + } + }, + "cluster_network": { + "description": "Configuration for `clustering.cluster_network` settings.", + "properties": { + "algorithm": { + "default": "kmeans", + "description": "Clustering algorithm to use.", + "enum": [ + "kmeans", + "hac" + ], + "type": "string" + }, + "hac_features": { + "description": "List of meteorological variables contained in the weather data cutout that should be considered for hierarchical clustering.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "exclude_carriers": { + "description": "List of carriers which will not be aggregated. If empty, all carriers will be aggregated.", + "items": { + "type": "string" + }, + "type": "array" + }, + "consider_efficiency_classes": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "number" + }, + "type": "array" + } + ], + "default": false, + "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.", + "properties": { + "generators": { + "additionalProperties": { + "type": "string" + }, + "description": "Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new generator.", + "type": "object" + }, + "buses": { + "additionalProperties": { + "type": "string" + }, + "description": "Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new bus.", + "type": "object" + } + } + }, + "temporal": { + "description": "Configuration for `clustering.temporal` settings.", + "properties": { + "resolution_elec": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Resample the time-resolution by averaging over every `n` snapshots in `prepare_network`. **Warning:** This option should currently only be used with electricity-only networks, not for sector-coupled networks." + }, + "resolution_sector": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Resample the time-resolution by averaging over every `n` snapshots in `prepare_sector_network`." + } + } + } + } + }, + "Co2BudgetConfig": { + "additionalProperties": { + "type": "number" + }, + "description": "Configuration for `co2_budget` settings.", + "type": "object" + }, + "ConventionalConfig": { + "additionalProperties": true, + "description": "Configuration for `conventional` settings.", + "properties": { + "unit_commitment": { + "default": false, + "description": "Allow the overwrite of ramp_limit_up, ramp_limit_start_up, ramp_limit_shut_down, p_min_pu, min_up_time, min_down_time, and start_up_cost of conventional generators. Refer to the CSV file 'unit_commitment.csv'.", + "type": "boolean" + }, + "dynamic_fuel_price": { + "default": false, + "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": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "description": "For any carrier/technology overwrite attributes as listed below.", + "type": "object" + } + } + }, + "CostsConfig": { + "description": "Configuration for `costs` settings.", + "properties": { + "year": { + "default": 2050, + "description": "Year for which to retrieve cost assumptions of `data/costs/primary//costs_.csv`.", + "type": "integer" + }, + "social_discountrate": { + "default": 0.02, + "description": "Social discount rate to compare costs in different investment periods. 0.02 corresponds to a social discount rate of 2%.", + "type": "number" + }, + "fill_values": { + "description": "Configuration for `costs.fill_values` settings.", + "properties": { + "FOM": { + "default": 0, + "description": "Default fixed operation and maintenance cost.", + "type": "number" + }, + "VOM": { + "default": 0, + "description": "Default variable operation and maintenance cost.", + "type": "number" + }, + "efficiency": { + "default": 1, + "description": "Default efficiency.", + "type": "number" + }, + "fuel": { + "default": 0, + "description": "Default fuel cost.", + "type": "number" + }, + "investment": { + "default": 0, + "description": "Default investment cost.", + "type": "number" + }, + "lifetime": { + "default": 25, + "description": "Default lifetime in years.", + "type": "integer" + }, + "CO2 intensity": { + "default": 0, + "description": "Default CO2 intensity.", + "type": "number" + }, + "discount rate": { + "default": 0.07, + "description": "Default discount rate.", + "type": "number" + }, + "standing losses": { + "default": 0, + "description": "Default standing losses.", + "type": "number" + } + } + }, + "custom_cost_fn": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "data/custom_costs.csv", + "description": "Path to the custom costs file. None if it should not be used. Default `data/custom_costs.csv` contains minor adjustments for stabilising the optimisation results." + }, + "overwrites": { + "additionalProperties": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + }, + "description": "For the given parameters and technologies, assumptions about their parameter are overwritten the corresponding value of the technology.", + "type": "object" + }, + "capital_cost": { + "additionalProperties": { + "type": "number" + }, + "description": "For the given technologies, assumptions about their capital investment costs are set to the corresponding value. Optional; overwrites cost assumptions from `resources/costs.csv`.", + "type": "object" + }, + "marginal_cost": { + "additionalProperties": { + "type": "number" + }, + "description": "For the given technologies, assumptions about their marginal operating costs are set to the corresponding value. Optional; overwrites cost assumptions from `resources/costs.csv`.", + "type": "object" + }, + "emission_prices": { + "description": "Configuration for `costs.emission_prices` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add cost for a carbon-dioxide price configured in `costs: emission_prices: co2` to `marginal_cost` of generators. Config setting can also be enabled with the keyword `Ep` in the `{opts}` wildcard for electricity-only runs.", + "type": "boolean" + }, + "co2": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ], + "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." + }, + "dynamic": { + "default": false, + "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" + } + } + } + } + }, + "CountriesConfig": { + "default": [ + "AL", + "AT", + "BA", + "BE", + "BG", + "CH", + "CZ", + "DE", + "DK", + "EE", + "ES", + "FI", + "FR", + "GB", + "GR", + "HR", + "HU", + "IE", + "IT", + "LT", + "LU", + "LV", + "ME", + "MK", + "NL", + "NO", + "PL", + "PT", + "RO", + "RS", + "SE", + "SI", + "SK", + "XK" + ], + "description": "Configuration for `countries` settings.", + "items": { + "type": "string" + }, + "type": "array" + }, + "DataConfig": { + "description": "Configuration for `data` settings.", + "properties": { + "hotmaps_industrial_sites": { + "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" + } + } + }, + "enspreso_biomass": { + "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" + } + } + }, + "osm": { + "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" + } + } + }, + "worldbank_urban_population": { + "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" + } + } + }, + "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": { + "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_gcct": { + "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" + } + } + }, + "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": { + "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" + } + } + }, + "nitrogen_statistics": { + "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" + } + } + }, + "eu_nuts2013": { + "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" + } + } + }, + "eu_nuts2021": { + "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" + } + } + }, + "eurostat_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" + } + } + }, + "eurostat_household_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" + } + } + }, + "wdpa": { + "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" + } + } + }, + "wdpa_marine": { + "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" + } + } + }, + "luisa_land_cover": { + "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" + } + } + }, + "jrc_idees": { + "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" + } + } + }, + "scigrid_gas": { + "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" + } + } + }, + "seawater_temperature": { + "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" + } + } + }, + "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": { + "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" + } + } + }, + "opsd_electricity_demand": { + "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" + } + } + }, + "entsoe_electricity_demand": { + "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" + } + } + }, + "neso_electricity_demand": { + "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" + } + } + }, + "copernicus_land_cover": { + "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" + } + } + }, + "ship_raster": { + "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" + } + } + }, + "eez": { + "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" + } + } + }, + "nuts3_population": { + "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" + } + } + }, + "gdp_per_capita": { + "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" + } + } + }, + "population_count": { + "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" + } + } + }, + "ghg_emissions": { + "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" + } + } + }, + "gebco": { + "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" + } + } + }, + "attributed_ports": { + "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" + } + } + }, + "corine": { + "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" + } + } + }, + "emobility": { + "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" + } + } + }, + "h2_salt_caverns": { + "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" + } + } + }, + "lau_regions": { + "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" + } + } + }, + "aquifer_data": { + "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" + } + } + }, + "osm_boundaries": { + "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_gspt": { + "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" + } + } + }, + "tyndp": { + "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" + } + } + }, + "powerplants": { + "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" + } + } + }, + "costs": { + "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" + } + } + }, + "country_runoff": { + "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" + } + } + }, + "country_hdd": { + "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" + } + } + }, + "natura": { + "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" + } + } + }, + "bfs_road_vehicle_stock": { + "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" + } + } + }, + "bfs_gdp_and_population": { + "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" + } + } + }, + "mobility_profiles": { + "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" + } + } + }, + "cutout": { + "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" + } + } + }, + "dh_areas": { + "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" + } + } + }, + "geothermal_heat_utilisation_potentials": { + "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" + } + } + }, + "jrc_ardeco": { + "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" + } + } + }, + "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": { + "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_entsoepy": { + "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" + } + } + } + } + }, + "ElectricityConfig": { + "description": "Configuration for `electricity` settings.", + "properties": { + "voltages": { + "description": "Voltage levels to consider.", + "items": { + "type": "number" + }, + "type": "array" + }, + "base_network": { + "default": "osm", + "description": "Specify the underlying base network, i.e. GridKit (based on ENTSO-E web map extract), OpenStreetMap (OSM), or TYNDP.", + "enum": [ + "entsoegridkit", + "osm", + "tyndp" + ], + "type": "string" + }, + "gaslimit_enable": { + "default": false, + "description": "Add an overall absolute gas limit configured in `electricity: gaslimit`.", + "type": "boolean" + }, + "gaslimit": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ], + "default": false, + "description": "Global gas usage limit." + }, + "co2limit_enable": { + "default": false, + "description": "Add an overall absolute carbon-dioxide emissions limit configured in `electricity: co2limit` in `prepare_network`. **Warning:** This option should currently only be used with electricity-only networks, not for sector-coupled networks.", + "type": "boolean" + }, + "co2limit": { + "default": 77500000.0, + "description": "Cap on total annual system carbon dioxide emissions.", + "type": "number" + }, + "co2base": { + "default": 1487000000.0, + "description": "Reference value of total annual system carbon dioxide emissions if relative emission reduction target is specified in `{opts}` wildcard.", + "type": "number" + }, + "operational_reserve": { + "description": "Configuration for `electricity.operational_reserve` settings.", + "properties": { + "activate": { + "default": false, + "description": "Whether to take operational reserve requirements into account during optimisation.", + "type": "boolean" + }, + "epsilon_load": { + "default": 0.02, + "description": "share of total load.", + "type": "number" + }, + "epsilon_vres": { + "default": 0.02, + "description": "share of total renewable supply.", + "type": "number" + }, + "contingency": { + "default": 4000, + "description": "Fixed reserve capacity (MW).", + "type": "number" + } + } + }, + "max_hours": { + "description": "Configuration for `electricity.max_hours` settings.", + "properties": { + "battery": { + "default": 6, + "description": "Maximum state of charge capacity of the battery in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the battery in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "li-ion": { + "default": 6, + "description": "Maximum state of charge capacity of the lithium-ion storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the lithium-ion storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "lfp": { + "default": 6, + "description": "Maximum state of charge capacity of the lithium-ion-LFP storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the lithium-ion-LFP storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "vanadium": { + "default": 10, + "description": "Maximum state of charge capacity of the vanadium-redox-flow storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the vanadium-redox-flow storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "lair": { + "default": 12, + "description": "Maximum state of charge capacity of the liquid-air storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the liquid-air storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "pair": { + "default": 24, + "description": "Maximum state of charge capacity of the compressed-air-adiabatic storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the compressed-air-adiabatic storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "iron-air": { + "default": 100, + "description": "Maximum state of charge capacity of the iron-air storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the iron-air storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "H2": { + "default": 168, + "description": "Maximum state of charge capacity of the hydrogen storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the hydrogen storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + } + } + }, + "extendable_carriers": { + "description": "Configuration for `electricity.extendable_carriers` settings.", + "properties": { + "Generator": { + "description": "Defines existing or non-existing conventional and renewable power plants to be extendable during the optimization. Conventional generators can only be built/expanded where already existent today. If a listed conventional carrier is not included in the `conventional_carriers` list, the lower limit of the capacity expansion is set to 0.", + "items": { + "type": "string" + }, + "type": "array" + }, + "StorageUnit": { + "description": "Adds extendable storage units at every node/bus after clustering without capacity limits and with zero initial capacity. Supported technologies include battery, H2, li-ion, vanadium, lfp, lair, pair, and iron-air.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Store": { + "description": "Adds extendable storage units at every node/bus after clustering without capacity limits and with zero initial capacity. Supported technologies include battery, H2, li-ion, vanadium, lfp, lair, pair, and iron-air.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Link": { + "description": "Adds extendable links (H2 pipelines only) at every connection where there are lines or HVDC links without capacity limits and with zero initial capacity. Hydrogen pipelines require hydrogen storage to be modelled as `Store`.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "powerplants_filter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "default": "(DateOut > 2025 or DateOut != DateOut) and (DateIn < 2026 or DateIn != DateIn)", + "description": "Filter query for the default powerplant database." + }, + "custom_powerplants": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "default": false, + "description": "Filter query for the custom powerplant database." + }, + "everywhere_powerplants": { + "description": "List of conventional power plants to add to every node in the model with zero initial capacity. To be used in combination with `extendable_carriers` to allow for building conventional powerplants irrespective of existing locations.", + "items": { + "type": "string" + }, + "type": "array" + }, + "conventional_carriers": { + "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.", + "items": { + "type": "string" + }, + "type": "array" + }, + "renewable_carriers": { + "description": "List of renewable generators to include in the model.", + "items": { + "type": "string" + }, + "type": "array" + }, + "estimate_renewable_capacities": { + "description": "Configuration for `electricity.estimate_renewable_capacities` settings.", + "properties": { + "enable": { + "default": 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`.", + "type": "boolean" + }, + "from_powerplantmatching": { + "default": true, + "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": 2024, + "description": "Renewable capacities are based on existing capacities reported by IRENA (IRENASTAT) for the specified year.", + "type": "integer" + }, + "expansion_limit": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ], + "default": false, + "description": "Artificially limit maximum IRENA capacities to a factor. For example, an `expansion_limit: 1.1` means 110% of capacities. If false are chosen, the estimated renewable potentials determine by the workflow are used." + }, + "technology_mapping": { + "description": "Configuration for `electricity.estimate_renewable_capacities.technology_mapping` settings.", + "properties": { + "Offshore": { + "default": "offwind-ac", + "description": "PyPSA-Eur carrier that is considered for existing offshore wind technology (IRENA, GEM).", + "type": "string" + }, + "Onshore": { + "default": "onwind", + "description": "PyPSA-Eur carrier that is considered for existing onshore wind capacities (IRENA, GEM).", + "type": "string" + }, + "PV": { + "default": "solar", + "description": "PyPSA-Eur carrier that is considered for existing solar PV capacities (IRENA, GEM).", + "type": "string" + } + } + } + } + }, + "estimate_battery_capacities": { + "default": false, + "description": "Enable estimation of existing battery storage capacities.", + "type": "boolean" + }, + "autarky": { + "description": "Configuration for `electricity.autarky` settings.", + "properties": { + "enable": { + "default": false, + "description": "Require each node to be autarkic by removing all lines and links.", + "type": "boolean" + }, + "by_country": { + "default": false, + "description": "Require each country to be autarkic by removing all cross-border lines and links. `electricity: autarky` must be enabled.", + "type": "boolean" + } + } + }, + "transmission_limit": { + "default": "vopt", + "description": "Limit on transmission expansion. The first part can be `v` (for setting a limit on line volume) or `c` (for setting a limit on line cost). The second part can be `opt` or a float bigger than one (e.g. 1.25). If `opt` is chosen line expansion is optimised according to its capital cost (where the choice `v` only considers overhead costs for HVDC transmission lines, while `c` uses more accurate costs distinguishing between overhead and underwater sections and including inverter pairs). The setting `v1.25` will limit the total volume of line expansion to 25% of currently installed capacities weighted by individual line lengths. The setting `c1.25` will allow to build a transmission network that costs no more than 25 % more than the current system.", + "type": "string" + } + } + }, + "EnableConfig": { + "description": "Configuration for `enable` settings.", + "properties": { + "drop_leap_day": { + "default": true, + "description": "Switch to drop February 29 from all time-dependent data in leap years.", + "type": "boolean" + } + } + }, + "EnergyConfig": { + "description": "Configuration for `energy` settings.", + "properties": { + "energy_totals_year": { + "default": 2023, + "description": "The year for the sector energy use. The year must be available in the Eurostat report.", + "type": "integer" + }, + "base_emissions_year": { + "default": 1990, + "description": "The base year for the sector emissions. See `European Environment Agency (EEA) `_.", + "markdownDescription": "The base year for the sector emissions. See [European Environment Agency (EEA) ](https://www.eea.europa.eu/data-and-maps/data/national-emissions-reported-to-the-unfccc-and-to-the-eu-greenhouse-gas-monitoring-mechanism-16).", + "type": "integer" + }, + "emissions": { + "default": "CO2", + "description": "Specify which sectoral emissions are taken into account. Data derived from EEA. Currently only CO2 is implemented.", + "type": "string" + } + } + }, + "ExistingCapacitiesConfig": { + "description": "Configuration for `existing_capacities` settings.", + "properties": { + "grouping_years_power": { + "description": "Intervals to group existing capacities for power.", + "items": { + "type": "integer" + }, + "type": "array" + }, + "grouping_years_heat": { + "description": "Intervals to group existing capacities for heat.", + "items": { + "type": "integer" + }, + "type": "array" + }, + "threshold_capacity": { + "default": 10, + "description": "Capacities (MW) of generators and links below threshold are removed during add_existing_capacities.", + "type": "number" + }, + "default_heating_lifetime": { + "default": 20, + "description": "Default lifetime for heating technologies (years).", + "type": "integer" + }, + "conventional_carriers": { + "description": "List of conventional power plants to include in the sectoral network.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "ForesightConfig": { + "default": "overnight", + "description": "Configuration for `foresight` settings.", + "enum": [ + "overnight", + "myopic", + "perfect" + ], + "type": "string" + }, + "IndustryConfig": { + "description": "Configuration for `industry` settings.", + "properties": { + "St_primary_fraction": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of steel produced via primary route versus secondary route (scrap+EAF). Current fraction is 0.6.", + "type": "object" + }, + "DRI_fraction": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of the primary route DRI + EAF.", + "type": "object" + }, + "H2_DRI": { + "default": 1.7, + "description": "The hydrogen consumption in Direct Reduced Iron (DRI) Mwh_H2 LHV/ton_Steel from 51kgH2/tSt in `Vogl et al (2018) `_.", + "markdownDescription": "The hydrogen consumption in Direct Reduced Iron (DRI) Mwh_H2 LHV/ton_Steel from 51kgH2/tSt in [Vogl et al (2018) ](https://doi.org/10.1016/j.jclepro.2018.08.279).", + "type": "number" + }, + "elec_DRI": { + "default": 0.322, + "description": "The electricity consumed in Direct Reduced Iron (DRI) shaft. From `HYBRIT brochure `_.", + "markdownDescription": "The electricity consumed in Direct Reduced Iron (DRI) shaft. From [HYBRIT brochure ](https://ssabwebsitecdn.azureedge.net/-/media/hybrit/files/hybrit_brochure.pdf).", + "type": "number" + }, + "Al_primary_fraction": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of aluminium produced via the primary route versus scrap. Current fraction is 0.4.", + "type": "object" + }, + "MWh_NH3_per_tNH3": { + "default": 5.166, + "description": "The energy amount per ton of ammonia (LHV).", + "type": "number" + }, + "MWh_CH4_per_tNH3_SMR": { + "default": 10.8, + "description": "The energy amount of methane needed to produce a ton of ammonia using steam methane reforming (SMR). Value derived from 2012's demand from `Center for European Policy Studies (2008) `_.", + "markdownDescription": "The energy amount of methane needed to produce a ton of ammonia using steam methane reforming (SMR). Value derived from 2012's demand from [Center for European Policy Studies (2008) ](https://ec.europa.eu/docsroom/documents/4165/attachments/1/translations/en/renditions/pdf).", + "type": "number" + }, + "MWh_elec_per_tNH3_SMR": { + "default": 0.7, + "description": "The energy amount of electricity needed to produce a ton of ammonia using steam methane reforming (SMR). same source, assuming 94-6% split methane-elec of total energy demand 11.5 MWh/tNH3.", + "type": "number" + }, + "MWh_H2_per_tNH3_electrolysis": { + "default": 5.93, + "description": "The energy amount of hydrogen needed to produce a ton of ammonia using Haber\u2013Bosch process. From `Wang et al (2018) `_, Base value assumed around 0.197 tH2/tHN3 (>3/17 since some H2 lost and used for energy).", + "markdownDescription": "The energy amount of hydrogen needed to produce a ton of ammonia using Haber\u2013Bosch process. From [Wang et al (2018) ](https://doi.org/10.1016/j.joule.2018.04.017), Base value assumed around 0.197 tH2/tHN3 (>3/17 since some H2 lost and used for energy).", + "type": "number" + }, + "MWh_elec_per_tNH3_electrolysis": { + "default": 0.2473, + "description": "The energy amount of electricity needed to produce a ton of ammonia using Haber\u2013Bosch process. From `Wang et al (2018) `_, Table 13 (air separation and HB).", + "markdownDescription": "The energy amount of electricity needed to produce a ton of ammonia using Haber\u2013Bosch process. From [Wang et al (2018) ](https://doi.org/10.1016/j.joule.2018.04.017), Table 13 (air separation and HB).", + "type": "number" + }, + "MWh_NH3_per_MWh_H2_cracker": { + "default": 1.46, + "description": "The energy amount of amonia needed to produce an energy amount hydrogen using ammonia cracker.", + "type": "number" + }, + "NH3_process_emissions": { + "default": 24.5, + "description": "The emission of ammonia production from steam methane reforming (SMR). From UNFCCC for 2015 for EU28.", + "type": "number" + }, + "petrochemical_process_emissions": { + "default": 25.5, + "description": "The emission of petrochemical production. From UNFCCC for 2015 for EU28.", + "type": "number" + }, + "HVC_primary_fraction": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of high value chemicals (HVC) produced via primary route.", + "type": "object" + }, + "HVC_mechanical_recycling_fraction": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of high value chemicals (HVC) produced using mechanical recycling.", + "type": "object" + }, + "HVC_chemical_recycling_fraction": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of high value chemicals (HVC) produced using chemical recycling.", + "type": "object" + }, + "HVC_environment_sequestration_fraction": { + "default": 0.0, + "description": "The fraction of high value chemicals (HVC) put into landfill resulting in additional carbon sequestration. The default value is 0.", + "type": "number" + }, + "waste_to_energy": { + "default": false, + "description": "Switch to enable expansion of waste to energy CHPs for conversion of plastics. Default is false.", + "type": "boolean" + }, + "waste_to_energy_cc": { + "default": false, + "description": "Switch to enable expansion of waste to energy CHPs for conversion of plastics with carbon capture. Default is false.", + "type": "boolean" + }, + "sector_ratios_fraction_future": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of total progress in fuel and process switching achieved in the industry sector.", + "type": "object" + }, + "basic_chemicals_without_NH3_production_today": { + "default": 69.0, + "description": "The amount of basic chemicals produced without ammonia (= 86 Mtethylene-equiv - 17 MtNH3).", + "type": "number" + }, + "HVC_production_today": { + "default": 52.0, + "description": "The amount of high value chemicals (HVC) produced. This includes ethylene, propylene and BTX. From `DECHEMA (2017) `_, Figure 16, page 107.", + "markdownDescription": "The amount of high value chemicals (HVC) produced. This includes ethylene, propylene and BTX. 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), Figure 16, page 107.", + "type": "number" + }, + "MWh_elec_per_tHVC_mechanical_recycling": { + "default": 0.547, + "description": "The energy amount of electricity needed to produce a ton of high value chemical (HVC) using mechanical recycling. From SI of `Meys et al (2020) `_, Table S5, for HDPE, PP, PS, PET. LDPE would be 0.756.", + "markdownDescription": "The energy amount of electricity needed to produce a ton of high value chemical (HVC) using mechanical recycling. From SI of [Meys et al (2020) ](https://doi.org/10.1016/j.resconrec.2020.105010), Table S5, for HDPE, PP, PS, PET. LDPE would be 0.756.", + "type": "number" + }, + "MWh_elec_per_tHVC_chemical_recycling": { + "default": 6.9, + "description": "The energy amount of electricity needed to produce a ton of high value chemical (HVC) using chemical recycling. The default value is based on pyrolysis and electric steam cracking. From `Material Economics (2019) `_, page 125.", + "markdownDescription": "The energy amount of electricity needed to produce a ton of high value chemical (HVC) using chemical recycling. The default value is based on pyrolysis and electric steam cracking. From [Material Economics (2019) ](https://materialeconomics.com/latest-updates/industrial-transformation-2050), page 125.", + "type": "number" + }, + "chlorine_production_today": { + "default": 9.58, + "description": "The amount of chlorine produced. From `DECHEMA (2017) `_, Table 7, page 43.", + "markdownDescription": "The amount of chlorine produced. 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 7, page 43.", + "type": "number" + }, + "MWh_elec_per_tCl": { + "default": 3.6, + "description": "The energy amount of electricity needed to produce a ton of chlorine. From `DECHEMA (2017) `_, Table 6 page 43.", + "markdownDescription": "The energy amount of electricity needed to produce a ton of chlorine. 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 6 page 43.", + "type": "number" + }, + "MWh_H2_per_tCl": { + "default": -0.9372, + "description": "The energy amount of hydrogen needed to produce a ton of chlorine. The value is negative since hydrogen produced in chloralkali process. From `DECHEMA (2017) `_, page 43.", + "markdownDescription": "The energy amount of hydrogen needed to produce a ton of chlorine. The value is negative since hydrogen produced in chloralkali process. 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 43.", + "type": "number" + }, + "methanol_production_today": { + "default": 1.5, + "description": "The amount of methanol produced. From `DECHEMA (2017) `_, page 62.", + "markdownDescription": "The amount of methanol produced. 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 62.", + "type": "number" + }, + "MWh_elec_per_tMeOH": { + "default": 0.167, + "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 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": { + "default": 5.528, + "description": "The energy amount per ton of methanol (LHV). From `DECHEMA (2017) `_, page 74.", + "markdownDescription": "The energy amount per ton of methanol (LHV). 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 74.", + "type": "number" + }, + "hotmaps_locate_missing": { + "default": false, + "description": "Locate industrial sites without valid locations based on city and countries.", + "type": "boolean" + }, + "reference_year": { + "default": 2019, + "description": "The year used as the baseline for industrial energy demand and production. Data extracted from `JRC-IDEES 2015 `_.", + "markdownDescription": "The year used as the baseline for industrial energy demand and production. Data extracted from [JRC-IDEES 2015 ](https://data.jrc.ec.europa.eu/dataset/jrc-10110-10001).", + "type": "integer" + }, + "oil_refining_emissions": { + "default": 0.013, + "description": "The emissions from oil fuel processing (e.g. oil in petrochemical refinieries). The default value of 0.013 tCO2/MWh is based on DE statistics for 2019; the EU value is very similar.", + "type": "number" + } + } + }, + "LinesConfig": { + "description": "Configuration for `lines` settings.", + "properties": { + "types": { + "additionalProperties": { + "type": "string" + }, + "description": "Specifies line types to assume for the different voltage levels of the ENTSO-E grid extraction. Should normally handle voltage levels 220, 300, and 380 kV.", + "type": "object" + }, + "s_max_pu": { + "default": 0.7, + "description": "Correction factor for line capacities (`s_nom`) to approximate N-1 security and reserve capacity for reactive power flows.", + "type": "number" + }, + "s_nom_max": { + "default": null, + "description": "Global upper limit for the maximum capacity of each extendable line (MW).", + "type": "number" + }, + "max_extension": { + "default": 20000, + "description": "Upper limit for the extended capacity of each extendable line (MW).", + "type": "number" + }, + "length_factor": { + "default": 1.25, + "description": "Correction factor to account for the fact that buses are *not* connected by lines through air-line distance.", + "type": "number" + }, + "reconnect_crimea": { + "default": true, + "description": "Whether to reconnect Crimea to the Ukrainian grid.", + "type": "boolean" + }, + "under_construction": { + "default": "keep", + "description": "Specifies how to handle lines which are currently under construction.", + "enum": [ + "zero", + "remove", + "keep" + ], + "type": "string" + }, + "dynamic_line_rating": { + "description": "Configuration for `lines.dynamic_line_rating` settings.", + "properties": { + "activate": { + "default": false, + "description": "Whether to take dynamic line rating into account.", + "type": "boolean" + }, + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "correction_factor": { + "default": 0.95, + "description": "Factor to compensate for overestimation of wind speeds in hourly averaged wind data.", + "type": "number" + }, + "max_voltage_difference": { + "anyOf": [ + { + "type": "number" + }, + { + "const": false, + "type": "boolean" + } + ], + "default": false, + "description": "Maximum voltage angle difference in degrees or 'false' to disable." + }, + "max_line_rating": { + "anyOf": [ + { + "type": "number" + }, + { + "const": false, + "type": "boolean" + } + ], + "default": false, + "description": "Maximum line rating relative to nominal capacity without DLR, e.g. 1.3 or 'false' to disable." + } + } + } + } + }, + "LinksConfig": { + "description": "Configuration for `links` settings.", + "properties": { + "p_max_pu": { + "default": 1.0, + "description": "Correction factor for link capacities `p_nom`.", + "type": "number" + }, + "p_min_pu": { + "default": -1.0, + "description": "Correction factor for link capacities `p_nom`.", + "type": "number" + }, + "p_nom_max": { + "default": null, + "description": "Global upper limit for the maximum capacity of each extendable DC link (MW).", + "type": "number" + }, + "max_extension": { + "default": 30000, + "description": "Upper limit for the extended capacity of each extendable DC link (MW).", + "type": "number" + }, + "length_factor": { + "default": 1.25, + "description": "Correction factor to account for the fact that buses are *not* connected by links through air-line distance.", + "type": "number" + }, + "under_construction": { + "default": "keep", + "description": "Specifies how to handle lines which are currently under construction.", + "enum": [ + "zero", + "remove", + "keep" + ], + "type": "string" + } + } + }, + "LoadConfig": { + "description": "Configuration for `load` settings.", + "properties": { + "fill_gaps": { + "description": "Configuration for `load.fill_gaps` settings.", + "properties": { + "enable": { + "default": true, + "description": "Whether to fill gaps using interpolation for small gaps and time shift for large gaps.", + "type": "boolean" + }, + "interpolate_limit": { + "default": 6, + "description": "Maximum gap size (consecutive nans) which interpolated linearly.", + "type": "integer" + }, + "time_shift_for_large_gaps": { + "default": "1w", + "description": "Periods which are used for copying time-slices in order to fill large gaps of nans. Have to be valid `pandas` period strings.", + "type": "string" + } + } + }, + "manual_adjustments": { + "default": true, + "description": "Whether to adjust the load data manually according to the function in `manual_adjustment`.", + "type": "boolean" + }, + "scaling_factor": { + "default": 1.0, + "description": "Global correction factor for the load time series.", + "type": "number" + }, + "fixed_year": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "boolean" + } + ], + "default": false, + "description": "To specify a fixed year for the load time series that deviates from the snapshots' year." + }, + "supplement_synthetic": { + "default": true, + "description": "Whether to supplement missing data for selected time period should be supplemented by synthetic data from `Zenodo `_.", + "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": { + "gdp": { + "default": 0.6, + "description": "Weighting factor for the GDP data in the distribution key.", + "type": "number" + }, + "population": { + "default": 0.4, + "description": "Weighting factor for the population data in the distribution key.", + "type": "number" + } + } + } + } + }, + "LoggingConfig": { + "description": "Configuration for top level `logging` settings.", + "properties": { + "level": { + "default": "INFO", + "description": "Restrict console outputs to all infos, warning or errors only", + "enum": [ + "DEBUG", + "INFO", + "WARNING", + "ERROR", + "CRITICAL" + ], + "type": "string" + }, + "format": { + "default": "%(levelname)s:%(name)s:%(message)s", + "description": "Custom format for log messages. See `LogRecord `_ attributes.", + "markdownDescription": "Custom format for log messages. See [LogRecord ](https://docs.python.org/3/library/logging.html#logging.LogRecord) attributes.", + "type": "string" + } + } + }, + "OverpassApiConfig": { + "description": "Configuration for `overpass_api` settings.", + "properties": { + "url": { + "default": "https://overpass-api.de/api/interpreter", + "description": "Overpass API endpoint URL. See `Overpass API Wiki `_ for available public instances.", + "markdownDescription": "Overpass API endpoint URL. See [Overpass API Wiki ](https://wiki.openstreetmap.org/wiki/Overpass_API#Public_Overpass_API_instances) for available public instances.", + "type": "string" + }, + "max_tries": { + "default": 5, + "description": "Maximum retry attempts for Overpass API requests. Please be respectful to the Overpass API fair use policy of the individual instances.", + "type": "integer" + }, + "timeout": { + "default": 600, + "description": "Timeout in seconds for Overpass API requests.", + "type": "integer" + }, + "user_agent": { + "description": "Configuration for `overpass_api.user_agent` settings.", + "properties": { + "project_name": { + "default": "PyPSA-Eur", + "description": "Project name used to identify the user agent of the Overpass API requests.", + "type": "string" + }, + "email": { + "default": "contact@pypsa.org", + "description": "Contact email address for the project using the Overpass API.", + "type": "string" + }, + "website": { + "default": "https://github.com/PyPSA/pypsa-eur", + "description": "Website URL for the project using the Overpass API.", + "type": "string" + } + } + } + } + }, + "PypsaEurConfig": { + "description": "Configuration for `pypsa_eur` settings.", + "properties": { + "Bus": { + "description": "Bus carriers to keep from PyPSA-Eur.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Link": { + "description": "Link carriers to keep from PyPSA-Eur.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Generator": { + "description": "Generator carriers to keep from PyPSA-Eur.", + "items": { + "type": "string" + }, + "type": "array" + }, + "StorageUnit": { + "description": "StorageUnit carriers to keep from PyPSA-Eur.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Store": { + "description": "Store carriers to keep from PyPSA-Eur.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "RemoteConfig": { + "description": "Configuration for top level `remote` settings.", + "properties": { + "ssh": { + "default": "", + "description": "Optionally specify the SSH of a remote cluster to be synchronized.", + "type": "string" + }, + "path": { + "default": "", + "description": "Optionally specify the file path within the remote cluster to be synchronized.", + "type": "string" + } + } + }, + "RenewableConfig": { + "description": "Configuration for `renewable` settings.", + "properties": { + "onwind": { + "description": "Configuration for onshore wind.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for wind resource settings.", + "properties": { + "method": { + "default": "wind", + "description": "A superordinate technology type.", + "type": "string" + }, + "turbine": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "description": "Specifies the turbine type and its characteristic power curve. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available." + }, + "smooth": { + "default": false, + "description": "Switch to apply a gaussian kernel density smoothing to the power curve.", + "type": "boolean" + }, + "add_cutout_windspeed": { + "default": true, + "description": "Whether to add cutout windspeed data.", + "type": "boolean" + } + }, + "required": [ + "turbine" + ] + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 3, + "description": "Allowable density of wind turbine placement.", + "type": "number" + }, + "correction_factor": { + "default": 1.0, + "description": "Correction factor for capacity factor time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "description": "Configuration for CORINE land cover settings.", + "properties": { + "grid_codes": { + "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for wind turbine placement.", + "items": { + "type": "integer" + }, + "type": "array" + }, + "distance": { + "default": 1000, + "description": "Distance in meters to keep from areas specified in `distance_grid_codes`.", + "type": "number" + }, + "distance_grid_codes": { + "description": "Specifies areas according to CORINE Land Cover codes to which wind turbines must maintain a distance specified in the setting `distance`.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "grid_codes" + ] + } + ], + "description": "CORINE land cover configuration." + }, + "luisa": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": true, + "type": "object" + } + ], + "default": false, + "description": "LUISA land cover configuration." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "excluder_resolution": { + "default": 100, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + } + } + }, + "offwind-ac": { + "description": "Configuration for offshore wind.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for wind resource settings.", + "properties": { + "method": { + "default": "wind", + "description": "A superordinate technology type.", + "type": "string" + }, + "turbine": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "description": "Specifies the turbine type and its characteristic power curve. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available." + }, + "smooth": { + "default": false, + "description": "Switch to apply a gaussian kernel density smoothing to the power curve.", + "type": "boolean" + }, + "add_cutout_windspeed": { + "default": true, + "description": "Whether to add cutout windspeed data.", + "type": "boolean" + } + }, + "required": [ + "turbine" + ] + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 2, + "description": "Allowable density of wind turbine placement.", + "type": "number" + }, + "correction_factor": { + "default": 0.8855, + "description": "Correction factor for capacity factor time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "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": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "default": false, + "description": "Specifies areas according to the LUISA Base Map codes which are generally eligible for AC-connected offshore wind turbine placement." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "ship_threshold": { + "default": 400, + "description": "Ship density threshold from which areas are excluded.", + "type": "number" + }, + "max_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum sea water depth in meters at which wind turbines can be built. Maritime areas with deeper waters are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum water depth in meters." + }, + "max_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum distance to the shore in meters above which wind turbines cannot be built. Such areas are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum distance to the shore in meters below which wind turbines cannot be built. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "excluder_resolution": { + "default": 200, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + }, + "landfall_length": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 20, + "description": "Fixed length of the cable connection that is onshorelandfall in km. If 'centroid', the length is calculated as the distance to centroid of the onshore bus." + } + } + }, + "offwind-dc": { + "description": "Configuration for offshore wind.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for wind resource settings.", + "properties": { + "method": { + "default": "wind", + "description": "A superordinate technology type.", + "type": "string" + }, + "turbine": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "description": "Specifies the turbine type and its characteristic power curve. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available." + }, + "smooth": { + "default": false, + "description": "Switch to apply a gaussian kernel density smoothing to the power curve.", + "type": "boolean" + }, + "add_cutout_windspeed": { + "default": true, + "description": "Whether to add cutout windspeed data.", + "type": "boolean" + } + }, + "required": [ + "turbine" + ] + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 2, + "description": "Allowable density of wind turbine placement.", + "type": "number" + }, + "correction_factor": { + "default": 0.8855, + "description": "Correction factor for capacity factor time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "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": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "default": false, + "description": "Specifies areas according to the LUISA Base Map codes which are generally eligible for AC-connected offshore wind turbine placement." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "ship_threshold": { + "default": 400, + "description": "Ship density threshold from which areas are excluded.", + "type": "number" + }, + "max_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum sea water depth in meters at which wind turbines can be built. Maritime areas with deeper waters are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum water depth in meters." + }, + "max_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum distance to the shore in meters above which wind turbines cannot be built. Such areas are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum distance to the shore in meters below which wind turbines cannot be built. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "excluder_resolution": { + "default": 200, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + }, + "landfall_length": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 20, + "description": "Fixed length of the cable connection that is onshorelandfall in km. If 'centroid', the length is calculated as the distance to centroid of the onshore bus." + } + } + }, + "offwind-float": { + "description": "Configuration for offshore wind.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for wind resource settings.", + "properties": { + "method": { + "default": "wind", + "description": "A superordinate technology type.", + "type": "string" + }, + "turbine": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "description": "Specifies the turbine type and its characteristic power curve. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available." + }, + "smooth": { + "default": false, + "description": "Switch to apply a gaussian kernel density smoothing to the power curve.", + "type": "boolean" + }, + "add_cutout_windspeed": { + "default": true, + "description": "Whether to add cutout windspeed data.", + "type": "boolean" + } + }, + "required": [ + "turbine" + ] + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 2, + "description": "Allowable density of wind turbine placement.", + "type": "number" + }, + "correction_factor": { + "default": 0.8855, + "description": "Correction factor for capacity factor time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "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": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "default": false, + "description": "Specifies areas according to the LUISA Base Map codes which are generally eligible for AC-connected offshore wind turbine placement." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "ship_threshold": { + "default": 400, + "description": "Ship density threshold from which areas are excluded.", + "type": "number" + }, + "max_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum sea water depth in meters at which wind turbines can be built. Maritime areas with deeper waters are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum water depth in meters." + }, + "max_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum distance to the shore in meters above which wind turbines cannot be built. Such areas are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum distance to the shore in meters below which wind turbines cannot be built. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "excluder_resolution": { + "default": 200, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + }, + "landfall_length": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 20, + "description": "Fixed length of the cable connection that is onshorelandfall in km. If 'centroid', the length is calculated as the distance to centroid of the onshore bus." + } + } + }, + "solar": { + "description": "Configuration for solar PV.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for solar resource settings.", + "properties": { + "method": { + "default": "pv", + "description": "A superordinate technology type.", + "type": "string" + }, + "panel": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "default": "CSi", + "description": "Specifies the solar panel technology and its characteristic attributes. Can be a string or a dictionary with years as keys which denote the year another panel model becomes available." + }, + "orientation": { + "additionalProperties": { + "type": "number" + }, + "description": "Panel orientation with slope and azimuth.", + "type": "object" + }, + "tracking": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Tracking type (e.g., 'horizontal')." + } + } + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 5.1, + "description": "Allowable density of solar panel placement.", + "type": "number" + }, + "correction_factor": { + "default": 1.0, + "description": "A correction factor for the capacity factor (availability) time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for solar panel placement." + }, + "luisa": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "default": false, + "description": "Specifies areas according to the LUISA Base Map codes which are generally eligible for solar panel placement." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "excluder_resolution": { + "default": 100, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + } + } + }, + "solar-hsat": { + "description": "Configuration for solar PV.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for solar resource settings.", + "properties": { + "method": { + "default": "pv", + "description": "A superordinate technology type.", + "type": "string" + }, + "panel": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "default": "CSi", + "description": "Specifies the solar panel technology and its characteristic attributes. Can be a string or a dictionary with years as keys which denote the year another panel model becomes available." + }, + "orientation": { + "additionalProperties": { + "type": "number" + }, + "description": "Panel orientation with slope and azimuth.", + "type": "object" + }, + "tracking": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Tracking type (e.g., 'horizontal')." + } + } + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 5.1, + "description": "Allowable density of solar panel placement.", + "type": "number" + }, + "correction_factor": { + "default": 1.0, + "description": "A correction factor for the capacity factor (availability) time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for solar panel placement." + }, + "luisa": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "default": false, + "description": "Specifies areas according to the LUISA Base Map codes which are generally eligible for solar panel placement." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "excluder_resolution": { + "default": 100, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + } + } + }, + "hydro": { + "description": "Configuration for hydropower.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "carriers": { + "description": "Specifies the types of hydro power plants to build per-unit availability time series for. 'ror' stands for run-of-river plants, 'PHS' represents pumped-hydro storage, and 'hydro' stands for hydroelectric dams.", + "items": { + "type": "string" + }, + "type": "array" + }, + "PHS_max_hours": { + "default": 6, + "description": "Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "hydro_max_hours": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ], + "default": "energy_capacity_totals_by_country", + "description": "Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom` or heuristically determined. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom` or heuristically determined. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit)." + }, + "flatten_dispatch": { + "default": false, + "description": "Consider an upper limit for the hydro dispatch. The limit is given by the average capacity factor plus the buffer given in `flatten_dispatch_buffer`.", + "type": "boolean" + }, + "flatten_dispatch_buffer": { + "default": 0.2, + "description": "If `flatten_dispatch` is true, specify the value added above the average capacity factor.", + "type": "number" + }, + "clip_min_inflow": { + "default": 1.0, + "description": "To avoid too small values in the inflow time series, values below this threshold (MW) are set to zero.", + "type": "number" + }, + "eia_norm_year": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "integer" + } + ], + "default": false, + "description": "To specify a specific year by which hydro inflow is normed that deviates from the snapshots' year." + }, + "eia_correct_by_capacity": { + "default": false, + "description": "Correct EIA annual hydro generation data by installed capacity.", + "type": "boolean" + }, + "eia_approximate_missing": { + "default": false, + "description": "Approximate hydro generation data for years not included in EIA dataset through a regression based on annual runoff.", + "type": "boolean" + } + } + } + } + }, + "RunConfig": { + "description": "Configuration for top level `run` settings.", + "properties": { + "prefix": { + "default": "", + "description": "Prefix for the run name which is used as a top-layer directory name in the results and resources folders.", + "type": "string" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "", + "description": "Specify a name for your run. Results will be stored under this name. If ``scenario: enable:`` is set to ``true``, the name must contain a subset of scenario names defined in ``scenario: file:``. If the name is 'all', all defined scenarios will be run.", + "examples": [ + "my-pypsa-eur-run" + ] + }, + "scenarios": { + "description": "Configuration for `run.scenarios` level.", + "properties": { + "enable": { + "default": false, + "description": "Switch to select whether workflow should generate scenarios based on ``file``.", + "type": "boolean" + }, + "file": { + "default": "config/scenarios.yaml", + "description": "Path to the scenario yaml file. The scenario file contains config overrides for each scenario. In order to be taken account, ``run: scenarios`` has to be set to ``true`` and ``run: name`` has to be a subset of top level keys given in the scenario file. In order to automatically create a `scenario.yaml` file based on a combination of settings, alter and use the ``config/create_scenarios.py`` script in the ``config`` directory.", + "examples": [ + "config/scenarios.yaml" + ], + "type": "string" + } + } + }, + "disable_progressbar": { + "default": false, + "description": "Switch to select whether progressbar should be disabled.", + "type": "boolean" + }, + "shared_resources": { + "description": "Configuration for `run.shared_resources` level.", + "properties": { + "policy": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Boolean switch to select whether resources should be shared across runs. If a string is passed, this is used as a subdirectory name for shared resources. If set to 'base', only resources before creating the elec.nc file are shared.", + "examples": [ + false, + "base" + ] + }, + "exclude": { + "description": "For the case shared_resources=base, specify additional files that should not be shared across runs.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "use_shadow_directory": { + "default": false, + "description": "Set to ``true`` (default) if snakemake shadow directories (``shallow``) should be used. Set to ``false`` if problems occur.", + "examples": [ + true + ], + "type": "boolean" + } + } + }, + "ScenarioConfig": { + "description": "Configuration for top level `scenario` settings.", + "properties": { + "clusters": { + "description": "List of ``{clusters}`` wildcards to run. Use 'adm' for administrative clustering mode, 'all' for all nodes.", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "enum": [ + "adm", + "all" + ], + "type": "string" + } + ] + }, + "type": "array" + }, + "opts": { + "description": "List of ``{opts}`` wildcards to run.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sector_opts": { + "description": "List of ``{sector_opts}`` wildcards to run.", + "items": { + "type": "string" + }, + "type": "array" + }, + "planning_horizons": { + "description": "List of ``{planning_horizon}`` wildcards to run.", + "items": { + "type": "integer" + }, + "type": "array" + } + } + }, + "SectorConfig": { + "description": "Configuration for `sector` settings.", + "properties": { + "transport": { + "default": true, + "description": "Flag to include transport sector.", + "type": "boolean" + }, + "heating": { + "default": true, + "description": "Flag to include heating sector.", + "type": "boolean" + }, + "biomass": { + "default": true, + "description": "Flag to include biomass sector.", + "type": "boolean" + }, + "industry": { + "default": true, + "description": "Flag to include industry sector.", + "type": "boolean" + }, + "shipping": { + "default": true, + "description": "Flag to include shipping sector.", + "type": "boolean" + }, + "aviation": { + "default": true, + "description": "Flag to include aviation sector.", + "type": "boolean" + }, + "agriculture": { + "default": true, + "description": "Flag to include agriculture sector.", + "type": "boolean" + }, + "fossil_fuels": { + "default": true, + "description": "Flag to include imports of fossil fuels.", + "type": "boolean" + }, + "district_heating": { + "description": "Configuration for `sector.district_heating` settings.", + "properties": { + "potential": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ], + "default": 0.6, + "description": "Maximum fraction of urban demand which can be supplied by district heating. If given as dictionary, specify one value per country modeled or provide a default value with key `default` to fill values for all unspecified countries." + }, + "progress": { + "additionalProperties": { + "type": "number" + }, + "description": "Increase of today's district heating demand to potential maximum district heating share. Progress = 0 means today's district heating share. Progress = 1 means maximum fraction of urban demand is supplied by district heating.", + "type": "object" + }, + "district_heating_loss": { + "default": 0.15, + "description": "Share increase in district heat demand in urban central due to heat losses.", + "type": "number" + }, + "supply_temperature_approximation": { + "additionalProperties": true, + "description": "Supply temperature approximation settings.", + "type": "object" + }, + "ptes": { + "additionalProperties": true, + "description": "Pit thermal energy storage settings.", + "type": "object" + }, + "ates": { + "additionalProperties": true, + "description": "Aquifer thermal energy storage settings.", + "type": "object" + }, + "heat_source_cooling": { + "default": 6, + "description": "Cooling of heat source for heat pumps.", + "type": "number" + }, + "heat_pump_cop_approximation": { + "additionalProperties": true, + "description": "Heat pump COP approximation settings.", + "type": "object" + }, + "limited_heat_sources": { + "additionalProperties": true, + "description": "Dictionary with names of limited heat sources (not air). Must be `river_water` / `geothermal` or another heat source in `Manz et al. 2024 `_.", + "markdownDescription": "Dictionary with names of limited heat sources (not air). Must be `river_water` / `geothermal` or another heat source in [Manz et al. 2024 ](https://www.sciencedirect.com/science/article/pii/S0960148124001769).", + "type": "object" + }, + "direct_utilisation_heat_sources": { + "description": "List of heat sources for direct heat utilisation in district heating. Must be in the keys of `heat_utilisation_potentials` (e.g. `geothermal`).", + "items": { + "type": "string" + }, + "type": "array" + }, + "temperature_limited_stores": { + "description": "List of names for stores used as limited heat sources.", + "items": { + "type": "string" + }, + "type": "array" + }, + "dh_areas": { + "additionalProperties": true, + "description": "District heating areas settings.", + "type": "object" + } + } + }, + "heat_pump_sources": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": "Heat pump sources by area.", + "type": "object" + }, + "residential_heat": { + "description": "Configuration for `sector.residential_heat` settings.", + "properties": { + "dsm": { + "description": "Configuration for `sector.residential_heat.dsm` settings.", + "properties": { + "enable": { + "default": false, + "description": "Enable residential heat demand-side management that allows heating systems to provide flexibility by shifting demand within configurable time periods. Models building thermal mass as energy storage.", + "type": "boolean" + }, + "direction": { + "description": "'overheat-undercool' means both pre-heating and delayed heating are allowed. 'overheat' allows only pre-heating where buildings are heated up above target temperature and then allowed to cool down, while 'undercool' allows only delayed heating where buildings can cool below target temperature and then be heated up again.", + "items": { + "type": "string" + }, + "type": "array" + }, + "restriction_value": { + "additionalProperties": { + "type": "number" + }, + "description": "Maximum state of charge (as fraction) for heat flexibility storage representing available thermal buffer capacity in buildings. Set to 0 for no flexibility or to 1.0 to assume that the entire heating demand can contribute to flexibility.", + "type": "object" + }, + "restriction_time": { + "description": "Checkpoint hours (0-23) at which heat flexibility storage must return to baseline state of charge, i.e. the residence surplus or missing heat be balanced. Time is the local time for each country and bus. Default: [10, 22] creates 12-hour periods with checkpoints at 10am and 10pm.", + "items": { + "type": "integer" + }, + "type": "array" + } + } + } + } + }, + "cluster_heat_buses": { + "default": true, + "description": "Cluster residential and service heat buses in `prepare_sector_network.py `_ to one to save memory.", + "markdownDescription": "Cluster residential and service heat buses in [prepare_sector_network.py ](https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/prepare_sector_network.py) to one to save memory.", + "type": "boolean" + }, + "heat_demand_cutout": { + "default": "default", + "description": "Heat demand cutout.", + "type": "string" + }, + "bev_dsm_restriction_value": { + "default": 0.8, + "description": "Adds a lower state of charge (SOC) limit for battery electric vehicles (BEV) to manage its own energy demand (DSM). Located in `build_transport_demand.py `_. Set to 0 for no restriction on BEV DSM.", + "markdownDescription": "Adds a lower state of charge (SOC) limit for battery electric vehicles (BEV) to manage its own energy demand (DSM). Located in [build_transport_demand.py ](https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/build_transport_demand.py). Set to 0 for no restriction on BEV DSM.", + "type": "number" + }, + "bev_dsm_restriction_time": { + "default": 7, + "description": "Time at which SOC of BEV has to be dsm_restriction_value.", + "type": "number" + }, + "transport_heating_deadband_upper": { + "default": 20.0, + "description": "The maximum temperature in the vehicle. At higher temperatures, the energy required for cooling in the vehicle increases.", + "type": "number" + }, + "transport_heating_deadband_lower": { + "default": 15.0, + "description": "The minimum temperature in the vehicle. At lower temperatures, the energy required for heating in the vehicle increases.", + "type": "number" + }, + "ICE_lower_degree_factor": { + "default": 0.375, + "description": "Share increase in energy demand in internal combustion engine (ICE) for each degree difference between the cold environment and the minimum temperature.", + "type": "number" + }, + "ICE_upper_degree_factor": { + "default": 1.6, + "description": "Share increase in energy demand in internal combustion engine (ICE) for each degree difference between the hot environment and the maximum temperature.", + "type": "number" + }, + "EV_lower_degree_factor": { + "default": 0.98, + "description": "Share increase in energy demand in electric vehicles (EV) for each degree difference between the cold environment and the minimum temperature.", + "type": "number" + }, + "EV_upper_degree_factor": { + "default": 0.63, + "description": "Share increase in energy demand in electric vehicles (EV) for each degree difference between the hot environment and the maximum temperature.", + "type": "number" + }, + "bev_dsm": { + "default": true, + "description": "Add the option for battery electric vehicles (BEV) to participate in demand-side management (DSM).", + "type": "boolean" + }, + "bev_dsm_availability": { + "default": 0.5, + "description": "The share for battery electric vehicles (BEV) that are able to do demand side management (DSM).", + "type": "number" + }, + "bev_energy": { + "default": 0.05, + "description": "The average size of battery electric vehicles (BEV) in MWh.", + "type": "number" + }, + "bev_charge_efficiency": { + "default": 0.9, + "description": "Battery electric vehicles (BEV) charge and discharge efficiency.", + "type": "number" + }, + "bev_charge_rate": { + "default": 0.011, + "description": "The power consumption for one electric vehicle (EV) in MWh. Value derived from 3-phase charger with 11 kW.", + "type": "number" + }, + "bev_avail_max": { + "default": 0.95, + "description": "The maximum share plugged-in availability for passenger electric vehicles.", + "type": "number" + }, + "bev_avail_mean": { + "default": 0.8, + "description": "The average share plugged-in availability for passenger electric vehicles.", + "type": "number" + }, + "v2g": { + "default": true, + "description": "Allows feed-in to grid from EV battery. This is only enabled if BEV demand-side management is enabled, and the share of vehicles participating is V2G is given by `bev_dsm_availability`.", + "type": "boolean" + }, + "land_transport_fuel_cell_share": { + "additionalProperties": { + "type": "number" + }, + "description": "The share of vehicles that uses fuel cells in a given year.", + "type": "object" + }, + "land_transport_electric_share": { + "additionalProperties": { + "type": "number" + }, + "description": "The share of vehicles that uses electric vehicles (EV) in a given year.", + "type": "object" + }, + "land_transport_ice_share": { + "additionalProperties": { + "type": "number" + }, + "description": "The share of vehicles that uses internal combustion engines (ICE) in a given year. What is not EV or FCEV is oil-fuelled ICE.", + "type": "object" + }, + "transport_electric_efficiency": { + "default": 53.19, + "description": "The conversion efficiencies of electric vehicles in transport.", + "type": "number" + }, + "transport_fuel_cell_efficiency": { + "default": 30.003, + "description": "The H2 conversion efficiencies of fuel cells in transport.", + "type": "number" + }, + "transport_ice_efficiency": { + "default": 16.0712, + "description": "The oil conversion efficiencies of internal combustion engine (ICE) in transport.", + "type": "number" + }, + "agriculture_machinery_electric_share": { + "default": 0.5, + "description": "The share for agricultural machinery that uses electricity.", + "type": "number" + }, + "agriculture_machinery_oil_share": { + "default": 0.5, + "description": "The share for agricultural machinery that uses oil.", + "type": "number" + }, + "agriculture_machinery_fuel_efficiency": { + "default": 0.7, + "description": "The efficiency of electric-powered machinery in the conversion of electricity to meet agricultural needs.", + "type": "number" + }, + "agriculture_machinery_electric_efficiency": { + "default": 0.3, + "description": "The efficiency of oil-powered machinery in the conversion of oil to meet agricultural needs.", + "type": "number" + }, + "shipping_hydrogen_liquefaction": { + "default": false, + "description": "Whether to include liquefaction costs for hydrogen demand in shipping.", + "type": "boolean" + }, + "shipping_hydrogen_share": { + "additionalProperties": { + "type": "number" + }, + "description": "The share of ships powered by hydrogen in a given year.", + "type": "object" + }, + "shipping_methanol_share": { + "additionalProperties": { + "type": "number" + }, + "description": "The share of ships powered by methanol in a given year.", + "type": "object" + }, + "shipping_oil_share": { + "additionalProperties": { + "type": "number" + }, + "description": "The share of ships powered by oil in a given year.", + "type": "object" + }, + "shipping_methanol_efficiency": { + "default": 0.46, + "description": "The efficiency of methanol-powered ships in the conversion of methanol to meet shipping needs (propulsion). The efficiency increase from oil can be 10-15% higher according to the `IEA `_.", + "markdownDescription": "The efficiency of methanol-powered ships in the conversion of methanol to meet shipping needs (propulsion). The efficiency increase from oil can be 10-15% higher according to the [IEA ](https://www.iea-amf.org/app/webroot/files/file/Annex%20Reports/AMF_Annex_56.pdf).", + "type": "number" + }, + "shipping_oil_efficiency": { + "default": 0.4, + "description": "The efficiency of oil-powered ships in the conversion of oil to meet shipping needs (propulsion). Base value derived from 2011.", + "type": "number" + }, + "aviation_demand_factor": { + "default": 1.0, + "description": "The proportion of demand for aviation compared to today's consumption.", + "type": "number" + }, + "HVC_demand_factor": { + "default": 1.0, + "description": "The proportion of demand for high-value chemicals compared to today's consumption.", + "type": "number" + }, + "time_dep_hp_cop": { + "default": true, + "description": "Consider the time dependent coefficient of performance (COP) of the heat pump.", + "type": "boolean" + }, + "heat_pump_sink_T_individual_heating": { + "default": 55.0, + "description": "The temperature heat sink used in heat pumps based on DTU / large area radiators. The value is conservatively high to cover hot water and space heating in poorly-insulated buildings.", + "type": "number" + }, + "reduce_space_heat_exogenously": { + "default": true, + "description": "Influence on space heating demand by a certain factor (applied before losses in district heating).", + "type": "boolean" + }, + "reduce_space_heat_exogenously_factor": { + "additionalProperties": { + "type": "number" + }, + "description": "A positive factor can mean renovation or demolition of a building. If the factor is negative, it can mean an increase in floor area, increased thermal comfort, population growth. The default factors are determined by the `Eurocalc Homes and buildings decarbonization scenario `_.", + "markdownDescription": "A positive factor can mean renovation or demolition of a building. If the factor is negative, it can mean an increase in floor area, increased thermal comfort, population growth. The default factors are determined by the [Eurocalc Homes and buildings decarbonization scenario ](http://tool.european-calculator.eu/app/buildings/building-types-area/?levers=1ddd4444421213bdbbbddd44444ffffff11f411111221111211l212221).", + "type": "object" + }, + "retrofitting": { + "description": "Configuration for `sector.retrofitting` settings.", + "properties": { + "retro_endogen": { + "default": false, + "description": "Add retrofitting as an endogenous system which co-optimise space heat savings.", + "type": "boolean" + }, + "cost_factor": { + "default": 1.0, + "description": "Weight costs for building renovation.", + "type": "number" + }, + "interest_rate": { + "default": 0.04, + "description": "The interest rate for investment in building components.", + "type": "number" + }, + "annualise_cost": { + "default": true, + "description": "Annualise the investment costs of retrofitting.", + "type": "boolean" + }, + "tax_weighting": { + "default": false, + "description": "Weight the costs of retrofitting depending on taxes in countries.", + "type": "boolean" + }, + "construction_index": { + "default": true, + "description": "Weight the costs of retrofitting depending on labour/material costs per country.", + "type": "boolean" + } + } + }, + "tes": { + "default": true, + "description": "Add option for storing thermal energy in large water pits associated with district heating systems and individual thermal energy storage (TES).", + "type": "boolean" + }, + "boilers": { + "default": true, + "description": "Add option for transforming gas into heat using gas boilers.", + "type": "boolean" + }, + "resistive_heaters": { + "default": true, + "description": "Add option for transforming electricity into heat using resistive heaters (independently from gas boilers).", + "type": "boolean" + }, + "oil_boilers": { + "default": false, + "description": "Add option for transforming oil into heat using boilers.", + "type": "boolean" + }, + "biomass_boiler": { + "default": true, + "description": "Add option for transforming biomass into heat using boilers.", + "type": "boolean" + }, + "overdimension_heat_generators": { + "additionalProperties": { + "type": "number" + }, + "description": "Add option for overdimensioning heating systems by a certain factor. This allows them to cover heat demand peaks e.g. 10% higher than those in the data with a setting of 1.1.", + "type": "object" + }, + "chp": { + "description": "Configuration for `sector.chp` settings.", + "properties": { + "enable": { + "default": true, + "description": "Add option for using Combined Heat and Power (CHP).", + "type": "boolean" + }, + "fuel": { + "description": "Possible options are all fuels which have an existing bus and their CO2 intensity is given in the technology data. Currently possible are \"gas\", \"oil\", \"methanol\", \"lignite\", \"coal\" as well as \"solid biomass\". For all fuels except solid biomass, the techno-economic data from gas CHP is used. For the special case of solid biomass fuel, both CHP plants with and without carbon capture are added.", + "items": { + "type": "string" + }, + "type": "array" + }, + "micro_chp": { + "default": false, + "description": "Add option for using gas-fired Combined Heat and Power (CHP) for decentral areas.", + "type": "boolean" + } + } + }, + "solar_thermal": { + "default": true, + "description": "Add option for using solar thermal to generate heat.", + "type": "boolean" + }, + "solar_cf_correction": { + "default": 0.788457, + "description": "The correction factor for the value provided by the solar thermal profile calculations.", + "type": "number" + }, + "methanation": { + "default": true, + "description": "Add option for transforming hydrogen and CO2 into methane using methanation.", + "type": "boolean" + }, + "coal_cc": { + "default": false, + "description": "Add option for coal CHPs with carbon capture.", + "type": "boolean" + }, + "dac": { + "default": true, + "description": "Add option for Direct Air Capture (DAC).", + "type": "boolean" + }, + "co2_vent": { + "default": false, + "description": "Add option for vent out CO2 from storages to the atmosphere.", + "type": "boolean" + }, + "heat_vent": { + "additionalProperties": { + "type": "boolean" + }, + "description": "Heat venting by area.", + "type": "object" + }, + "marginal_cost_heat_vent": { + "default": 0.02, + "description": "The marginal cost of heat-venting in all heating systems.", + "type": "number" + }, + "allam_cycle_gas": { + "default": false, + "description": "Add option to include `Allam cycle gas power plants `_.", + "markdownDescription": "Add option to include [Allam cycle gas power plants ](https://en.wikipedia.org/wiki/Allam_power_cycle).", + "type": "boolean" + }, + "hydrogen_fuel_cell": { + "default": true, + "description": "Add option to include hydrogen fuel cell for re-electrification. Assuming OCGT technology costs.", + "type": "boolean" + }, + "hydrogen_turbine": { + "default": true, + "description": "Add option to include hydrogen turbine for re-electrification. Assuming OCGT technology costs.", + "type": "boolean" + }, + "SMR": { + "default": true, + "description": "Add option for transforming natural gas into hydrogen and CO2 using Steam Methane Reforming (SMR).", + "type": "boolean" + }, + "SMR_cc": { + "default": true, + "description": "Add option for transforming natural gas into hydrogen and CO2 using Steam Methane Reforming (SMR) and Carbon Capture (CC).", + "type": "boolean" + }, + "regional_oil_demand": { + "default": true, + "description": "Spatially resolve oil demand. Set to true if regional CO2 constraints needed.", + "type": "boolean" + }, + "regional_coal_demand": { + "default": false, + "description": "Regional coal demand.", + "type": "boolean" + }, + "regional_co2_sequestration_potential": { + "additionalProperties": true, + "description": "Add option for regionally-resolved geological carbon dioxide sequestration potentials based on `CO2StoP `_.", + "markdownDescription": "Add option for regionally-resolved geological carbon dioxide sequestration potentials based on [CO2StoP ](https://setis.ec.europa.eu/european-co2-storage-database_en).", + "type": "object" + }, + "co2_sequestration_potential": { + "additionalProperties": { + "type": "number" + }, + "description": "The potential of sequestering CO2 in Europe per year and investment period.", + "type": "object" + }, + "co2_sequestration_cost": { + "default": 30, + "description": "The cost of sequestering a ton of CO2 (currency/tCO2).", + "type": "number" + }, + "co2_sequestration_lifetime": { + "default": 50, + "description": "The lifetime of a CO2 sequestration site (years).", + "type": "integer" + }, + "co2_spatial": { + "default": true, + "description": "Add option to spatially resolve carrier representing stored carbon dioxide. This allows for more detailed modelling of CCUTS, e.g. regarding the capturing of industrial process emissions, usage as feedstock for electrofuels, transport of carbon dioxide, and geological sequestration sites.", + "type": "boolean" + }, + "co2_network": { + "default": true, + "description": "Add option for planning a new carbon dioxide transmission network.", + "type": "boolean" + }, + "co2_network_cost_factor": { + "default": 1, + "description": "The cost factor for the capital cost of the carbon dioxide transmission network.", + "type": "number" + }, + "cc_fraction": { + "default": 0.9, + "description": "The default fraction of CO2 captured with post-combustion capture.", + "type": "number" + }, + "hydrogen_underground_storage": { + "default": true, + "description": "Add options for storing hydrogen underground. Storage potential depends regionally.", + "type": "boolean" + }, + "hydrogen_underground_storage_locations": { + "description": "The location where hydrogen underground storage can be located. Onshore, nearshore, offshore means it must be located more than 50 km away from the sea, within 50 km of the sea, or within the sea itself respectively.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methanol": { + "description": "Configuration for `sector.methanol` settings.", + "properties": { + "regional_methanol_demand": { + "default": false, + "description": "Spatially resolve methanol demand. Set to true if regional CO2 constraints needed.", + "type": "boolean" + }, + "methanol_reforming": { + "default": false, + "description": "Add methanol reforming.", + "type": "boolean" + }, + "methanol_reforming_cc": { + "default": false, + "description": "Add methanol reforming with carbon capture.", + "type": "boolean" + }, + "methanol_to_kerosene": { + "default": false, + "description": "Add methanol to kerosene.", + "type": "boolean" + }, + "methanol_to_power": { + "additionalProperties": { + "type": "boolean" + }, + "description": "Add different methanol to power technologies.", + "type": "object" + }, + "biomass_to_methanol": { + "default": true, + "description": "Add biomass to methanol.", + "type": "boolean" + }, + "biomass_to_methanol_cc": { + "default": false, + "description": "Add biomass to methanol with carbon capture.", + "type": "boolean" + } + } + }, + "ammonia": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": true, + "description": "Add ammonia as a carrier. It can be either true (copperplated NH3), false (no NH3 carrier) or \"regional\" (regionalised NH3 without network)." + }, + "min_part_load_electrolysis": { + "default": 0, + "description": "The minimum unit dispatch (`p_min_pu`) for electrolysis.", + "type": "number" + }, + "min_part_load_fischer_tropsch": { + "default": 0.5, + "description": "The minimum unit dispatch (`p_min_pu`) for the Fischer-Tropsch process.", + "type": "number" + }, + "min_part_load_methanolisation": { + "default": 0.3, + "description": "The minimum unit dispatch (`p_min_pu`) for the methanolisation process.", + "type": "number" + }, + "min_part_load_methanation": { + "default": 0.3, + "description": "Minimum part load methanation.", + "type": "number" + }, + "use_fischer_tropsch_waste_heat": { + "default": 0.25, + "description": "Add option for using waste heat of Fischer Tropsch in district heating networks.", + "type": "number" + }, + "use_haber_bosch_waste_heat": { + "default": 0.25, + "description": "Use Haber-Bosch waste heat.", + "type": "number" + }, + "use_methanolisation_waste_heat": { + "default": 0.25, + "description": "Use methanolisation waste heat.", + "type": "number" + }, + "use_methanation_waste_heat": { + "default": 0.25, + "description": "Use methanation waste heat.", + "type": "number" + }, + "use_fuel_cell_waste_heat": { + "default": 1, + "description": "Add option for using waste heat of fuel cells in district heating networks.", + "type": "number" + }, + "use_electrolysis_waste_heat": { + "default": 0.25, + "description": "Add option for using waste heat of electrolysis in district heating networks.", + "type": "number" + }, + "electricity_transmission_grid": { + "default": true, + "description": "Switch for enabling/disabling the electricity transmission grid.", + "type": "boolean" + }, + "electricity_distribution_grid": { + "default": true, + "description": "Add a simplified representation of the exchange capacity between transmission and distribution grid level through a link.", + "type": "boolean" + }, + "electricity_distribution_grid_cost_factor": { + "default": 1.0, + "description": "Multiplies the investment cost of the electricity distribution grid.", + "type": "number" + }, + "electricity_grid_connection": { + "default": true, + "description": "Add the cost of electricity grid connection for onshore wind and solar.", + "type": "boolean" + }, + "transmission_efficiency": { + "description": "Configuration for `sector.transmission_efficiency` settings.", + "properties": { + "enable": { + "description": "Switch to select the carriers for which transmission efficiency is to be added. Carriers not listed assume lossless transmission.", + "items": { + "type": "string" + }, + "type": "array" + }, + "DC": { + "additionalProperties": { + "type": "number" + }, + "description": "DC transmission efficiency.", + "type": "object" + }, + "H2 pipeline": { + "additionalProperties": { + "type": "number" + }, + "description": "H2 pipeline transmission efficiency.", + "type": "object" + }, + "gas pipeline": { + "additionalProperties": { + "type": "number" + }, + "description": "Gas pipeline transmission efficiency.", + "type": "object" + }, + "electricity distribution grid": { + "additionalProperties": { + "type": "number" + }, + "description": "Electricity distribution grid efficiency.", + "type": "object" + } + } + }, + "H2_network": { + "default": true, + "description": "Add option for new hydrogen pipelines.", + "type": "boolean" + }, + "gas_network": { + "default": true, + "description": "Add existing natural gas infrastructure, incl. LNG terminals, production and entry-points. The existing gas network is added with a lossless transport model. A length-weighted `k-edge augmentation algorithm `_ can be run to add new candidate gas pipelines such that all regions of the model can be connected to the gas network. When activated, all the gas demands are regionally disaggregated as well.", + "markdownDescription": "Add existing natural gas infrastructure, incl. LNG terminals, production and entry-points. The existing gas network is added with a lossless transport model. A length-weighted [k-edge augmentation algorithm ](https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation.html#networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation) can be run to add new candidate gas pipelines such that all regions of the model can be connected to the gas network. When activated, all the gas demands are regionally disaggregated as well.", + "type": "boolean" + }, + "H2_retrofit": { + "default": false, + "description": "Add option for retrofiting existing pipelines to transport hydrogen.", + "type": "boolean" + }, + "H2_retrofit_capacity_per_CH4": { + "default": 0.6, + "description": "The ratio for H2 capacity per original CH4 capacity of retrofitted pipelines. The `European Hydrogen Backbone (April, 2020) p.15 `_ 60% of original natural gas capacity could be used in cost-optimal case as H2 capacity.", + "markdownDescription": "The ratio for H2 capacity per original CH4 capacity of retrofitted pipelines. The [European Hydrogen Backbone (April, 2020) p.15 ](https://gasforclimate2050.eu/wp-content/uploads/2020/07/2020_European-Hydrogen-Backbone_Report.pdf) 60% of original natural gas capacity could be used in cost-optimal case as H2 capacity.", + "type": "number" + }, + "gas_network_connectivity_upgrade": { + "default": 1, + "description": "The number of desired edge connectivity (k) in the length-weighted `k-edge augmentation algorithm `_ used for the gas network.", + "markdownDescription": "The number of desired edge connectivity (k) in the length-weighted [k-edge augmentation algorithm ](https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation.html#networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation) used for the gas network.", + "type": "number" + }, + "gas_distribution_grid": { + "default": true, + "description": "Add a gas distribution grid.", + "type": "boolean" + }, + "gas_distribution_grid_cost_factor": { + "default": 1.0, + "description": "Multiplier for the investment cost of the gas distribution grid.", + "type": "number" + }, + "biomass_spatial": { + "default": true, + "description": "Add option for resolving biomass demand regionally.", + "type": "boolean" + }, + "biomass_transport": { + "default": false, + "description": "Add option for transporting solid biomass between nodes.", + "type": "boolean" + }, + "biogas_upgrading": { + "default": true, + "description": "Biogas upgrading.", + "type": "boolean" + }, + "biogas_upgrading_cc": { + "default": false, + "description": "Add option to capture CO2 from biomass upgrading.", + "type": "boolean" + }, + "conventional_generation": { + "additionalProperties": { + "type": "string" + }, + "description": "Add a more detailed description of conventional carriers. Any power generation requires the consumption of fuel from nodes representing that fuel.", + "type": "object" + }, + "biomass_to_liquid": { + "default": true, + "description": "Add option for transforming solid biomass into liquid fuel with the same properties as oil.", + "type": "boolean" + }, + "biomass_to_liquid_cc": { + "default": false, + "description": "Add option for transforming solid biomass into liquid fuel with the same properties as oil with carbon capture.", + "type": "boolean" + }, + "electrobiofuels": { + "default": true, + "description": "Electrobiofuels.", + "type": "boolean" + }, + "biosng": { + "default": false, + "description": "Add option for transforming solid biomass into synthesis gas with the same properties as natural gas.", + "type": "boolean" + }, + "biosng_cc": { + "default": false, + "description": "Add option for transforming solid biomass into synthesis gas with the same properties as natural gas with carbon capture.", + "type": "boolean" + }, + "bioH2": { + "default": false, + "description": "Add option for transforming solid biomass into hydrogen with carbon capture.", + "type": "boolean" + }, + "municipal_solid_waste": { + "default": false, + "description": "Add option for municipal solid waste.", + "type": "boolean" + }, + "limit_max_growth": { + "description": "Configuration for `sector.limit_max_growth` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add option to limit the maximum growth of a carrier.", + "type": "boolean" + }, + "factor": { + "default": 1.3, + "description": "The maximum growth factor of a carrier (e.g. 1.3 allows 30% larger than max historic growth).", + "type": "number" + }, + "max_growth": { + "additionalProperties": { + "type": "number" + }, + "description": "The historic maximum growth of a carrier.", + "type": "object" + }, + "max_relative_growth": { + "additionalProperties": { + "type": "number" + }, + "description": "The historic maximum relative growth of a carrier.", + "type": "object" + } + } + }, + "enhanced_geothermal": { + "description": "Configuration for `sector.enhanced_geothermal` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add option to include Enhanced Geothermal Systems.", + "type": "boolean" + }, + "flexible": { + "default": true, + "description": "Add option for flexible operation (see Ricks et al. 2024).", + "type": "boolean" + }, + "max_hours": { + "default": 240, + "description": "The maximum hours the reservoir can be charged under flexible operation.", + "type": "integer" + }, + "max_boost": { + "default": 0.25, + "description": "The maximum boost in power output under flexible operation.", + "type": "number" + }, + "var_cf": { + "default": true, + "description": "Add option for variable capacity factor (see Ricks et al. 2024).", + "type": "boolean" + }, + "sustainability_factor": { + "default": 0.0025, + "description": "Share of sourced heat that is replenished by the earth's core (see details in `build_egs_potentials.py `_).", + "markdownDescription": "Share of sourced heat that is replenished by the earth's core (see details in [build_egs_potentials.py ](https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/build_egs_potentials.py)).", + "type": "number" + } + } + }, + "solid_biomass_import": { + "description": "Configuration for `sector.solid_biomass_import` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add option to include solid biomass imports.", + "type": "boolean" + }, + "price": { + "default": 54, + "description": "Price for importing solid biomass (currency/MWh).", + "type": "number" + }, + "max_amount": { + "default": 1390, + "description": "Maximum solid biomass import potential (TWh).", + "type": "number" + }, + "upstream_emissions_factor": { + "default": 0.1, + "description": "Upstream emissions of solid biomass imports.", + "type": "number" + } + } + }, + "imports": { + "description": "Configuration for `sector.imports` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add option to include renewable energy imports.", + "type": "boolean" + }, + "limit": { + "default": null, + "description": "Maximum allowed renewable energy imports (TWh).", + "type": "number" + }, + "limit_sense": { + "default": "<=", + "description": "Sense of the limit.", + "type": "string" + }, + "price": { + "additionalProperties": { + "type": "number" + }, + "description": "Price for importing renewable energy of carrier.", + "type": "object" + } + } + } + } + }, + "SnapshotsConfig": { + "description": "Configuration for `snapshots` settings.", + "properties": { + "start": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "2013-01-01", + "description": "Left bound of date range." + }, + "end": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "2014-01-01", + "description": "Right bound of date range." + }, + "inclusive": { + "anyOf": [ + { + "enum": [ + "left", + "right", + "both" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": "left", + "description": "Make the time interval closed to the `left`, `right`, or both sides `both` or neither side `None`." + } + } + }, + "SolarThermalConfig": { + "description": "Configuration for `solar_thermal` settings.", + "properties": { + "clearsky_model": { + "default": "simple", + "description": "Type of clearsky model for diffuse irradiation.", + "enum": [ + "simple", + "enhanced" + ], + "type": "string" + }, + "orientation": { + "description": "Configuration for `solar_thermal.orientation` settings.", + "properties": { + "slope": { + "default": 45.0, + "description": "The angle between the ground and the panels.", + "type": "number" + }, + "azimuth": { + "default": 180.0, + "description": "The angle between the North and the sun with panels on the local horizon.", + "type": "number" + } + } + }, + "cutout": { + "default": "default", + "description": "Name of the cutout to use for solar thermal calculations.", + "type": "string" + } + } + }, + "SolvingConfig": { + "description": "Configuration for `solving` settings.", + "properties": { + "options": { + "description": "Configuration for `solving.options` settings.", + "properties": { + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + }, + "load_shedding": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "number" + } + ], + "default": false, + "description": "Add generators with very high marginal cost to simulate load shedding and avoid problem infeasibilities. If load shedding is a float, it denotes the marginal cost in EUR/kWh." + }, + "curtailment_mode": { + "default": false, + "description": "Fixes the dispatch profiles of generators with time-varying p_max_pu by setting `p_min_pu = p_max_pu` and adds an auxiliary curtailment generator (with negative sign to absorb excess power) at every AC bus. This can speed up the solving process as the curtailment decision is aggregated into a single generator per region. Defaults to `false`.", + "type": "boolean" + }, + "noisy_costs": { + "default": true, + "description": "Add random noise to marginal cost of generators by :math:`\\mathcal{U}(0.009,0,011)` and capital cost of lines and links by :math:`\\mathcal{U}(0.09,0,11)`.", + "type": "boolean" + }, + "skip_iterations": { + "default": true, + "description": "Skip iterating, do not update impedances of branches. Defaults to true.", + "type": "boolean" + }, + "rolling_horizon": { + "default": false, + "description": "Switch for rule `solve_operations_network` whether to optimize the network in a rolling horizon manner, where the snapshot range is split into slices of size `horizon` which are solved consecutively. This setting has currently no effect on sector-coupled networks.", + "type": "boolean" + }, + "seed": { + "default": 123, + "description": "Random seed for increased deterministic behaviour.", + "type": "integer" + }, + "custom_extra_functionality": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "../data/custom_extra_functionality.py", + "description": "Path to a Python file with custom extra functionality code to be injected into the solving rules of the workflow relative to `rules` directory." + }, + "io_api": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Passed to linopy and determines the API used to communicate with the solver. With the `'lp'` and `'mps'` options linopy passes a file to the solver; with the `'direct'` option (only supported for HIGHS and Gurobi) linopy uses an in-memory python API resulting in better performance." + }, + "track_iterations": { + "default": false, + "description": "Flag whether to store the intermediate branch capacities and objective function values are recorded for each iteration in `network.lines['s_nom_opt_X']` (where `X` labels the iteration)", + "type": "boolean" + }, + "min_iterations": { + "default": 2, + "description": "Minimum number of solving iterations in between which resistance and reactence (`x/r`) are updated for branches according to `s_nom_opt` of the previous run.", + "type": "integer" + }, + "max_iterations": { + "default": 3, + "description": "Maximum number of solving iterations in between which resistance and reactence (`x/r`) are updated for branches according to `s_nom_opt` of the previous run.", + "type": "integer" + }, + "transmission_losses": { + "default": 2, + "description": "Add piecewise linear approximation of transmission losses based on n tangents. Defaults to 0, which means losses are ignored.", + "type": "integer" + }, + "linearized_unit_commitment": { + "default": true, + "description": "Whether to optimise using the linearized unit commitment formulation.", + "type": "boolean" + }, + "horizon": { + "default": 365, + "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": { + "enable": { + "default": false, + "description": "Switch to enable post-discretization of the network. Disabled by default.", + "type": "boolean" + }, + "line_unit_size": { + "default": 1700, + "description": "Discrete unit size of lines in MW.", + "type": "number" + }, + "line_threshold": { + "default": 0.3, + "description": "The threshold relative to the discrete line unit size beyond which to round up to the next unit.", + "type": "number" + }, + "link_unit_size": { + "additionalProperties": { + "type": "number" + }, + "description": "Discrete unit size of links in MW by carrier (given in dictionary style).", + "type": "object" + }, + "link_threshold": { + "additionalProperties": { + "type": "number" + }, + "description": "The threshold relative to the discrete link unit size beyond which to round up to the next unit by carrier (given in dictionary style).", + "type": "object" + }, + "fractional_last_unit_size": { + "default": false, + "description": "When true, links and lines can be built up to p_nom_max. When false, they can only be built up to a multiple of the unit size.", + "type": "boolean" + } + } + }, + "keep_files": { + "default": false, + "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": { + "solver_dir": { + "default": "", + "description": "Absolute path to the directory where linopy saves files.", + "type": "string" + } + } + } + } + }, + "agg_p_nom_limits": { + "description": "Configuration for `solving.agg_p_nom_limits` settings.", + "properties": { + "agg_offwind": { + "default": false, + "description": "Aggregate together all the types of offwind when writing the constraint (`offwind-all` as a carrier in the `.csv` file). Default is false.", + "type": "boolean" + }, + "agg_solar": { + "default": false, + "description": "Aggregate together all the types of electric solar when writing the constraint (`solar-all` as a carrier in the `.csv` file). Default is false.", + "type": "boolean" + }, + "include_existing": { + "default": false, + "description": "Take existing capacities into account when writing the constraint. Default is false.", + "type": "boolean" + }, + "file": { + "default": "data/agg_p_nom_minmax.csv", + "description": "Reference to `.csv` file specifying per carrier generator nominal capacity constraints for individual countries and planning horizons. Defaults to `data/agg_p_nom_minmax.csv`.", + "type": "string" + } + } + }, + "constraints": { + "description": "Configuration for `solving.constraints` settings.", + "properties": { + "CCL": { + "default": false, + "description": "Add minimum and maximum levels of generator nominal capacity per carrier for individual countries. These can be specified in the file linked at `electricity: agg_p_nom_limits` in the configuration. File defaults to `data/agg_p_nom_minmax.csv`. Does not work with a time resolution resampling.", + "type": "boolean" + }, + "EQ": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Require each country or node to on average produce a minimal share of its total consumption itself. Example: `EQ0.5c` demands each country to produce on average at least 50% of its consumption; `EQ0.5` demands each node to produce on average at least 50% of its consumption." + }, + "BAU": { + "default": false, + "description": "Add a per-`carrier` minimal overall capacity; i.e. at least `40GW` of `OCGT` in Europe; configured in `electricity: BAU_mincapacities`", + "type": "boolean" + }, + "SAFE": { + "default": false, + "description": "Add a capacity reserve margin of a certain fraction above the peak demand to which renewable generators and storage do *not* contribute. Ignores network.", + "type": "boolean" + } + } + }, + "solver": { + "description": "Configuration for `solving.solver` settings.", + "properties": { + "name": { + "default": "gurobi", + "description": "Solver to use for optimisation problems in the workflow; e.g. clustering and linear optimal power flow.", + "type": "string" + }, + "options": { + "default": "gurobi-default", + "description": "Link to specific parameter settings.", + "type": "string" + } + } + }, + "solver_options": { + "additionalProperties": { + "additionalProperties": true, + "type": "object" + }, + "description": "Dictionaries with solver-specific parameter settings.", + "type": "object" + }, + "check_objective": { + "description": "Configuration for `solving.check_objective` settings.", + "properties": { + "enable": { + "default": false, + "description": "Enable objective value checking.", + "type": "boolean" + }, + "expected_value": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Expected objective value." + }, + "atol": { + "default": 1000000, + "description": "Absolute tolerance.", + "type": "number" + }, + "rtol": { + "default": 0.01, + "description": "Relative tolerance.", + "type": "number" + } + } + }, + "oetc": { + "anyOf": [ + { + "description": "Configuration for `solving.oetc` settings (Open Energy Transition Computing cluster support).", + "properties": { + "name": { + "default": "pypsa-eur", + "description": "Name identifier for the OETC job.", + "type": "string" + }, + "authentication_server_url": { + "default": "", + "description": "URL of the OETC authentication server for job submission.", + "type": "string" + }, + "orchestrator_server_url": { + "default": "", + "description": "URL of the OETC orchestrator server for job management.", + "type": "string" + }, + "cpu_cores": { + "default": 8, + "description": "Number of CPU cores to request for the OETC job. (includes RAM amount at the moment with a factor of 8)", + "type": "integer" + }, + "disk_space_gb": { + "default": 50, + "description": "Amount of disk space in gigabytes to request for the OETC job.", + "type": "integer" + }, + "delete_worker_on_error": { + "default": true, + "description": "Whether to delete the worker instance when an error occurs during job execution.", + "type": "boolean" + } + } + }, + { + "type": "null" + } + ], + "default": null, + "description": "Configuration options for Open Energy Transition Computing (OETC) cluster support." + }, + "mem_mb": { + "default": 128000, + "description": "Estimated maximum memory requirement for solving networks (MB).", + "type": "integer" + }, + "memory_logging_frequency": { + "default": 5, + "description": "Interval in seconds at which memory usage is logged.", + "type": "integer" + }, + "runtime": { + "default": "48h", + "description": "Runtime in humanfriendly style.", + "type": "string" + } + } + }, + "TransformersConfig": { + "description": "Configuration for `transformers` settings.", + "properties": { + "x": { + "default": 0.1, + "description": "Series reactance in per unit (p.u.), using `s_nom` as base power of the transformer. Overwritten if `type` is specified.", + "type": "number" + }, + "s_nom": { + "default": 2000.0, + "description": "Limit of apparent power which can pass through branch (MVA). Overwritten if `type` is specified.", + "type": "number" + }, + "type": { + "default": "", + "description": "Specifies transformer types to assume for the transformers of the ENTSO-E grid extraction.", + "type": "string" + } + } + }, + "TransmissionProjectsConfig": { + "description": "Configuration for `transmission_projects` settings.", + "properties": { + "enable": { + "default": true, + "description": "Whether to integrate this transmission projects or not.", + "type": "boolean" + }, + "include": { + "description": "Configuration for `transmission_projects.include` settings.", + "properties": { + "tyndp2020": { + "default": true, + "description": "Whether to integrate the TYNDP 2020 dataset.", + "type": "boolean" + }, + "nep": { + "default": true, + "description": "Whether to integrate the German network development plan dataset.", + "type": "boolean" + }, + "manual": { + "default": true, + "description": "Whether to integrate the manually added transmission projects. They are taken from the previously existing links_tyndp.csv file.", + "type": "boolean" + } + } + }, + "skip": { + "description": "Type of lines to skip from all transmission projects. Possible values are: `upgraded_lines`, `upgraded_links`, `new_lines`, `new_links`.", + "items": { + "type": "string" + }, + "type": "array" + }, + "status": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": "object" + } + ], + "description": "Status to include into the model as list or as dict with name of project and status to include. Possible values for status are `under_construction`, `in_permitting`, `confirmed`, `planned_not_yet_permitted`, `under_consideration`." + }, + "new_link_capacity": { + "default": "zero", + "description": "Whether to set the new link capacity to the provided capacity or set it to zero.", + "enum": [ + "zero", + "keep" + ], + "type": "string" + } + } + }, + "_AdjustmentConfig": { + "description": "Configuration for adjustment settings (factor/absolute)", + "properties": { + "factor": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": { + "additionalProperties": { + "additionalProperties": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ] + }, + "type": "object" + }, + "type": "object" + }, + "type": "object" + } + ], + "default": false, + "description": "Multiply original value with given factor" + }, + "absolute": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": { + "additionalProperties": { + "additionalProperties": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ] + }, + "type": "object" + }, + "type": "object" + }, + "type": "object" + } + ], + "default": false, + "description": "Set attribute to absolute value. Can be also a dictionary with planning horizons as keys." + } + } + }, + "_AdministrativeConfig": { + "description": "Configuration for `clustering.administrative` settings.", + "properties": { + "level": { + "default": 1, + "description": "Level of administrative regions to cluster the network. 0: Country level, 1: NUTS1 level, 2: NUTS2 level, 3: NUTS3 level, 'bz': Bidding zones. Only applies when mode is set to `administrative`. Note that non-NUTS countries 'BA', 'MD', 'UA', and 'XK' can only be clustered to level 0 and 1.", + "enum": [ + 0, + 1, + 2, + 3, + "bz" + ] + }, + "countries": { + "additionalProperties": { + "type": "integer" + }, + "description": "Optionally include dictionary of individual country codes and their individual NUTS levels. Overwrites country-specific `level`. For example: `{'DE': 1, 'FR': 2}`. Only applies when mode is set to `administrative`.", + "type": "object" + } + } + }, + "_AggPNomLimitsConfig": { + "description": "Configuration for `solving.agg_p_nom_limits` settings.", + "properties": { + "agg_offwind": { + "default": false, + "description": "Aggregate together all the types of offwind when writing the constraint (`offwind-all` as a carrier in the `.csv` file). Default is false.", + "type": "boolean" + }, + "agg_solar": { + "default": false, + "description": "Aggregate together all the types of electric solar when writing the constraint (`solar-all` as a carrier in the `.csv` file). Default is false.", + "type": "boolean" + }, + "include_existing": { + "default": false, + "description": "Take existing capacities into account when writing the constraint. Default is false.", + "type": "boolean" + }, + "file": { + "default": "data/agg_p_nom_minmax.csv", + "description": "Reference to `.csv` file specifying per carrier generator nominal capacity constraints for individual countries and planning horizons. Defaults to `data/agg_p_nom_minmax.csv`.", + "type": "string" + } + } + }, + "_AggregationStrategiesConfig": { + "description": "Configuration for `clustering.aggregation_strategies` settings.", + "properties": { + "generators": { + "additionalProperties": { + "type": "string" + }, + "description": "Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new generator.", + "type": "object" + }, + "buses": { + "additionalProperties": { + "type": "string" + }, + "description": "Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new bus.", + "type": "object" + } + } + }, + "_AutarkyConfig": { + "description": "Configuration for `electricity.autarky` settings.", + "properties": { + "enable": { + "default": false, + "description": "Require each node to be autarkic by removing all lines and links.", + "type": "boolean" + }, + "by_country": { + "default": false, + "description": "Require each country to be autarkic by removing all cross-border lines and links. `electricity: autarky` must be enabled.", + "type": "boolean" + } + } + }, + "_BiomassClassesConfig": { + "description": "Configuration for `biomass.classes` settings.", + "properties": { + "solid biomass": { + "description": "The comodity that are included as solid biomass.", + "items": { + "type": "string" + }, + "type": "array" + }, + "not included": { + "description": "The comodity that are not included as a biomass potential.", + "items": { + "type": "string" + }, + "type": "array" + }, + "biogas": { + "description": "The comodity that are included as biogas.", + "items": { + "type": "string" + }, + "type": "array" + }, + "municipal solid waste": { + "description": "The commodities that are included as municipal solid waste.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "_BuildBiddingZonesConfig": { + "description": "Configuration for `clustering.build_bidding_zones` settings.", + "properties": { + "remove_islands": { + "default": false, + "description": "Exclude from the shape file the Balearic Islands, Bornholm, the Canary Islands, the Orkney Islands, the Shetland Islands, the Azores Islands and Madeira.", + "type": "boolean" + }, + "aggregate_to_tyndp": { + "default": false, + "description": "Adjust the shape file to the TYNDP topology. Aggregate the Southern Norwegian bidding zones and extract Crete as a separate zone from the Greek shape.", + "type": "boolean" + } + } + }, + "_CHPConfig": { + "description": "Configuration for `sector.chp` settings.", + "properties": { + "enable": { + "default": true, + "description": "Add option for using Combined Heat and Power (CHP).", + "type": "boolean" + }, + "fuel": { + "description": "Possible options are all fuels which have an existing bus and their CO2 intensity is given in the technology data. Currently possible are \"gas\", \"oil\", \"methanol\", \"lignite\", \"coal\" as well as \"solid biomass\". For all fuels except solid biomass, the techno-economic data from gas CHP is used. For the special case of solid biomass fuel, both CHP plants with and without carbon capture are added.", + "items": { + "type": "string" + }, + "type": "array" + }, + "micro_chp": { + "default": false, + "description": "Add option for using gas-fired Combined Heat and Power (CHP) for decentral areas.", + "type": "boolean" + } + } + }, + "_CheckObjectiveConfig": { + "description": "Configuration for `solving.check_objective` settings.", + "properties": { + "enable": { + "default": false, + "description": "Enable objective value checking.", + "type": "boolean" + }, + "expected_value": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Expected objective value." + }, + "atol": { + "default": 1000000, + "description": "Absolute tolerance.", + "type": "number" + }, + "rtol": { + "default": 0.01, + "description": "Relative tolerance.", + "type": "number" + } + } + }, + "_ChunksConfig": { + "description": "Configuration for `atlite.cutouts.{name}.chunks` settings.", + "properties": { + "time": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Chunk size for time dimension when preparing cutout." + } + } + }, + "_ClusterNetworkConfig": { + "description": "Configuration for `clustering.cluster_network` settings.", + "properties": { + "algorithm": { + "default": "kmeans", + "description": "Clustering algorithm to use.", + "enum": [ + "kmeans", + "hac" + ], + "type": "string" + }, + "hac_features": { + "description": "List of meteorological variables contained in the weather data cutout that should be considered for hierarchical clustering.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "_ConstraintsConfig": { + "description": "Configuration for `solving.constraints` settings.", + "properties": { + "CCL": { + "default": false, + "description": "Add minimum and maximum levels of generator nominal capacity per carrier for individual countries. These can be specified in the file linked at `electricity: agg_p_nom_limits` in the configuration. File defaults to `data/agg_p_nom_minmax.csv`. Does not work with a time resolution resampling.", + "type": "boolean" + }, + "EQ": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Require each country or node to on average produce a minimal share of its total consumption itself. Example: `EQ0.5c` demands each country to produce on average at least 50% of its consumption; `EQ0.5` demands each node to produce on average at least 50% of its consumption." + }, + "BAU": { + "default": false, + "description": "Add a per-`carrier` minimal overall capacity; i.e. at least `40GW` of `OCGT` in Europe; configured in `electricity: BAU_mincapacities`", + "type": "boolean" + }, + "SAFE": { + "default": false, + "description": "Add a capacity reserve margin of a certain fraction above the peak demand to which renewable generators and storage do *not* contribute. Ignores network.", + "type": "boolean" + } + } + }, + "_CorineConfig": { + "description": "Configuration for CORINE land cover settings.", + "properties": { + "grid_codes": { + "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for wind turbine placement.", + "items": { + "type": "integer" + }, + "type": "array" + }, + "distance": { + "default": 1000, + "description": "Distance in meters to keep from areas specified in `distance_grid_codes`.", + "type": "number" + }, + "distance_grid_codes": { + "description": "Specifies areas according to CORINE Land Cover codes to which wind turbines must maintain a distance specified in the setting `distance`.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "grid_codes" + ] + }, + "_CutoutConfig": { + "description": "Configuration for a single cutout in `atlite.cutouts`.", + "properties": { + "module": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Source of the reanalysis weather dataset (e.g. `ERA5 `_ or `SARAH-3 `_).", + "markdownDescription": "Source of the reanalysis weather dataset (e.g. [ERA5 ](https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5) or [SARAH-3 ](https://wui.cmsaf.eu/safira/action/viewDoiDetails?acronym=SARAH_V002))." + }, + "x": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Range of longitudes [\u00b0] to download weather data for. Float interval within [-180, 180]. If not defined, it defaults to the spatial bounds of all bus shapes." + }, + "y": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Range of latitudes [\u00b0] to download weather data for. Float interval within [-90, 90]. If not defined, it defaults to the spatial bounds of all bus shapes." + }, + "dx": { + "anyOf": [ + { + "exclusiveMinimum": 0.25, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Grid resolution [\u00b0] for longitude. Must be larger than 0.25\u00b0." + }, + "dy": { + "anyOf": [ + { + "exclusiveMinimum": 0.25, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Grid resolution [\u00b0] for latitude. Must be larger than 0.25\u00b0." + }, + "time": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Time span to download weather data for. If not defined, it defaults to the time interval spanned by the snapshots." + }, + "chunks": { + "anyOf": [ + { + "description": "Configuration for `atlite.cutouts.{name}.chunks` settings.", + "properties": { + "time": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Chunk size for time dimension when preparing cutout." + } + } + }, + { + "type": "null" + } + ], + "default": null, + "description": "Chunking configuration for cutout preparation." + }, + "prepare_kwargs": { + "anyOf": [ + { + "description": "Configuration for `atlite.cutouts.{name}.prepare_kwargs` settings.", + "properties": { + "features": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "When freshly building a cutout, retrieve data only for those features. If not defined, it defaults to all available features." + }, + "sarah_dir": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the location where SARAH-2 or SARAH-3 data is stored; SARAH data requires a manual separate download, see the `atlite documentation `_ for details. Required for building cutouts with SARAH, not required for ERA5 cutouts.", + "markdownDescription": "Path to the location where SARAH-2 or SARAH-3 data is stored; SARAH data requires a manual separate download, see the [atlite documentation ](https://atlite.readthedocs.io) for details. Required for building cutouts with SARAH, not required for ERA5 cutouts." + }, + "monthly_requests": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether to use monthly requests for ERA5 data when building the cutout. Helpful to avoid running into request limits with large cutouts." + }, + "tmpdir": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to a temporary directory where intermediate files are stored when building the cutout. Helpful when building large cutouts." + } + } + }, + { + "type": "null" + } + ], + "default": null, + "description": "Dictionary of keyword arguments passed to ``atlite.Cutout.prepare()`` when building the cutout." + } + } + }, + "_DataSourceConfig": { + "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" + } + } + }, + "_DistributionKeyConfig": { + "description": "Configuration for `load.distribution_key` settings.", + "properties": { + "gdp": { + "default": 0.6, + "description": "Weighting factor for the GDP data in the distribution key.", + "type": "number" + }, + "population": { + "default": 0.4, + "description": "Weighting factor for the population data in the distribution key.", + "type": "number" + } + } + }, + "_DistrictHeatingConfig": { + "description": "Configuration for `sector.district_heating` settings.", + "properties": { + "potential": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ], + "default": 0.6, + "description": "Maximum fraction of urban demand which can be supplied by district heating. If given as dictionary, specify one value per country modeled or provide a default value with key `default` to fill values for all unspecified countries." + }, + "progress": { + "additionalProperties": { + "type": "number" + }, + "description": "Increase of today's district heating demand to potential maximum district heating share. Progress = 0 means today's district heating share. Progress = 1 means maximum fraction of urban demand is supplied by district heating.", + "type": "object" + }, + "district_heating_loss": { + "default": 0.15, + "description": "Share increase in district heat demand in urban central due to heat losses.", + "type": "number" + }, + "supply_temperature_approximation": { + "additionalProperties": true, + "description": "Supply temperature approximation settings.", + "type": "object" + }, + "ptes": { + "additionalProperties": true, + "description": "Pit thermal energy storage settings.", + "type": "object" + }, + "ates": { + "additionalProperties": true, + "description": "Aquifer thermal energy storage settings.", + "type": "object" + }, + "heat_source_cooling": { + "default": 6, + "description": "Cooling of heat source for heat pumps.", + "type": "number" + }, + "heat_pump_cop_approximation": { + "additionalProperties": true, + "description": "Heat pump COP approximation settings.", + "type": "object" + }, + "limited_heat_sources": { + "additionalProperties": true, + "description": "Dictionary with names of limited heat sources (not air). Must be `river_water` / `geothermal` or another heat source in `Manz et al. 2024 `_.", + "markdownDescription": "Dictionary with names of limited heat sources (not air). Must be `river_water` / `geothermal` or another heat source in [Manz et al. 2024 ](https://www.sciencedirect.com/science/article/pii/S0960148124001769).", + "type": "object" + }, + "direct_utilisation_heat_sources": { + "description": "List of heat sources for direct heat utilisation in district heating. Must be in the keys of `heat_utilisation_potentials` (e.g. `geothermal`).", + "items": { + "type": "string" + }, + "type": "array" + }, + "temperature_limited_stores": { + "description": "List of names for stores used as limited heat sources.", + "items": { + "type": "string" + }, + "type": "array" + }, + "dh_areas": { + "additionalProperties": true, + "description": "District heating areas settings.", + "type": "object" + } + } + }, + "_DynamicLineRatingConfig": { + "description": "Configuration for `lines.dynamic_line_rating` settings.", + "properties": { + "activate": { + "default": false, + "description": "Whether to take dynamic line rating into account.", + "type": "boolean" + }, + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "correction_factor": { + "default": 0.95, + "description": "Factor to compensate for overestimation of wind speeds in hourly averaged wind data.", + "type": "number" + }, + "max_voltage_difference": { + "anyOf": [ + { + "type": "number" + }, + { + "const": false, + "type": "boolean" + } + ], + "default": false, + "description": "Maximum voltage angle difference in degrees or 'false' to disable." + }, + "max_line_rating": { + "anyOf": [ + { + "type": "number" + }, + { + "const": false, + "type": "boolean" + } + ], + "default": false, + "description": "Maximum line rating relative to nominal capacity without DLR, e.g. 1.3 or 'false' to disable." + } + } + }, + "_EmissionPricesConfig": { + "description": "Configuration for `costs.emission_prices` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add cost for a carbon-dioxide price configured in `costs: emission_prices: co2` to `marginal_cost` of generators. Config setting can also be enabled with the keyword `Ep` in the `{opts}` wildcard for electricity-only runs.", + "type": "boolean" + }, + "co2": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ], + "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." + }, + "dynamic": { + "default": false, + "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" + } + } + }, + "_EnhancedGeothermalConfig": { + "description": "Configuration for `sector.enhanced_geothermal` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add option to include Enhanced Geothermal Systems.", + "type": "boolean" + }, + "flexible": { + "default": true, + "description": "Add option for flexible operation (see Ricks et al. 2024).", + "type": "boolean" + }, + "max_hours": { + "default": 240, + "description": "The maximum hours the reservoir can be charged under flexible operation.", + "type": "integer" + }, + "max_boost": { + "default": 0.25, + "description": "The maximum boost in power output under flexible operation.", + "type": "number" + }, + "var_cf": { + "default": true, + "description": "Add option for variable capacity factor (see Ricks et al. 2024).", + "type": "boolean" + }, + "sustainability_factor": { + "default": 0.0025, + "description": "Share of sourced heat that is replenished by the earth's core (see details in `build_egs_potentials.py `_).", + "markdownDescription": "Share of sourced heat that is replenished by the earth's core (see details in [build_egs_potentials.py ](https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/build_egs_potentials.py)).", + "type": "number" + } + } + }, + "_EstimateRenewableCapacitiesConfig": { + "description": "Configuration for `electricity.estimate_renewable_capacities` settings.", + "properties": { + "enable": { + "default": 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`.", + "type": "boolean" + }, + "from_powerplantmatching": { + "default": true, + "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": 2024, + "description": "Renewable capacities are based on existing capacities reported by IRENA (IRENASTAT) for the specified year.", + "type": "integer" + }, + "expansion_limit": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ], + "default": false, + "description": "Artificially limit maximum IRENA capacities to a factor. For example, an `expansion_limit: 1.1` means 110% of capacities. If false are chosen, the estimated renewable potentials determine by the workflow are used." + }, + "technology_mapping": { + "description": "Configuration for `electricity.estimate_renewable_capacities.technology_mapping` settings.", + "properties": { + "Offshore": { + "default": "offwind-ac", + "description": "PyPSA-Eur carrier that is considered for existing offshore wind technology (IRENA, GEM).", + "type": "string" + }, + "Onshore": { + "default": "onwind", + "description": "PyPSA-Eur carrier that is considered for existing onshore wind capacities (IRENA, GEM).", + "type": "string" + }, + "PV": { + "default": "solar", + "description": "PyPSA-Eur carrier that is considered for existing solar PV capacities (IRENA, GEM).", + "type": "string" + } + } + } + } + }, + "_ExtendableCarriersConfig": { + "description": "Configuration for `electricity.extendable_carriers` settings.", + "properties": { + "Generator": { + "description": "Defines existing or non-existing conventional and renewable power plants to be extendable during the optimization. Conventional generators can only be built/expanded where already existent today. If a listed conventional carrier is not included in the `conventional_carriers` list, the lower limit of the capacity expansion is set to 0.", + "items": { + "type": "string" + }, + "type": "array" + }, + "StorageUnit": { + "description": "Adds extendable storage units at every node/bus after clustering without capacity limits and with zero initial capacity. Supported technologies include battery, H2, li-ion, vanadium, lfp, lair, pair, and iron-air.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Store": { + "description": "Adds extendable storage units at every node/bus after clustering without capacity limits and with zero initial capacity. Supported technologies include battery, H2, li-ion, vanadium, lfp, lair, pair, and iron-air.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Link": { + "description": "Adds extendable links (H2 pipelines only) at every connection where there are lines or HVDC links without capacity limits and with zero initial capacity. Hydrogen pipelines require hydrogen storage to be modelled as `Store`.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "_FillGapsConfig": { + "description": "Configuration for `load.fill_gaps` settings.", + "properties": { + "enable": { + "default": true, + "description": "Whether to fill gaps using interpolation for small gaps and time shift for large gaps.", + "type": "boolean" + }, + "interpolate_limit": { + "default": 6, + "description": "Maximum gap size (consecutive nans) which interpolated linearly.", + "type": "integer" + }, + "time_shift_for_large_gaps": { + "default": "1w", + "description": "Periods which are used for copying time-slices in order to fill large gaps of nans. Have to be valid `pandas` period strings.", + "type": "string" + } + } + }, + "_FillValuesConfig": { + "description": "Configuration for `costs.fill_values` settings.", + "properties": { + "FOM": { + "default": 0, + "description": "Default fixed operation and maintenance cost.", + "type": "number" + }, + "VOM": { + "default": 0, + "description": "Default variable operation and maintenance cost.", + "type": "number" + }, + "efficiency": { + "default": 1, + "description": "Default efficiency.", + "type": "number" + }, + "fuel": { + "default": 0, + "description": "Default fuel cost.", + "type": "number" + }, + "investment": { + "default": 0, + "description": "Default investment cost.", + "type": "number" + }, + "lifetime": { + "default": 25, + "description": "Default lifetime in years.", + "type": "integer" + }, + "CO2 intensity": { + "default": 0, + "description": "Default CO2 intensity.", + "type": "number" + }, + "discount rate": { + "default": 0.07, + "description": "Default discount rate.", + "type": "number" + }, + "standing losses": { + "default": 0, + "description": "Default standing losses.", + "type": "number" + } + } + }, + "_HydroConfig": { + "description": "Configuration for hydropower.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "carriers": { + "description": "Specifies the types of hydro power plants to build per-unit availability time series for. 'ror' stands for run-of-river plants, 'PHS' represents pumped-hydro storage, and 'hydro' stands for hydroelectric dams.", + "items": { + "type": "string" + }, + "type": "array" + }, + "PHS_max_hours": { + "default": 6, + "description": "Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "hydro_max_hours": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ], + "default": "energy_capacity_totals_by_country", + "description": "Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom` or heuristically determined. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom` or heuristically determined. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit)." + }, + "flatten_dispatch": { + "default": false, + "description": "Consider an upper limit for the hydro dispatch. The limit is given by the average capacity factor plus the buffer given in `flatten_dispatch_buffer`.", + "type": "boolean" + }, + "flatten_dispatch_buffer": { + "default": 0.2, + "description": "If `flatten_dispatch` is true, specify the value added above the average capacity factor.", + "type": "number" + }, + "clip_min_inflow": { + "default": 1.0, + "description": "To avoid too small values in the inflow time series, values below this threshold (MW) are set to zero.", + "type": "number" + }, + "eia_norm_year": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "integer" + } + ], + "default": false, + "description": "To specify a specific year by which hydro inflow is normed that deviates from the snapshots' year." + }, + "eia_correct_by_capacity": { + "default": false, + "description": "Correct EIA annual hydro generation data by installed capacity.", + "type": "boolean" + }, + "eia_approximate_missing": { + "default": false, + "description": "Approximate hydro generation data for years not included in EIA dataset through a regression based on annual runoff.", + "type": "boolean" + } + } + }, + "_ImportsConfig": { + "description": "Configuration for `sector.imports` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add option to include renewable energy imports.", + "type": "boolean" + }, + "limit": { + "default": null, + "description": "Maximum allowed renewable energy imports (TWh).", + "type": "number" + }, + "limit_sense": { + "default": "<=", + "description": "Sense of the limit.", + "type": "string" + }, + "price": { + "additionalProperties": { + "type": "number" + }, + "description": "Price for importing renewable energy of carrier.", + "type": "object" + } + } + }, + "_IncludeConfig": { + "description": "Configuration for `transmission_projects.include` settings.", + "properties": { + "tyndp2020": { + "default": true, + "description": "Whether to integrate the TYNDP 2020 dataset.", + "type": "boolean" + }, + "nep": { + "default": true, + "description": "Whether to integrate the German network development plan dataset.", + "type": "boolean" + }, + "manual": { + "default": true, + "description": "Whether to integrate the manually added transmission projects. They are taken from the previously existing links_tyndp.csv file.", + "type": "boolean" + } + } + }, + "_LimitMaxGrowthConfig": { + "description": "Configuration for `sector.limit_max_growth` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add option to limit the maximum growth of a carrier.", + "type": "boolean" + }, + "factor": { + "default": 1.3, + "description": "The maximum growth factor of a carrier (e.g. 1.3 allows 30% larger than max historic growth).", + "type": "number" + }, + "max_growth": { + "additionalProperties": { + "type": "number" + }, + "description": "The historic maximum growth of a carrier.", + "type": "object" + }, + "max_relative_growth": { + "additionalProperties": { + "type": "number" + }, + "description": "The historic maximum relative growth of a carrier.", + "type": "object" + } + } + }, + "_MaxHoursConfig": { + "description": "Configuration for `electricity.max_hours` settings.", + "properties": { + "battery": { + "default": 6, + "description": "Maximum state of charge capacity of the battery in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the battery in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "li-ion": { + "default": 6, + "description": "Maximum state of charge capacity of the lithium-ion storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the lithium-ion storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "lfp": { + "default": 6, + "description": "Maximum state of charge capacity of the lithium-ion-LFP storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the lithium-ion-LFP storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "vanadium": { + "default": 10, + "description": "Maximum state of charge capacity of the vanadium-redox-flow storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the vanadium-redox-flow storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "lair": { + "default": 12, + "description": "Maximum state of charge capacity of the liquid-air storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the liquid-air storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "pair": { + "default": 24, + "description": "Maximum state of charge capacity of the compressed-air-adiabatic storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the compressed-air-adiabatic storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "iron-air": { + "default": 100, + "description": "Maximum state of charge capacity of the iron-air storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the iron-air storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "H2": { + "default": 168, + "description": "Maximum state of charge capacity of the hydrogen storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the hydrogen storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + } + } + }, + "_MethanolConfig": { + "description": "Configuration for `sector.methanol` settings.", + "properties": { + "regional_methanol_demand": { + "default": false, + "description": "Spatially resolve methanol demand. Set to true if regional CO2 constraints needed.", + "type": "boolean" + }, + "methanol_reforming": { + "default": false, + "description": "Add methanol reforming.", + "type": "boolean" + }, + "methanol_reforming_cc": { + "default": false, + "description": "Add methanol reforming with carbon capture.", + "type": "boolean" + }, + "methanol_to_kerosene": { + "default": false, + "description": "Add methanol to kerosene.", + "type": "boolean" + }, + "methanol_to_power": { + "additionalProperties": { + "type": "boolean" + }, + "description": "Add different methanol to power technologies.", + "type": "object" + }, + "biomass_to_methanol": { + "default": true, + "description": "Add biomass to methanol.", + "type": "boolean" + }, + "biomass_to_methanol_cc": { + "default": false, + "description": "Add biomass to methanol with carbon capture.", + "type": "boolean" + } + } + }, + "_ModelKwargsConfig": { + "description": "Configuration for `solving.options.model_kwargs` settings.", + "properties": { + "solver_dir": { + "default": "", + "description": "Absolute path to the directory where linopy saves files.", + "type": "string" + } + } + }, + "_OETCConfig": { + "description": "Configuration for `solving.oetc` settings (Open Energy Transition Computing cluster support).", + "properties": { + "name": { + "default": "pypsa-eur", + "description": "Name identifier for the OETC job.", + "type": "string" + }, + "authentication_server_url": { + "default": "", + "description": "URL of the OETC authentication server for job submission.", + "type": "string" + }, + "orchestrator_server_url": { + "default": "", + "description": "URL of the OETC orchestrator server for job management.", + "type": "string" + }, + "cpu_cores": { + "default": 8, + "description": "Number of CPU cores to request for the OETC job. (includes RAM amount at the moment with a factor of 8)", + "type": "integer" + }, + "disk_space_gb": { + "default": 50, + "description": "Amount of disk space in gigabytes to request for the OETC job.", + "type": "integer" + }, + "delete_worker_on_error": { + "default": true, + "description": "Whether to delete the worker instance when an error occurs during job execution.", + "type": "boolean" + } + } + }, + "_OffwindConfig": { + "description": "Configuration for offshore wind.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for wind resource settings.", + "properties": { + "method": { + "default": "wind", + "description": "A superordinate technology type.", + "type": "string" + }, + "turbine": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "description": "Specifies the turbine type and its characteristic power curve. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available." + }, + "smooth": { + "default": false, + "description": "Switch to apply a gaussian kernel density smoothing to the power curve.", + "type": "boolean" + }, + "add_cutout_windspeed": { + "default": true, + "description": "Whether to add cutout windspeed data.", + "type": "boolean" + } + }, + "required": [ + "turbine" + ] + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 2, + "description": "Allowable density of wind turbine placement.", + "type": "number" + }, + "correction_factor": { + "default": 0.8855, + "description": "Correction factor for capacity factor time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "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": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "default": false, + "description": "Specifies areas according to the LUISA Base Map codes which are generally eligible for AC-connected offshore wind turbine placement." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "ship_threshold": { + "default": 400, + "description": "Ship density threshold from which areas are excluded.", + "type": "number" + }, + "max_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum sea water depth in meters at which wind turbines can be built. Maritime areas with deeper waters are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum water depth in meters." + }, + "max_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum distance to the shore in meters above which wind turbines cannot be built. Such areas are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum distance to the shore in meters below which wind turbines cannot be built. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "excluder_resolution": { + "default": 200, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + }, + "landfall_length": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 20, + "description": "Fixed length of the cable connection that is onshorelandfall in km. If 'centroid', the length is calculated as the distance to centroid of the onshore bus." + } + } + }, + "_OnwindConfig": { + "description": "Configuration for onshore wind.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for wind resource settings.", + "properties": { + "method": { + "default": "wind", + "description": "A superordinate technology type.", + "type": "string" + }, + "turbine": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "description": "Specifies the turbine type and its characteristic power curve. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available." + }, + "smooth": { + "default": false, + "description": "Switch to apply a gaussian kernel density smoothing to the power curve.", + "type": "boolean" + }, + "add_cutout_windspeed": { + "default": true, + "description": "Whether to add cutout windspeed data.", + "type": "boolean" + } + }, + "required": [ + "turbine" + ] + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 3, + "description": "Allowable density of wind turbine placement.", + "type": "number" + }, + "correction_factor": { + "default": 1.0, + "description": "Correction factor for capacity factor time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "description": "Configuration for CORINE land cover settings.", + "properties": { + "grid_codes": { + "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for wind turbine placement.", + "items": { + "type": "integer" + }, + "type": "array" + }, + "distance": { + "default": 1000, + "description": "Distance in meters to keep from areas specified in `distance_grid_codes`.", + "type": "number" + }, + "distance_grid_codes": { + "description": "Specifies areas according to CORINE Land Cover codes to which wind turbines must maintain a distance specified in the setting `distance`.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "grid_codes" + ] + } + ], + "description": "CORINE land cover configuration." + }, + "luisa": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": true, + "type": "object" + } + ], + "default": false, + "description": "LUISA land cover configuration." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "excluder_resolution": { + "default": 100, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + } + } + }, + "_OperationalReserveConfig": { + "description": "Configuration for `electricity.operational_reserve` settings.", + "properties": { + "activate": { + "default": false, + "description": "Whether to take operational reserve requirements into account during optimisation.", + "type": "boolean" + }, + "epsilon_load": { + "default": 0.02, + "description": "share of total load.", + "type": "number" + }, + "epsilon_vres": { + "default": 0.02, + "description": "share of total renewable supply.", + "type": "number" + }, + "contingency": { + "default": 4000, + "description": "Fixed reserve capacity (MW).", + "type": "number" + } + } + }, + "_OrientationConfig": { + "description": "Configuration for `solar_thermal.orientation` settings.", + "properties": { + "slope": { + "default": 45.0, + "description": "The angle between the ground and the panels.", + "type": "number" + }, + "azimuth": { + "default": 180.0, + "description": "The angle between the North and the sun with panels on the local horizon.", + "type": "number" + } + } + }, + "_PostDiscretizationConfig": { + "description": "Configuration for `solving.options.post_discretization` settings.", + "properties": { + "enable": { + "default": false, + "description": "Switch to enable post-discretization of the network. Disabled by default.", + "type": "boolean" + }, + "line_unit_size": { + "default": 1700, + "description": "Discrete unit size of lines in MW.", + "type": "number" + }, + "line_threshold": { + "default": 0.3, + "description": "The threshold relative to the discrete line unit size beyond which to round up to the next unit.", + "type": "number" + }, + "link_unit_size": { + "additionalProperties": { + "type": "number" + }, + "description": "Discrete unit size of links in MW by carrier (given in dictionary style).", + "type": "object" + }, + "link_threshold": { + "additionalProperties": { + "type": "number" + }, + "description": "The threshold relative to the discrete link unit size beyond which to round up to the next unit by carrier (given in dictionary style).", + "type": "object" + }, + "fractional_last_unit_size": { + "default": false, + "description": "When true, links and lines can be built up to p_nom_max. When false, they can only be built up to a multiple of the unit size.", + "type": "boolean" + } + } + }, + "_PrepareKwargsConfig": { + "description": "Configuration for `atlite.cutouts.{name}.prepare_kwargs` settings.", + "properties": { + "features": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "When freshly building a cutout, retrieve data only for those features. If not defined, it defaults to all available features." + }, + "sarah_dir": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the location where SARAH-2 or SARAH-3 data is stored; SARAH data requires a manual separate download, see the `atlite documentation `_ for details. Required for building cutouts with SARAH, not required for ERA5 cutouts.", + "markdownDescription": "Path to the location where SARAH-2 or SARAH-3 data is stored; SARAH data requires a manual separate download, see the [atlite documentation ](https://atlite.readthedocs.io) for details. Required for building cutouts with SARAH, not required for ERA5 cutouts." + }, + "monthly_requests": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether to use monthly requests for ERA5 data when building the cutout. Helpful to avoid running into request limits with large cutouts." + }, + "tmpdir": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to a temporary directory where intermediate files are stored when building the cutout. Helpful when building large cutouts." + } + } + }, + "_ResidentialHeatConfig": { + "description": "Configuration for `sector.residential_heat` settings.", + "properties": { + "dsm": { + "description": "Configuration for `sector.residential_heat.dsm` settings.", + "properties": { + "enable": { + "default": false, + "description": "Enable residential heat demand-side management that allows heating systems to provide flexibility by shifting demand within configurable time periods. Models building thermal mass as energy storage.", + "type": "boolean" + }, + "direction": { + "description": "'overheat-undercool' means both pre-heating and delayed heating are allowed. 'overheat' allows only pre-heating where buildings are heated up above target temperature and then allowed to cool down, while 'undercool' allows only delayed heating where buildings can cool below target temperature and then be heated up again.", + "items": { + "type": "string" + }, + "type": "array" + }, + "restriction_value": { + "additionalProperties": { + "type": "number" + }, + "description": "Maximum state of charge (as fraction) for heat flexibility storage representing available thermal buffer capacity in buildings. Set to 0 for no flexibility or to 1.0 to assume that the entire heating demand can contribute to flexibility.", + "type": "object" + }, + "restriction_time": { + "description": "Checkpoint hours (0-23) at which heat flexibility storage must return to baseline state of charge, i.e. the residence surplus or missing heat be balanced. Time is the local time for each country and bus. Default: [10, 22] creates 12-hour periods with checkpoints at 10am and 10pm.", + "items": { + "type": "integer" + }, + "type": "array" + } + } + } + } + }, + "_ResidentialHeatDsmConfig": { + "description": "Configuration for `sector.residential_heat.dsm` settings.", + "properties": { + "enable": { + "default": false, + "description": "Enable residential heat demand-side management that allows heating systems to provide flexibility by shifting demand within configurable time periods. Models building thermal mass as energy storage.", + "type": "boolean" + }, + "direction": { + "description": "'overheat-undercool' means both pre-heating and delayed heating are allowed. 'overheat' allows only pre-heating where buildings are heated up above target temperature and then allowed to cool down, while 'undercool' allows only delayed heating where buildings can cool below target temperature and then be heated up again.", + "items": { + "type": "string" + }, + "type": "array" + }, + "restriction_value": { + "additionalProperties": { + "type": "number" + }, + "description": "Maximum state of charge (as fraction) for heat flexibility storage representing available thermal buffer capacity in buildings. Set to 0 for no flexibility or to 1.0 to assume that the entire heating demand can contribute to flexibility.", + "type": "object" + }, + "restriction_time": { + "description": "Checkpoint hours (0-23) at which heat flexibility storage must return to baseline state of charge, i.e. the residence surplus or missing heat be balanced. Time is the local time for each country and bus. Default: [10, 22] creates 12-hour periods with checkpoints at 10am and 10pm.", + "items": { + "type": "integer" + }, + "type": "array" + } + } + }, + "_RetrofittingConfig": { + "description": "Configuration for `sector.retrofitting` settings.", + "properties": { + "retro_endogen": { + "default": false, + "description": "Add retrofitting as an endogenous system which co-optimise space heat savings.", + "type": "boolean" + }, + "cost_factor": { + "default": 1.0, + "description": "Weight costs for building renovation.", + "type": "number" + }, + "interest_rate": { + "default": 0.04, + "description": "The interest rate for investment in building components.", + "type": "number" + }, + "annualise_cost": { + "default": true, + "description": "Annualise the investment costs of retrofitting.", + "type": "boolean" + }, + "tax_weighting": { + "default": false, + "description": "Weight the costs of retrofitting depending on taxes in countries.", + "type": "boolean" + }, + "construction_index": { + "default": true, + "description": "Weight the costs of retrofitting depending on labour/material costs per country.", + "type": "boolean" + } + } + }, + "_ScenariosConfig": { + "description": "Configuration for `run.scenarios` level.", + "properties": { + "enable": { + "default": false, + "description": "Switch to select whether workflow should generate scenarios based on ``file``.", + "type": "boolean" + }, + "file": { + "default": "config/scenarios.yaml", + "description": "Path to the scenario yaml file. The scenario file contains config overrides for each scenario. In order to be taken account, ``run: scenarios`` has to be set to ``true`` and ``run: name`` has to be a subset of top level keys given in the scenario file. In order to automatically create a `scenario.yaml` file based on a combination of settings, alter and use the ``config/create_scenarios.py`` script in the ``config`` directory.", + "examples": [ + "config/scenarios.yaml" + ], + "type": "string" + } + } + }, + "_SharedResourcesConfig": { + "description": "Configuration for `run.shared_resources` level.", + "properties": { + "policy": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Boolean switch to select whether resources should be shared across runs. If a string is passed, this is used as a subdirectory name for shared resources. If set to 'base', only resources before creating the elec.nc file are shared.", + "examples": [ + false, + "base" + ] + }, + "exclude": { + "description": "For the case shared_resources=base, specify additional files that should not be shared across runs.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "_SimplifyNetworkConfig": { + "description": "Configuration for `clustering.simplify_network` settings.", + "properties": { + "to_substations": { + "default": false, + "description": "Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones.", + "type": "boolean" + }, + "remove_stubs": { + "default": true, + "description": "Controls whether radial parts of the network should be recursively aggregated. Defaults to true.", + "type": "boolean" + }, + "remove_stubs_across_borders": { + "default": false, + "description": "Controls whether radial parts of the network should be recursively aggregated across borders. Defaults to true.", + "type": "boolean" + } + } + }, + "_SolarConfig": { + "description": "Configuration for solar PV.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for solar resource settings.", + "properties": { + "method": { + "default": "pv", + "description": "A superordinate technology type.", + "type": "string" + }, + "panel": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "default": "CSi", + "description": "Specifies the solar panel technology and its characteristic attributes. Can be a string or a dictionary with years as keys which denote the year another panel model becomes available." + }, + "orientation": { + "additionalProperties": { + "type": "number" + }, + "description": "Panel orientation with slope and azimuth.", + "type": "object" + }, + "tracking": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Tracking type (e.g., 'horizontal')." + } + } + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 5.1, + "description": "Allowable density of solar panel placement.", + "type": "number" + }, + "correction_factor": { + "default": 1.0, + "description": "A correction factor for the capacity factor (availability) time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for solar panel placement." + }, + "luisa": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "default": false, + "description": "Specifies areas according to the LUISA Base Map codes which are generally eligible for solar panel placement." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "excluder_resolution": { + "default": 100, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + } + } + }, + "_SolarResourceConfig": { + "description": "Configuration for solar resource settings.", + "properties": { + "method": { + "default": "pv", + "description": "A superordinate technology type.", + "type": "string" + }, + "panel": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "default": "CSi", + "description": "Specifies the solar panel technology and its characteristic attributes. Can be a string or a dictionary with years as keys which denote the year another panel model becomes available." + }, + "orientation": { + "additionalProperties": { + "type": "number" + }, + "description": "Panel orientation with slope and azimuth.", + "type": "object" + }, + "tracking": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Tracking type (e.g., 'horizontal')." + } + } + }, + "_SolidBiomassImportConfig": { + "description": "Configuration for `sector.solid_biomass_import` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add option to include solid biomass imports.", + "type": "boolean" + }, + "price": { + "default": 54, + "description": "Price for importing solid biomass (currency/MWh).", + "type": "number" + }, + "max_amount": { + "default": 1390, + "description": "Maximum solid biomass import potential (TWh).", + "type": "number" + }, + "upstream_emissions_factor": { + "default": 0.1, + "description": "Upstream emissions of solid biomass imports.", + "type": "number" + } + } + }, + "_SolverConfig": { + "description": "Configuration for `solving.solver` settings.", + "properties": { + "name": { + "default": "gurobi", + "description": "Solver to use for optimisation problems in the workflow; e.g. clustering and linear optimal power flow.", + "type": "string" + }, + "options": { + "default": "gurobi-default", + "description": "Link to specific parameter settings.", + "type": "string" + } + } + }, + "_SolvingOptionsConfig": { + "description": "Configuration for `solving.options` settings.", + "properties": { + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + }, + "load_shedding": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "number" + } + ], + "default": false, + "description": "Add generators with very high marginal cost to simulate load shedding and avoid problem infeasibilities. If load shedding is a float, it denotes the marginal cost in EUR/kWh." + }, + "curtailment_mode": { + "default": false, + "description": "Fixes the dispatch profiles of generators with time-varying p_max_pu by setting `p_min_pu = p_max_pu` and adds an auxiliary curtailment generator (with negative sign to absorb excess power) at every AC bus. This can speed up the solving process as the curtailment decision is aggregated into a single generator per region. Defaults to `false`.", + "type": "boolean" + }, + "noisy_costs": { + "default": true, + "description": "Add random noise to marginal cost of generators by :math:`\\mathcal{U}(0.009,0,011)` and capital cost of lines and links by :math:`\\mathcal{U}(0.09,0,11)`.", + "type": "boolean" + }, + "skip_iterations": { + "default": true, + "description": "Skip iterating, do not update impedances of branches. Defaults to true.", + "type": "boolean" + }, + "rolling_horizon": { + "default": false, + "description": "Switch for rule `solve_operations_network` whether to optimize the network in a rolling horizon manner, where the snapshot range is split into slices of size `horizon` which are solved consecutively. This setting has currently no effect on sector-coupled networks.", + "type": "boolean" + }, + "seed": { + "default": 123, + "description": "Random seed for increased deterministic behaviour.", + "type": "integer" + }, + "custom_extra_functionality": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "../data/custom_extra_functionality.py", + "description": "Path to a Python file with custom extra functionality code to be injected into the solving rules of the workflow relative to `rules` directory." + }, + "io_api": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Passed to linopy and determines the API used to communicate with the solver. With the `'lp'` and `'mps'` options linopy passes a file to the solver; with the `'direct'` option (only supported for HIGHS and Gurobi) linopy uses an in-memory python API resulting in better performance." + }, + "track_iterations": { + "default": false, + "description": "Flag whether to store the intermediate branch capacities and objective function values are recorded for each iteration in `network.lines['s_nom_opt_X']` (where `X` labels the iteration)", + "type": "boolean" + }, + "min_iterations": { + "default": 2, + "description": "Minimum number of solving iterations in between which resistance and reactence (`x/r`) are updated for branches according to `s_nom_opt` of the previous run.", + "type": "integer" + }, + "max_iterations": { + "default": 3, + "description": "Maximum number of solving iterations in between which resistance and reactence (`x/r`) are updated for branches according to `s_nom_opt` of the previous run.", + "type": "integer" + }, + "transmission_losses": { + "default": 2, + "description": "Add piecewise linear approximation of transmission losses based on n tangents. Defaults to 0, which means losses are ignored.", + "type": "integer" + }, + "linearized_unit_commitment": { + "default": true, + "description": "Whether to optimise using the linearized unit commitment formulation.", + "type": "boolean" + }, + "horizon": { + "default": 365, + "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": { + "enable": { + "default": false, + "description": "Switch to enable post-discretization of the network. Disabled by default.", + "type": "boolean" + }, + "line_unit_size": { + "default": 1700, + "description": "Discrete unit size of lines in MW.", + "type": "number" + }, + "line_threshold": { + "default": 0.3, + "description": "The threshold relative to the discrete line unit size beyond which to round up to the next unit.", + "type": "number" + }, + "link_unit_size": { + "additionalProperties": { + "type": "number" + }, + "description": "Discrete unit size of links in MW by carrier (given in dictionary style).", + "type": "object" + }, + "link_threshold": { + "additionalProperties": { + "type": "number" + }, + "description": "The threshold relative to the discrete link unit size beyond which to round up to the next unit by carrier (given in dictionary style).", + "type": "object" + }, + "fractional_last_unit_size": { + "default": false, + "description": "When true, links and lines can be built up to p_nom_max. When false, they can only be built up to a multiple of the unit size.", + "type": "boolean" + } + } + }, + "keep_files": { + "default": false, + "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": { + "solver_dir": { + "default": "", + "description": "Absolute path to the directory where linopy saves files.", + "type": "string" + } + } + } + } + }, + "_TechnologyMappingConfig": { + "description": "Configuration for `electricity.estimate_renewable_capacities.technology_mapping` settings.", + "properties": { + "Offshore": { + "default": "offwind-ac", + "description": "PyPSA-Eur carrier that is considered for existing offshore wind technology (IRENA, GEM).", + "type": "string" + }, + "Onshore": { + "default": "onwind", + "description": "PyPSA-Eur carrier that is considered for existing onshore wind capacities (IRENA, GEM).", + "type": "string" + }, + "PV": { + "default": "solar", + "description": "PyPSA-Eur carrier that is considered for existing solar PV capacities (IRENA, GEM).", + "type": "string" + } + } + }, + "_TemporalConfig": { + "description": "Configuration for `clustering.temporal` settings.", + "properties": { + "resolution_elec": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Resample the time-resolution by averaging over every `n` snapshots in `prepare_network`. **Warning:** This option should currently only be used with electricity-only networks, not for sector-coupled networks." + }, + "resolution_sector": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Resample the time-resolution by averaging over every `n` snapshots in `prepare_sector_network`." + } + } + }, + "_TransmissionEfficiencyConfig": { + "description": "Configuration for `sector.transmission_efficiency` settings.", + "properties": { + "enable": { + "description": "Switch to select the carriers for which transmission efficiency is to be added. Carriers not listed assume lossless transmission.", + "items": { + "type": "string" + }, + "type": "array" + }, + "DC": { + "additionalProperties": { + "type": "number" + }, + "description": "DC transmission efficiency.", + "type": "object" + }, + "H2 pipeline": { + "additionalProperties": { + "type": "number" + }, + "description": "H2 pipeline transmission efficiency.", + "type": "object" + }, + "gas pipeline": { + "additionalProperties": { + "type": "number" + }, + "description": "Gas pipeline transmission efficiency.", + "type": "object" + }, + "electricity distribution grid": { + "additionalProperties": { + "type": "number" + }, + "description": "Electricity distribution grid efficiency.", + "type": "object" + } + } + }, + "_UserAgentConfig": { + "description": "Configuration for `overpass_api.user_agent` settings.", + "properties": { + "project_name": { + "default": "PyPSA-Eur", + "description": "Project name used to identify the user agent of the Overpass API requests.", + "type": "string" + }, + "email": { + "default": "contact@pypsa.org", + "description": "Contact email address for the project using the Overpass API.", + "type": "string" + }, + "website": { + "default": "https://github.com/PyPSA/pypsa-eur", + "description": "Website URL for the project using the Overpass API.", + "type": "string" + } + } + }, + "_WindResourceConfig": { + "description": "Configuration for wind resource settings.", + "properties": { + "method": { + "default": "wind", + "description": "A superordinate technology type.", + "type": "string" + }, + "turbine": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "description": "Specifies the turbine type and its characteristic power curve. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available." + }, + "smooth": { + "default": false, + "description": "Switch to apply a gaussian kernel density smoothing to the power curve.", + "type": "boolean" + }, + "add_cutout_windspeed": { + "default": true, + "description": "Whether to add cutout windspeed data.", + "type": "boolean" + } + }, + "required": [ + "turbine" + ] + } + }, + "additionalProperties": true, + "description": "Combined configuration schema for PyPSA-EUR.", + "properties": { + "version": { + "default": "v2026.02.0", + "description": "Version of PyPSA-Eur. Descriptive only.", + "type": "string" + }, + "tutorial": { + "default": false, + "description": "Switch to retrieve the tutorial data set instead of the full data set.", + "type": "boolean" + }, + "logging": { + "description": "Configuration for top level `logging` settings.", + "properties": { + "level": { + "default": "INFO", + "description": "Restrict console outputs to all infos, warning or errors only", + "enum": [ + "DEBUG", + "INFO", + "WARNING", + "ERROR", + "CRITICAL" + ], + "type": "string" + }, + "format": { + "default": "%(levelname)s:%(name)s:%(message)s", + "description": "Custom format for log messages. See `LogRecord `_ attributes.", + "markdownDescription": "Custom format for log messages. See [LogRecord ](https://docs.python.org/3/library/logging.html#logging.LogRecord) attributes.", + "type": "string" + } + } + }, + "remote": { + "description": "Configuration for top level `remote` settings.", + "properties": { + "ssh": { + "default": "", + "description": "Optionally specify the SSH of a remote cluster to be synchronized.", + "type": "string" + }, + "path": { + "default": "", + "description": "Optionally specify the file path within the remote cluster to be synchronized.", + "type": "string" + } + } + }, + "run": { + "description": "Configuration for top level `run` settings.", + "properties": { + "prefix": { + "default": "", + "description": "Prefix for the run name which is used as a top-layer directory name in the results and resources folders.", + "type": "string" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "", + "description": "Specify a name for your run. Results will be stored under this name. If ``scenario: enable:`` is set to ``true``, the name must contain a subset of scenario names defined in ``scenario: file:``. If the name is 'all', all defined scenarios will be run.", + "examples": [ + "my-pypsa-eur-run" + ] + }, + "scenarios": { + "description": "Configuration for `run.scenarios` level.", + "properties": { + "enable": { + "default": false, + "description": "Switch to select whether workflow should generate scenarios based on ``file``.", + "type": "boolean" + }, + "file": { + "default": "config/scenarios.yaml", + "description": "Path to the scenario yaml file. The scenario file contains config overrides for each scenario. In order to be taken account, ``run: scenarios`` has to be set to ``true`` and ``run: name`` has to be a subset of top level keys given in the scenario file. In order to automatically create a `scenario.yaml` file based on a combination of settings, alter and use the ``config/create_scenarios.py`` script in the ``config`` directory.", + "examples": [ + "config/scenarios.yaml" + ], + "type": "string" + } + } + }, + "disable_progressbar": { + "default": false, + "description": "Switch to select whether progressbar should be disabled.", + "type": "boolean" + }, + "shared_resources": { + "description": "Configuration for `run.shared_resources` level.", + "properties": { + "policy": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Boolean switch to select whether resources should be shared across runs. If a string is passed, this is used as a subdirectory name for shared resources. If set to 'base', only resources before creating the elec.nc file are shared.", + "examples": [ + false, + "base" + ] + }, + "exclude": { + "description": "For the case shared_resources=base, specify additional files that should not be shared across runs.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "use_shadow_directory": { + "default": false, + "description": "Set to ``true`` (default) if snakemake shadow directories (``shallow``) should be used. Set to ``false`` if problems occur.", + "examples": [ + true + ], + "type": "boolean" + } + } + }, + "foresight": { + "default": "overnight", + "description": "Configuration for `foresight` settings.", + "enum": [ + "overnight", + "myopic", + "perfect" + ], + "type": "string" + }, + "scenario": { + "description": "Configuration for top level `scenario` settings.", + "properties": { + "clusters": { + "description": "List of ``{clusters}`` wildcards to run. Use 'adm' for administrative clustering mode, 'all' for all nodes.", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "enum": [ + "adm", + "all" + ], + "type": "string" + } + ] + }, + "type": "array" + }, + "opts": { + "description": "List of ``{opts}`` wildcards to run.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sector_opts": { + "description": "List of ``{sector_opts}`` wildcards to run.", + "items": { + "type": "string" + }, + "type": "array" + }, + "planning_horizons": { + "description": "List of ``{planning_horizon}`` wildcards to run.", + "items": { + "type": "integer" + }, + "type": "array" + } + } + }, + "countries": { + "default": [ + "AL", + "AT", + "BA", + "BE", + "BG", + "CH", + "CZ", + "DE", + "DK", + "EE", + "ES", + "FI", + "FR", + "GB", + "GR", + "HR", + "HU", + "IE", + "IT", + "LT", + "LU", + "LV", + "ME", + "MK", + "NL", + "NO", + "PL", + "PT", + "RO", + "RS", + "SE", + "SI", + "SK", + "XK" + ], + "description": "Configuration for `countries` settings.", + "items": { + "type": "string" + }, + "type": "array" + }, + "snapshots": { + "description": "Configuration for `snapshots` settings.", + "properties": { + "start": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "2013-01-01", + "description": "Left bound of date range." + }, + "end": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "2014-01-01", + "description": "Right bound of date range." + }, + "inclusive": { + "anyOf": [ + { + "enum": [ + "left", + "right", + "both" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": "left", + "description": "Make the time interval closed to the `left`, `right`, or both sides `both` or neither side `None`." + } + } + }, + "enable": { + "description": "Configuration for `enable` settings.", + "properties": { + "drop_leap_day": { + "default": true, + "description": "Switch to drop February 29 from all time-dependent data in leap years.", + "type": "boolean" + } + } + }, + "co2_budget": { + "anyOf": [ + { + "additionalProperties": { + "type": "number" + }, + "description": "Configuration for `co2_budget` settings.", + "type": "object" + }, + { + "type": "null" + } + ], + "description": "CO2 budget as fraction of 1990 emissions per planning horizon year." + }, + "electricity": { + "description": "Configuration for `electricity` settings.", + "properties": { + "voltages": { + "description": "Voltage levels to consider.", + "items": { + "type": "number" + }, + "type": "array" + }, + "base_network": { + "default": "osm", + "description": "Specify the underlying base network, i.e. GridKit (based on ENTSO-E web map extract), OpenStreetMap (OSM), or TYNDP.", + "enum": [ + "entsoegridkit", + "osm", + "tyndp" + ], + "type": "string" + }, + "gaslimit_enable": { + "default": false, + "description": "Add an overall absolute gas limit configured in `electricity: gaslimit`.", + "type": "boolean" + }, + "gaslimit": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ], + "default": false, + "description": "Global gas usage limit." + }, + "co2limit_enable": { + "default": false, + "description": "Add an overall absolute carbon-dioxide emissions limit configured in `electricity: co2limit` in `prepare_network`. **Warning:** This option should currently only be used with electricity-only networks, not for sector-coupled networks.", + "type": "boolean" + }, + "co2limit": { + "default": 77500000.0, + "description": "Cap on total annual system carbon dioxide emissions.", + "type": "number" + }, + "co2base": { + "default": 1487000000.0, + "description": "Reference value of total annual system carbon dioxide emissions if relative emission reduction target is specified in `{opts}` wildcard.", + "type": "number" + }, + "operational_reserve": { + "description": "Configuration for `electricity.operational_reserve` settings.", + "properties": { + "activate": { + "default": false, + "description": "Whether to take operational reserve requirements into account during optimisation.", + "type": "boolean" + }, + "epsilon_load": { + "default": 0.02, + "description": "share of total load.", + "type": "number" + }, + "epsilon_vres": { + "default": 0.02, + "description": "share of total renewable supply.", + "type": "number" + }, + "contingency": { + "default": 4000, + "description": "Fixed reserve capacity (MW).", + "type": "number" + } + } + }, + "max_hours": { + "description": "Configuration for `electricity.max_hours` settings.", + "properties": { + "battery": { + "default": 6, + "description": "Maximum state of charge capacity of the battery in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the battery in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "li-ion": { + "default": 6, + "description": "Maximum state of charge capacity of the lithium-ion storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the lithium-ion storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "lfp": { + "default": 6, + "description": "Maximum state of charge capacity of the lithium-ion-LFP storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the lithium-ion-LFP storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "vanadium": { + "default": 10, + "description": "Maximum state of charge capacity of the vanadium-redox-flow storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the vanadium-redox-flow storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "lair": { + "default": 12, + "description": "Maximum state of charge capacity of the liquid-air storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the liquid-air storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "pair": { + "default": 24, + "description": "Maximum state of charge capacity of the compressed-air-adiabatic storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the compressed-air-adiabatic storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "iron-air": { + "default": 100, + "description": "Maximum state of charge capacity of the iron-air storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the iron-air storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "H2": { + "default": 168, + "description": "Maximum state of charge capacity of the hydrogen storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the hydrogen storage in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + } + } + }, + "extendable_carriers": { + "description": "Configuration for `electricity.extendable_carriers` settings.", + "properties": { + "Generator": { + "description": "Defines existing or non-existing conventional and renewable power plants to be extendable during the optimization. Conventional generators can only be built/expanded where already existent today. If a listed conventional carrier is not included in the `conventional_carriers` list, the lower limit of the capacity expansion is set to 0.", + "items": { + "type": "string" + }, + "type": "array" + }, + "StorageUnit": { + "description": "Adds extendable storage units at every node/bus after clustering without capacity limits and with zero initial capacity. Supported technologies include battery, H2, li-ion, vanadium, lfp, lair, pair, and iron-air.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Store": { + "description": "Adds extendable storage units at every node/bus after clustering without capacity limits and with zero initial capacity. Supported technologies include battery, H2, li-ion, vanadium, lfp, lair, pair, and iron-air.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Link": { + "description": "Adds extendable links (H2 pipelines only) at every connection where there are lines or HVDC links without capacity limits and with zero initial capacity. Hydrogen pipelines require hydrogen storage to be modelled as `Store`.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "powerplants_filter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "default": "(DateOut > 2025 or DateOut != DateOut) and (DateIn < 2026 or DateIn != DateIn)", + "description": "Filter query for the default powerplant database." + }, + "custom_powerplants": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "default": false, + "description": "Filter query for the custom powerplant database." + }, + "everywhere_powerplants": { + "description": "List of conventional power plants to add to every node in the model with zero initial capacity. To be used in combination with `extendable_carriers` to allow for building conventional powerplants irrespective of existing locations.", + "items": { + "type": "string" + }, + "type": "array" + }, + "conventional_carriers": { + "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.", + "items": { + "type": "string" + }, + "type": "array" + }, + "renewable_carriers": { + "description": "List of renewable generators to include in the model.", + "items": { + "type": "string" + }, + "type": "array" + }, + "estimate_renewable_capacities": { + "description": "Configuration for `electricity.estimate_renewable_capacities` settings.", + "properties": { + "enable": { + "default": 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`.", + "type": "boolean" + }, + "from_powerplantmatching": { + "default": true, + "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": 2024, + "description": "Renewable capacities are based on existing capacities reported by IRENA (IRENASTAT) for the specified year.", + "type": "integer" + }, + "expansion_limit": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ], + "default": false, + "description": "Artificially limit maximum IRENA capacities to a factor. For example, an `expansion_limit: 1.1` means 110% of capacities. If false are chosen, the estimated renewable potentials determine by the workflow are used." + }, + "technology_mapping": { + "description": "Configuration for `electricity.estimate_renewable_capacities.technology_mapping` settings.", + "properties": { + "Offshore": { + "default": "offwind-ac", + "description": "PyPSA-Eur carrier that is considered for existing offshore wind technology (IRENA, GEM).", + "type": "string" + }, + "Onshore": { + "default": "onwind", + "description": "PyPSA-Eur carrier that is considered for existing onshore wind capacities (IRENA, GEM).", + "type": "string" + }, + "PV": { + "default": "solar", + "description": "PyPSA-Eur carrier that is considered for existing solar PV capacities (IRENA, GEM).", + "type": "string" + } + } + } + } + }, + "estimate_battery_capacities": { + "default": false, + "description": "Enable estimation of existing battery storage capacities.", + "type": "boolean" + }, + "autarky": { + "description": "Configuration for `electricity.autarky` settings.", + "properties": { + "enable": { + "default": false, + "description": "Require each node to be autarkic by removing all lines and links.", + "type": "boolean" + }, + "by_country": { + "default": false, + "description": "Require each country to be autarkic by removing all cross-border lines and links. `electricity: autarky` must be enabled.", + "type": "boolean" + } + } + }, + "transmission_limit": { + "default": "vopt", + "description": "Limit on transmission expansion. The first part can be `v` (for setting a limit on line volume) or `c` (for setting a limit on line cost). The second part can be `opt` or a float bigger than one (e.g. 1.25). If `opt` is chosen line expansion is optimised according to its capital cost (where the choice `v` only considers overhead costs for HVDC transmission lines, while `c` uses more accurate costs distinguishing between overhead and underwater sections and including inverter pairs). The setting `v1.25` will limit the total volume of line expansion to 25% of currently installed capacities weighted by individual line lengths. The setting `c1.25` will allow to build a transmission network that costs no more than 25 % more than the current system.", + "type": "string" + } + } + }, + "atlite": { + "description": "Configuration for `atlite` settings.", + "properties": { + "default_cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "europe-2013-sarah3-era5", + "description": "Defines a default cutout. Can refer to a single cutout or a list of cutouts." + }, + "nprocesses": { + "default": 16, + "description": "Number of parallel processes in cutout preparation.", + "type": "integer" + }, + "show_progress": { + "default": false, + "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`.", + "properties": { + "module": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Source of the reanalysis weather dataset (e.g. `ERA5 `_ or `SARAH-3 `_).", + "markdownDescription": "Source of the reanalysis weather dataset (e.g. [ERA5 ](https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5) or [SARAH-3 ](https://wui.cmsaf.eu/safira/action/viewDoiDetails?acronym=SARAH_V002))." + }, + "x": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Range of longitudes [\u00b0] to download weather data for. Float interval within [-180, 180]. If not defined, it defaults to the spatial bounds of all bus shapes." + }, + "y": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Range of latitudes [\u00b0] to download weather data for. Float interval within [-90, 90]. If not defined, it defaults to the spatial bounds of all bus shapes." + }, + "dx": { + "anyOf": [ + { + "exclusiveMinimum": 0.25, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Grid resolution [\u00b0] for longitude. Must be larger than 0.25\u00b0." + }, + "dy": { + "anyOf": [ + { + "exclusiveMinimum": 0.25, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Grid resolution [\u00b0] for latitude. Must be larger than 0.25\u00b0." + }, + "time": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Time span to download weather data for. If not defined, it defaults to the time interval spanned by the snapshots." + }, + "chunks": { + "anyOf": [ + { + "description": "Configuration for `atlite.cutouts.{name}.chunks` settings.", + "properties": { + "time": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Chunk size for time dimension when preparing cutout." + } + } + }, + { + "type": "null" + } + ], + "default": null, + "description": "Chunking configuration for cutout preparation." + }, + "prepare_kwargs": { + "anyOf": [ + { + "description": "Configuration for `atlite.cutouts.{name}.prepare_kwargs` settings.", + "properties": { + "features": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "When freshly building a cutout, retrieve data only for those features. If not defined, it defaults to all available features." + }, + "sarah_dir": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to the location where SARAH-2 or SARAH-3 data is stored; SARAH data requires a manual separate download, see the `atlite documentation `_ for details. Required for building cutouts with SARAH, not required for ERA5 cutouts.", + "markdownDescription": "Path to the location where SARAH-2 or SARAH-3 data is stored; SARAH data requires a manual separate download, see the [atlite documentation ](https://atlite.readthedocs.io) for details. Required for building cutouts with SARAH, not required for ERA5 cutouts." + }, + "monthly_requests": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether to use monthly requests for ERA5 data when building the cutout. Helpful to avoid running into request limits with large cutouts." + }, + "tmpdir": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Path to a temporary directory where intermediate files are stored when building the cutout. Helpful when building large cutouts." + } + } + }, + { + "type": "null" + } + ], + "default": null, + "description": "Dictionary of keyword arguments passed to ``atlite.Cutout.prepare()`` when building the cutout." + } + } + }, + "description": "Named cutout configurations.", + "type": "object" + } + } + }, + "renewable": { + "description": "Configuration for `renewable` settings.", + "properties": { + "onwind": { + "description": "Configuration for onshore wind.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for wind resource settings.", + "properties": { + "method": { + "default": "wind", + "description": "A superordinate technology type.", + "type": "string" + }, + "turbine": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "description": "Specifies the turbine type and its characteristic power curve. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available." + }, + "smooth": { + "default": false, + "description": "Switch to apply a gaussian kernel density smoothing to the power curve.", + "type": "boolean" + }, + "add_cutout_windspeed": { + "default": true, + "description": "Whether to add cutout windspeed data.", + "type": "boolean" + } + }, + "required": [ + "turbine" + ] + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 3, + "description": "Allowable density of wind turbine placement.", + "type": "number" + }, + "correction_factor": { + "default": 1.0, + "description": "Correction factor for capacity factor time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "description": "Configuration for CORINE land cover settings.", + "properties": { + "grid_codes": { + "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for wind turbine placement.", + "items": { + "type": "integer" + }, + "type": "array" + }, + "distance": { + "default": 1000, + "description": "Distance in meters to keep from areas specified in `distance_grid_codes`.", + "type": "number" + }, + "distance_grid_codes": { + "description": "Specifies areas according to CORINE Land Cover codes to which wind turbines must maintain a distance specified in the setting `distance`.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "grid_codes" + ] + } + ], + "description": "CORINE land cover configuration." + }, + "luisa": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": true, + "type": "object" + } + ], + "default": false, + "description": "LUISA land cover configuration." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "excluder_resolution": { + "default": 100, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + } + } + }, + "offwind-ac": { + "description": "Configuration for offshore wind.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for wind resource settings.", + "properties": { + "method": { + "default": "wind", + "description": "A superordinate technology type.", + "type": "string" + }, + "turbine": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "description": "Specifies the turbine type and its characteristic power curve. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available." + }, + "smooth": { + "default": false, + "description": "Switch to apply a gaussian kernel density smoothing to the power curve.", + "type": "boolean" + }, + "add_cutout_windspeed": { + "default": true, + "description": "Whether to add cutout windspeed data.", + "type": "boolean" + } + }, + "required": [ + "turbine" + ] + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 2, + "description": "Allowable density of wind turbine placement.", + "type": "number" + }, + "correction_factor": { + "default": 0.8855, + "description": "Correction factor for capacity factor time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "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": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "default": false, + "description": "Specifies areas according to the LUISA Base Map codes which are generally eligible for AC-connected offshore wind turbine placement." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "ship_threshold": { + "default": 400, + "description": "Ship density threshold from which areas are excluded.", + "type": "number" + }, + "max_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum sea water depth in meters at which wind turbines can be built. Maritime areas with deeper waters are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum water depth in meters." + }, + "max_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum distance to the shore in meters above which wind turbines cannot be built. Such areas are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum distance to the shore in meters below which wind turbines cannot be built. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "excluder_resolution": { + "default": 200, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + }, + "landfall_length": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 20, + "description": "Fixed length of the cable connection that is onshorelandfall in km. If 'centroid', the length is calculated as the distance to centroid of the onshore bus." + } + } + }, + "offwind-dc": { + "description": "Configuration for offshore wind.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for wind resource settings.", + "properties": { + "method": { + "default": "wind", + "description": "A superordinate technology type.", + "type": "string" + }, + "turbine": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "description": "Specifies the turbine type and its characteristic power curve. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available." + }, + "smooth": { + "default": false, + "description": "Switch to apply a gaussian kernel density smoothing to the power curve.", + "type": "boolean" + }, + "add_cutout_windspeed": { + "default": true, + "description": "Whether to add cutout windspeed data.", + "type": "boolean" + } + }, + "required": [ + "turbine" + ] + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 2, + "description": "Allowable density of wind turbine placement.", + "type": "number" + }, + "correction_factor": { + "default": 0.8855, + "description": "Correction factor for capacity factor time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "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": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "default": false, + "description": "Specifies areas according to the LUISA Base Map codes which are generally eligible for AC-connected offshore wind turbine placement." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "ship_threshold": { + "default": 400, + "description": "Ship density threshold from which areas are excluded.", + "type": "number" + }, + "max_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum sea water depth in meters at which wind turbines can be built. Maritime areas with deeper waters are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum water depth in meters." + }, + "max_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum distance to the shore in meters above which wind turbines cannot be built. Such areas are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum distance to the shore in meters below which wind turbines cannot be built. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "excluder_resolution": { + "default": 200, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + }, + "landfall_length": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 20, + "description": "Fixed length of the cable connection that is onshorelandfall in km. If 'centroid', the length is calculated as the distance to centroid of the onshore bus." + } + } + }, + "offwind-float": { + "description": "Configuration for offshore wind.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for wind resource settings.", + "properties": { + "method": { + "default": "wind", + "description": "A superordinate technology type.", + "type": "string" + }, + "turbine": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "description": "Specifies the turbine type and its characteristic power curve. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available." + }, + "smooth": { + "default": false, + "description": "Switch to apply a gaussian kernel density smoothing to the power curve.", + "type": "boolean" + }, + "add_cutout_windspeed": { + "default": true, + "description": "Whether to add cutout windspeed data.", + "type": "boolean" + } + }, + "required": [ + "turbine" + ] + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 2, + "description": "Allowable density of wind turbine placement.", + "type": "number" + }, + "correction_factor": { + "default": 0.8855, + "description": "Correction factor for capacity factor time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "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": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "default": false, + "description": "Specifies areas according to the LUISA Base Map codes which are generally eligible for AC-connected offshore wind turbine placement." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "ship_threshold": { + "default": 400, + "description": "Ship density threshold from which areas are excluded.", + "type": "number" + }, + "max_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum sea water depth in meters at which wind turbines can be built. Maritime areas with deeper waters are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_depth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum water depth in meters." + }, + "max_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Maximum distance to the shore in meters above which wind turbines cannot be built. Such areas are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "min_shore_distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Minimum distance to the shore in meters below which wind turbines cannot be built. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential." + }, + "excluder_resolution": { + "default": 200, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + }, + "landfall_length": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 20, + "description": "Fixed length of the cable connection that is onshorelandfall in km. If 'centroid', the length is calculated as the distance to centroid of the onshore bus." + } + } + }, + "solar": { + "description": "Configuration for solar PV.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for solar resource settings.", + "properties": { + "method": { + "default": "pv", + "description": "A superordinate technology type.", + "type": "string" + }, + "panel": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "default": "CSi", + "description": "Specifies the solar panel technology and its characteristic attributes. Can be a string or a dictionary with years as keys which denote the year another panel model becomes available." + }, + "orientation": { + "additionalProperties": { + "type": "number" + }, + "description": "Panel orientation with slope and azimuth.", + "type": "object" + }, + "tracking": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Tracking type (e.g., 'horizontal')." + } + } + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 5.1, + "description": "Allowable density of solar panel placement.", + "type": "number" + }, + "correction_factor": { + "default": 1.0, + "description": "A correction factor for the capacity factor (availability) time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for solar panel placement." + }, + "luisa": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "default": false, + "description": "Specifies areas according to the LUISA Base Map codes which are generally eligible for solar panel placement." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "excluder_resolution": { + "default": 100, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + } + } + }, + "solar-hsat": { + "description": "Configuration for solar PV.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "resource": { + "description": "Configuration for solar resource settings.", + "properties": { + "method": { + "default": "pv", + "description": "A superordinate technology type.", + "type": "string" + }, + "panel": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + ], + "default": "CSi", + "description": "Specifies the solar panel technology and its characteristic attributes. Can be a string or a dictionary with years as keys which denote the year another panel model becomes available." + }, + "orientation": { + "additionalProperties": { + "type": "number" + }, + "description": "Panel orientation with slope and azimuth.", + "type": "object" + }, + "tracking": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Tracking type (e.g., 'horizontal')." + } + } + }, + "resource_classes": { + "default": 1, + "description": "Number of resource classes per clustered region.", + "type": "integer" + }, + "capacity_per_sqkm": { + "default": 5.1, + "description": "Allowable density of solar panel placement.", + "type": "number" + }, + "correction_factor": { + "default": 1.0, + "description": "A correction factor for the capacity factor (availability) time series.", + "type": "number" + }, + "corine": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for solar panel placement." + }, + "luisa": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + } + ], + "default": false, + "description": "Specifies areas according to the LUISA Base Map codes which are generally eligible for solar panel placement." + }, + "natura": { + "default": true, + "description": "Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + "markdownDescription": "Switch to exclude [Natura 2000 ](https://en.wikipedia.org/wiki/Natura_2000) natural protection areas. Area is excluded if `true`.", + "type": "boolean" + }, + "excluder_resolution": { + "default": 100, + "description": "Resolution in meters on which to perform geographical eligibility analysis.", + "type": "number" + }, + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + } + } + }, + "hydro": { + "description": "Configuration for hydropower.", + "properties": { + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "carriers": { + "description": "Specifies the types of hydro power plants to build per-unit availability time series for. 'ror' stands for run-of-river plants, 'PHS' represents pumped-hydro storage, and 'hydro' stands for hydroelectric dams.", + "items": { + "type": "string" + }, + "type": "array" + }, + "PHS_max_hours": { + "default": 6, + "description": "Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom`. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit).", + "type": "number" + }, + "hydro_max_hours": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ], + "default": "energy_capacity_totals_by_country", + "description": "Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom` or heuristically determined. Cf. `PyPSA documentation `_.", + "markdownDescription": "Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom` or heuristically determined. Cf. [PyPSA documentation ](https://pypsa.readthedocs.io/en/latest/components.html#storage-unit)." + }, + "flatten_dispatch": { + "default": false, + "description": "Consider an upper limit for the hydro dispatch. The limit is given by the average capacity factor plus the buffer given in `flatten_dispatch_buffer`.", + "type": "boolean" + }, + "flatten_dispatch_buffer": { + "default": 0.2, + "description": "If `flatten_dispatch` is true, specify the value added above the average capacity factor.", + "type": "number" + }, + "clip_min_inflow": { + "default": 1.0, + "description": "To avoid too small values in the inflow time series, values below this threshold (MW) are set to zero.", + "type": "number" + }, + "eia_norm_year": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "integer" + } + ], + "default": false, + "description": "To specify a specific year by which hydro inflow is normed that deviates from the snapshots' year." + }, + "eia_correct_by_capacity": { + "default": false, + "description": "Correct EIA annual hydro generation data by installed capacity.", + "type": "boolean" + }, + "eia_approximate_missing": { + "default": false, + "description": "Approximate hydro generation data for years not included in EIA dataset through a regression based on annual runoff.", + "type": "boolean" + } + } + } + } + }, + "conventional": { + "additionalProperties": true, + "description": "Configuration for `conventional` settings.", + "properties": { + "unit_commitment": { + "default": false, + "description": "Allow the overwrite of ramp_limit_up, ramp_limit_start_up, ramp_limit_shut_down, p_min_pu, min_up_time, min_down_time, and start_up_cost of conventional generators. Refer to the CSV file 'unit_commitment.csv'.", + "type": "boolean" + }, + "dynamic_fuel_price": { + "default": false, + "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": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "description": "For any carrier/technology overwrite attributes as listed below.", + "type": "object" + } + } + }, + "lines": { + "description": "Configuration for `lines` settings.", + "properties": { + "types": { + "additionalProperties": { + "type": "string" + }, + "description": "Specifies line types to assume for the different voltage levels of the ENTSO-E grid extraction. Should normally handle voltage levels 220, 300, and 380 kV.", + "type": "object" + }, + "s_max_pu": { + "default": 0.7, + "description": "Correction factor for line capacities (`s_nom`) to approximate N-1 security and reserve capacity for reactive power flows.", + "type": "number" + }, + "s_nom_max": { + "default": null, + "description": "Global upper limit for the maximum capacity of each extendable line (MW).", + "type": "number" + }, + "max_extension": { + "default": 20000, + "description": "Upper limit for the extended capacity of each extendable line (MW).", + "type": "number" + }, + "length_factor": { + "default": 1.25, + "description": "Correction factor to account for the fact that buses are *not* connected by lines through air-line distance.", + "type": "number" + }, + "reconnect_crimea": { + "default": true, + "description": "Whether to reconnect Crimea to the Ukrainian grid.", + "type": "boolean" + }, + "under_construction": { + "default": "keep", + "description": "Specifies how to handle lines which are currently under construction.", + "enum": [ + "zero", + "remove", + "keep" + ], + "type": "string" + }, + "dynamic_line_rating": { + "description": "Configuration for `lines.dynamic_line_rating` settings.", + "properties": { + "activate": { + "default": false, + "description": "Whether to take dynamic line rating into account.", + "type": "boolean" + }, + "cutout": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "default": "default", + "description": "Specifies the weather data cutout file(s) to use." + }, + "correction_factor": { + "default": 0.95, + "description": "Factor to compensate for overestimation of wind speeds in hourly averaged wind data.", + "type": "number" + }, + "max_voltage_difference": { + "anyOf": [ + { + "type": "number" + }, + { + "const": false, + "type": "boolean" + } + ], + "default": false, + "description": "Maximum voltage angle difference in degrees or 'false' to disable." + }, + "max_line_rating": { + "anyOf": [ + { + "type": "number" + }, + { + "const": false, + "type": "boolean" + } + ], + "default": false, + "description": "Maximum line rating relative to nominal capacity without DLR, e.g. 1.3 or 'false' to disable." + } + } + } + } + }, + "links": { + "description": "Configuration for `links` settings.", + "properties": { + "p_max_pu": { + "default": 1.0, + "description": "Correction factor for link capacities `p_nom`.", + "type": "number" + }, + "p_min_pu": { + "default": -1.0, + "description": "Correction factor for link capacities `p_nom`.", + "type": "number" + }, + "p_nom_max": { + "default": null, + "description": "Global upper limit for the maximum capacity of each extendable DC link (MW).", + "type": "number" + }, + "max_extension": { + "default": 30000, + "description": "Upper limit for the extended capacity of each extendable DC link (MW).", + "type": "number" + }, + "length_factor": { + "default": 1.25, + "description": "Correction factor to account for the fact that buses are *not* connected by links through air-line distance.", + "type": "number" + }, + "under_construction": { + "default": "keep", + "description": "Specifies how to handle lines which are currently under construction.", + "enum": [ + "zero", + "remove", + "keep" + ], + "type": "string" + } + } + }, + "transmission_projects": { + "description": "Configuration for `transmission_projects` settings.", + "properties": { + "enable": { + "default": true, + "description": "Whether to integrate this transmission projects or not.", + "type": "boolean" + }, + "include": { + "description": "Configuration for `transmission_projects.include` settings.", + "properties": { + "tyndp2020": { + "default": true, + "description": "Whether to integrate the TYNDP 2020 dataset.", + "type": "boolean" + }, + "nep": { + "default": true, + "description": "Whether to integrate the German network development plan dataset.", + "type": "boolean" + }, + "manual": { + "default": true, + "description": "Whether to integrate the manually added transmission projects. They are taken from the previously existing links_tyndp.csv file.", + "type": "boolean" + } + } + }, + "skip": { + "description": "Type of lines to skip from all transmission projects. Possible values are: `upgraded_lines`, `upgraded_links`, `new_lines`, `new_links`.", + "items": { + "type": "string" + }, + "type": "array" + }, + "status": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": "object" + } + ], + "description": "Status to include into the model as list or as dict with name of project and status to include. Possible values for status are `under_construction`, `in_permitting`, `confirmed`, `planned_not_yet_permitted`, `under_consideration`." + }, + "new_link_capacity": { + "default": "zero", + "description": "Whether to set the new link capacity to the provided capacity or set it to zero.", + "enum": [ + "zero", + "keep" + ], + "type": "string" + } + } + }, + "transformers": { + "description": "Configuration for `transformers` settings.", + "properties": { + "x": { + "default": 0.1, + "description": "Series reactance in per unit (p.u.), using `s_nom` as base power of the transformer. Overwritten if `type` is specified.", + "type": "number" + }, + "s_nom": { + "default": 2000.0, + "description": "Limit of apparent power which can pass through branch (MVA). Overwritten if `type` is specified.", + "type": "number" + }, + "type": { + "default": "", + "description": "Specifies transformer types to assume for the transformers of the ENTSO-E grid extraction.", + "type": "string" + } + } + }, + "load": { + "description": "Configuration for `load` settings.", + "properties": { + "fill_gaps": { + "description": "Configuration for `load.fill_gaps` settings.", + "properties": { + "enable": { + "default": true, + "description": "Whether to fill gaps using interpolation for small gaps and time shift for large gaps.", + "type": "boolean" + }, + "interpolate_limit": { + "default": 6, + "description": "Maximum gap size (consecutive nans) which interpolated linearly.", + "type": "integer" + }, + "time_shift_for_large_gaps": { + "default": "1w", + "description": "Periods which are used for copying time-slices in order to fill large gaps of nans. Have to be valid `pandas` period strings.", + "type": "string" + } + } + }, + "manual_adjustments": { + "default": true, + "description": "Whether to adjust the load data manually according to the function in `manual_adjustment`.", + "type": "boolean" + }, + "scaling_factor": { + "default": 1.0, + "description": "Global correction factor for the load time series.", + "type": "number" + }, + "fixed_year": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "boolean" + } + ], + "default": false, + "description": "To specify a fixed year for the load time series that deviates from the snapshots' year." + }, + "supplement_synthetic": { + "default": true, + "description": "Whether to supplement missing data for selected time period should be supplemented by synthetic data from `Zenodo `_.", + "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": { + "gdp": { + "default": 0.6, + "description": "Weighting factor for the GDP data in the distribution key.", + "type": "number" + }, + "population": { + "default": 0.4, + "description": "Weighting factor for the population data in the distribution key.", + "type": "number" + } + } + } + } + }, + "pypsa_eur": { + "description": "Configuration for `pypsa_eur` settings.", + "properties": { + "Bus": { + "description": "Bus carriers to keep from PyPSA-Eur.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Link": { + "description": "Link carriers to keep from PyPSA-Eur.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Generator": { + "description": "Generator carriers to keep from PyPSA-Eur.", + "items": { + "type": "string" + }, + "type": "array" + }, + "StorageUnit": { + "description": "StorageUnit carriers to keep from PyPSA-Eur.", + "items": { + "type": "string" + }, + "type": "array" + }, + "Store": { + "description": "Store carriers to keep from PyPSA-Eur.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "energy": { + "description": "Configuration for `energy` settings.", + "properties": { + "energy_totals_year": { + "default": 2023, + "description": "The year for the sector energy use. The year must be available in the Eurostat report.", + "type": "integer" + }, + "base_emissions_year": { + "default": 1990, + "description": "The base year for the sector emissions. See `European Environment Agency (EEA) `_.", + "markdownDescription": "The base year for the sector emissions. See [European Environment Agency (EEA) ](https://www.eea.europa.eu/data-and-maps/data/national-emissions-reported-to-the-unfccc-and-to-the-eu-greenhouse-gas-monitoring-mechanism-16).", + "type": "integer" + }, + "emissions": { + "default": "CO2", + "description": "Specify which sectoral emissions are taken into account. Data derived from EEA. Currently only CO2 is implemented.", + "type": "string" + } + } + }, + "biomass": { + "description": "Configuration for `biomass` settings.", + "properties": { + "year": { + "default": 2030, + "description": "Year for which to retrieve biomass potential according to the assumptions of the `JRC ENSPRESO `_.", + "markdownDescription": "Year for which to retrieve biomass potential according to the assumptions of the [JRC ENSPRESO ](https://data.jrc.ec.europa.eu/dataset/74ed5a04-7d74-4807-9eab-b94774309d9f).", + "maximum": 2050, + "minimum": 2010, + "type": "integer" + }, + "scenario": { + "default": "ENS_Med", + "description": "Scenario for which to retrieve biomass potential. The scenario definition can be seen in `ENSPRESO_BIOMASS `_.", + "markdownDescription": "Scenario for which to retrieve biomass potential. The scenario definition can be seen in [ENSPRESO_BIOMASS ](https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/ENSPRESO/ENSPRESO_BIOMASS.xlsx).", + "enum": [ + "ENS_Low", + "ENS_Med", + "ENS_High" + ], + "type": "string" + }, + "classes": { + "description": "Configuration for `biomass.classes` settings.", + "properties": { + "solid biomass": { + "description": "The comodity that are included as solid biomass.", + "items": { + "type": "string" + }, + "type": "array" + }, + "not included": { + "description": "The comodity that are not included as a biomass potential.", + "items": { + "type": "string" + }, + "type": "array" + }, + "biogas": { + "description": "The comodity that are included as biogas.", + "items": { + "type": "string" + }, + "type": "array" + }, + "municipal solid waste": { + "description": "The commodities that are included as municipal solid waste.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "share_unsustainable_use_retained": { + "additionalProperties": { + "type": "number" + }, + "description": "Share of unsustainable biomass use retained using primary production of Eurostat data as reference.", + "type": "object" + }, + "share_sustainable_potential_available": { + "additionalProperties": { + "type": "number" + }, + "description": "Share determines phase-in of ENSPRESO biomass potentials.", + "type": "object" + } + } + }, + "solar_thermal": { + "description": "Configuration for `solar_thermal` settings.", + "properties": { + "clearsky_model": { + "default": "simple", + "description": "Type of clearsky model for diffuse irradiation.", + "enum": [ + "simple", + "enhanced" + ], + "type": "string" + }, + "orientation": { + "description": "Configuration for `solar_thermal.orientation` settings.", + "properties": { + "slope": { + "default": 45.0, + "description": "The angle between the ground and the panels.", + "type": "number" + }, + "azimuth": { + "default": 180.0, + "description": "The angle between the North and the sun with panels on the local horizon.", + "type": "number" + } + } + }, + "cutout": { + "default": "default", + "description": "Name of the cutout to use for solar thermal calculations.", + "type": "string" + } + } + }, + "existing_capacities": { + "description": "Configuration for `existing_capacities` settings.", + "properties": { + "grouping_years_power": { + "description": "Intervals to group existing capacities for power.", + "items": { + "type": "integer" + }, + "type": "array" + }, + "grouping_years_heat": { + "description": "Intervals to group existing capacities for heat.", + "items": { + "type": "integer" + }, + "type": "array" + }, + "threshold_capacity": { + "default": 10, + "description": "Capacities (MW) of generators and links below threshold are removed during add_existing_capacities.", + "type": "number" + }, + "default_heating_lifetime": { + "default": 20, + "description": "Default lifetime for heating technologies (years).", + "type": "integer" + }, + "conventional_carriers": { + "description": "List of conventional power plants to include in the sectoral network.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "sector": { + "description": "Configuration for `sector` settings.", + "properties": { + "transport": { + "default": true, + "description": "Flag to include transport sector.", + "type": "boolean" + }, + "heating": { + "default": true, + "description": "Flag to include heating sector.", + "type": "boolean" + }, + "biomass": { + "default": true, + "description": "Flag to include biomass sector.", + "type": "boolean" + }, + "industry": { + "default": true, + "description": "Flag to include industry sector.", + "type": "boolean" + }, + "shipping": { + "default": true, + "description": "Flag to include shipping sector.", + "type": "boolean" + }, + "aviation": { + "default": true, + "description": "Flag to include aviation sector.", + "type": "boolean" + }, + "agriculture": { + "default": true, + "description": "Flag to include agriculture sector.", + "type": "boolean" + }, + "fossil_fuels": { + "default": true, + "description": "Flag to include imports of fossil fuels.", + "type": "boolean" + }, + "district_heating": { + "description": "Configuration for `sector.district_heating` settings.", + "properties": { + "potential": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ], + "default": 0.6, + "description": "Maximum fraction of urban demand which can be supplied by district heating. If given as dictionary, specify one value per country modeled or provide a default value with key `default` to fill values for all unspecified countries." + }, + "progress": { + "additionalProperties": { + "type": "number" + }, + "description": "Increase of today's district heating demand to potential maximum district heating share. Progress = 0 means today's district heating share. Progress = 1 means maximum fraction of urban demand is supplied by district heating.", + "type": "object" + }, + "district_heating_loss": { + "default": 0.15, + "description": "Share increase in district heat demand in urban central due to heat losses.", + "type": "number" + }, + "supply_temperature_approximation": { + "additionalProperties": true, + "description": "Supply temperature approximation settings.", + "type": "object" + }, + "ptes": { + "additionalProperties": true, + "description": "Pit thermal energy storage settings.", + "type": "object" + }, + "ates": { + "additionalProperties": true, + "description": "Aquifer thermal energy storage settings.", + "type": "object" + }, + "heat_source_cooling": { + "default": 6, + "description": "Cooling of heat source for heat pumps.", + "type": "number" + }, + "heat_pump_cop_approximation": { + "additionalProperties": true, + "description": "Heat pump COP approximation settings.", + "type": "object" + }, + "limited_heat_sources": { + "additionalProperties": true, + "description": "Dictionary with names of limited heat sources (not air). Must be `river_water` / `geothermal` or another heat source in `Manz et al. 2024 `_.", + "markdownDescription": "Dictionary with names of limited heat sources (not air). Must be `river_water` / `geothermal` or another heat source in [Manz et al. 2024 ](https://www.sciencedirect.com/science/article/pii/S0960148124001769).", + "type": "object" + }, + "direct_utilisation_heat_sources": { + "description": "List of heat sources for direct heat utilisation in district heating. Must be in the keys of `heat_utilisation_potentials` (e.g. `geothermal`).", + "items": { + "type": "string" + }, + "type": "array" + }, + "temperature_limited_stores": { + "description": "List of names for stores used as limited heat sources.", + "items": { + "type": "string" + }, + "type": "array" + }, + "dh_areas": { + "additionalProperties": true, + "description": "District heating areas settings.", + "type": "object" + } + } + }, + "heat_pump_sources": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": "Heat pump sources by area.", + "type": "object" + }, + "residential_heat": { + "description": "Configuration for `sector.residential_heat` settings.", + "properties": { + "dsm": { + "description": "Configuration for `sector.residential_heat.dsm` settings.", + "properties": { + "enable": { + "default": false, + "description": "Enable residential heat demand-side management that allows heating systems to provide flexibility by shifting demand within configurable time periods. Models building thermal mass as energy storage.", + "type": "boolean" + }, + "direction": { + "description": "'overheat-undercool' means both pre-heating and delayed heating are allowed. 'overheat' allows only pre-heating where buildings are heated up above target temperature and then allowed to cool down, while 'undercool' allows only delayed heating where buildings can cool below target temperature and then be heated up again.", + "items": { + "type": "string" + }, + "type": "array" + }, + "restriction_value": { + "additionalProperties": { + "type": "number" + }, + "description": "Maximum state of charge (as fraction) for heat flexibility storage representing available thermal buffer capacity in buildings. Set to 0 for no flexibility or to 1.0 to assume that the entire heating demand can contribute to flexibility.", + "type": "object" + }, + "restriction_time": { + "description": "Checkpoint hours (0-23) at which heat flexibility storage must return to baseline state of charge, i.e. the residence surplus or missing heat be balanced. Time is the local time for each country and bus. Default: [10, 22] creates 12-hour periods with checkpoints at 10am and 10pm.", + "items": { + "type": "integer" + }, + "type": "array" + } + } + } + } + }, + "cluster_heat_buses": { + "default": true, + "description": "Cluster residential and service heat buses in `prepare_sector_network.py `_ to one to save memory.", + "markdownDescription": "Cluster residential and service heat buses in [prepare_sector_network.py ](https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/prepare_sector_network.py) to one to save memory.", + "type": "boolean" + }, + "heat_demand_cutout": { + "default": "default", + "description": "Heat demand cutout.", + "type": "string" + }, + "bev_dsm_restriction_value": { + "default": 0.8, + "description": "Adds a lower state of charge (SOC) limit for battery electric vehicles (BEV) to manage its own energy demand (DSM). Located in `build_transport_demand.py `_. Set to 0 for no restriction on BEV DSM.", + "markdownDescription": "Adds a lower state of charge (SOC) limit for battery electric vehicles (BEV) to manage its own energy demand (DSM). Located in [build_transport_demand.py ](https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/build_transport_demand.py). Set to 0 for no restriction on BEV DSM.", + "type": "number" + }, + "bev_dsm_restriction_time": { + "default": 7, + "description": "Time at which SOC of BEV has to be dsm_restriction_value.", + "type": "number" + }, + "transport_heating_deadband_upper": { + "default": 20.0, + "description": "The maximum temperature in the vehicle. At higher temperatures, the energy required for cooling in the vehicle increases.", + "type": "number" + }, + "transport_heating_deadband_lower": { + "default": 15.0, + "description": "The minimum temperature in the vehicle. At lower temperatures, the energy required for heating in the vehicle increases.", + "type": "number" + }, + "ICE_lower_degree_factor": { + "default": 0.375, + "description": "Share increase in energy demand in internal combustion engine (ICE) for each degree difference between the cold environment and the minimum temperature.", + "type": "number" + }, + "ICE_upper_degree_factor": { + "default": 1.6, + "description": "Share increase in energy demand in internal combustion engine (ICE) for each degree difference between the hot environment and the maximum temperature.", + "type": "number" + }, + "EV_lower_degree_factor": { + "default": 0.98, + "description": "Share increase in energy demand in electric vehicles (EV) for each degree difference between the cold environment and the minimum temperature.", + "type": "number" + }, + "EV_upper_degree_factor": { + "default": 0.63, + "description": "Share increase in energy demand in electric vehicles (EV) for each degree difference between the hot environment and the maximum temperature.", + "type": "number" + }, + "bev_dsm": { + "default": true, + "description": "Add the option for battery electric vehicles (BEV) to participate in demand-side management (DSM).", + "type": "boolean" + }, + "bev_dsm_availability": { + "default": 0.5, + "description": "The share for battery electric vehicles (BEV) that are able to do demand side management (DSM).", + "type": "number" + }, + "bev_energy": { + "default": 0.05, + "description": "The average size of battery electric vehicles (BEV) in MWh.", + "type": "number" + }, + "bev_charge_efficiency": { + "default": 0.9, + "description": "Battery electric vehicles (BEV) charge and discharge efficiency.", + "type": "number" + }, + "bev_charge_rate": { + "default": 0.011, + "description": "The power consumption for one electric vehicle (EV) in MWh. Value derived from 3-phase charger with 11 kW.", + "type": "number" + }, + "bev_avail_max": { + "default": 0.95, + "description": "The maximum share plugged-in availability for passenger electric vehicles.", + "type": "number" + }, + "bev_avail_mean": { + "default": 0.8, + "description": "The average share plugged-in availability for passenger electric vehicles.", + "type": "number" + }, + "v2g": { + "default": true, + "description": "Allows feed-in to grid from EV battery. This is only enabled if BEV demand-side management is enabled, and the share of vehicles participating is V2G is given by `bev_dsm_availability`.", + "type": "boolean" + }, + "land_transport_fuel_cell_share": { + "additionalProperties": { + "type": "number" + }, + "description": "The share of vehicles that uses fuel cells in a given year.", + "type": "object" + }, + "land_transport_electric_share": { + "additionalProperties": { + "type": "number" + }, + "description": "The share of vehicles that uses electric vehicles (EV) in a given year.", + "type": "object" + }, + "land_transport_ice_share": { + "additionalProperties": { + "type": "number" + }, + "description": "The share of vehicles that uses internal combustion engines (ICE) in a given year. What is not EV or FCEV is oil-fuelled ICE.", + "type": "object" + }, + "transport_electric_efficiency": { + "default": 53.19, + "description": "The conversion efficiencies of electric vehicles in transport.", + "type": "number" + }, + "transport_fuel_cell_efficiency": { + "default": 30.003, + "description": "The H2 conversion efficiencies of fuel cells in transport.", + "type": "number" + }, + "transport_ice_efficiency": { + "default": 16.0712, + "description": "The oil conversion efficiencies of internal combustion engine (ICE) in transport.", + "type": "number" + }, + "agriculture_machinery_electric_share": { + "default": 0.5, + "description": "The share for agricultural machinery that uses electricity.", + "type": "number" + }, + "agriculture_machinery_oil_share": { + "default": 0.5, + "description": "The share for agricultural machinery that uses oil.", + "type": "number" + }, + "agriculture_machinery_fuel_efficiency": { + "default": 0.7, + "description": "The efficiency of electric-powered machinery in the conversion of electricity to meet agricultural needs.", + "type": "number" + }, + "agriculture_machinery_electric_efficiency": { + "default": 0.3, + "description": "The efficiency of oil-powered machinery in the conversion of oil to meet agricultural needs.", + "type": "number" + }, + "shipping_hydrogen_liquefaction": { + "default": false, + "description": "Whether to include liquefaction costs for hydrogen demand in shipping.", + "type": "boolean" + }, + "shipping_hydrogen_share": { + "additionalProperties": { + "type": "number" + }, + "description": "The share of ships powered by hydrogen in a given year.", + "type": "object" + }, + "shipping_methanol_share": { + "additionalProperties": { + "type": "number" + }, + "description": "The share of ships powered by methanol in a given year.", + "type": "object" + }, + "shipping_oil_share": { + "additionalProperties": { + "type": "number" + }, + "description": "The share of ships powered by oil in a given year.", + "type": "object" + }, + "shipping_methanol_efficiency": { + "default": 0.46, + "description": "The efficiency of methanol-powered ships in the conversion of methanol to meet shipping needs (propulsion). The efficiency increase from oil can be 10-15% higher according to the `IEA `_.", + "markdownDescription": "The efficiency of methanol-powered ships in the conversion of methanol to meet shipping needs (propulsion). The efficiency increase from oil can be 10-15% higher according to the [IEA ](https://www.iea-amf.org/app/webroot/files/file/Annex%20Reports/AMF_Annex_56.pdf).", + "type": "number" + }, + "shipping_oil_efficiency": { + "default": 0.4, + "description": "The efficiency of oil-powered ships in the conversion of oil to meet shipping needs (propulsion). Base value derived from 2011.", + "type": "number" + }, + "aviation_demand_factor": { + "default": 1.0, + "description": "The proportion of demand for aviation compared to today's consumption.", + "type": "number" + }, + "HVC_demand_factor": { + "default": 1.0, + "description": "The proportion of demand for high-value chemicals compared to today's consumption.", + "type": "number" + }, + "time_dep_hp_cop": { + "default": true, + "description": "Consider the time dependent coefficient of performance (COP) of the heat pump.", + "type": "boolean" + }, + "heat_pump_sink_T_individual_heating": { + "default": 55.0, + "description": "The temperature heat sink used in heat pumps based on DTU / large area radiators. The value is conservatively high to cover hot water and space heating in poorly-insulated buildings.", + "type": "number" + }, + "reduce_space_heat_exogenously": { + "default": true, + "description": "Influence on space heating demand by a certain factor (applied before losses in district heating).", + "type": "boolean" + }, + "reduce_space_heat_exogenously_factor": { + "additionalProperties": { + "type": "number" + }, + "description": "A positive factor can mean renovation or demolition of a building. If the factor is negative, it can mean an increase in floor area, increased thermal comfort, population growth. The default factors are determined by the `Eurocalc Homes and buildings decarbonization scenario `_.", + "markdownDescription": "A positive factor can mean renovation or demolition of a building. If the factor is negative, it can mean an increase in floor area, increased thermal comfort, population growth. The default factors are determined by the [Eurocalc Homes and buildings decarbonization scenario ](http://tool.european-calculator.eu/app/buildings/building-types-area/?levers=1ddd4444421213bdbbbddd44444ffffff11f411111221111211l212221).", + "type": "object" + }, + "retrofitting": { + "description": "Configuration for `sector.retrofitting` settings.", + "properties": { + "retro_endogen": { + "default": false, + "description": "Add retrofitting as an endogenous system which co-optimise space heat savings.", + "type": "boolean" + }, + "cost_factor": { + "default": 1.0, + "description": "Weight costs for building renovation.", + "type": "number" + }, + "interest_rate": { + "default": 0.04, + "description": "The interest rate for investment in building components.", + "type": "number" + }, + "annualise_cost": { + "default": true, + "description": "Annualise the investment costs of retrofitting.", + "type": "boolean" + }, + "tax_weighting": { + "default": false, + "description": "Weight the costs of retrofitting depending on taxes in countries.", + "type": "boolean" + }, + "construction_index": { + "default": true, + "description": "Weight the costs of retrofitting depending on labour/material costs per country.", + "type": "boolean" + } + } + }, + "tes": { + "default": true, + "description": "Add option for storing thermal energy in large water pits associated with district heating systems and individual thermal energy storage (TES).", + "type": "boolean" + }, + "boilers": { + "default": true, + "description": "Add option for transforming gas into heat using gas boilers.", + "type": "boolean" + }, + "resistive_heaters": { + "default": true, + "description": "Add option for transforming electricity into heat using resistive heaters (independently from gas boilers).", + "type": "boolean" + }, + "oil_boilers": { + "default": false, + "description": "Add option for transforming oil into heat using boilers.", + "type": "boolean" + }, + "biomass_boiler": { + "default": true, + "description": "Add option for transforming biomass into heat using boilers.", + "type": "boolean" + }, + "overdimension_heat_generators": { + "additionalProperties": { + "type": "number" + }, + "description": "Add option for overdimensioning heating systems by a certain factor. This allows them to cover heat demand peaks e.g. 10% higher than those in the data with a setting of 1.1.", + "type": "object" + }, + "chp": { + "description": "Configuration for `sector.chp` settings.", + "properties": { + "enable": { + "default": true, + "description": "Add option for using Combined Heat and Power (CHP).", + "type": "boolean" + }, + "fuel": { + "description": "Possible options are all fuels which have an existing bus and their CO2 intensity is given in the technology data. Currently possible are \"gas\", \"oil\", \"methanol\", \"lignite\", \"coal\" as well as \"solid biomass\". For all fuels except solid biomass, the techno-economic data from gas CHP is used. For the special case of solid biomass fuel, both CHP plants with and without carbon capture are added.", + "items": { + "type": "string" + }, + "type": "array" + }, + "micro_chp": { + "default": false, + "description": "Add option for using gas-fired Combined Heat and Power (CHP) for decentral areas.", + "type": "boolean" + } + } + }, + "solar_thermal": { + "default": true, + "description": "Add option for using solar thermal to generate heat.", + "type": "boolean" + }, + "solar_cf_correction": { + "default": 0.788457, + "description": "The correction factor for the value provided by the solar thermal profile calculations.", + "type": "number" + }, + "methanation": { + "default": true, + "description": "Add option for transforming hydrogen and CO2 into methane using methanation.", + "type": "boolean" + }, + "coal_cc": { + "default": false, + "description": "Add option for coal CHPs with carbon capture.", + "type": "boolean" + }, + "dac": { + "default": true, + "description": "Add option for Direct Air Capture (DAC).", + "type": "boolean" + }, + "co2_vent": { + "default": false, + "description": "Add option for vent out CO2 from storages to the atmosphere.", + "type": "boolean" + }, + "heat_vent": { + "additionalProperties": { + "type": "boolean" + }, + "description": "Heat venting by area.", + "type": "object" + }, + "marginal_cost_heat_vent": { + "default": 0.02, + "description": "The marginal cost of heat-venting in all heating systems.", + "type": "number" + }, + "allam_cycle_gas": { + "default": false, + "description": "Add option to include `Allam cycle gas power plants `_.", + "markdownDescription": "Add option to include [Allam cycle gas power plants ](https://en.wikipedia.org/wiki/Allam_power_cycle).", + "type": "boolean" + }, + "hydrogen_fuel_cell": { + "default": true, + "description": "Add option to include hydrogen fuel cell for re-electrification. Assuming OCGT technology costs.", + "type": "boolean" + }, + "hydrogen_turbine": { + "default": true, + "description": "Add option to include hydrogen turbine for re-electrification. Assuming OCGT technology costs.", + "type": "boolean" + }, + "SMR": { + "default": true, + "description": "Add option for transforming natural gas into hydrogen and CO2 using Steam Methane Reforming (SMR).", + "type": "boolean" + }, + "SMR_cc": { + "default": true, + "description": "Add option for transforming natural gas into hydrogen and CO2 using Steam Methane Reforming (SMR) and Carbon Capture (CC).", + "type": "boolean" + }, + "regional_oil_demand": { + "default": true, + "description": "Spatially resolve oil demand. Set to true if regional CO2 constraints needed.", + "type": "boolean" + }, + "regional_coal_demand": { + "default": false, + "description": "Regional coal demand.", + "type": "boolean" + }, + "regional_co2_sequestration_potential": { + "additionalProperties": true, + "description": "Add option for regionally-resolved geological carbon dioxide sequestration potentials based on `CO2StoP `_.", + "markdownDescription": "Add option for regionally-resolved geological carbon dioxide sequestration potentials based on [CO2StoP ](https://setis.ec.europa.eu/european-co2-storage-database_en).", + "type": "object" + }, + "co2_sequestration_potential": { + "additionalProperties": { + "type": "number" + }, + "description": "The potential of sequestering CO2 in Europe per year and investment period.", + "type": "object" + }, + "co2_sequestration_cost": { + "default": 30, + "description": "The cost of sequestering a ton of CO2 (currency/tCO2).", + "type": "number" + }, + "co2_sequestration_lifetime": { + "default": 50, + "description": "The lifetime of a CO2 sequestration site (years).", + "type": "integer" + }, + "co2_spatial": { + "default": true, + "description": "Add option to spatially resolve carrier representing stored carbon dioxide. This allows for more detailed modelling of CCUTS, e.g. regarding the capturing of industrial process emissions, usage as feedstock for electrofuels, transport of carbon dioxide, and geological sequestration sites.", + "type": "boolean" + }, + "co2_network": { + "default": true, + "description": "Add option for planning a new carbon dioxide transmission network.", + "type": "boolean" + }, + "co2_network_cost_factor": { + "default": 1, + "description": "The cost factor for the capital cost of the carbon dioxide transmission network.", + "type": "number" + }, + "cc_fraction": { + "default": 0.9, + "description": "The default fraction of CO2 captured with post-combustion capture.", + "type": "number" + }, + "hydrogen_underground_storage": { + "default": true, + "description": "Add options for storing hydrogen underground. Storage potential depends regionally.", + "type": "boolean" + }, + "hydrogen_underground_storage_locations": { + "description": "The location where hydrogen underground storage can be located. Onshore, nearshore, offshore means it must be located more than 50 km away from the sea, within 50 km of the sea, or within the sea itself respectively.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methanol": { + "description": "Configuration for `sector.methanol` settings.", + "properties": { + "regional_methanol_demand": { + "default": false, + "description": "Spatially resolve methanol demand. Set to true if regional CO2 constraints needed.", + "type": "boolean" + }, + "methanol_reforming": { + "default": false, + "description": "Add methanol reforming.", + "type": "boolean" + }, + "methanol_reforming_cc": { + "default": false, + "description": "Add methanol reforming with carbon capture.", + "type": "boolean" + }, + "methanol_to_kerosene": { + "default": false, + "description": "Add methanol to kerosene.", + "type": "boolean" + }, + "methanol_to_power": { + "additionalProperties": { + "type": "boolean" + }, + "description": "Add different methanol to power technologies.", + "type": "object" + }, + "biomass_to_methanol": { + "default": true, + "description": "Add biomass to methanol.", + "type": "boolean" + }, + "biomass_to_methanol_cc": { + "default": false, + "description": "Add biomass to methanol with carbon capture.", + "type": "boolean" + } + } + }, + "ammonia": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": true, + "description": "Add ammonia as a carrier. It can be either true (copperplated NH3), false (no NH3 carrier) or \"regional\" (regionalised NH3 without network)." + }, + "min_part_load_electrolysis": { + "default": 0, + "description": "The minimum unit dispatch (`p_min_pu`) for electrolysis.", + "type": "number" + }, + "min_part_load_fischer_tropsch": { + "default": 0.5, + "description": "The minimum unit dispatch (`p_min_pu`) for the Fischer-Tropsch process.", + "type": "number" + }, + "min_part_load_methanolisation": { + "default": 0.3, + "description": "The minimum unit dispatch (`p_min_pu`) for the methanolisation process.", + "type": "number" + }, + "min_part_load_methanation": { + "default": 0.3, + "description": "Minimum part load methanation.", + "type": "number" + }, + "use_fischer_tropsch_waste_heat": { + "default": 0.25, + "description": "Add option for using waste heat of Fischer Tropsch in district heating networks.", + "type": "number" + }, + "use_haber_bosch_waste_heat": { + "default": 0.25, + "description": "Use Haber-Bosch waste heat.", + "type": "number" + }, + "use_methanolisation_waste_heat": { + "default": 0.25, + "description": "Use methanolisation waste heat.", + "type": "number" + }, + "use_methanation_waste_heat": { + "default": 0.25, + "description": "Use methanation waste heat.", + "type": "number" + }, + "use_fuel_cell_waste_heat": { + "default": 1, + "description": "Add option for using waste heat of fuel cells in district heating networks.", + "type": "number" + }, + "use_electrolysis_waste_heat": { + "default": 0.25, + "description": "Add option for using waste heat of electrolysis in district heating networks.", + "type": "number" + }, + "electricity_transmission_grid": { + "default": true, + "description": "Switch for enabling/disabling the electricity transmission grid.", + "type": "boolean" + }, + "electricity_distribution_grid": { + "default": true, + "description": "Add a simplified representation of the exchange capacity between transmission and distribution grid level through a link.", + "type": "boolean" + }, + "electricity_distribution_grid_cost_factor": { + "default": 1.0, + "description": "Multiplies the investment cost of the electricity distribution grid.", + "type": "number" + }, + "electricity_grid_connection": { + "default": true, + "description": "Add the cost of electricity grid connection for onshore wind and solar.", + "type": "boolean" + }, + "transmission_efficiency": { + "description": "Configuration for `sector.transmission_efficiency` settings.", + "properties": { + "enable": { + "description": "Switch to select the carriers for which transmission efficiency is to be added. Carriers not listed assume lossless transmission.", + "items": { + "type": "string" + }, + "type": "array" + }, + "DC": { + "additionalProperties": { + "type": "number" + }, + "description": "DC transmission efficiency.", + "type": "object" + }, + "H2 pipeline": { + "additionalProperties": { + "type": "number" + }, + "description": "H2 pipeline transmission efficiency.", + "type": "object" + }, + "gas pipeline": { + "additionalProperties": { + "type": "number" + }, + "description": "Gas pipeline transmission efficiency.", + "type": "object" + }, + "electricity distribution grid": { + "additionalProperties": { + "type": "number" + }, + "description": "Electricity distribution grid efficiency.", + "type": "object" + } + } + }, + "H2_network": { + "default": true, + "description": "Add option for new hydrogen pipelines.", + "type": "boolean" + }, + "gas_network": { + "default": true, + "description": "Add existing natural gas infrastructure, incl. LNG terminals, production and entry-points. The existing gas network is added with a lossless transport model. A length-weighted `k-edge augmentation algorithm `_ can be run to add new candidate gas pipelines such that all regions of the model can be connected to the gas network. When activated, all the gas demands are regionally disaggregated as well.", + "markdownDescription": "Add existing natural gas infrastructure, incl. LNG terminals, production and entry-points. The existing gas network is added with a lossless transport model. A length-weighted [k-edge augmentation algorithm ](https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation.html#networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation) can be run to add new candidate gas pipelines such that all regions of the model can be connected to the gas network. When activated, all the gas demands are regionally disaggregated as well.", + "type": "boolean" + }, + "H2_retrofit": { + "default": false, + "description": "Add option for retrofiting existing pipelines to transport hydrogen.", + "type": "boolean" + }, + "H2_retrofit_capacity_per_CH4": { + "default": 0.6, + "description": "The ratio for H2 capacity per original CH4 capacity of retrofitted pipelines. The `European Hydrogen Backbone (April, 2020) p.15 `_ 60% of original natural gas capacity could be used in cost-optimal case as H2 capacity.", + "markdownDescription": "The ratio for H2 capacity per original CH4 capacity of retrofitted pipelines. The [European Hydrogen Backbone (April, 2020) p.15 ](https://gasforclimate2050.eu/wp-content/uploads/2020/07/2020_European-Hydrogen-Backbone_Report.pdf) 60% of original natural gas capacity could be used in cost-optimal case as H2 capacity.", + "type": "number" + }, + "gas_network_connectivity_upgrade": { + "default": 1, + "description": "The number of desired edge connectivity (k) in the length-weighted `k-edge augmentation algorithm `_ used for the gas network.", + "markdownDescription": "The number of desired edge connectivity (k) in the length-weighted [k-edge augmentation algorithm ](https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation.html#networkx.algorithms.connectivity.edge_augmentation.k_edge_augmentation) used for the gas network.", + "type": "number" + }, + "gas_distribution_grid": { + "default": true, + "description": "Add a gas distribution grid.", + "type": "boolean" + }, + "gas_distribution_grid_cost_factor": { + "default": 1.0, + "description": "Multiplier for the investment cost of the gas distribution grid.", + "type": "number" + }, + "biomass_spatial": { + "default": true, + "description": "Add option for resolving biomass demand regionally.", + "type": "boolean" + }, + "biomass_transport": { + "default": false, + "description": "Add option for transporting solid biomass between nodes.", + "type": "boolean" + }, + "biogas_upgrading": { + "default": true, + "description": "Biogas upgrading.", + "type": "boolean" + }, + "biogas_upgrading_cc": { + "default": false, + "description": "Add option to capture CO2 from biomass upgrading.", + "type": "boolean" + }, + "conventional_generation": { + "additionalProperties": { + "type": "string" + }, + "description": "Add a more detailed description of conventional carriers. Any power generation requires the consumption of fuel from nodes representing that fuel.", + "type": "object" + }, + "biomass_to_liquid": { + "default": true, + "description": "Add option for transforming solid biomass into liquid fuel with the same properties as oil.", + "type": "boolean" + }, + "biomass_to_liquid_cc": { + "default": false, + "description": "Add option for transforming solid biomass into liquid fuel with the same properties as oil with carbon capture.", + "type": "boolean" + }, + "electrobiofuels": { + "default": true, + "description": "Electrobiofuels.", + "type": "boolean" + }, + "biosng": { + "default": false, + "description": "Add option for transforming solid biomass into synthesis gas with the same properties as natural gas.", + "type": "boolean" + }, + "biosng_cc": { + "default": false, + "description": "Add option for transforming solid biomass into synthesis gas with the same properties as natural gas with carbon capture.", + "type": "boolean" + }, + "bioH2": { + "default": false, + "description": "Add option for transforming solid biomass into hydrogen with carbon capture.", + "type": "boolean" + }, + "municipal_solid_waste": { + "default": false, + "description": "Add option for municipal solid waste.", + "type": "boolean" + }, + "limit_max_growth": { + "description": "Configuration for `sector.limit_max_growth` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add option to limit the maximum growth of a carrier.", + "type": "boolean" + }, + "factor": { + "default": 1.3, + "description": "The maximum growth factor of a carrier (e.g. 1.3 allows 30% larger than max historic growth).", + "type": "number" + }, + "max_growth": { + "additionalProperties": { + "type": "number" + }, + "description": "The historic maximum growth of a carrier.", + "type": "object" + }, + "max_relative_growth": { + "additionalProperties": { + "type": "number" + }, + "description": "The historic maximum relative growth of a carrier.", + "type": "object" + } + } + }, + "enhanced_geothermal": { + "description": "Configuration for `sector.enhanced_geothermal` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add option to include Enhanced Geothermal Systems.", + "type": "boolean" + }, + "flexible": { + "default": true, + "description": "Add option for flexible operation (see Ricks et al. 2024).", + "type": "boolean" + }, + "max_hours": { + "default": 240, + "description": "The maximum hours the reservoir can be charged under flexible operation.", + "type": "integer" + }, + "max_boost": { + "default": 0.25, + "description": "The maximum boost in power output under flexible operation.", + "type": "number" + }, + "var_cf": { + "default": true, + "description": "Add option for variable capacity factor (see Ricks et al. 2024).", + "type": "boolean" + }, + "sustainability_factor": { + "default": 0.0025, + "description": "Share of sourced heat that is replenished by the earth's core (see details in `build_egs_potentials.py `_).", + "markdownDescription": "Share of sourced heat that is replenished by the earth's core (see details in [build_egs_potentials.py ](https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/build_egs_potentials.py)).", + "type": "number" + } + } + }, + "solid_biomass_import": { + "description": "Configuration for `sector.solid_biomass_import` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add option to include solid biomass imports.", + "type": "boolean" + }, + "price": { + "default": 54, + "description": "Price for importing solid biomass (currency/MWh).", + "type": "number" + }, + "max_amount": { + "default": 1390, + "description": "Maximum solid biomass import potential (TWh).", + "type": "number" + }, + "upstream_emissions_factor": { + "default": 0.1, + "description": "Upstream emissions of solid biomass imports.", + "type": "number" + } + } + }, + "imports": { + "description": "Configuration for `sector.imports` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add option to include renewable energy imports.", + "type": "boolean" + }, + "limit": { + "default": null, + "description": "Maximum allowed renewable energy imports (TWh).", + "type": "number" + }, + "limit_sense": { + "default": "<=", + "description": "Sense of the limit.", + "type": "string" + }, + "price": { + "additionalProperties": { + "type": "number" + }, + "description": "Price for importing renewable energy of carrier.", + "type": "object" + } + } + } + } + }, + "industry": { + "description": "Configuration for `industry` settings.", + "properties": { + "St_primary_fraction": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of steel produced via primary route versus secondary route (scrap+EAF). Current fraction is 0.6.", + "type": "object" + }, + "DRI_fraction": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of the primary route DRI + EAF.", + "type": "object" + }, + "H2_DRI": { + "default": 1.7, + "description": "The hydrogen consumption in Direct Reduced Iron (DRI) Mwh_H2 LHV/ton_Steel from 51kgH2/tSt in `Vogl et al (2018) `_.", + "markdownDescription": "The hydrogen consumption in Direct Reduced Iron (DRI) Mwh_H2 LHV/ton_Steel from 51kgH2/tSt in [Vogl et al (2018) ](https://doi.org/10.1016/j.jclepro.2018.08.279).", + "type": "number" + }, + "elec_DRI": { + "default": 0.322, + "description": "The electricity consumed in Direct Reduced Iron (DRI) shaft. From `HYBRIT brochure `_.", + "markdownDescription": "The electricity consumed in Direct Reduced Iron (DRI) shaft. From [HYBRIT brochure ](https://ssabwebsitecdn.azureedge.net/-/media/hybrit/files/hybrit_brochure.pdf).", + "type": "number" + }, + "Al_primary_fraction": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of aluminium produced via the primary route versus scrap. Current fraction is 0.4.", + "type": "object" + }, + "MWh_NH3_per_tNH3": { + "default": 5.166, + "description": "The energy amount per ton of ammonia (LHV).", + "type": "number" + }, + "MWh_CH4_per_tNH3_SMR": { + "default": 10.8, + "description": "The energy amount of methane needed to produce a ton of ammonia using steam methane reforming (SMR). Value derived from 2012's demand from `Center for European Policy Studies (2008) `_.", + "markdownDescription": "The energy amount of methane needed to produce a ton of ammonia using steam methane reforming (SMR). Value derived from 2012's demand from [Center for European Policy Studies (2008) ](https://ec.europa.eu/docsroom/documents/4165/attachments/1/translations/en/renditions/pdf).", + "type": "number" + }, + "MWh_elec_per_tNH3_SMR": { + "default": 0.7, + "description": "The energy amount of electricity needed to produce a ton of ammonia using steam methane reforming (SMR). same source, assuming 94-6% split methane-elec of total energy demand 11.5 MWh/tNH3.", + "type": "number" + }, + "MWh_H2_per_tNH3_electrolysis": { + "default": 5.93, + "description": "The energy amount of hydrogen needed to produce a ton of ammonia using Haber\u2013Bosch process. From `Wang et al (2018) `_, Base value assumed around 0.197 tH2/tHN3 (>3/17 since some H2 lost and used for energy).", + "markdownDescription": "The energy amount of hydrogen needed to produce a ton of ammonia using Haber\u2013Bosch process. From [Wang et al (2018) ](https://doi.org/10.1016/j.joule.2018.04.017), Base value assumed around 0.197 tH2/tHN3 (>3/17 since some H2 lost and used for energy).", + "type": "number" + }, + "MWh_elec_per_tNH3_electrolysis": { + "default": 0.2473, + "description": "The energy amount of electricity needed to produce a ton of ammonia using Haber\u2013Bosch process. From `Wang et al (2018) `_, Table 13 (air separation and HB).", + "markdownDescription": "The energy amount of electricity needed to produce a ton of ammonia using Haber\u2013Bosch process. From [Wang et al (2018) ](https://doi.org/10.1016/j.joule.2018.04.017), Table 13 (air separation and HB).", + "type": "number" + }, + "MWh_NH3_per_MWh_H2_cracker": { + "default": 1.46, + "description": "The energy amount of amonia needed to produce an energy amount hydrogen using ammonia cracker.", + "type": "number" + }, + "NH3_process_emissions": { + "default": 24.5, + "description": "The emission of ammonia production from steam methane reforming (SMR). From UNFCCC for 2015 for EU28.", + "type": "number" + }, + "petrochemical_process_emissions": { + "default": 25.5, + "description": "The emission of petrochemical production. From UNFCCC for 2015 for EU28.", + "type": "number" + }, + "HVC_primary_fraction": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of high value chemicals (HVC) produced via primary route.", + "type": "object" + }, + "HVC_mechanical_recycling_fraction": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of high value chemicals (HVC) produced using mechanical recycling.", + "type": "object" + }, + "HVC_chemical_recycling_fraction": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of high value chemicals (HVC) produced using chemical recycling.", + "type": "object" + }, + "HVC_environment_sequestration_fraction": { + "default": 0.0, + "description": "The fraction of high value chemicals (HVC) put into landfill resulting in additional carbon sequestration. The default value is 0.", + "type": "number" + }, + "waste_to_energy": { + "default": false, + "description": "Switch to enable expansion of waste to energy CHPs for conversion of plastics. Default is false.", + "type": "boolean" + }, + "waste_to_energy_cc": { + "default": false, + "description": "Switch to enable expansion of waste to energy CHPs for conversion of plastics with carbon capture. Default is false.", + "type": "boolean" + }, + "sector_ratios_fraction_future": { + "additionalProperties": { + "type": "number" + }, + "description": "The fraction of total progress in fuel and process switching achieved in the industry sector.", + "type": "object" + }, + "basic_chemicals_without_NH3_production_today": { + "default": 69.0, + "description": "The amount of basic chemicals produced without ammonia (= 86 Mtethylene-equiv - 17 MtNH3).", + "type": "number" + }, + "HVC_production_today": { + "default": 52.0, + "description": "The amount of high value chemicals (HVC) produced. This includes ethylene, propylene and BTX. From `DECHEMA (2017) `_, Figure 16, page 107.", + "markdownDescription": "The amount of high value chemicals (HVC) produced. This includes ethylene, propylene and BTX. 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), Figure 16, page 107.", + "type": "number" + }, + "MWh_elec_per_tHVC_mechanical_recycling": { + "default": 0.547, + "description": "The energy amount of electricity needed to produce a ton of high value chemical (HVC) using mechanical recycling. From SI of `Meys et al (2020) `_, Table S5, for HDPE, PP, PS, PET. LDPE would be 0.756.", + "markdownDescription": "The energy amount of electricity needed to produce a ton of high value chemical (HVC) using mechanical recycling. From SI of [Meys et al (2020) ](https://doi.org/10.1016/j.resconrec.2020.105010), Table S5, for HDPE, PP, PS, PET. LDPE would be 0.756.", + "type": "number" + }, + "MWh_elec_per_tHVC_chemical_recycling": { + "default": 6.9, + "description": "The energy amount of electricity needed to produce a ton of high value chemical (HVC) using chemical recycling. The default value is based on pyrolysis and electric steam cracking. From `Material Economics (2019) `_, page 125.", + "markdownDescription": "The energy amount of electricity needed to produce a ton of high value chemical (HVC) using chemical recycling. The default value is based on pyrolysis and electric steam cracking. From [Material Economics (2019) ](https://materialeconomics.com/latest-updates/industrial-transformation-2050), page 125.", + "type": "number" + }, + "chlorine_production_today": { + "default": 9.58, + "description": "The amount of chlorine produced. From `DECHEMA (2017) `_, Table 7, page 43.", + "markdownDescription": "The amount of chlorine produced. 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 7, page 43.", + "type": "number" + }, + "MWh_elec_per_tCl": { + "default": 3.6, + "description": "The energy amount of electricity needed to produce a ton of chlorine. From `DECHEMA (2017) `_, Table 6 page 43.", + "markdownDescription": "The energy amount of electricity needed to produce a ton of chlorine. 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 6 page 43.", + "type": "number" + }, + "MWh_H2_per_tCl": { + "default": -0.9372, + "description": "The energy amount of hydrogen needed to produce a ton of chlorine. The value is negative since hydrogen produced in chloralkali process. From `DECHEMA (2017) `_, page 43.", + "markdownDescription": "The energy amount of hydrogen needed to produce a ton of chlorine. The value is negative since hydrogen produced in chloralkali process. 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 43.", + "type": "number" + }, + "methanol_production_today": { + "default": 1.5, + "description": "The amount of methanol produced. From `DECHEMA (2017) `_, page 62.", + "markdownDescription": "The amount of methanol produced. 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 62.", + "type": "number" + }, + "MWh_elec_per_tMeOH": { + "default": 0.167, + "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 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": { + "default": 5.528, + "description": "The energy amount per ton of methanol (LHV). From `DECHEMA (2017) `_, page 74.", + "markdownDescription": "The energy amount per ton of methanol (LHV). 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 74.", + "type": "number" + }, + "hotmaps_locate_missing": { + "default": false, + "description": "Locate industrial sites without valid locations based on city and countries.", + "type": "boolean" + }, + "reference_year": { + "default": 2019, + "description": "The year used as the baseline for industrial energy demand and production. Data extracted from `JRC-IDEES 2015 `_.", + "markdownDescription": "The year used as the baseline for industrial energy demand and production. Data extracted from [JRC-IDEES 2015 ](https://data.jrc.ec.europa.eu/dataset/jrc-10110-10001).", + "type": "integer" + }, + "oil_refining_emissions": { + "default": 0.013, + "description": "The emissions from oil fuel processing (e.g. oil in petrochemical refinieries). The default value of 0.013 tCO2/MWh is based on DE statistics for 2019; the EU value is very similar.", + "type": "number" + } + } + }, + "costs": { + "description": "Configuration for `costs` settings.", + "properties": { + "year": { + "default": 2050, + "description": "Year for which to retrieve cost assumptions of `data/costs/primary//costs_.csv`.", + "type": "integer" + }, + "social_discountrate": { + "default": 0.02, + "description": "Social discount rate to compare costs in different investment periods. 0.02 corresponds to a social discount rate of 2%.", + "type": "number" + }, + "fill_values": { + "description": "Configuration for `costs.fill_values` settings.", + "properties": { + "FOM": { + "default": 0, + "description": "Default fixed operation and maintenance cost.", + "type": "number" + }, + "VOM": { + "default": 0, + "description": "Default variable operation and maintenance cost.", + "type": "number" + }, + "efficiency": { + "default": 1, + "description": "Default efficiency.", + "type": "number" + }, + "fuel": { + "default": 0, + "description": "Default fuel cost.", + "type": "number" + }, + "investment": { + "default": 0, + "description": "Default investment cost.", + "type": "number" + }, + "lifetime": { + "default": 25, + "description": "Default lifetime in years.", + "type": "integer" + }, + "CO2 intensity": { + "default": 0, + "description": "Default CO2 intensity.", + "type": "number" + }, + "discount rate": { + "default": 0.07, + "description": "Default discount rate.", + "type": "number" + }, + "standing losses": { + "default": 0, + "description": "Default standing losses.", + "type": "number" + } + } + }, + "custom_cost_fn": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "data/custom_costs.csv", + "description": "Path to the custom costs file. None if it should not be used. Default `data/custom_costs.csv` contains minor adjustments for stabilising the optimisation results." + }, + "overwrites": { + "additionalProperties": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + }, + "description": "For the given parameters and technologies, assumptions about their parameter are overwritten the corresponding value of the technology.", + "type": "object" + }, + "capital_cost": { + "additionalProperties": { + "type": "number" + }, + "description": "For the given technologies, assumptions about their capital investment costs are set to the corresponding value. Optional; overwrites cost assumptions from `resources/costs.csv`.", + "type": "object" + }, + "marginal_cost": { + "additionalProperties": { + "type": "number" + }, + "description": "For the given technologies, assumptions about their marginal operating costs are set to the corresponding value. Optional; overwrites cost assumptions from `resources/costs.csv`.", + "type": "object" + }, + "emission_prices": { + "description": "Configuration for `costs.emission_prices` settings.", + "properties": { + "enable": { + "default": false, + "description": "Add cost for a carbon-dioxide price configured in `costs: emission_prices: co2` to `marginal_cost` of generators. Config setting can also be enabled with the keyword `Ep` in the `{opts}` wildcard for electricity-only runs.", + "type": "boolean" + }, + "co2": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ], + "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." + }, + "dynamic": { + "default": false, + "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" + } + } + } + } + }, + "clustering": { + "description": "Configuration for `clustering` settings.", + "properties": { + "mode": { + "default": "busmap", + "description": "'busmap': Default. 'custom_busmap': Enable the use of custom busmaps in rule `cluster_network`. If activated the rule looks for provided busmaps at ``data/busmaps/base_s_{clusters}_{base_network}.csv`` which should have the same format as ``resources/busmap_base_s_{clusters}.csv``, i.e. the index should contain the buses of ``networks/base_s.nc``. {base_network} is the name of the selected base_network in electricity, e.g. ``gridkit``, ``osm-prebuilt``, or ``osm-raw``. 'administrative': Clusters and indexes the network based on the administrative regions of the countries based on ``nuts3_shapes.geojson`` (level: 1, 2, 3, bz). To activate this, additionally set the ``clusters`` wildcard in ``scenario`` to 'adm'. 'custom_busshapes': Enable the use of custom shapes in rule `cluster_network`. If activated the rule looks for provided busshapes at ``data/busshapes/base_s_{clusters}_{base_network}.geojson``.", + "enum": [ + "busmap", + "custom_busmap", + "administrative", + "custom_busshapes" + ], + "type": "string" + }, + "administrative": { + "description": "Configuration for `clustering.administrative` settings.", + "properties": { + "level": { + "default": 1, + "description": "Level of administrative regions to cluster the network. 0: Country level, 1: NUTS1 level, 2: NUTS2 level, 3: NUTS3 level, 'bz': Bidding zones. Only applies when mode is set to `administrative`. Note that non-NUTS countries 'BA', 'MD', 'UA', and 'XK' can only be clustered to level 0 and 1.", + "enum": [ + 0, + 1, + 2, + 3, + "bz" + ] + }, + "countries": { + "additionalProperties": { + "type": "integer" + }, + "description": "Optionally include dictionary of individual country codes and their individual NUTS levels. Overwrites country-specific `level`. For example: `{'DE': 1, 'FR': 2}`. Only applies when mode is set to `administrative`.", + "type": "object" + } + } + }, + "focus_weights": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ], + "default": false, + "description": "Optionally specify the focus weights for the clustering of countries. For instance: `DE: 0.8` will distribute 80% of all nodes to Germany and 20% to the rest of the countries. Only applies when mode is set to `busmap`." + }, + "copperplate_regions": { + "description": "Optionally specify the regions to copperplate as a list of groups. Each group is a list of region codes that will be connected with infinite capacity lines.", + "items": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": "array" + }, + "build_bidding_zones": { + "description": "Configuration for `clustering.build_bidding_zones` settings.", + "properties": { + "remove_islands": { + "default": false, + "description": "Exclude from the shape file the Balearic Islands, Bornholm, the Canary Islands, the Orkney Islands, the Shetland Islands, the Azores Islands and Madeira.", + "type": "boolean" + }, + "aggregate_to_tyndp": { + "default": false, + "description": "Adjust the shape file to the TYNDP topology. Aggregate the Southern Norwegian bidding zones and extract Crete as a separate zone from the Greek shape.", + "type": "boolean" + } + } + }, + "simplify_network": { + "description": "Configuration for `clustering.simplify_network` settings.", + "properties": { + "to_substations": { + "default": false, + "description": "Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones.", + "type": "boolean" + }, + "remove_stubs": { + "default": true, + "description": "Controls whether radial parts of the network should be recursively aggregated. Defaults to true.", + "type": "boolean" + }, + "remove_stubs_across_borders": { + "default": false, + "description": "Controls whether radial parts of the network should be recursively aggregated across borders. Defaults to true.", + "type": "boolean" + } + } + }, + "cluster_network": { + "description": "Configuration for `clustering.cluster_network` settings.", + "properties": { + "algorithm": { + "default": "kmeans", + "description": "Clustering algorithm to use.", + "enum": [ + "kmeans", + "hac" + ], + "type": "string" + }, + "hac_features": { + "description": "List of meteorological variables contained in the weather data cutout that should be considered for hierarchical clustering.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "exclude_carriers": { + "description": "List of carriers which will not be aggregated. If empty, all carriers will be aggregated.", + "items": { + "type": "string" + }, + "type": "array" + }, + "consider_efficiency_classes": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "number" + }, + "type": "array" + } + ], + "default": false, + "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.", + "properties": { + "generators": { + "additionalProperties": { + "type": "string" + }, + "description": "Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new generator.", + "type": "object" + }, + "buses": { + "additionalProperties": { + "type": "string" + }, + "description": "Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new bus.", + "type": "object" + } + } + }, + "temporal": { + "description": "Configuration for `clustering.temporal` settings.", + "properties": { + "resolution_elec": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Resample the time-resolution by averaging over every `n` snapshots in `prepare_network`. **Warning:** This option should currently only be used with electricity-only networks, not for sector-coupled networks." + }, + "resolution_sector": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Resample the time-resolution by averaging over every `n` snapshots in `prepare_sector_network`." + } + } + } + } + }, + "adjustments": { + "description": "Configuration for top-level adjustments key.", + "properties": { + "electricity": { + "anyOf": [ + { + "type": "boolean" + }, + { + "description": "Configuration for adjustment settings (factor/absolute)", + "properties": { + "factor": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": { + "additionalProperties": { + "additionalProperties": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ] + }, + "type": "object" + }, + "type": "object" + }, + "type": "object" + } + ], + "default": false, + "description": "Multiply original value with given factor" + }, + "absolute": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": { + "additionalProperties": { + "additionalProperties": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ] + }, + "type": "object" + }, + "type": "object" + }, + "type": "object" + } + ], + "default": false, + "description": "Set attribute to absolute value. Can be also a dictionary with planning horizons as keys." + } + } + } + ], + "default": false, + "description": "Parameter adjustments applied in `prepare_network`." + }, + "sector": { + "anyOf": [ + { + "type": "boolean" + }, + { + "description": "Configuration for adjustment settings (factor/absolute)", + "properties": { + "factor": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": { + "additionalProperties": { + "additionalProperties": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ] + }, + "type": "object" + }, + "type": "object" + }, + "type": "object" + } + ], + "default": false, + "description": "Multiply original value with given factor" + }, + "absolute": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": { + "additionalProperties": { + "additionalProperties": { + "anyOf": [ + { + "type": "number" + }, + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + ] + }, + "type": "object" + }, + "type": "object" + }, + "type": "object" + } + ], + "default": false, + "description": "Set attribute to absolute value. Can be also a dictionary with planning horizons as keys." + } + } + } + ], + "description": "Parameter adjustments applied in `prepare_sector_network`." + } + } + }, + "solving": { + "description": "Configuration for `solving` settings.", + "properties": { + "options": { + "description": "Configuration for `solving.options` settings.", + "properties": { + "clip_p_max_pu": { + "default": 0.01, + "description": "To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + "type": "number" + }, + "load_shedding": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "number" + } + ], + "default": false, + "description": "Add generators with very high marginal cost to simulate load shedding and avoid problem infeasibilities. If load shedding is a float, it denotes the marginal cost in EUR/kWh." + }, + "curtailment_mode": { + "default": false, + "description": "Fixes the dispatch profiles of generators with time-varying p_max_pu by setting `p_min_pu = p_max_pu` and adds an auxiliary curtailment generator (with negative sign to absorb excess power) at every AC bus. This can speed up the solving process as the curtailment decision is aggregated into a single generator per region. Defaults to `false`.", + "type": "boolean" + }, + "noisy_costs": { + "default": true, + "description": "Add random noise to marginal cost of generators by :math:`\\mathcal{U}(0.009,0,011)` and capital cost of lines and links by :math:`\\mathcal{U}(0.09,0,11)`.", + "type": "boolean" + }, + "skip_iterations": { + "default": true, + "description": "Skip iterating, do not update impedances of branches. Defaults to true.", + "type": "boolean" + }, + "rolling_horizon": { + "default": false, + "description": "Switch for rule `solve_operations_network` whether to optimize the network in a rolling horizon manner, where the snapshot range is split into slices of size `horizon` which are solved consecutively. This setting has currently no effect on sector-coupled networks.", + "type": "boolean" + }, + "seed": { + "default": 123, + "description": "Random seed for increased deterministic behaviour.", + "type": "integer" + }, + "custom_extra_functionality": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "../data/custom_extra_functionality.py", + "description": "Path to a Python file with custom extra functionality code to be injected into the solving rules of the workflow relative to `rules` directory." + }, + "io_api": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Passed to linopy and determines the API used to communicate with the solver. With the `'lp'` and `'mps'` options linopy passes a file to the solver; with the `'direct'` option (only supported for HIGHS and Gurobi) linopy uses an in-memory python API resulting in better performance." + }, + "track_iterations": { + "default": false, + "description": "Flag whether to store the intermediate branch capacities and objective function values are recorded for each iteration in `network.lines['s_nom_opt_X']` (where `X` labels the iteration)", + "type": "boolean" + }, + "min_iterations": { + "default": 2, + "description": "Minimum number of solving iterations in between which resistance and reactence (`x/r`) are updated for branches according to `s_nom_opt` of the previous run.", + "type": "integer" + }, + "max_iterations": { + "default": 3, + "description": "Maximum number of solving iterations in between which resistance and reactence (`x/r`) are updated for branches according to `s_nom_opt` of the previous run.", + "type": "integer" + }, + "transmission_losses": { + "default": 2, + "description": "Add piecewise linear approximation of transmission losses based on n tangents. Defaults to 0, which means losses are ignored.", + "type": "integer" + }, + "linearized_unit_commitment": { + "default": true, + "description": "Whether to optimise using the linearized unit commitment formulation.", + "type": "boolean" + }, + "horizon": { + "default": 365, + "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": { + "enable": { + "default": false, + "description": "Switch to enable post-discretization of the network. Disabled by default.", + "type": "boolean" + }, + "line_unit_size": { + "default": 1700, + "description": "Discrete unit size of lines in MW.", + "type": "number" + }, + "line_threshold": { + "default": 0.3, + "description": "The threshold relative to the discrete line unit size beyond which to round up to the next unit.", + "type": "number" + }, + "link_unit_size": { + "additionalProperties": { + "type": "number" + }, + "description": "Discrete unit size of links in MW by carrier (given in dictionary style).", + "type": "object" + }, + "link_threshold": { + "additionalProperties": { + "type": "number" + }, + "description": "The threshold relative to the discrete link unit size beyond which to round up to the next unit by carrier (given in dictionary style).", + "type": "object" + }, + "fractional_last_unit_size": { + "default": false, + "description": "When true, links and lines can be built up to p_nom_max. When false, they can only be built up to a multiple of the unit size.", + "type": "boolean" + } + } + }, + "keep_files": { + "default": false, + "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": { + "solver_dir": { + "default": "", + "description": "Absolute path to the directory where linopy saves files.", + "type": "string" + } + } + } + } + }, + "agg_p_nom_limits": { + "description": "Configuration for `solving.agg_p_nom_limits` settings.", + "properties": { + "agg_offwind": { + "default": false, + "description": "Aggregate together all the types of offwind when writing the constraint (`offwind-all` as a carrier in the `.csv` file). Default is false.", + "type": "boolean" + }, + "agg_solar": { + "default": false, + "description": "Aggregate together all the types of electric solar when writing the constraint (`solar-all` as a carrier in the `.csv` file). Default is false.", + "type": "boolean" + }, + "include_existing": { + "default": false, + "description": "Take existing capacities into account when writing the constraint. Default is false.", + "type": "boolean" + }, + "file": { + "default": "data/agg_p_nom_minmax.csv", + "description": "Reference to `.csv` file specifying per carrier generator nominal capacity constraints for individual countries and planning horizons. Defaults to `data/agg_p_nom_minmax.csv`.", + "type": "string" + } + } + }, + "constraints": { + "description": "Configuration for `solving.constraints` settings.", + "properties": { + "CCL": { + "default": false, + "description": "Add minimum and maximum levels of generator nominal capacity per carrier for individual countries. These can be specified in the file linked at `electricity: agg_p_nom_limits` in the configuration. File defaults to `data/agg_p_nom_minmax.csv`. Does not work with a time resolution resampling.", + "type": "boolean" + }, + "EQ": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Require each country or node to on average produce a minimal share of its total consumption itself. Example: `EQ0.5c` demands each country to produce on average at least 50% of its consumption; `EQ0.5` demands each node to produce on average at least 50% of its consumption." + }, + "BAU": { + "default": false, + "description": "Add a per-`carrier` minimal overall capacity; i.e. at least `40GW` of `OCGT` in Europe; configured in `electricity: BAU_mincapacities`", + "type": "boolean" + }, + "SAFE": { + "default": false, + "description": "Add a capacity reserve margin of a certain fraction above the peak demand to which renewable generators and storage do *not* contribute. Ignores network.", + "type": "boolean" + } + } + }, + "solver": { + "description": "Configuration for `solving.solver` settings.", + "properties": { + "name": { + "default": "gurobi", + "description": "Solver to use for optimisation problems in the workflow; e.g. clustering and linear optimal power flow.", + "type": "string" + }, + "options": { + "default": "gurobi-default", + "description": "Link to specific parameter settings.", + "type": "string" + } + } + }, + "solver_options": { + "additionalProperties": { + "additionalProperties": true, + "type": "object" + }, + "description": "Dictionaries with solver-specific parameter settings.", + "type": "object" + }, + "check_objective": { + "description": "Configuration for `solving.check_objective` settings.", + "properties": { + "enable": { + "default": false, + "description": "Enable objective value checking.", + "type": "boolean" + }, + "expected_value": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Expected objective value." + }, + "atol": { + "default": 1000000, + "description": "Absolute tolerance.", + "type": "number" + }, + "rtol": { + "default": 0.01, + "description": "Relative tolerance.", + "type": "number" + } + } + }, + "oetc": { + "anyOf": [ + { + "description": "Configuration for `solving.oetc` settings (Open Energy Transition Computing cluster support).", + "properties": { + "name": { + "default": "pypsa-eur", + "description": "Name identifier for the OETC job.", + "type": "string" + }, + "authentication_server_url": { + "default": "", + "description": "URL of the OETC authentication server for job submission.", + "type": "string" + }, + "orchestrator_server_url": { + "default": "", + "description": "URL of the OETC orchestrator server for job management.", + "type": "string" + }, + "cpu_cores": { + "default": 8, + "description": "Number of CPU cores to request for the OETC job. (includes RAM amount at the moment with a factor of 8)", + "type": "integer" + }, + "disk_space_gb": { + "default": 50, + "description": "Amount of disk space in gigabytes to request for the OETC job.", + "type": "integer" + }, + "delete_worker_on_error": { + "default": true, + "description": "Whether to delete the worker instance when an error occurs during job execution.", + "type": "boolean" + } + } + }, + { + "type": "null" + } + ], + "default": null, + "description": "Configuration options for Open Energy Transition Computing (OETC) cluster support." + }, + "mem_mb": { + "default": 128000, + "description": "Estimated maximum memory requirement for solving networks (MB).", + "type": "integer" + }, + "memory_logging_frequency": { + "default": 5, + "description": "Interval in seconds at which memory usage is logged.", + "type": "integer" + }, + "runtime": { + "default": "48h", + "description": "Runtime in humanfriendly style.", + "type": "string" + } + } + }, + "data": { + "description": "Configuration for `data` settings.", + "properties": { + "hotmaps_industrial_sites": { + "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" + } + } + }, + "enspreso_biomass": { + "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" + } + } + }, + "osm": { + "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" + } + } + }, + "worldbank_urban_population": { + "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" + } + } + }, + "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": { + "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_gcct": { + "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" + } + } + }, + "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": { + "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" + } + } + }, + "nitrogen_statistics": { + "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" + } + } + }, + "eu_nuts2013": { + "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" + } + } + }, + "eu_nuts2021": { + "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" + } + } + }, + "eurostat_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" + } + } + }, + "eurostat_household_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" + } + } + }, + "wdpa": { + "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" + } + } + }, + "wdpa_marine": { + "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" + } + } + }, + "luisa_land_cover": { + "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" + } + } + }, + "jrc_idees": { + "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" + } + } + }, + "scigrid_gas": { + "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" + } + } + }, + "seawater_temperature": { + "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" + } + } + }, + "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": { + "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" + } + } + }, + "opsd_electricity_demand": { + "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" + } + } + }, + "entsoe_electricity_demand": { + "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" + } + } + }, + "neso_electricity_demand": { + "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" + } + } + }, + "copernicus_land_cover": { + "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" + } + } + }, + "ship_raster": { + "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" + } + } + }, + "eez": { + "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" + } + } + }, + "nuts3_population": { + "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" + } + } + }, + "gdp_per_capita": { + "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" + } + } + }, + "population_count": { + "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" + } + } + }, + "ghg_emissions": { + "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" + } + } + }, + "gebco": { + "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" + } + } + }, + "attributed_ports": { + "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" + } + } + }, + "corine": { + "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" + } + } + }, + "emobility": { + "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" + } + } + }, + "h2_salt_caverns": { + "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" + } + } + }, + "lau_regions": { + "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" + } + } + }, + "aquifer_data": { + "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" + } + } + }, + "osm_boundaries": { + "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_gspt": { + "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" + } + } + }, + "tyndp": { + "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" + } + } + }, + "powerplants": { + "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" + } + } + }, + "costs": { + "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" + } + } + }, + "country_runoff": { + "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" + } + } + }, + "country_hdd": { + "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" + } + } + }, + "natura": { + "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" + } + } + }, + "bfs_road_vehicle_stock": { + "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" + } + } + }, + "bfs_gdp_and_population": { + "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" + } + } + }, + "mobility_profiles": { + "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" + } + } + }, + "cutout": { + "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" + } + } + }, + "dh_areas": { + "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" + } + } + }, + "geothermal_heat_utilisation_potentials": { + "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" + } + } + }, + "jrc_ardeco": { + "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" + } + } + }, + "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": { + "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_entsoepy": { + "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" + } + } + } + } + }, + "overpass_api": { + "description": "Configuration for `overpass_api` settings.", + "properties": { + "url": { + "default": "https://overpass-api.de/api/interpreter", + "description": "Overpass API endpoint URL. See `Overpass API Wiki `_ for available public instances.", + "markdownDescription": "Overpass API endpoint URL. See [Overpass API Wiki ](https://wiki.openstreetmap.org/wiki/Overpass_API#Public_Overpass_API_instances) for available public instances.", + "type": "string" + }, + "max_tries": { + "default": 5, + "description": "Maximum retry attempts for Overpass API requests. Please be respectful to the Overpass API fair use policy of the individual instances.", + "type": "integer" + }, + "timeout": { + "default": 600, + "description": "Timeout in seconds for Overpass API requests.", + "type": "integer" + }, + "user_agent": { + "description": "Configuration for `overpass_api.user_agent` settings.", + "properties": { + "project_name": { + "default": "PyPSA-Eur", + "description": "Project name used to identify the user agent of the Overpass API requests.", + "type": "string" + }, + "email": { + "default": "contact@pypsa.org", + "description": "Contact email address for the project using the Overpass API.", + "type": "string" + }, + "website": { + "default": "https://github.com/PyPSA/pypsa-eur", + "description": "Website URL for the project using the Overpass API.", + "type": "string" + } + } + } + } + } + }, + "title": "PyPSA-Eur Configuration", + "type": "object" +} diff --git a/config/test/config.clusters.yaml b/config/test/config.clusters.yaml index f7552bb44..efc9cab92 100644 --- a/config/test/config.clusters.yaml +++ b/config/test/config.clusters.yaml @@ -1,3 +1,4 @@ +# 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.dach.yaml b/config/test/config.dach.yaml index 9a8b860bb..9f423cdb6 100644 --- a/config/test/config.dach.yaml +++ b/config/test/config.dach.yaml @@ -44,7 +44,7 @@ renewable: cutout: dach-03-2013-sarah3-era5 clustering: - focus_weights: [] + focus_weights: false temporal: resolution_sector: 3H diff --git a/config/test/config.electricity.yaml b/config/test/config.electricity.yaml index 687cfec68..7e13435c5 100644 --- a/config/test/config.electricity.yaml +++ b/config/test/config.electricity.yaml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 @@ -36,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: @@ -76,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 2748f2bc1..86887bec6 100644 --- a/config/test/config.myopic.yaml +++ b/config/test/config.myopic.yaml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 @@ -67,7 +68,7 @@ sector: electricity: extendable_carriers: - Generator: [OCGT] + Generator: [OCGT, solar, onwind, OCGT, CCGT, nuclear] StorageUnit: [battery] Store: [H2] Link: [H2 pipeline] @@ -108,7 +109,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 624f1be7b..af763f070 100644 --- a/config/test/config.overnight.yaml +++ b/config/test/config.overnight.yaml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 @@ -28,7 +29,7 @@ snapshots: electricity: extendable_carriers: - Generator: [OCGT] + Generator: [OCGT, solar, onwind, OCGT, CCGT, nuclear] StorageUnit: [battery] Store: [H2] Link: [H2 pipeline] @@ -113,7 +114,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 6941212c8..16a5199ad 100644 --- a/config/test/config.perfect.yaml +++ b/config/test/config.perfect.yaml @@ -1,3 +1,4 @@ +# 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 12e3464b7..f990d8e0b 100644 --- a/config/test/config.scenarios.yaml +++ b/config/test/config.scenarios.yaml @@ -1,3 +1,4 @@ +# 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 c0ec7f96c..7d3cc7307 100644 --- a/config/test/config.tyndp.yaml +++ b/config/test/config.tyndp.yaml @@ -1,3 +1,4 @@ +# 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 9dc7cccb5..87dfe6377 100644 --- a/config/test/config.validator.yaml +++ b/config/test/config.validator.yaml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 diff --git a/data/cement-plants-noneu.csv b/data/cement-plants-noneu.csv deleted file mode 100644 index 27c046c03..000000000 --- a/data/cement-plants-noneu.csv +++ /dev/null @@ -1,26 +0,0 @@ -"Company","Site","Cement [kt/a]","Country","Latitude","Longitude","Date","Source","Comment" -"Titan Cementarnica USJE AD","Skopje",910,"MK",41.96816,21.45604,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"Colacem Albania Sh.p.k","Balldre plant, Lezhe",500,"AL",41.83689,19.63339,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"Fushe Kruje Cement Factory, Sh.p.k.","Elbasan cement plant",300,"AL",41.12184,20.04347,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"Fushe Kruje Cement Factory, Sh.p.k.","Fushe Kruje plant",1330,"AL",40.46403,19.49948,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"Antea Cement Sh.A","Boka e Kuqe, Burizane",1500,"AL",41.54838,19.72574,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"Beocinska Fabrika Cementa","Beocin",2000,"RS",45.20952,19.71043,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"Holcim (Srbija) a.d.","Novi Popovac",1400,"RS",43.90633,21.50378,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"Titan Cementara Kosjerić Ltd.","Kosjeric",750,"RS",44.0125,19.88831,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"Sharrcem Sh.p.k.","Hani i Elezit,",850,"XK",42.14704,21.29863,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"Fabrika Cementa Lukavac d.d.","Lukavac",800,"BA",44.52596,18.52811,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"Tvornica Cementa Kakanj d.d. ","Kakanj",400,"BA",44.11922,18.10897,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"Lafarge Ciment Moldova SA","Rezina",1400,"MD",47.79094,28.9553,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"ZAO Rybnitsa Cement Comple","Rybnitsa",1100,"MD",47.78115,29.02078,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"ChAO Nikolayevtsemen","Mykolayiv",900,"UA",46.94555,32.06641,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information; https://cemark.ua/en/zavodi/prat-mikolajivcement ", -"OAO KyivCement ","Kyiv",175,"UA",50.38525,30.55205,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information https://www.dyckerhoff.com.ua/en/dyckerhoff-cement-ukraine ", -"OAO YuGCement ","Mykolayiv",1250,"UA",46.98512,31.9317,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information, https://www.dyckerhoff.com.ua/en/yug-cemen", -"OOO Cement","Odessa",550,"UA",46.50818,30.67422,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information https://se.ua/en/projects/llc-cement-odessa-cement-plant/ ", -"Overin Ltd","Amvrosievka",800,"UA",47.83453,38.46961,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information","assumed equal split" -"Overin Ltd","Kamenskoye",800,"UA",48.51783,34.63382,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information","assumed equal split" -"Overin Ltd","Kriviy Rih",800,"UA",47.87454,33.43586,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information","assumed equal split" -"PAO Eurocement Ukraine","Balakleya, Kharkivs'ka",1000,"UA",49.49314,36.74926,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information https://www.globalcement.com/news/item/13733-update-on-ukraine-february-2022 ", -"PAO Ivano-Frankovsktsement","Ivano-Frankivsk ",3600,"UA",48.97709,24.71227,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information", -"PAO Kramatorkiy Tsementnyi Zavod PUSHKA ","Kramatorsk, Donets'ka",138,"UA",48.72802,37.54362,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information https://www.cemnet.com/News/story/144668/pushka-ups-cement-production-56-6p-per-cent-to138-400t-in-q1.html ", -"PAO Podolsk Cement","Khmel'nyts'ka Oblast' ",2050,"UA",48.7461,26.64664,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information https://cemark.ua/en/zavodi/at-podilskiy-cement ", -"PAO Volyn'Cement","Volyn'ska Oblast'",2000,"UA",50.54731,26.25774,"28-08-2024","https://www.usgs.gov/centers/national-minerals-information-center/international-minerals-statistics-and-information https://www.dyckerhoff.com.ua/volyn-cement ", diff --git a/data/nuclear_p_max_pu.csv b/data/nuclear_p_max_pu.csv index 5a8d1d131..663bab3e7 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 d083e8a88..000000000 --- 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 e93b1a903..804bc3598 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 44fb30249..d285a25f0 100644 --- a/data/versions.csv +++ b/data/versions.csv @@ -1,106 +1,170 @@ -dataset,source,version,tags,url,note -co2stop,archive,26 AUGUST 2020,"['latest', 'supported']",https://zenodo.org/records/15837736/files/co2jrc_openformats.zip, -co2stop,primary,26 AUGUST 2020,"['latest', 'supported']",https://setis.ec.europa.eu/document/download/786a884f-0b33-4789-b744-28004b16bd1a_en?filename=co2jrc_openformats.zip, -gem_europe_gas_tracker,archive,May 2024,"['latest', 'supported']",https://zenodo.org/records/16893480/files/Europe-Gas-Tracker-2024-05.xlsx, -gem_europe_gas_tracker,primary,May 2024,"['latest', 'supported']",https://globalenergymonitor.org/wp-content/uploads/2024/05/Europe-Gas-Tracker-2024-05.xlsx, -gem_gspt,archive,April 2024 V1,"['latest', 'supported']",https://zenodo.org/records/16893375/files/Global-Steel-Plant-Tracker-April-2024-Standard-Copy-V1.xlsx, -gem_gspt,primary,March-2025 V1,['not-supported'],"https://globalenergymonitor.org/wp-content/uploads/2025/03/Plant-level-data-Global-Iron-and-Steel-Tracker-March-2025-V1.xlsx""", -enspreso_biomass,archive,2019-06-20,"['latest', 'supported']",https://zenodo.org/records/10356004/files/ENSPRESO_BIOMASS.xlsx, -enspreso_biomass,primary,unknown,"['latest', 'supported']",https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/ENSPRESO/ENSPRESO_BIOMASS.xlsx,"2019 version was changed in 2023 with negligible differences, but since the version is not frozen we label it as 'unknown'." -hotmaps_industrial_sites,archive,Version 0.2.0,['not-supported'],https://zenodo.org/records/4687147/files/industrial_sites_Industrial_Database-1.0.zip, -hotmaps_industrial_sites,archive,Version 1.1,"['latest', 'supported']",https://zenodo.org/records/15834781/files/Industrial_Database.csv, -hotmaps_industrial_sites,primary,Version 1.0,['not-supported'],https://gitlab.com/hotmaps/industrial_sites/industrial_sites_Industrial_Database/-/raw/1.0/data/Industrial_Database.csv,Required renaming of country names to work with PyPSA-Eur. This was fixed in the latest version. -hotmaps_industrial_sites,primary,unknown,"['latest', 'supported']",https://gitlab.com/hotmaps/industrial_sites/industrial_sites_Industrial_Database/-/raw/master/data/Industrial_Database.csv, -nitrogen_statistics,archive,2022,"['latest', 'supported']",https://zenodo.org/records/15838121/files/nitro-ert.xlsx, -nitrogen_statistics,primary,2022,['supported'],https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/media/files/myb1-2022-nitro-ert.xlsx, -nitrogen_statistics,primary,2023,"['latest', 'not-tested']",https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/media/files/myb1-2023-nitro-ERT.xlsx, -eu_nuts2013,archive,2015-12-03,"['latest', 'supported']",https://zenodo.org/records/15846347/files/ref-nuts-2013-03m.geojson.zip, -eu_nuts2013,primary,2015-12-03,"['latest', 'supported']",https://gisco-services.ec.europa.eu/distribution/v2/nuts/download/ref-nuts-2013-03m.geojson.zip, -eu_nuts2021,archive,2021-01-01,"['latest', 'supported']",https://zenodo.org/records/15846440/files/ref-nuts-2021-01m.geojson.zip, -eu_nuts2021,primary,2021-01-01,"['latest', 'supported']",https://gisco-services.ec.europa.eu/distribution/v2/nuts/download/ref-nuts-2021-01m.geojson.zip, -eurostat_balances,archive,2023-04,"['latest', 'supported']",https://zenodo.org/records/15849144/files/balances.zip, -eurostat_balances,primary,2023-04,"['latest', 'supported', 'broken link']",https://ec.europa.eu/eurostat/documents/38154/4956218/Balances-April2023.zip,"The link is broken, use the archived versions instead." -eurostat_household_balances,archive,2025-07-09,"['latest', 'supported']",https://zenodo.org/records/15849673/files/nrg_d_hhq.csv, -eurostat_household_balances,primary,unknown,"['latest', 'supported']",https://ec.europa.eu/eurostat/databrowser-backend/api/extraction/1.0/LIVE/false/sdmx/csv/nrg_d_hhq__custom_11480365?startPeriod=2013&endPeriod=2022,"URL limits the period to 2013-2022, but the data is updated regularly." -osm,archive,0.1,"['deprecated', 'not-supported']",https://zenodo.org/records/12799202, -osm,archive,0.2,"['deprecated', 'not-supported']",https://zenodo.org/records/13342577, -osm,archive,0.3,"['deprecated', 'not-supported']",https://zenodo.org/records/13358976, -osm,archive,0.4,"['deprecated', 'not-supported']",https://zenodo.org/records/13759222, -osm,archive,0.5,"['deprecated', 'not-supported']",https://zenodo.org/records/13981528, -osm,archive,0.6,"['latest', 'supported']",https://zenodo.org/records/14144752, -osm,build,unknown,"['latest', 'supported']",,Latest dataset built using OSM data. No single URL available to access the data. See the related scripts and documentation for details. -wdpa,archive,Jul2025,"['latest', 'supported']",https://web.archive.org/web/20250715071823if_/https://d1gam3xoknrgr2.cloudfront.net/current/WDPA_Jul2025_Public_shp.zip,"We are legally not allowed to redistribute this dataset, luckily the web archive is keeping copies of it." -wdpa,primary,unknown,"['latest', 'supported']",https://d1gam3xoknrgr2.cloudfront.net/current/WDPA_{bYYYY}_Public_shp.zip,"WDPA changes its URL every month, the URL here is used as a template and {bYYYY} is replaced inside the retrieve.smk." -wdpa_marine,archive,Jul2025,"['latest', 'supported']",https://web.archive.org/web/20250715084308if_/https://d1gam3xoknrgr2.cloudfront.net/current/WDPA_WDOECM_Jul2025_Public_marine_shp.zip,"We are legally not allowed to redistribute this dataset, luckily the web archive is keeping copies of it." -wdpa_marine,primary,unknown,"['latest', 'supported']",https://d1gam3xoknrgr2.cloudfront.net/current/WDPA_WDOECM_{bYYYY}_Public_marine_shp.zip,"WDPA maritime changes its URL every month, the URL here is used as a template and {bYYYY} is replaced inside the retrieve.smk." -worldbank_urban_population,archive,2025-08-14,"['latest', 'supported']",https://zenodo.org/records/16875854/files/API_SP.URB.TOTL.IN.ZS_DS2_en_csv_v2_22447.zip, -worldbank_urban_population,primary,unknown,"['latest', 'might-work']",https://api.worldbank.org/v2/en/indicator/SP.URB.TOTL.IN.ZS?downloadformat=csv,"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." -luisa_land_cover,primary,unknown,"['latest', 'supported']",https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/LUISA/EUROPE/Basemaps/LandUse/2018/LATEST/LUISA_basemap_020321_50m.tif, -luisa_land_cover,archive,2021-03-02,"['latest', 'supported']",https://zenodo.org/records/15879466/files/LUISA_basemap_020321_50m.tif, -jrc_idees,primary,unknown,"['latest', 'supported']",https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/JRC-IDEES/JRC-IDEES-2021_v1/JRC-IDEES-2021.zip, -jrc_idees,archive,2024-05-20,"['latest', 'supported']",https://zenodo.org/records/15895830/files/JRC-IDEES-2021.zip, -scigrid_gas,primary,1.1.2,"['latest', 'supported']",https://zenodo.org/records/4767098/files/IGGIELGN.zip,the primary is already from Zenodo published by original authors -scigrid_gas,archive,1.1.1,"['deprecated', 'not-supported']",https://zenodo.org/records/4751038/files/IGGIELGN.zip, -scigrid_gas,archive,1.1.0,"['deprecated', 'not-supported']",https://zenodo.org/records/4642569/files/IGGIELGN.zip, -synthetic_electricity_demand,primary,v2,"['latest', 'supported']",https://zenodo.org/records/10820928/files/demand_hourly.csv,the primary is already from Zenodo published by original authors -synthetic_electricity_demand,archive,0.1.0,"['deprecated', 'might-work']",https://zenodo.org/records/7070438/files/demand_hourly.csv, -copernicus_land_cover,primary,v3.0.1,"['latest', 'supported']",https://zenodo.org/records/3939050/files/PROBAV_LC100_global_v3.0.1_2019-nrt_Discrete-Classification-map_EPSG-4326.tif,"The primary is already from Zenodo, documentation in https://zenodo.org/records/4723921" -copernicus_land_cover,archive,v2.0.2,"['deprecated', 'might-work']",https://zenodo.org/records/3939038/files/PROBAV_LC100_global_v3.0.1_2015-base_Discrete-Classification-map_EPSG-4326.tif, -ship_raster,primary,v5,"['latest', 'supported']",https://datacatalogfiles.worldbank.org/ddh-published/0037580/5/DR0045406/shipdensity_global.zip, -ship_raster,archive,v5,"['latest', 'supported']",https://zenodo.org/records/16894236/files/shipdensity_global.zip, -eez,primary,v12_20231025,"['latest', 'supported']",https://www.marineregions.org/download_file.php,API request used -eez,archive,v12_20231025,"['latest', 'supported']",https://zenodo.org/records/16355917/files/World_EEZ_v12_20231025_LR.zip, -nuts3_population,primary,13-03-2025,"['latest', 'supported']",https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/nama_10r_3popgdp?format=TSV&compressed=true, -nuts3_population,archive,13-03-2025,"['latest', 'supported']",https://zenodo.org/records/16551424/files/nama_10r_3popgdp.tsv.gz,earlier part of zenodo bundle -gdp_per_capita,archive,2018-02-06,"['latest', 'supported']",https://zenodo.org/records/16556029/files/GDP_per_capita_PPP_1990_2015_v2.nc,"Primary link is a direct download, earlier part of zenodo bundle" -ghg_emissions,primary,v23,"['latest', 'supported']",https://web.archive.org/web/20200622130401if_/https://www.eea.europa.eu/data-and-maps/data/national-emissions-reported-to-the-unfccc-and-to-the-eu-greenhouse-gas-monitoring-mechanism-16/national-greenhouse-gas-inventories-ipcc-common-reporting-format-sector-classification/ascii-delimited-zip-2/at_download/file, -ghg_emissions,archive,v23,"['latest', 'supported']",https://zenodo.org/records/16561661/files/UNFCCC_v23.csv,earlier part of databundle -population_count,primary,2018-11-01,"['latest', 'supported']",https://data.worldpop.org/GIS/Population/Global_2000_2020/2019/0_Mosaicked/ppp_2019_1km_Aggregated.tif, -population_count,archive,2018-11-01,"['latest', 'supported']",https://zenodo.org/records/16558833/files/ppp_2019_1km_Aggregated.tif,earlier part of zenodo bundle -gebco,primary,2014,"['latest', 'supported']",https://www.bodc.ac.uk/data/open_download/gebco/GEBCO_30SEC/zip/,The dataset will be cut for the required regions after download -gebco,archive,2014,"['latest', 'supported']",https://zenodo.org/records/16810417/files/GEBCO_2014_2D.nc,Earlier part of databundle -attributed_ports,primary,2020-07-10,"['latest', 'supported']",https://datacatalogfiles.worldbank.org/ddh-published/0038118/1/DR0046414/attributed_ports.geojson, -attributed_ports,archive,2020-07-10,"['latest', 'supported']",https://zenodo.org/records/16810901/files/attributed_ports.json,Moved from github repo `data/` folder -corine,archive,v18_5,"['latest', 'supported']",https://zenodo.org/records/16899113/files/corine.zip, -corine,primary,unknown,"['latest', 'supported']",,Need to register with CLMS API and create an access token. The download URL is dynamic -emobility,archive,28-08-2016,"['latest', 'supported']",https://zenodo.org/records/16899168/files/emobility.zip, -h2_salt_caverns,archive,16-10-2019,"['latest', 'supported']",https://zenodo.org/records/16899309/files/h2_salt_caverns_GWh_per_sqkm.geojson, -lau_regions,primary,2019,"['latest', 'supported']",https://gisco-services.ec.europa.eu/distribution/v2/lau/download/ref-lau-2019-01m.geojson.zip, -aquifer_data,primary,v1.2,"['latest', 'supported']",https://download.bgr.de/bgr/grundwasser/IHME1500/v12/shp/IHME1500_v12.zip, -aquifer_data,archive,v1.2,"['latest', 'supported']",https://zenodo.org/records/16946750/files/IHME1500_v12.zip, -lau_regions,archive,2019,"['latest', 'supported']",https://zenodo.org/records/16947002/files/ref-lau-2019-01m.geojson.zip, -osm_boundaries,primary,unknown,"['latest', 'supported']",,Overpass API is used to fetch the latest available data -osm_boundaries,archive,unknown,"['latest', 'supported']",https://zenodo.org/records/16992755/files/osm_boundaries.zip, -tyndp,primary,2024,"['latest', 'supported']",https://2024-data.entsos-tyndp-scenarios.eu/files/scenarios-inputs, -tyndp,archive,2024,"['latest', 'supported']",https://zenodo.org/records/16759672/files, -powerplants,primary,0.7.1,"['latest', 'supported']",https://raw.githubusercontent.com/PyPSA/powerplantmatching/refs/tags/v0.7.1/powerplants.csv,"Part of the `powerplantmatching` package and versioned on GitHub, i.e. no dedicated 'archive' entry." -powerplants,primary,0.7.0,['supported'],https://raw.githubusercontent.com/PyPSA/powerplantmatching/refs/tags/v0.7.0/powerplants.csv,"Part of the `powerplantmatching` package and versioned on GitHub, i.e. no dedicated 'archive' entry." -costs,primary,v0.13.3,"['latest', 'supported']",https://raw.githubusercontent.com/PyPSA/technology-data/v0.13.3/outputs,"Part of the `technologydata` repository and versioned on GitHub, i.e. no dedicated 'archive' entry." -costs,primary,v0.13.2,['partially-supported'],https://raw.githubusercontent.com/PyPSA/technology-data/v0.13.2/outputs,"Part of the `technologydata` repository and versioned on GitHub, i.e. no dedicated 'archive' entry." -country_runoff,archive,2025-08-13,"['latest', 'supported']",https://zenodo.org/records/16849356/files/era5-runoff-per-country.csv, -country_runoff,build,unknown,"['latest', 'supported']",,Latest dataset built using ERA5 runoff data. This takes a very long time to build. -country_hdd,archive,2025-08-13,"['latest', 'supported']",https://zenodo.org/records/16849356/files/era5-HDD-per-country.csv, -country_hdd,build,unknown,"['latest', 'supported']",,Latest dataset built using ERA5 runoff data. This takes a very long time to build. -natura,archive,2025-08-15,"['latest', 'supported']",https://zenodo.org/records/16881818/files/natura.tiff, -natura,archive,v0.8.2,['supported'],https://zenodo.org/records/16874772/files/natura.tiff, -natura,build,unknown,"['latest', 'supported']",https://sdi.eea.europa.eu/datashare/s/tWpGXaWdWGYcqsL/download, -bfs_road_vehicle_stock,archive,2024-03-13,"['latest', 'supported']",https://raw.githubusercontent.com/PyPSA/pypsa-eur/5b5d308bf70f15dd0b107d8a19c121093dcdd5bd/data/gr-e-11.03.02.01.01-cc.csv, -bfs_road_vehicle_stock,primary,unknown,"['latest', 'supported']",https://datawrapper.dwcdn.net/31f3521eddfa82ada1a436983c31caf5/1/dataset.csv,This dataset is not versioned and is updated regularly. The link points to the latest version. More information on the latest update on this website: https://www.bfs.admin.ch/bfs/de/home/statistiken/kataloge-datenbanken.assetdetail.33827666.html -bfs_gdp_and_population,archive,2019-03-28,"['latest', 'supported']",https://web.archive.org/web/20250818151254if_/https://dam-api.bfs.admin.ch/hub/api/dam/assets/7786557/master, -bfs_gdp_and_population,primary,2019-03-28,"['latest', 'supported']",https://dam-api.bfs.admin.ch/hub/api/dam/assets/7786557/master, -mobility_profiles,build,unknown,"['latest', 'supported']",https://www.bast.de/videos/{year}_{street_type}_S.zip,"Latest dataset built using BASt vehicle monitoring data. The URL is a template that is filled based on the config file, see the documentation for details." -mobility_profiles,archive,2025-08-27,"['latest', 'supported']",https://zenodo.org/records/16965042/files,New version recreating the dataset from the data bundle. -mobility_profiles,archive,2025-08-13,['supported'],https://zenodo.org/records/16964996/files,Data from the original PyPSA-Eur data bundle. -cutout,archive,v0.8,"['latest', 'supported']",https://zenodo.org/records/15349674,Pre-build cutouts for PyPSA-Eur -cutout,build,unknown,"['latest', 'supported']",,Build latest cutouts using ERA5/SARAH3 data. -dh_areas,primary,341.5,"['latest', 'supported']",https://fordatis.fraunhofer.de/bitstream/fordatis/341.5/2/dh_areas.gpkg, -dh_areas,archive,341.5,"['latest', 'supported']",https://zenodo.org/records/17207640/files/dh_areas.gpkg, -geothermal_heat_utilisation_potentials,primary,341.5,"['latest', 'supported']",https://fordatis.fraunhofer.de/bitstream/fordatis/341.5/11/Results_DH_Matching_Cluster.xlsx, -geothermal_heat_utilisation_potentials,archive,341.5,"['latest', 'supported']",https://zenodo.org/records/17207640/files/Results_DH_Matching_Cluster.xlsx, -jrc_ardeco,primary,2021,"['latest', 'supported']",https://territorial.ec.europa.eu/ardeco-api-v2/rest/export/, -jrc_ardeco,archive,2021,"['latest', 'supported']",https://zenodo.org/records/17249457/files, -ariadne_database,primary,v1.0,"['latest', 'supported']",https://ariadne2.apps.ece.iiasa.ac.at/explorer,Public facing database of the second Ariadne Szenarienbericht -ariadne_database,archive,v1.0,"['latest', 'supported']",https://zenodo.org/records/15174592/files/250505_Ariadne2_Data_v1.0.xlsx, -open_mastr,primary,2023-08-08,"['latest', 'supported']",https://zenodo.org/records/8225106/files/bnetza_open_mastr_2023-08-08_B.zip, -egon,primary,2018-2020?,"['latest', 'supported']",https://api.opendata.ffe.de/demandregio/demandregio_spatial,root url is extended in the retrieve rule -ariadne_template,primary,2025-11-20,"['latest', 'supported']",https://github.com/iiasa/ariadne-intern-workflow/blob/main/attachments/2025-11-20_template_Ariadne.xlsx, \ No newline at end of file +dataset,version,source,tags,added,note,url +aquifer_data,v1.2,primary,latest supported,2025-12-02,,https://download.bgr.de/bgr/grundwasser/IHME1500/v12/shp/IHME1500_v12.zip +aquifer_data,v1.2,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/aquifer_data/v1.2/IHME1500_v12.zip +ariadne_database,v1.0,primary,latest supported,2026-01-15,Public facing database of the second Ariadne Szenarienbericht,https://zenodo.org/records/15174592/files/250505_Ariadne2_Data_v1.0.xlsx +ariadne_database,v1.0,archive,latest supported,2026-02-23,Public facing database of the second Ariadne Szenarienbericht,https://data.pypsa.org/workflows/de/ariadne_database/v1.0/250505_Ariadne2_Data_v1.0.xlsx +ariadne_template,2025-11-20,primary,latest supported,2026-01-15,,https://github.com/iiasa/ariadne-intern-workflow/raw/7caa948ad6aa71cf8d17e69a64dd29f01306a9ff/attachments/2025-11-20_template_Ariadne.xlsx +ariadne_template,2025-11-20,archive,latest supported,2026-02-23,,https://data.pypsa.org/workflows/de/ariadne_template/2025-11-20/2025-11-20_template_Ariadne.xlsx +attributed_ports,2020-07-10,primary,latest supported,2025-12-02,,https://datacatalogfiles.worldbank.org/ddh-published/0038118/1/DR0046414/attributed_ports.geojson +attributed_ports,2020-07-10,archive,latest supported,2026-01-13,Moved from github repo `data/` folder,https://data.pypsa.org/workflows/eur/attributed_ports/2020-07-10/attributed_ports.json +bfs_gdp_and_population,2019-03-28,primary,latest supported,2025-12-02,,https://dam-api.bfs.admin.ch/hub/api/dam/assets/7786557/master +bfs_gdp_and_population,2019-03-28,archive,latest supported,2025-12-02,,https://web.archive.org/web/20250818151254if_/https%3A//dam-api.bfs.admin.ch/hub/api/dam/assets/7786557/master +bfs_road_vehicle_stock,unknown,primary,latest supported,2025-12-02,This dataset is not versioned and is updated regularly. The link points to the latest version. More information on the latest update on this website: https://www.bfs.admin.ch/bfs/de/home/statistiken/kataloge-datenbanken.assetdetail.33827666.html,https://datawrapper.dwcdn.net/31f3521eddfa82ada1a436983c31caf5/1/dataset.csv +bfs_road_vehicle_stock,2024-03-13,archive,latest supported,2025-12-02,,https://raw.githubusercontent.com/PyPSA/pypsa-eur/5b5d308bf70f15dd0b107d8a19c121093dcdd5bd/data/gr-e-11.03.02.01.01-cc.csv +bidding_zones_electricitymaps,v1.238.0,primary,latest supported,2026-01-22,,https://raw.githubusercontent.com/electricitymaps/electricitymaps-contrib/refs/tags/v1.238.0/web/geo/world.geojson +bidding_zones_electricitymaps,v1.238.0,archive,latest supported,2026-01-22,,https://data.pypsa.org/workflows/eur/bidding_zones_electricitymaps/v1.238.0/world.geojson +bidding_zones_entsoepy,v0.6.18,primary,latest supported,2026-01-22,,https://raw.githubusercontent.com/EnergieID/entsoe-py/refs/tags/V0.6.18/entsoe/geo/geojson +bidding_zones_entsoepy,v0.6.18,archive,latest supported,2026-01-22,,https://data.pypsa.org/workflows/eur/bidding_zones_entsoepy/v0.6.18 +co2stop,26-august-2020,primary,latest supported,2025-12-02,,https://setis.ec.europa.eu/document/download/786a884f-0b33-4789-b744-28004b16bd1a_en?filename=co2jrc_openformats.zip +co2stop,26-august-2020,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/co2stop/26-august-2020/co2jrc_openformats.zip +copernicus_land_cover,v3.0.1,primary,latest supported,2025-12-02,"The primary is already from Zenodo, documentation in https://zenodo.org/records/4723921",https://zenodo.org/records/3939050/files/PROBAV_LC100_global_v3.0.1_2019-nrt_Discrete-Classification-map_EPSG-4326.tif +copernicus_land_cover,v3.0.1,archive,latest supported,2026-01-20,"The primary is already from Zenodo, documentation in https://zenodo.org/records/4723921",https://data.pypsa.org/workflows/eur/copernicus_land_cover/v3.0.1 +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.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 +country_runoff,unknown,build,latest supported,2025-12-02,Latest dataset built using ERA5 runoff data. This takes a very long time to build., +country_runoff,2025-08-13,primary,latest supported,2025-12-02,,https://zenodo.org/records/16849356/files/era5-runoff-per-country.csv +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 +eez,v12_20231025,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/eez/v12_20231025/World_EEZ_v12_20231025_LR.zip +egon,2019-10-02,archive,latest supported,2026-02-23,,https://data.pypsa.org/workflows/de/egon/2019-10-02 +egon,2019-10-02,build,latest supported,2026-01-15,root url is extended in the retrieve rule,https://api.opendata.ffe.de/demandregio/demandregio_spatial +emobility,28-08-2016,primary,latest supported,2025-12-02,,https://zenodo.org/records/16899168/files/emobility.zip +emobility,28-08-2016,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/emobility/28-08-2016/emobility.zip +enspreso_biomass,unknown,primary,latest supported,2025-12-02,"2019 version was changed in 2023 with negligible differences, but since the version is not frozen we label it as 'unknown'.",https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/ENSPRESO/ENSPRESO_BIOMASS.xlsx +enspreso_biomass,2019-06-20,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/enspreso_biomass/2019-06-20/ENSPRESO_BIOMASS.xlsx +entsoe_electricity_demand,unknown,build,latest supported,2026-02-02,API request using entsoe-py package,https://transparency.entsoe.eu/load/total/dayAhead +entsoe_electricity_demand,2026-02-02,archive,latest supported,2026-02-03,API request using entsoe-py package,https://data.pypsa.org/workflows/eur/entsoe_electricity_demand/2026-02-02/electricity_demand_entsoe_raw.csv +eu_nuts2013,2015-12-03,primary,latest supported,2025-12-02, ,https://gisco-services.ec.europa.eu/distribution/v2/nuts/download/ref-nuts-2013-03m.geojson.zip +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,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 +gdp_per_capita,2018-02-06,archive,latest supported,2026-01-13,"Primary link is a direct download, earlier part of zenodo bundle",https://data.pypsa.org/workflows/eur/gdp_per_capita/2018-02-06/GDP_per_capita_PPP_1990_2015_v2.nc +gebco,2014,primary,latest supported,2025-12-02,The dataset will be cut for the required regions after download,https://www.bodc.ac.uk/data/open_download/gebco/GEBCO_30SEC/zip/ +gebco,2014,archive,latest supported,2026-01-13,Earlier part of databundle,https://data.pypsa.org/workflows/eur/gebco/2014/GEBCO_2014_2D.nc +gem_europe_gas_tracker,may-2024,primary,latest supported,2025-12-02,,https://globalenergymonitor.org/wp-content/uploads/2024/05/Europe-Gas-Tracker-2024-05.xlsx +gem_europe_gas_tracker,may-2024,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/gem_europe_gas_tracker/may-2024/Europe-Gas-Tracker-2024-05.xlsx +gem_gcct,july-2025,primary,latest supported,2026-02-02,,https://globalenergymonitor.org/wp-content/uploads/2025/07/Global-Cement-and-Concrete-Tracker_July-2025.xlsx +gem_gcct,july-2025,archive,latest supported,2026-02-02,,https://data.pypsa.org/workflows/eur/gem_gcct/july-2025/Global-Cement-and-Concrete-Tracker_July-2025.xlsx +gem_gspt,march-2025-v1.1,primary,latest supported,2025-12-02,,https://globalenergymonitor.org/wp-content/uploads/2025/03/Plant-level-data-Global-Iron-and-Steel-Tracker-March-2025-V1.1.xlsx +gem_gspt,march-2025-v1.1,archive,latest supported,2026-02-02,,https://data.pypsa.org/workflows/eur/gem_gspt/march-2025-v1.1/Plant-level-data-Global-Iron-and-Steel-Tracker-March-2025-V1.1.xlsx +gem_gspt,april-2024-v1,archive,not-supported,2026-01-13,,https://data.pypsa.org/workflows/eur/gem_gspt/april-2024-v1/Global-Steel-Plant-Tracker-April-2024-Standard-Copy-V1.xlsx +geothermal_heat_utilisation_potentials,341.5,primary,latest supported,2025-12-02,,https://fordatis.fraunhofer.de/bitstream/fordatis/341.5/11/Results_DH_Matching_Cluster.xlsx +geothermal_heat_utilisation_potentials,341.5,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/geothermal_heat_utilisation_potentials/341.5/Results_DH_Matching_Cluster.xlsx +ghg_emissions,v23,primary,latest supported,2025-12-02,,https://web.archive.org/web/20200622130401if_/https%3A//www.eea.europa.eu/data-and-maps/data/national-emissions-reported-to-the-unfccc-and-to-the-eu-greenhouse-gas-monitoring-mechanism-16/national-greenhouse-gas-inventories-ipcc-common-reporting-format-sector-classification/ascii-delimited-zip-2/at_download/file +ghg_emissions,v23,archive,latest supported,2026-01-13,earlier part of databundle,https://data.pypsa.org/workflows/eur/ghg_emissions/v23/UNFCCC_v23.csv +h2_salt_caverns,16-10-2019,primary,latest supported,2025-12-02,,https://zenodo.org/records/16899309/files/h2_salt_caverns_GWh_per_sqkm.geojson +h2_salt_caverns,16-10-2019,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/h2_salt_caverns/16-10-2019/h2_salt_caverns_GWh_per_sqkm.geojson +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_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 +luisa_land_cover,2021-03-02,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/luisa_land_cover/2021-03-02/LUISA_basemap_020321_50m.tif +mobility_profiles,unknown,build,latest supported,2025-12-02,"Latest dataset built using BASt vehicle monitoring data. The URL is a template that is filled based on the config file, see the documentation for details.",https://www.bast.de/videos/{year}_{street_type}_S.zip +mobility_profiles,2025-08-27,primary,latest supported,2025-12-02,New version recreating the dataset from the data bundle.,https://zenodo.org/records/16965042/files +mobility_profiles,2025-08-27,archive,latest supported,2026-01-13,New version recreating the dataset from the data bundle.,https://data.pypsa.org/workflows/eur/mobility_profiles/2025-08-27 +mobility_profiles,2025-08-13,primary,supported,2025-12-02,Data from the original PyPSA-Eur data bundle.,https://zenodo.org/records/16964996/files +mobility_profiles,2025-08-13,archive,supported,2026-01-13,Data from the original PyPSA-Eur data bundle.,https://data.pypsa.org/workflows/eur/mobility_profiles/2025-08-13 +natura,v0.8.2,primary,supported,2025-12-02,,https://zenodo.org/records/16874772/files/natura.tiff +natura,v0.8.2,archive,supported,2026-01-13,,https://data.pypsa.org/workflows/eur/natura/v0.8.2/natura.tiff +natura,unknown,build,latest supported,2025-12-02,,https://sdi.eea.europa.eu/datashare/s/tWpGXaWdWGYcqsL/download +natura,2025-08-15,primary,latest supported,2025-12-02,,https://zenodo.org/records/16881818/files/natura.tiff +natura,2025-08-15,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/natura/2025-08-15/natura.tiff +neso_electricity_demand,unknown,build,latest supported,2026-02-02,,https://www.neso.energy/data-portal/historic-demand-data +neso_electricity_demand,2026-02-02,archive,latest supported,2026-02-03,,https://data.pypsa.org/workflows/eur/neso_electricity_demand/2026-02-02/electricity_demand_neso_raw.csv +nitrogen_statistics,2023,primary,not-tested,2025-12-02,,https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/media/files/myb1-2023-nitro-ERT.xlsx +nitrogen_statistics,2022,primary,latest supported,2025-12-02,,https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/media/files/myb1-2022-nitro-ert.xlsx +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 +open_mastr,2023-08-08,primary,latest supported,2026-01-15,,https://zenodo.org/records/8225106/files/bnetza_open_mastr_2023-08-08_B.zip +open_mastr,2023-08-08,archive,latest supported,2026-02-23,,https://data.pypsa.org/workflows/de/open_mastr/2023-08-08/bnetza_open_mastr_2023-08-08_B.zip +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.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.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 +scigrid_gas,1.1.0,archive,deprecated not-supported,2026-01-13,,https://data.pypsa.org/workflows/eur/scigrid_gas/1.1.0/IGGIELGN.zip +seawater_temperature,v1.0,primary,latest supported,2026-01-21,Test cutout seawater temperature,https://zenodo.org/records/15828866/files/seawater_temperature.nc +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 +tyndp,2024,primary,latest supported,2025-12-02,,https://2024-data.entsos-tyndp-scenarios.eu/files/scenarios-inputs +tyndp,2024,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/tyndp/2024 +wdpa,unknown,primary,latest supported,2025-12-02,"WDPA 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_{bYYYY}_Public_shp.zip +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/configtables/data.csv b/doc/configtables/data.csv deleted file mode 100644 index 2f0b07567..000000000 --- a/doc/configtables/data.csv +++ /dev/null @@ -1,139 +0,0 @@ - ,Unit,Values,Description -hotmaps_industrial_sites,,, --- source,str,"{archive, primary}","Source of the Hotmaps industrial sites data." --- version,str,,"Version of the Hotmaps industrial sites data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -enspreso_biomass,,, --- source,str,"{archive, primary}","Source of the Enspreso biomass data." --- version,str,,"Version of the Enspreso biomass data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -osm,,, --- source,str,"{archive, build}","Source of the OSM data. 'archive' retrieves pre-built OSM data, 'build' uses the latest OSM data to build the network." --- version,str,,"Version of the OSM data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -worldbank_urban_population,,, --- source,str,"{archive, primary}","Source of the World Bank urban population data." --- version,str,,"Version of the World Bank urban population data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -gem_europe_gas_tracker,,, --- source,str,"{archive, primary}","Source of the GEM Europe Gas Tracker data." --- version,str,,"Version of the GEM Europe Gas Tracker data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -co2stop,,, --- source,str,"{archive, primary}","Source of the CO2Stop data." --- version,str,,"Version of the CO2Stop data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -nitrogen_statistics,,, --- source,str,"{archive, primary}","Source of the Nitrogen Statistics data." --- version,str,,"Version of the Nitrogen Statistics data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -eu_nuts2013,,, --- source,str,"{archive, primary}","Source of the EU NUTS 2013 data." --- version,str,,"Version of the EU NUTS 2013 data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -eu_nuts2021,,, --- source,str,"{archive, primary}","Source of the EU NUTS 2021 data." --- version,str,,"Version of the EU NUTS 2021 data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -eurostat_balances,,, --- source,str,"{archive, primary}","Source of the Eurostat balances data." --- version,str,,"Version of the Eurostat balances data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -eurostat_household_balances,,, --- source,str,"{archive, primary}","Source of the Eurostat household balances data." --- version,str,,"Version of the Eurostat household balances data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -wdpa,,, --- source,str,"{archive, primary}","Source of the WDPA data." --- version,str,,"Version of the WDPA data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -wdpa_marine,,, --- source,str,"{archive, primary}","Source of the WDPA Marine data." --- version,str,,"Version of the WDPA Marine data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -luisa_land_cover,,, --- source,str,"{archive, primary}","Source of the LUISA land cover data." --- version,str,,"Version of the LUISA land cover data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -jrc_idees,,, --- source,str,"{archive, primary}","Source of the JRC IDEES data." --- version,str,,"Version of the JRC IDEES data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -scigrid_gas,,, --- source,str,"{primary, archive}","Source of the SciGRID Gas data." --- version,str,,"Version of the SciGRID Gas data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -synthetic_electricity_demand,,, --- source,str,"{primary, archive}","Source of the Synthetic Electricity Demand data." --- version,str,,"Version of the Synthetic Electricity Demand data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -copernicus_land_cover,,, --- source,str,"{primary, archive}","Source of the Copernicus Land Cover data." --- version,str,,"Version of the Copernicus Land Cover data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -ship_raster,,, --- source,str,"{archive, primary}","Source of the Ship Raster data." --- version,str,,"Version of the Ship Raster data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -eez,,, --- source,str,"{archive, primary}","Source of the EEZ data." --- version,str,,"Version of the EEZ data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -nuts3_population,,, --- source,str,"{archive, primary}","Source of the NUTS3 population data." --- version,str,,"Version of the NUTS3 population data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -gdp_per_capita,,, --- source,str,"{archive, primary}","Source of the GDP per capita data." --- version,str,,"Version of the GDP per capita data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -population_count,,, --- source,str,"{archive, primary}","Source of the population count data." --- version,str,,"Version of the population count data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -ghg_emissions,,, --- source,str,"{archive, primary}","Source of the GHG emissions data." --- version,str,,"Version of the GHG emissions data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -gebco,,, --- source,str,"{archive, primary}","Source of the GEBCO data." --- version,str,,"Version of the GEBCO data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -attributed_ports,,, --- source,str,"{archive, primary}","Source of the Attributed Ports data." --- version,str,,"Version of the Attributed Ports data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -corine,,, --- source,str,"{archive, primary}","Source of the CORINE data." --- version,str,,"Version of the CORINE data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -emobility,,, --- source,str,"{archive, primary}","Source of the Emobility data." --- version,str,,"Version of the Emobility data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -h2_salt_caverns,,, --- source,str,"{archive, primary}","Source of the H2 Salt Caverns data." --- version,str,,"Version of the H2 Salt Caverns data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -lau_regions,,, --- source,str,"{archive, primary}","Source of the LAU Regions data." --- version,str,,"Version of the LAU Regions data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -aquifer_data,,, --- source,str,"{archive, primary}","Source of the Aquifer data." --- version,str,,"Version of the Aquifer data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -osm_boundaries,,, --- source,str,"{archive, build}","Source of the OSM Boundaries data." --- version,str,,"Version of the OSM Boundaries data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -gem_gspt,,, --- source,str,"{archive, primary}","Source of the Global Steel Plant Tracker data." --- version,str,,"Version of the Global Steel Plant Tracker data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -tyndp,,, --- source,str,"{archive, primary}","Source of the TYNDP data." --- version,str,,"Version of the TYNDP data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -powerplants,,, --- source,str,"{primary, archive}","Source of the Powerplants data." --- version,str,,"Version of the Powerplants data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -costs,,, --- source,str,"{primary, archive}","Source of the Costs data." --- version,str,,"Version of the Costs data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -country_runoff,,, --- source,str,"{archive, build}","Source of the Country Runoff data." --- version,str,,"Version of the Country Runoff data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -country_hdd,,, --- source,str,"{archive, build}","Source of the Country HDD data." --- version,str,,"Version of the Country HDD data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -natura,,, --- source,str,"{archive, build}","Source of the Natura data." --- version,str,,"Version of the Natura data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -bfs_road_vehicle_stock,,, --- source,str,"{archive, primary}","Source of the BFS Road Vehicle Stock data." --- version,str,,"Version of the BFS Road Vehicle Stock data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -bfs_gdp_and_population,,, --- source,str,"{archive, primary}","Source of the BFS GDP and Population data." --- version,str,,"Version of the BFS GDP and Population data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -mobility_profiles,,, --- source,str,"{archive, build}","Source of the Mobility Profiles data." --- version,str,,"Version of the Mobility Profiles data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -cutout,,, --- source,str,"{archive, build}","Source of the Cutout data." --- version,str,,"Version of the Cutout data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source." -dh_areas,,, --- source,str,"{archive, primary}","Source of the District Heating Areas data." --- version,str,,"Version of the District Heating Areas data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source."" -geothermal_heat_utilisation_potentials,,, --- source,str,"{archive, primary}","Source of the Geothermal Heat Utilisation Potentials data." --- version,str,,"Version of the Geothermal Heat Utilisation Potentials" -jrc_ardeco,,, --- source,str,"{archive, primary}","Source of annual regional database for EU regions" --- version,str,,"Version of the JRC ARDECO dataset" \ No newline at end of file diff --git a/doc/data-cutouts.rst b/doc/data-cutouts.rst new file mode 100644 index 000000000..a6e2a9eff --- /dev/null +++ b/doc/data-cutouts.rst @@ -0,0 +1,87 @@ +.. SPDX-FileCopyrightText: Contributors to PyPSA-Eur +.. +.. SPDX-License-Identifier: CC-BY-4.0 + +.. _cutouts: + +############ +Weather Data +############ + +Cutouts are spatio-temporal subsets of the European weather data from the `ECMWF ERA5 `__ reanalysis dataset and the `CMSAF SARAH-3 `__ solar surface radiation dataset. +They have been prepared by and are for use with the `atlite `__ tool. +The :ref:`tutorial` uses a smaller cutout than required for the full model (30 MB), which is also automatically downloaded. + +There are two ways to obtain cutouts: + +- **Retrieve pre-built cutouts** from the archive using the ``retrieve_cutout`` rule (default). This downloads ready-made cutouts from ``data.pypsa.org``. +- **Build cutouts from scratch** using the ``build_cutout`` rule. This requires access to the `CDS API `__ to download ERA5 data directly. + +.. seealso:: + For building your own cutouts, see :mod:`build_cutout` and the `atlite documentation `__. + +The following pre-built cutouts are available for download under +``https://data.pypsa.org/workflows/cutout//.nc`` +(click on a cutout name below to download directly). + +.. _available-cutouts-start: + +**v1.0** + +.. list-table:: + :header-rows: 1 + :widths: 70 30 + + * - Cutout + - Size + * - `be-03-2013-era5.nc `__ + - 11.1 MB + * - `dach-03-2013-sarah3-era5.nc `__ + - 35.1 MB + * - `europe-1995-sarah3-era5.nc `__ + - 6.2 GB + * - `europe-1996-sarah3-era5.nc `__ + - 6.5 GB + * - `europe-2008-sarah3-era5.nc `__ + - 6.2 GB + * - `europe-2009-sarah3-era5.nc `__ + - 6.2 GB + * - `europe-2010-sarah3-era5.nc `__ + - 6.1 GB + * - `europe-2012-sarah3-era5.nc `__ + - 6.6 GB + * - `europe-2013-03-sarah3-era5.nc `__ + - 140.5 MB + * - `europe-2013-sarah3-era5.nc `__ + - 6.1 GB + * - `europe-2019-sarah3-era5.nc `__ + - 6.1 GB + * - `europe-2020-sarah3-era5.nc `__ + - 6.6 GB + * - `europe-2021-sarah3-era5.nc `__ + - 6.1 GB + * - `europe-2023-sarah3-era5.nc `__ + - 6.1 GB + * - `europe-2024-sarah3-era5.nc `__ + - 6.7 GB + * - `europe-2025-sarah3-era5.nc `__ + - 6.7 GB +.. _available-cutouts-end: + +**Relevant Settings** + +.. code:: yaml + + atlite: + default_cutout: + cutouts: + +.. seealso:: + Documentation of the configuration file ``config/config.yaml`` at + :ref:`atlite_cf` and :ref:`data_cf`. + +**Outputs** + +- ``cutouts/{cutout}``: weather data from either the `ERA5 `__ reanalysis weather dataset and/or `SARAH-3 `__ satellite-based historic weather data. + + diff --git a/doc/data_inventory.csv b/doc/data_inventory.csv index 133ce39d6..6b2a9ce83 100644 --- a/doc/data_inventory.csv +++ b/doc/data_inventory.csv @@ -1,18 +1,23 @@ "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" +"entsoe_electricity_demand","ENTSO-E Transparency Platform - Electricity Demand","Time series data of electricity consumption at country-level for various European countries.","ENTSO-E","https://transparency.entsoe.eu/load/total/dayAhead","unknown" +"neso_electricity_demand","NESO Electricity Demand Data","Time series data of electricity consumption for Great Britain.","National Energy System Operator (NESO)","https://www.neso.energy/data-portal/historic-demand-data","`NESO Open Data License v1.0 `__" "copernicus_land_cover","Copernicus Global Land Service", "Land cover and land use inventory of European continent","Copernicus","https://land.copernicus.eu/en/products/global-dynamic-land-cover", "CC-BY-4.0" "ship_raster","Global Shipping Traffic Density","To build ship density raster and use it further to compute availability matrix for renewables","Worldbank","https://datacatalog.worldbank.org/search/dataset/0037580/Global-Shipping-Traffic-Density", "CC-BY-4.0" "eez","Maritime Boundaries World EEZ","To estimate potentials for offshore wind in country's EEZ","Marine Regions","https://www.marineregions.org/downloads.php", "CC-BY-4.0" @@ -30,6 +35,7 @@ "osm_boundaries","OSM Boundaries","OSM-Boundaries was created to enable users to easily extract boundaries such as country borders, state borders, and equivalents from the OpenStreetMap databases","Ground Zero Communications AB","https://osm-boundaries.com/about","ODbL" "gem_europe_gas_tracker","Europe Gas Tracker","Methane and hydrogen infrastructure in Europe, including pipelines, LNG terminals, gas power plants and extraction sites.","Global Energy Monitor","https://globalenergymonitor.org/projects/europe-gas-tracker/","CC-BY-4.0" "gem_gspt","Global Steel Plant Tracker","Steel plant global locations and characteristics, including production capacity, ownership, and emissions data.","Global Energy Monitor","https://globalenergymonitor.org/projects/global-steel-plant-tracker/","CC-BY-4.0" +"gem_gcct","Global Cement and Concrete Tracker","Cement and concrete plant global locations and characteristics, including production capacity, ownership, and emissions data.","Global Energy Monitor","https://globalenergymonitor.org/projects/global-cement-and-concrete-tracker/","CC-BY-4.0" "tyndp","Ten Year Network Development Plan (TYNDP) electricity transmission grid","Transmission grid topology based on the ENTSO-E/ENTSO-G TYNDP scenarios, including planned and existing lines.","ENTSO-E/ENTSO-G","https://2024.entsos-tyndp-scenarios.eu/download/","CC-BY-4.0" "powerplants","Power plants matching dataset","Global dataset of power plants with their location, capacity and technology type.","The powerplantmatching contributors","https://powerplantmatching.readthedocs.io","CC-BY-4.0" "costs","Technology cost assumptions","Technology cost and performance assumptions for Europe for various technologies, including renewables, fossil fuels.","The technologydata contributors","https://technology-data.readthedocs.io","CC-BY-4.0" @@ -38,7 +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" \ No newline at end of file +"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/validation_dev.rst b/doc/validation_dev.rst new file mode 100644 index 000000000..81a871beb --- /dev/null +++ b/doc/validation_dev.rst @@ -0,0 +1,262 @@ +.. SPDX-FileCopyrightText: Contributors to PyPSA-Eur +.. +.. SPDX-License-Identifier: CC-BY-4.0 + +########################################## +Validation +########################################## + +PyPSA-Eur uses `Pydantic `_ models for validation. +This system provides type checking, default values, and documentation in a single place. + +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.default.json``. + +Adding a New Config Option +-------------------------- + +To add a new option to an existing config section, edit the corresponding module in +``scripts/lib/validation/config/``. Each field uses Pydantic's ``Field()`` function. + +For example, the ``logging`` section in ``scripts/lib/validation/config/__init__.py``: + +.. code-block:: python + + from typing import Literal + from pydantic import Field + from scripts.lib.validation.config._base import ConfigModel + + class LoggingConfig(ConfigModel): + """Configuration for top level `logging` settings.""" + + # ... existing fields ... + + # An option with default 0.5, float type and between 0 and 1. If anything else is passed, + # the validation will fail + new_option: float = Field( + 0.5, # default value + description="Threshold for the new feature.", # shown in docs and IDE + ge=0, # greater than or equal + le=1, # less than or equal + examples=[0.3, 0.7], # example values for docs + ) + +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 +--------------------------- + +To add a nested config section, define a helper class and add it to an existing config. +For example, adding a ``file`` section to ``LoggingConfig``: + +.. code-block:: python + + class _LoggingFileConfig(ConfigModel): + """Configuration for logging to file.""" + + enabled: bool = Field(False, description="Enable file logging.") + path: str = Field("logs/pypsa.log", description="Log file path.") + format: str | None = Field(None, description="Custom log format for that file.") + + + class LoggingConfig(ConfigModel): + """Configuration for top level `logging` settings.""" + + # ... existing fields ... + + file: _LoggingFileConfig = Field( + default_factory=_LoggingFileConfig, + description="File logging configuration.", + ) + + +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 +------------------------- + +Snakemake will only read from the ``config/config.default.yaml``, which needs to be generated +after making changes to the Pydantic model. To regenerate the default config and JSON +schema: + +.. code-block:: console + + $ pixi run generate-config + +This updates ``config/config.default.yaml`` and ``config/schema.default.json``. +For example, the two examples above would now generate: + +.. code-block:: yaml + + logging: + level: INFO + format: "%(levelname)s:%(name)s:%(message)s" + new_option: 0.5 + file: + enabled: false + path: logs/pypsa.log + format: null + +Always commit these regenerated files alongside your model changes. + +Custom Validators +----------------- + +For validation logic beyond simple type checks and constraints, Pydantic provides +``field_validator`` (for single fields) and ``model_validator`` (for cross-field validation). + +**Field Validator**: Validate a single field's value. For example, ensuring the log level +is uppercase: + +.. code-block:: python + + from pydantic import Field, field_validator + from scripts.lib.validation.config._base import ConfigModel + + class LoggingConfig(ConfigModel): + """Configuration for top level `logging` settings.""" + + level: str = Field("INFO", description="Logging level.") + + @field_validator("level") + @classmethod + def validate_level(cls, v): + if v.upper() != v: + raise ValueError("Logging level must be uppercase (e.g., 'INFO', 'DEBUG').") + return v + +**Model Validator**: Validate relationships between multiple fields. For example, +ensuring the file path is set when file logging is enabled: + +.. code-block:: python + + from pydantic import Field, model_validator + from scripts.lib.validation.config._base import ConfigModel + + class LoggingConfig(ConfigModel): + """Configuration for top level `logging` settings.""" + + file_enabled: bool = Field(False, description="Enable file logging.") + file_path: str | None = Field(None, description="Log file path.") + + @model_validator + def check_file_path_required(self): + if self.file_enabled and not self.file_path: + raise ValueError("file_path is required when file_enabled is True.") + return self + +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/docker/dev-env/Dockerfile b/docker/dev-env/Dockerfile index 534eea7c9..0f0419943 100644 --- a/docker/dev-env/Dockerfile +++ b/docker/dev-env/Dockerfile @@ -2,19 +2,21 @@ # # SPDX-License-Identifier: CC0-1.0 -FROM ghcr.io/prefix-dev/pixi:0.40.0 AS build +FROM ghcr.io/prefix-dev/pixi:0.63.2 AS build -LABEL org.opencontainers.image.source https://github.com/PyPSA/pypsa-eur +LABEL org.opencontainers.image.source=https://github.com/PyPSA/pypsa-eur RUN pixi self-update -RUN apt-get update && apt-get install -y bash git +RUN apt-get update && \ + apt-get install -y --no-install-recommends bash git && \ + rm -rf /var/lib/apt/lists/* WORKDIR /pypsa-eur COPY pixi.toml pixi.lock ./ -RUN pixi install -e default +RUN pixi install -e default && pixi clean cache --yes RUN pixi shell-hook -e default > /shell-hook.sh # extend the shell-hook script to run the command passed to the container @@ -23,3 +25,4 @@ RUN echo 'exec "$@"' >> /shell-hook.sh # set the entrypoint to the shell-hook script (activate the environment and run the command) # no more pixi needed in the prod container ENTRYPOINT ["/bin/bash", "/shell-hook.sh"] +CMD ["bash"] diff --git a/envs/default_linux-64.pin.txt b/envs/default_linux-64.pin.txt index 3d533f86a..83837e016 100644 --- a/envs/default_linux-64.pin.txt +++ b/envs/default_linux-64.pin.txt @@ -2,59 +2,57 @@ # 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/libgcc-ng-15.2.0-h69a702a_16.conda#5a68259fac2da8f2ee6f7bfe49c9eb8b -https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc +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/libnsl-2.0.1-hb9d3cd8_1.conda#d864d34357c3b65a4b731f78c0801dc4 -https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda#1a580f7796c7bf6393fddb8bbbde58dc -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/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-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.12.12-hd63d673_1_cpython.conda#5c00c8cea14ee8d02941cab9121dce41 -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/noarch/python_abi-3.12-8_cp312.conda#c3efd25ac4d74b1584d2f7a57195ddf1 -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-py312h33ff503_0.conda#ba7e6cb06c372eae6f164623e6e06db8 -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.0-py312h54fa4ab_0.conda#9faccce05511d05f22001ecc2dfe78de -https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda#4de79c071274a53dcaf2a8c749d1499e +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-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-np2py312h3226591_1.conda#38decbeae260892040709cafc0514162 +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 -https://conda.anaconda.org/conda-forge/linux-64/pyomo-6.9.5-py312h1289d80_0.conda#14653b1832d3fe7f51942e60ff2a5b00 +https://conda.anaconda.org/conda-forge/linux-64/pyomo-6.9.5-py313h7033f15_0.conda#920a5ce9078a275fc0313ee3717fd268 https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda#bc8e3267d44011051f2eb14d22fb0960 https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda#7ead57407430ba33f681738905278d03 https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda#3339e3b65d58accf4ca4fb8748ab16b3 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-py312hf79963d_1.conda#e597b3e812d9613f659b7d87ad252d18 +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-np2py312h0f77346_0.conda#209aecf319ad78f8ff9426571373844d -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/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/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/linux-64/wrapt-1.17.3-py312h4c3975b_1.conda#8af3faf88325836e46c6cb79828e058c +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 https://conda.anaconda.org/conda-forge/noarch/configargparse-1.7.1-pyhe01879c_0.conda#18dfeef40f049992f4b46b06e6f3b497 @@ -66,37 +64,35 @@ https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#4 https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda#164fc43f0b53b6e3a7bc7dce5e4f1dc9 -https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312hdb49522_1.conda#64088dffd7413a2dd557ce837b4cbbdb -https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py312h90b7ffd_0.conda#5b8c55fed2e576dde4b0b33693a4fdb1 +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda#6c4d3597cf43f3439a51b2b13e29a4ba +https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py313h18e8e13_0.conda#d9e90792551a527200637e23a915dd79 https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda#9272daa869e03efe68833e3dc7a02130 https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda#53abe63df7e10a6ba605dc5f9f961d36 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/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef -https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda#648ee28dcd4e07a1940a17da62eccd40 -https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.3-py312ha4b625e_1.conda#a42f7c8a15d53cdb6738ece5bd745d13 +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.1.0-pyhdfd78af_0.conda#17232431f65ce347f972f0fd95d2e97a +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-py312h8a5da7c_0.conda#fba10c2007c8b06f77c5a23ce3a635ad +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 https://conda.anaconda.org/bioconda/noarch/snakemake-interface-scheduler-plugins-2.0.2-pyhd4c3c12_0.conda#1500fccf5e46c7f91d14925449ff3632 https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda#e6fd8cfb23b294da699e395dbc968d11 -https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda#98f75f2ca3a222992e2230d7afc54bb8 +https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2#cbb15afc697a71cc9a0e9bfd75ae59cc 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/linux-64/liblapacke-3.11.0-5_h6ae95b6_openblas.conda#e487a0e38d89da76410cb92a5db39ec5 @@ -105,23 +101,23 @@ https://conda.anaconda.org/conda-forge/linux-64/coin-or-osi-0.108.11-hf4fecb4_8. https://conda.anaconda.org/conda-forge/linux-64/coin-or-clp-1.17.10-hc03379b_4.conda#2646b9648d2cc643eddbe0e440f57fe6 https://conda.anaconda.org/conda-forge/linux-64/coin-or-cgl-0.60.9-hc46dffc_7.conda#4a05507c2db2f1722e62fffc95510205 https://conda.anaconda.org/conda-forge/linux-64/coin-or-cbc-2.10.12-h4d16d09_5.conda#06455c25d5ccaee980897ae4b5cf21f1 -https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.1-pyhcf101f3_0.conda#d837065e4e0de4962c3462079c23f969 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda#3687cc0b82a8b4c17e1f0eb7e47163d5 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-py312hd0750ca_3.conda#1ade2915cfabbcb8f07e7b4387f4d49b -https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.1-py312h5253ce2_0.conda#ff09ba570ce66446db523ea21c12b765 +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.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 -https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py312h868fb18_0.conda#3ffc5a3572db8751c2f15bacf6a0e937 +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py313h843e2db_0.conda#779e3307a0299518713765b83a36f4b1 https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda#537296d57ea995666c68c821b00e360b https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda#870293df500ca7e18bedefa5838a22ab https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda#439cd0f567d697b20a8f45cb70a1005a https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda#ada41c863af263cc4c5fcbaff7c3e4dc https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda#bbe1963f1e47f594070ffe87cdf612ea -https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_0.conda#f775a43412f7f3d7ed218113ad233869 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_0.conda#c14389156310b8ed3520d84f854be1ee https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda#04558c96691bed63104678757beb4f8d -https://conda.anaconda.org/conda-forge/linux-64/immutables-0.21-py312h4c3975b_2.conda#4cf92a9dd8712cdde044fb56be498bd4 +https://conda.anaconda.org/conda-forge/linux-64/immutables-0.21-py313h07c4f96_2.conda#68ad0cf3b5c557b70e06e901f7dd3d6a https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda#7fe569c10905402ed47024fc481bb371 https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda#87f47a78808baf2fa1ea9c315a1e48f1 https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda#7c14f3706e099f8fcd47af2d494616cc @@ -129,11 +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.14.6-pyhdfd78af_0.conda#b4f16a0bcc52274012b0b14a2a6063b3 -https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2#1e3d84ab0cd46fbf1dd4e5b290f7c7a5 -https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.0.3-pyhdfd78af_0.conda#3ea81e75226d692c31fa3d115bda027b +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.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.11-h4196e79_0.conda#da06de874b1e1e2029772f9c319d164e +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 @@ -143,15 +140,17 @@ 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_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-h99ae125_0.conda#8bbc19a6e87fbe8b97796e9a42a47a30 +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 https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.5-h5888daf_0.conda#ab3e3db511033340e75e7002e80ce8c0 @@ -166,54 +165,57 @@ 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-hf08fa70_7.conda#3a29a37b34dbd06672bdccb63829ec14 +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-py312hcedc861_0.conda#f0d110978a87b200a06412b56b26407c -https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py312h9b6a7d9_2.conda#573b9a879a3a42990f9c51d7376dce6b -https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda#e7e37bf890147fa5d7892812a6dd3888 +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.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 https://conda.anaconda.org/conda-forge/linux-64/tbb-2022.3.0-h8d10470_1.conda#e3259be3341da4bc06c5b7a78c8bf1bd https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda#c94a5994ef49749880a8139cf9afcbe1 https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda#2eeb50cab6652538eee8fc0bc3340c81 https://conda.anaconda.org/conda-forge/linux-64/mumps-include-5.7.3-h82cca05_10.conda#d6c7d8811686ed912ed4317831dd8c44 https://conda.anaconda.org/conda-forge/linux-64/metis-5.1.0-hd0bcaf9_1007.conda#28eb714416de4eb83e2cbc47e99a1b45 -https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda#1bad2995c8f1c8075c6c331bf96e46fb -https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda#bf627c16aa26231720af037a2709ab09 -https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda#f61edadbb301530bd65a32646bd81552 -https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda#68eae977d7d1196d32b636a026dc015d -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/xz-tools-5.8.2-hb03c661_0.conda#dfd6129671f782988d665354e7aa269d +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_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-py312h1289d80_1.conda#35befeaba0fb8867f562d570252f92f0 +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-py312h383787d_2.conda#69e400d3deca12ee7afd4b73a5596905 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-py312h4f23490_0.conda#423b8676bd6eed60e97097b33f13ea3f +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 @@ -222,132 +224,228 @@ 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-py312h50c33e8_0.conda#923b06ad75b7acc888fa20a22dc397cd -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py312h0a2e395_2.conda#3a3004fddd39e3bb1a631b08d7045156 +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/linux-64/unicodedata2-17.0.0-py312h4c3975b_1.conda#a0b8efbe73c90f810a171a6c746be087 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda#37293a85a0f4f77bbd9cf7aaefc62609 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda#af39b9a8711d4a8d437b52c1d78eb6a1 https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda#8ccf913aaba749a5496c17629d859ed1 -https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.61.1-py312h8a5da7c_0.conda#3bf8fb959dc598c67dac0430b4aff57a +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.61.1-py313h3dea7bd_0.conda#c0f36dfbb130da4f6ce2df31f6b25ea8 https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda#4c2a8fef270f6c69591889b93f9f55c1 -https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312hd9148b4_3.conda#86cf7a7d861b79d38e3f0e5097e4965b -https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.8-py312he3d6523_0.conda#b8dc157bbbb69c1407478feede8b7b42 +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda#33639459bc29437315d4bff9ed5bc7a7 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.8-py313h683a580_0.conda#ffe67570e1a9192d2f4c189b27f75f89 https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda#fd96da444e81f9e6fcaac38590f3dd42 https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda#62afb877ca2c2b4b6f9ecb37320085b6 https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda#edd329d7d3a4ab45dcf905899a7a6115 https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda#46830ee16925d5ed250850503b5dc3a8 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-py312h88efc94_101.conda#f31fa7178c477ce82dfb47273582de15 -https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda#01ba04e414e47f95c03d6ddd81fd37be -https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h1b119a7_104.conda#0857f4d157820dcd5625f61fdfefb780 -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-py312hefc0c3f_10.conda#e5bb2b09278f18b76ace60e809d8057c +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_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/plotly-6.5.1-pyhd8ed1ab_0.conda#0a8b38871cab04059c1cc04853b415a2 +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/cftime-1.6.5-py312h4f23490_0.conda#acb46785d4866cec0a88b4d6e991c33f -https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.4-nompi_py312h25f8dc5_101.conda#b1c45859b7cfc04b81362fe7f0b75fa2 +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.12.12-py312hd8ed1ab_1.conda#99d689ccc1a360639eec979fd7805be9 -https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_1.conda#c20172b4c59fbe288fa50cdc1b693d73 +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-py312hb8af0ac_2.conda#2aaf8d6c729beb30d1b41964e7fb2cd6 -https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyhcf101f3_0.conda#b22fe9a3d53bc833659823e48f879db9 +https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.31.1-py313h8c92afc_2.conda#afed78c744cc34474140bb4415937fde 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-py312h03f33d3_0.conda#78cba474481131a39da50cd3f1ce4dac +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 https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h7b12aa8_0.conda#a30848ebf39327ea078cf26d114cff53 https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_0.conda#0227d04521bc3d28c7995c7e1f99a721 https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda#07479fc04ba3ddd5d9f760ef1635cfa7 https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h3288cfb_1.conda#ff63bb12ac31c176ff257e3289f20770 -https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.73.1-py312h6f3464c_1.conda#dca50c100d8d67882ada32756810372f +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.73.1-py313h2b3948d_1.conda#1180380822ba420e7d953bb6f1e3666d https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda#003094932fb90de018f77a273b8a509b https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.73.1-pyhd8ed1ab_0.conda#5a2944f868149ad5a2e6588be8eed838 -https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda#09bb17ed307ad6ab2fd78d32372fdd4e +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda#c203d401759f448f9e792974e055bcdc https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda#58958bb50f986ac0c46f73b6e290d5fe https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda#644bd4ca9f68ef536b902685d773d697 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.3.0-pyhd8ed1ab_0.conda#ddf01a1d87103a152f725c7aeabffa29 https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda#c689b62552f6b63f32f3322e463f3805 -https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py312h178313f_0.conda#0cf580c1b73146bb9ff1bbdb4d4c8cf9 -https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.0-py312h8a5da7c_0.conda#9fe4c848dd01cde9b8d0073744d4eef8 -https://conda.anaconda.org/conda-forge/linux-64/yarl-1.22.0-py312h8a5da7c_0.conda#6a3fd177315aaafd4366930d440e4430 -https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py312h447239a_0.conda#63e20cf7b7460019b423fc06abb96c60 +https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py313h8060acc_0.conda#b62867739241368f43f164889b45701b +https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.0-py313h3dea7bd_0.conda#d182804a222acc8f2c7e215f344d229f +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.22.0-py313h3dea7bd_0.conda#e9415b0f7b43d2e32a3f24fd889c9e70 +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py313h6b9daa2_0.conda#3a0be7abedcbc2aee92ea228efea8eba 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-py312h5d8c7f2_0.conda#7ee12bbdb2e989618c080c7c611048db -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/linux-64/aiohttp-3.13.3-py313hd6074c6_0.conda#684fb9c78db5024b939a1ed0a107f464 +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-pyhd8ed1ab_0.conda#862b63f7548be0c97e9c6f4f85959189 -https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda#9a4ab0a7b2c5362e9530b03cf563820b +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.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-2025.12.0-pyhcf101f3_1.conda#cc7b371edd70319942c802c7d828a428 -https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py312hfb8c2c5_3.conda#99981dfd6b851dba87c43b5f895e6d6a -https://conda.anaconda.org/conda-forge/noarch/linopy-0.5.8-pyhd8ed1ab_1.conda#5fa196c3b07cabe3cd1dc9a369c785fe -https://conda.anaconda.org/conda-forge/linux-64/rapidfuzz-3.14.3-py312h1289d80_1.conda#bce14345fd01c051c51884878cfd053d -https://conda.anaconda.org/conda-forge/linux-64/levenshtein-0.27.3-py312h1289d80_0.conda#5b323b1b5edd0359606d7e53779a8b82 +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.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 -https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py312h053e1f3_0.conda#f8e7e5ddfbdca16b65335b0b6615eb4c +https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py313hae45665_0.conda#fa543477ad16de26ce5f2fd5bcd249fa 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.6-pyhd8ed1ab_1.conda#1cfa64a0a8211bafbb05e9b8f7e472c8 -https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda#146402bf0f11cbeb8f781fa4309a95d3 +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.0-pyhcf101f3_1.conda#eec5b361dbbaa69dba05050977a414b0 -https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.3-py312h7900ff3_0.conda#d52bf8682166142541a533c7a15d4780 +https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda#080a808fce955026bf82107d955d32da +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-py312hd9148b4_6.conda#f30ece80e76f9cc96e30cc5c71d2818e +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-py312h7f6eeab_2.conda#868d486c51b475998e3b5ea814591ccc 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.1-pyhd8ed1ab_0.conda#7de28c27fe620a4f7dbfaea137c6232b -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.8-pyhd8ed1ab_0.conda#3181cf53cd50513a1a7c00aae2f08e7a +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/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-py312h4c3975b_0.conda#e03a4bf52d2170d64c816b2a52972097 -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-libxxf86vm-1.1.6-hb9d3cd8_0.conda#5efa5fa6243a622445fdfd72aee15efa +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.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 @@ -359,13 +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 @@ -373,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_1.conda#e00afd65b88a3258212661b32c1469cb -https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_1.conda#e933f92cedca212eb2916f24823cf90b +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 @@ -383,44 +482,42 @@ 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-py312h9da60e5_0.conda#dda0a61b6186fc914cf6c1581f64229d -https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.8-py312h7900ff3_0.conda#2a7663896e5aab10b60833a768c4c272 -https://conda.anaconda.org/conda-forge/linux-64/lxml-6.0.2-py312h63ddcf0_2.conda#a12c2fbcb3a5a7fa24e5fb8468368b1b -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/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.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.0.0-pyha191276_0.conda#f2cc28627a451a28ddd5ef5ab0bf579d +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.0-pyhd8ed1ab_0.conda#6fd1a65a2e8ea73120a9cc7f8e4848a9 +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/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda#2d983ff1b82a1ccb6f2e9d8784bdd6bd +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 https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960 @@ -435,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/linux-64/argon2-cffi-bindings-25.1.0-py312h4c3975b_2.conda#1567f06d717246abab170736af8bad1b +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 @@ -450,21 +547,21 @@ 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.2.14-pyhd8ed1ab_0.conda#7e1e5ff31239f9cd5855714df8a3783d +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-py312h8285ef7_0.conda#4d7e170b575fc405dc106927a2f0a311 +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/async-lru-2.0.5-pyh29332c3_0.conda#d9d0f99095a9bb7e3641bca8c6ad2ac7 -https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.2-pyhd8ed1ab_0.conda#513e7fcc06c82b24c84ff88ece13ac9f +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.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.2-pyhcf101f3_0.conda#47b58fa741a608dac785b71b8083bdb7 +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 https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda#801dbf535ec26508fac6d4b24adfb76e https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-3.6.10-pyhd8ed1ab_0.conda#4d52bbdb661dc1b5a1c2aeb1afcd9a67 @@ -472,17 +569,17 @@ https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1 https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda#2f0ba4bc12af346bc6c99bdc377e8944 https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda#47672c493015ab57d5fcde9531ab18ef https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda#9453512288d20847de4356327d0e1282 -https://conda.anaconda.org/conda-forge/linux-64/jpype1-1.6.0-py312hd9148b4_1.conda#e49867483039df96221d655dc0347728 -https://conda.anaconda.org/gurobi/linux-64/gurobi-13.0.0-py312_0.conda#ef0ccf2535c1ad7699b19ec5831b7c4e +https://conda.anaconda.org/conda-forge/linux-64/jpype1-1.6.0-py313h7037e92_1.conda#ac457be3d18517c036312536cf825e26 +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.5-h5888daf_1.conda#5e2eb9bf77394fc2e5918beefec9f9ab +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 @@ -493,92 +590,48 @@ https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.t https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h993cebd_6.conda#f9f33c65b20e6a61f21714785e3613ec https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda#b3f0179590f3c0637b7eb5309898f79e -https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.0-h8b86629_0.conda#39dcf8bb370df27fd81dbe41d4cb605e +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-py312h053e1f3_6.conda#a68cae58a81a937a6edcb3e4e6f0bbe7 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-py312hd9148b4_1.conda#2e489969e38f0b428c39492619b5e6e5 -https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_0.conda#bf74a83f7a0f2a21b5d709997402cac4 -https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.16.5-py312hf79963d_0.conda#86a969eeb489119374ec1d2e863777e6 +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 +https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.16.5-py313h08cd8bf_0.conda#0f394ef25fb81d1dec8ff4fa716f00bd https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda#c56a7fa5597ad78b62e1f5d21f7f8b8f https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda#c1844a94b2be61bb03bbb71574a0abfc https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda#8e7be844ccb9706a999a337e056606ab https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda#77ae41598d63b453bb3c9052f4a14c4b -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-py312h868fb18_1.conda#56a776330a7d21db63a7c9d6c3711a04 -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/linux-64/h5py-3.15.1-nompi_py312ha4f8f14_101.conda#23965cb240cb534649dfe2327ecec4fa -https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.7.3-pyhd8ed1ab_0.conda#4ce3dfa4440b4aa5364f4a6fcc3d7cb3 -https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda#972bdca8f30147135f951847b30399ea -https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.27-pyhd8ed1ab_0.conda#4f772d239ac5d22ef5d6eff78888e88d +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.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.26-pyhd8ed1ab_0.conda#5225da63f2304a4e3a58c6f10497c0ff -https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.2-hfe17d71_0.conda#5641725dfad698909ec71dac80d16736 -https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.1-hd747db4_0.conda#ddab8b2af55b88d63469c040377bd37e -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.11.0-h3d7a050_1.conda#89985ba2a3742f34be6aafd6a8f3af8c -https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.15.0-h2a74896_1.conda#ffd553ff98ce5d74d3d89ac269153149 -https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.13.0-hf38f1be_1.conda#f10b9303c7239fbce3580a60a92bcf97 -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-22.0.0-hb6ed5f4_6_cpu.conda#fbaa3742ccca0f7096216c0832137b72 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-22.0.0-h8c2c5c3_6_cpu.conda#d2cd924b5f451a7c258001cb1c14155d -https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-22.0.0-py312hc195796_0_cpu.conda#7fe5934d9aa025b4e5c8708718c4dafb -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-22.0.0-h7376487_6_cpu.conda#83fd8f55f38ac972947c9eca12dc4657 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-22.0.0-h635bf11_6_cpu.conda#5a8f878ca313083960ab819a009848b3 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-22.0.0-h635bf11_6_cpu.conda#579bdb829ab093d048e49a289d3c9883 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-22.0.0-h3f74fd7_6_cpu.conda#cfc7d2c5a81eb6de3100661a69de5f3d -https://conda.anaconda.org/conda-forge/linux-64/pyarrow-22.0.0-py312h7900ff3_0.conda#f135d6fe1a8065e6a59cab7512237524 +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.2.5-pyhd8ed1ab_0.conda#e6f85f3cd0c5aff4ef0e07e80f49fa39 +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 -https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.25.0-py312hf79963d_1.conda#6c913a686cb4060cbd7639a36fa144f0 +https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.25.0-py313h08cd8bf_1.conda#a0d8dc5c90850d9f1a79f69c98aef0ff https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda#d7585b6550ad04c8c5e21097ada2888e https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda#9614359868482abba1bd15ce465e3c42 https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda#2b694bad8a50dc2f712f5368de866480 https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda#24ed1dc544b101075fa7462be5c3a5c5 https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda#e557abf678a0bf100fe7cf9d2b4f4a72 -https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda#a669145a2c834895bdf3fcba1f1e5b9c +https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_1.conda#e69ad33075938ba81e43311da86b809c https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c2ef711ccf31bb7f70ca87d144b9e 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-py312h4c3975b_1.conda#693cda60b9223f55d0836c885621611b -https://conda.anaconda.org/conda-forge/noarch/distributed-2025.12.0-pyhcf101f3_1.conda#613cea9275c4773d0b53c879838ac0ad -https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.1-pyhd8ed1ab_0.conda#f301f72474b91f1f83d42bcc7d81ce09 -https://conda.anaconda.org/conda-forge/noarch/dask-2025.12.0-pyhcf101f3_0.conda#94d36804598479f9eafa9c973902280e +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.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.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 https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.8-he3c4edf_0.conda#a04073db11c2c86c555fb088acc8f8c1 -https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.44.0-h83bc92c_0.conda#2d37fd4ccfd98453a02a278e4112da39 -https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2.44.0-py312h4f23490_1.conda#eea306a68c483e1305381130b35a09ff +https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.45.0-h83bc92c_0.conda#a981ecc85b1ff6307b8f09cf66b77083 +https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2.45.0-np2py313hc18bace_1.conda#17ae2a605a45add6050a04962f847b21 https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda#0f12f8436a2a238e255d49ea3f8aefe2 https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda#e585c71c2ed48e4eee1663d627ddcd47 -https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.conda#ea90ece1da754ca0c5d6766eb59908c2 +https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda#d957f10f516dcdeb9e382c91d771df12 https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda#1f878573c1ee2798c052bee1f5a94f50 https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda#81f981df273cd627927372680aa9dd31 diff --git a/envs/default_osx-64.pin.txt b/envs/default_osx-64.pin.txt index ce2d9017b..04c5afde5 100644 --- a/envs/default_osx-64.pin.txt +++ b/envs/default_osx-64.pin.txt @@ -3,35 +3,34 @@ @EXPLICIT 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/liblzma-5.8.1-hd471939_2.conda#8468beea04b9065b9807fc8b9cdc5894 -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.11-h17c18a5_100_cp313.conda#6ffffd784fe1126b73329e29c80ddf53 -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/scipy-1.17.0-py313h2bd7e7a_0.conda#ed17a993814b8dcce1e41abf6ab1d69a -https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda#4de79c071274a53dcaf2a8c749d1499e +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-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 @@ -42,11 +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/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/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 +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 @@ -60,37 +62,34 @@ https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda#164fc43f0b53b6e3a7bc7dce5e4f1dc9 https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.2.0-py313h8d69aa9_1.conda#7c5e382b4d5161535f1dd258103fea51 -https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda#727109b184d680772e3122f40136d5ca https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.3.0-py313h591e92b_0.conda#c602f30b6c45567cd5cfb074631beb5d https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda#9272daa869e03efe68833e3dc7a02130 https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda#53abe63df7e10a6ba605dc5f9f961d36 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/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/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.1.0-pyhdfd78af_0.conda#17232431f65ce347f972f0fd95d2e97a +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 https://conda.anaconda.org/bioconda/noarch/snakemake-interface-scheduler-plugins-2.0.2-pyhd4c3c12_0.conda#1500fccf5e46c7f91d14925449ff3632 https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda#e6fd8cfb23b294da699e395dbc968d11 -https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda#98f75f2ca3a222992e2230d7afc54bb8 +https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2#cbb15afc697a71cc9a0e9bfd75ae59cc 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/osx-64/liblapacke-3.11.0-5_h94b3770_openblas.conda#475b9378f397064c05a8c5ed9eecedef @@ -99,11 +98,11 @@ https://conda.anaconda.org/conda-forge/osx-64/coin-or-osi-0.108.11-hcf72bcd_8.co https://conda.anaconda.org/conda-forge/osx-64/coin-or-clp-1.17.10-h58ba847_4.conda#88c9058ba921d6aee30b02071a605a5a https://conda.anaconda.org/conda-forge/osx-64/coin-or-cgl-0.60.9-h62ac857_7.conda#65ea7a4112ac45dbea02657b95f26d65 https://conda.anaconda.org/conda-forge/osx-64/coin-or-cbc-2.10.12-h2b2dcb5_5.conda#35aeb4eb765148c469af1b2292ecd48f -https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.1-pyhcf101f3_0.conda#d837065e4e0de4962c3462079c23f969 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda#3687cc0b82a8b4c17e1f0eb7e47163d5 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 @@ -123,11 +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.14.6-pyhdfd78af_0.conda#b4f16a0bcc52274012b0b14a2a6063b3 -https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2#1e3d84ab0cd46fbf1dd4e5b290f7c7a5 -https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.0.3-pyhdfd78af_0.conda#3ea81e75226d692c31fa3d115bda027b +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.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.11-hb17bafe_0.conda#ce558e6855bb2ff55477d6c1ffd845e2 +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 @@ -141,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.0-h3124640_0.conda#c952a9e5ecd52f6dfdb1b4e43e033893 +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 @@ -159,48 +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-h4ee1b5b_7.conda#1bd071eb76aeeb78b5d3450bb5902e24 +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 @@ -209,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 @@ -217,36 +220,35 @@ https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.2.0-h8616949_1.conda# https://conda.anaconda.org/conda-forge/osx-64/brotli-1.2.0-hf139dec_1.conda#149d8ee7d6541a02a6117d8814fd9413 https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.61.1-py313h0f4d31d_0.conda#77978c974cba250d6ee95a4c29aad08e https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda#4c2a8fef270f6c69591889b93f9f55c1 -https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py313h5eff275_3.conda#76be023d05c67d445a0d0591fcdb83a6 +https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py313h98b818e_4.conda#24c06ae9a202f16555c5a1f8006a0bd7 https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.8-py313h4ad75b8_0.conda#5a0ed440de10c49cfed0178d3e59d994 https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda#fd96da444e81f9e6fcaac38590f3dd42 https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda#62afb877ca2c2b4b6f9ecb37320085b6 https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda#edd329d7d3a4ab45dcf905899a7a6115 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.4-ha6bc127_0.conda#1a768b826dfc68e07786788d98babfc3 -https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_hc1508a4_104.conda#9425a5c53febdf71696aed291586d038 -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/libaec-1.1.5-he7c3a48_0.conda#975f98248cde8d54884c6d1eb5184e13 +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/plotly-6.5.1-pyhd8ed1ab_0.conda#0a8b38871cab04059c1cc04853b415a2 +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/cftime-1.6.5-py313hceb611b_0.conda#7e5931fc62b64f5436da1b65c3b055e9 -https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.7.4-nompi_py313hed393bf_101.conda#90d0af6e4e38d72bacc94feba8c730b7 +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-py313h4f35615_0.conda#753f7c2fdb08172c33830d31ee01732f +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 https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.11.05-h554ac88_0.conda#a0237623ed85308cb816c3dcced23db2 https://conda.anaconda.org/conda-forge/osx-64/re2-2025.11.05-h7df6414_0.conda#13dc8eedbaa30b753546e3d716f51816 @@ -255,7 +257,7 @@ https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.73.1-h451496d_1.conda#d6 https://conda.anaconda.org/conda-forge/osx-64/grpcio-1.73.1-py313ha22d4e2_1.conda#91520cdcae125868e76f99cfb665773c https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda#003094932fb90de018f77a273b8a509b https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.73.1-pyhd8ed1ab_0.conda#5a2944f868149ad5a2e6588be8eed838 -https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda#09bb17ed307ad6ab2fd78d32372fdd4e +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda#c203d401759f448f9e792974e055bcdc https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda#58958bb50f986ac0c46f73b6e290d5fe https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda#644bd4ca9f68ef536b902685d773d697 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.3.0-pyhd8ed1ab_0.conda#ddf01a1d87103a152f725c7aeabffa29 @@ -267,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-pyhd8ed1ab_0.conda#862b63f7548be0c97e9c6f4f85959189 -https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda#9a4ab0a7b2c5362e9530b03cf563820b +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.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-2025.12.0-pyhcf101f3_1.conda#cc7b371edd70319942c802c7d828a428 +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.5.8-pyhd8ed1ab_1.conda#5fa196c3b07cabe3cd1dc9a369c785fe +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 @@ -291,67 +293,162 @@ 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.6-pyhd8ed1ab_1.conda#1cfa64a0a8211bafbb05e9b8f7e472c8 -https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda#146402bf0f11cbeb8f781fa4309a95d3 +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.0-pyhcf101f3_1.conda#eec5b361dbbaa69dba05050977a414b0 -https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.3-py313habf4b1d_0.conda#26663e9d0c9b80a69ab380b0918c3940 +https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda#080a808fce955026bf82107d955d32da +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-py313h693d0ac_2.conda#125b3744e20247c93ee1137afa0da533 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.1-pyhd8ed1ab_0.conda#7de28c27fe620a4f7dbfaea137c6232b -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.8-pyhd8ed1ab_0.conda#3181cf53cd50513a1a7c00aae2f08e7a +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/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.0.0-pyh5552912_0.conda#dcff6f8ea9e86a0bda978b88f89f2310 -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.0-pyhd8ed1ab_0.conda#6fd1a65a2e8ea73120a9cc7f8e4848a9 +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/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda#2d983ff1b82a1ccb6f2e9d8784bdd6bd +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 https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960 @@ -366,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 @@ -381,22 +478,22 @@ 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.2.14-pyhd8ed1ab_0.conda#7e1e5ff31239f9cd5855714df8a3783d +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/async-lru-2.0.5-pyh29332c3_0.conda#d9d0f99095a9bb7e3641bca8c6ad2ac7 -https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.2-pyhd8ed1ab_0.conda#513e7fcc06c82b24c84ff88ece13ac9f +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.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.2-pyhcf101f3_0.conda#47b58fa741a608dac785b71b8083bdb7 +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 https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda#801dbf535ec26508fac6d4b24adfb76e https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-3.6.10-pyhd8ed1ab_0.conda#4d52bbdb661dc1b5a1c2aeb1afcd9a67 @@ -405,9 +502,9 @@ https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_ https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda#47672c493015ab57d5fcde9531ab18ef https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda#9453512288d20847de4356327d0e1282 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.0-py313_0.conda#4207a6c0c4f8ceff6b65c0b3fa9debea +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 @@ -416,83 +513,40 @@ 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 https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda#b3f0179590f3c0637b7eb5309898f79e -https://conda.anaconda.org/conda-forge/osx-64/graphviz-14.1.0-had0cc5b_0.conda#2b817259cccac25ca7190fe3a48d54d4 +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_0.conda#bf74a83f7a0f2a21b5d709997402cac4 +https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda#5498feb783ab29db6ca8845f68fa0f03 https://conda.anaconda.org/conda-forge/osx-64/numcodecs-0.16.5-py313h2f264a9_0.conda#296c6e5c1ecc11e592cc534fd73feac8 https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda#c56a7fa5597ad78b62e1f5d21f7f8b8f https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda#c1844a94b2be61bb03bbb71574a0abfc https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda#8e7be844ccb9706a999a337e056606ab https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda#77ae41598d63b453bb3c9052f4a14c4b -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/osx-64/h5py-3.15.1-nompi_py313h2a429bc_101.conda#de9fd6ce4bb0957d1909069fad48aafb -https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.7.3-pyhd8ed1ab_0.conda#4ce3dfa4440b4aa5364f4a6fcc3d7cb3 -https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda#972bdca8f30147135f951847b30399ea -https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.27-pyhd8ed1ab_0.conda#4f772d239ac5d22ef5d6eff78888e88d +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.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.26-pyhd8ed1ab_0.conda#5225da63f2304a4e3a58c6f10497c0ff -https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.2-h7983711_0.conda#e630b1baa02a5eeb0ef351c6125865c4 -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-h53ec75d_1.conda#5e9bee5fa11d91e1621e477c3cb9b9ba -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.1-hd1b02dc_0.conda#b4646b6ddcbcb3b10e9879900c66ed48 -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.11.0-h56a711b_1.conda#278ccb9a3616d4342731130287c3ba79 -https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.15.0-h388f2e7_1.conda#6b5f36e610295f4f859dd9cf680bbf7d -https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.13.0-h1984e67_1.conda#ef5701f2da108d432e7872d58e8ac64e -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-22.0.0-h563529e_6_cpu.conda#9cdb6f5779fb935d84e7cdaa00d5c26d -https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-22.0.0-h7751554_6_cpu.conda#1feda49b7df6cf16240c90b06e4220ec -https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-22.0.0-py313hff57800_0_cpu.conda#9685b1fb88da438a1151154c738d6840 -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-22.0.0-habb56ca_6_cpu.conda#886dc122316a8511edba3a3c53588916 -https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-22.0.0-h2db2d7d_6_cpu.conda#6167eebc2d1a893b5c9da5b28803c9b1 -https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-22.0.0-h2db2d7d_6_cpu.conda#d5a2c15f5cb9928b4d5847b2ca13af5f -https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-22.0.0-h4653b8a_6_cpu.conda#0420b6cb0c11dfaf0dbd607cd808cf9c -https://conda.anaconda.org/conda-forge/osx-64/pyarrow-22.0.0-py313habf4b1d_0.conda#f5e7a81f8f1b2073bc4c149365a8f1d4 +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.2.5-pyhd8ed1ab_0.conda#e6f85f3cd0c5aff4ef0e07e80f49fa39 +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 https://conda.anaconda.org/conda-forge/osx-64/cartopy-0.25.0-py313h2f264a9_1.conda#6d810702a3cccf099574172e96807159 https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda#d7585b6550ad04c8c5e21097ada2888e @@ -505,15 +559,15 @@ 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-2025.12.0-pyhcf101f3_1.conda#613cea9275c4773d0b53c879838ac0ad -https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.1-pyhd8ed1ab_0.conda#f301f72474b91f1f83d42bcc7d81ce09 -https://conda.anaconda.org/conda-forge/noarch/dask-2025.12.0-pyhcf101f3_0.conda#94d36804598479f9eafa9c973902280e +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.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.44.0-h163e534_0.conda#297d010f244b28d465a538b4f5044057 -https://conda.anaconda.org/conda-forge/osx-64/python-eccodes-2.44.0-py313h0f4b8c3_1.conda#62f2e1e44e0fd85d2034de228cdf3fb3 +https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.45.0-hef68630_0.conda#c2d8f6d37131139dbaeba869b036b9cb +https://conda.anaconda.org/conda-forge/osx-64/python-eccodes-2.45.0-np2py313h7488b0a_1.conda#c1ad796bc2195d11df1627a51d08e32d https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda#0f12f8436a2a238e255d49ea3f8aefe2 https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda#e585c71c2ed48e4eee1663d627ddcd47 -https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.conda#ea90ece1da754ca0c5d6766eb59908c2 +https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda#d957f10f516dcdeb9e382c91d771df12 https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda#1f878573c1ee2798c052bee1f5a94f50 https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda#81f981df273cd627927372680aa9dd31 diff --git a/envs/default_osx-arm64.pin.txt b/envs/default_osx-arm64.pin.txt index f0b622b50..93e5ba836 100644 --- a/envs/default_osx-arm64.pin.txt +++ b/envs/default_osx-arm64.pin.txt @@ -3,36 +3,35 @@ @EXPLICIT 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/liblzma-5.8.1-h39f12f2_2.conda#d6df911d4564d77c4374b02552cb17d1 -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.11-hfc2f54d_100_cp313.conda#18a8c69608151098a8fb75eea64cc266 -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/libopenblas-0.3.30-openmp_ha158390_3.conda#a18a7f471c517062ee71b843ef95eb8a +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/scipy-1.17.0-py313hc753a45_0.conda#9820f8f7d2f7b973e0b71c00adb32172 -https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda#4de79c071274a53dcaf2a8c749d1499e +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-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 @@ -43,11 +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/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/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 +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 @@ -61,37 +63,34 @@ https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda#164fc43f0b53b6e3a7bc7dce5e4f1dc9 https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py313hde1f3bb_1.conda#b03732afa9f4f54634d94eb920dfb308 -https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda#ab136e4c34e97f34fb621d2592a393d8 https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.3.0-py313h48bb75e_0.conda#54008c5cc8928e5cb5a0f9206b829451 https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda#9272daa869e03efe68833e3dc7a02130 https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda#53abe63df7e10a6ba605dc5f9f961d36 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/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/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.1.0-pyhdfd78af_0.conda#17232431f65ce347f972f0fd95d2e97a +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 https://conda.anaconda.org/bioconda/noarch/snakemake-interface-scheduler-plugins-2.0.2-pyhd4c3c12_0.conda#1500fccf5e46c7f91d14925449ff3632 https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda#e6fd8cfb23b294da699e395dbc968d11 -https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda#98f75f2ca3a222992e2230d7afc54bb8 +https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2#cbb15afc697a71cc9a0e9bfd75ae59cc 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/osx-arm64/liblapacke-3.11.0-5_h1b118fd_openblas.conda#f77f540d134d9edec0dbf69dba56a4ad @@ -100,11 +99,11 @@ https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-osi-0.108.11-ha2b0f8f_8 https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-clp-1.17.10-he934a02_4.conda#7ee39de6862705eb7bcad3bd95ecba34 https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cgl-0.60.9-h034796e_7.conda#7662f50cfe60644ba76c7b3a69db64cb https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cbc-2.10.12-h2032c40_5.conda#bd1ca992b0a0241fdfb49447d5b674aa -https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.1-pyhcf101f3_0.conda#d837065e4e0de4962c3462079c23f969 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda#3687cc0b82a8b4c17e1f0eb7e47163d5 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 @@ -124,11 +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.14.6-pyhdfd78af_0.conda#b4f16a0bcc52274012b0b14a2a6063b3 -https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2#1e3d84ab0cd46fbf1dd4e5b290f7c7a5 -https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.0.3-pyhdfd78af_0.conda#3ea81e75226d692c31fa3d115bda027b +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.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.11-hb0cad00_0.conda#aabef64b30defea8e9166b0b2248fa85 +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 @@ -142,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-h46dec42_0.conda#428720dc6e9451b0ec8a60f66ba8f04f +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 @@ -159,48 +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-h3dcb153_7.conda#2ba5a36f3e2ae3e2c843d428c9e8c16c +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 @@ -209,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 @@ -217,36 +220,35 @@ https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hc919400_1.con https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda#48ece20aa479be6ac9a284772827d00c https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.61.1-py313h7d74516_0.conda#894eb0c3e9a17643906a6da3209bf045 https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda#4c2a8fef270f6c69591889b93f9f55c1 -https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py313ha61f8ec_3.conda#5643cff3e9ab77999fba139465156e35 +https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py313h2af2deb_4.conda#afd3e394d14e627be0de6e8ee3553dae https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.8-py313h58042b9_0.conda#745c18472bc6d3dc9146c3dec18bb740 https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda#fd96da444e81f9e6fcaac38590f3dd42 https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda#62afb877ca2c2b4b6f9ecb37320085b6 https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda#edd329d7d3a4ab45dcf905899a7a6115 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.4-h51d1e36_0.conda#8ed0f86b7a5529b98ec73b43a53ce800 -https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_hd3baa01_104.conda#5a1cbaf2349dd2e6dd6cfaab378de51b -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/libaec-1.1.5-h8664d51_0.conda#13e6d9ae0efbc9d2e9a01a91f4372b41 +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/plotly-6.5.1-pyhd8ed1ab_0.conda#0a8b38871cab04059c1cc04853b415a2 +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/cftime-1.6.5-py313hf5115c3_0.conda#cf9d0a6870b4dea3a0eef73861b2a4cc -https://conda.anaconda.org/conda-forge/osx-arm64/netcdf4-1.7.4-nompi_py313hdfdf71f_101.conda#b8a8e2781332946e8560eb8b30084612 +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-py313h58d85ff_0.conda#13c6a5e612404503ec0b83cfc56ca813 +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 https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.11.05-h91c62da_0.conda#060f099756e6baf2ed51b9065e44eda8 https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.11.05-h64b956e_0.conda#1b35e663ed321840af65e7c5cde419f2 @@ -255,7 +257,7 @@ https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.73.1-h3063b79_1.conda https://conda.anaconda.org/conda-forge/osx-arm64/grpcio-1.73.1-py313hb057f1c_1.conda#eae3667f33e9e2a296b775547b42f506 https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda#003094932fb90de018f77a273b8a509b https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.73.1-pyhd8ed1ab_0.conda#5a2944f868149ad5a2e6588be8eed838 -https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda#09bb17ed307ad6ab2fd78d32372fdd4e +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda#c203d401759f448f9e792974e055bcdc https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda#58958bb50f986ac0c46f73b6e290d5fe https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda#644bd4ca9f68ef536b902685d773d697 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.3.0-pyhd8ed1ab_0.conda#ddf01a1d87103a152f725c7aeabffa29 @@ -267,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-pyhd8ed1ab_0.conda#862b63f7548be0c97e9c6f4f85959189 -https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda#9a4ab0a7b2c5362e9530b03cf563820b +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.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-2025.12.0-pyhcf101f3_1.conda#cc7b371edd70319942c802c7d828a428 +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.5.8-pyhd8ed1ab_1.conda#5fa196c3b07cabe3cd1dc9a369c785fe +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 @@ -291,67 +293,162 @@ 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.6-pyhd8ed1ab_1.conda#1cfa64a0a8211bafbb05e9b8f7e472c8 -https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda#146402bf0f11cbeb8f781fa4309a95d3 +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.0-pyhcf101f3_1.conda#eec5b361dbbaa69dba05050977a414b0 -https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.3-py313h8f79df9_0.conda#ed65e66c8dba8992d4ae6c5c8dcc7a21 +https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda#080a808fce955026bf82107d955d32da +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-py313h6fd2323_2.conda#8505100c615501ebc7b4b0f22818bd18 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.1-pyhd8ed1ab_0.conda#7de28c27fe620a4f7dbfaea137c6232b -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.8-pyhd8ed1ab_0.conda#3181cf53cd50513a1a7c00aae2f08e7a +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/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.0.0-pyh5552912_0.conda#dcff6f8ea9e86a0bda978b88f89f2310 -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.0-pyhd8ed1ab_0.conda#6fd1a65a2e8ea73120a9cc7f8e4848a9 +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/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda#2d983ff1b82a1ccb6f2e9d8784bdd6bd +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 https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960 @@ -366,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 @@ -381,22 +478,22 @@ 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.2.14-pyhd8ed1ab_0.conda#7e1e5ff31239f9cd5855714df8a3783d +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/async-lru-2.0.5-pyh29332c3_0.conda#d9d0f99095a9bb7e3641bca8c6ad2ac7 -https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.2-pyhd8ed1ab_0.conda#513e7fcc06c82b24c84ff88ece13ac9f +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.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.2-pyhcf101f3_0.conda#47b58fa741a608dac785b71b8083bdb7 +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 https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda#801dbf535ec26508fac6d4b24adfb76e https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-3.6.10-pyhd8ed1ab_0.conda#4d52bbdb661dc1b5a1c2aeb1afcd9a67 @@ -405,9 +502,9 @@ https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_ https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda#47672c493015ab57d5fcde9531ab18ef https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda#9453512288d20847de4356327d0e1282 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.0-py313_0.conda#c48052aa90ccd944ecbe60c44a2a1c81 +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 @@ -416,83 +513,40 @@ 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 https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda#b3f0179590f3c0637b7eb5309898f79e -https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.0-ha8f0fc4_0.conda#1463b9b703d3fc6eba63587c69611e91 +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_0.conda#bf74a83f7a0f2a21b5d709997402cac4 +https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda#5498feb783ab29db6ca8845f68fa0f03 https://conda.anaconda.org/conda-forge/osx-arm64/numcodecs-0.16.5-py313h7d16b84_0.conda#6a2c4584a1a126a1ecc459002bab966f https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda#c56a7fa5597ad78b62e1f5d21f7f8b8f https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda#c1844a94b2be61bb03bbb71574a0abfc https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda#8e7be844ccb9706a999a337e056606ab https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda#77ae41598d63b453bb3c9052f4a14c4b -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/osx-arm64/h5py-3.15.1-nompi_py313h7aa1c8b_101.conda#af275e004ef52480fccdde18f4bdcd12 -https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.7.3-pyhd8ed1ab_0.conda#4ce3dfa4440b4aa5364f4a6fcc3d7cb3 -https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda#972bdca8f30147135f951847b30399ea -https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.27-pyhd8ed1ab_0.conda#4f772d239ac5d22ef5d6eff78888e88d +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.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.26-pyhd8ed1ab_0.conda#5225da63f2304a4e3a58c6f10497c0ff -https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.2-hd2415e0_0.conda#1ae98806b064c48f184d7c6e0ac506b6 -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-h248ca61_1.conda#3ba9d0c21af2150cb92b2ab8bdad3090 -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.1-h4fd0076_0.conda#b5dea50c77ab3cc18df48bdc9994ac44 -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.11.0-h7e4aa5d_1.conda#ac9113ea0b7ed5ecf452503f82bf2956 -https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.15.0-h10d327b_1.conda#443b74cf38c6b0f4b675c0517879ce69 -https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.13.0-hb288d13_1.conda#595091ae43974e5059d6eabf0a6a7aa5 -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-22.0.0-he6e817a_6_cpu.conda#b972d880c503c30ee178489ec76bbd6d -https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-22.0.0-h75845d1_6_cpu.conda#51b139c330f194379c4271c91c9cd1c7 -https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-22.0.0-py313hb9a0e51_0_cpu.conda#8fa5bf808d5099be7a3d7855560c6d52 -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-22.0.0-h0ac143b_6_cpu.conda#4939c8e3ca5f98f229be9f318df740e2 -https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-22.0.0-hc317990_6_cpu.conda#f17f28aba732a290919eecdec17677d9 -https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-22.0.0-hc317990_6_cpu.conda#cf0d62de81a3a2b7afb723b4b629879a -https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-22.0.0-h144af7f_6_cpu.conda#58a5b39bc7d23fa938affe1bfc43c241 -https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-22.0.0-py313h39782a4_0.conda#602f2d43efb0dda27ed3b1c86b4cdb75 +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.2.5-pyhd8ed1ab_0.conda#e6f85f3cd0c5aff4ef0e07e80f49fa39 +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 https://conda.anaconda.org/conda-forge/osx-arm64/cartopy-0.25.0-py313h7d16b84_1.conda#65859d540753d1a0acb05029eb6cf492 https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda#d7585b6550ad04c8c5e21097ada2888e @@ -505,15 +559,15 @@ 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-2025.12.0-pyhcf101f3_1.conda#613cea9275c4773d0b53c879838ac0ad -https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.1-pyhd8ed1ab_0.conda#f301f72474b91f1f83d42bcc7d81ce09 -https://conda.anaconda.org/conda-forge/noarch/dask-2025.12.0-pyhcf101f3_0.conda#94d36804598479f9eafa9c973902280e +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.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.44.0-h6f4dcf9_0.conda#ed0d5a772f60e3c18f35125d1e23e7e5 -https://conda.anaconda.org/conda-forge/osx-arm64/python-eccodes-2.44.0-py313hc577518_1.conda#77b8497affc46fc25bf0a3f5f2d77e5e +https://conda.anaconda.org/conda-forge/osx-arm64/eccodes-2.45.0-h768f3a7_0.conda#73c9f89679eb90386f2787e7681e95b7 +https://conda.anaconda.org/conda-forge/osx-arm64/python-eccodes-2.45.0-np2py313h2962dae_1.conda#043a00e5b0a49bb00f3431ec1a0941d0 https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda#0f12f8436a2a238e255d49ea3f8aefe2 https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda#e585c71c2ed48e4eee1663d627ddcd47 -https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.conda#ea90ece1da754ca0c5d6766eb59908c2 +https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda#d957f10f516dcdeb9e382c91d771df12 https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda#1f878573c1ee2798c052bee1f5a94f50 https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda#81f981df273cd627927372680aa9dd31 diff --git a/envs/default_win-64.pin.txt b/envs/default_win-64.pin.txt index a284d679e..07800879b 100644 --- a/envs/default_win-64.pin.txt +++ b/envs/default_win-64.pin.txt @@ -6,27 +6,27 @@ https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_34.co 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/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/liblzma-5.8.1-h2466b09_2.conda#c15148b2e18da456f5108ccb5e411446 -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.11-h09917c8_100_cp313.conda#9e4c9a7ee9c4ab5b3778ab73e583283e +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/scipy-1.17.0-py313he51e9a2_0.conda#94daca8e09c661a3445476c720fc3e6a -https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda#4de79c071274a53dcaf2a8c749d1499e +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-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 @@ -37,11 +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/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/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 +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 @@ -56,43 +59,40 @@ https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda#164fc43f0b53b6e3a7bc7dce5e4f1dc9 https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.2.0-py313h3ebfc14_1.conda#916a39a0261621b8c33e9db2366dd427 -https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda#053b84beec00b71ea8ff7a4f84b55207 https://conda.anaconda.org/conda-forge/win-64/backports.zstd-1.3.0-py313h2a31948_0.conda#cdcdfe68c5bc9af9e908e35ebffc9fe1 https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda#9272daa869e03efe68833e3dc7a02130 https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda#53abe63df7e10a6ba605dc5f9f961d36 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/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/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.1.0-pyhdfd78af_0.conda#17232431f65ce347f972f0fd95d2e97a +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 https://conda.anaconda.org/bioconda/noarch/snakemake-interface-scheduler-plugins-2.0.2-pyhd4c3c12_0.conda#1500fccf5e46c7f91d14925449ff3632 https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda#e6fd8cfb23b294da699e395dbc968d11 -https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda#98f75f2ca3a222992e2230d7afc54bb8 +https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2#cbb15afc697a71cc9a0e9bfd75ae59cc 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 @@ -103,11 +103,11 @@ https://conda.anaconda.org/conda-forge/win-64/coin-or-osi-0.108.11-hd615c49_6.co https://conda.anaconda.org/conda-forge/win-64/coin-or-clp-1.17.10-h626fd10_2.conda#4fb1c61625995e7d0f14371bc0ba2852 https://conda.anaconda.org/conda-forge/win-64/coin-or-cgl-0.60.9-hacf86d0_5.conda#f6c0a31bbd15559ae27c11385ff1c360 https://conda.anaconda.org/conda-forge/win-64/coin-or-cbc-2.10.12-hd3ed8bd_3.conda#1a4baa2f67377e0c55199c0f6fb243c4 -https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.1-pyhcf101f3_0.conda#d837065e4e0de4962c3462079c23f969 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda#3687cc0b82a8b4c17e1f0eb7e47163d5 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 @@ -129,11 +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.14.6-pyhdfd78af_0.conda#b4f16a0bcc52274012b0b14a2a6063b3 -https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2#1e3d84ab0cd46fbf1dd4e5b290f7c7a5 -https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.0.3-pyhdfd78af_0.conda#3ea81e75226d692c31fa3d115bda027b +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.11-h37e10c4_0.conda#36a7142884f26724a3d33b2f80d13c2d +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 @@ -144,59 +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-h7b1ce8f_0.conda#9839364b9ca98be1917a72046e5880fd +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-hac9b6f3_7.conda#24cbdcf215a67f0e4d675686d6bfc080 +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/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/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda#083725d6cd3dc007f06d04bcf1e613a2 +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 @@ -205,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 @@ -213,7 +215,7 @@ https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.2.0-hfd05255_1.conda# https://conda.anaconda.org/conda-forge/win-64/brotli-1.2.0-h2d644bc_1.conda#bc58fdbced45bb096364de0fba1637af https://conda.anaconda.org/conda-forge/win-64/fonttools-4.61.1-py313hd650c13_0.conda#c6fbf3a96192c26a75ed5755bd904fea https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda#4c2a8fef270f6c69591889b93f9f55c1 -https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py313hf069bd2_3.conda#a1d5292683730418cd19b6e0cefcfc76 +https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py313h1a38498_4.conda#726aa233b5e4613e546ca84cd63cbd45 https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.8-py313he1ded55_0.conda#05f96c429201a64ea752decf4b910a7c https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda#fd96da444e81f9e6fcaac38590f3dd42 https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda#62afb877ca2c2b4b6f9ecb37320085b6 @@ -221,29 +223,28 @@ 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/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.4-h20038f6_0.conda#85a2bed45827d77d5b308cb2b165404f -https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_h89f0904_104.conda#9cc4a5567d46c7fcde99563e86522882 -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/libaec-1.1.5-haf901d7_0.conda#43b6385cfad52a7083f2c41984eb4e91 +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/plotly-6.5.1-pyhd8ed1ab_0.conda#0a8b38871cab04059c1cc04853b415a2 +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/cftime-1.6.5-py313h0591002_0.conda#75ee7a92ec8bb2d7537ae8906fb534b0 -https://conda.anaconda.org/conda-forge/win-64/netcdf4-1.7.4-nompi_py313h08d0110_101.conda#778189b924f9c6b448d69db5e2c76e03 +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_0.conda#0bf0115703fdcc7f4bfc2f458824d324 +https://conda.anaconda.org/conda-forge/win-64/google-crc32c-1.8.0-py313h5327936_1.conda#4f05c693f8d450b49711610815442761 https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda#ba7f04ba62be69f9c9fef0c4487c210b https://conda.anaconda.org/conda-forge/win-64/libabseil-20250512.1-cxx17_habfad5f_0.conda#d6a4cd236fc1c69a1cfc9698fb5e391f https://conda.anaconda.org/conda-forge/win-64/libre2-11-2025.11.05-h0eb2380_0.conda#960713477ad3d7f82e5199fa1b940495 @@ -254,7 +255,7 @@ https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.73.1-h317e13b_1.conda#85 https://conda.anaconda.org/conda-forge/win-64/grpcio-1.73.1-py313h3c83859_1.conda#1c1c68305b8e4594f993846576318c46 https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda#003094932fb90de018f77a273b8a509b https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.73.1-pyhd8ed1ab_0.conda#5a2944f868149ad5a2e6588be8eed838 -https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda#09bb17ed307ad6ab2fd78d32372fdd4e +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda#c203d401759f448f9e792974e055bcdc https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda#58958bb50f986ac0c46f73b6e290d5fe https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda#644bd4ca9f68ef536b902685d773d697 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.3.0-pyhd8ed1ab_0.conda#ddf01a1d87103a152f725c7aeabffa29 @@ -266,64 +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-pyhd8ed1ab_0.conda#862b63f7548be0c97e9c6f4f85959189 -https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda#9a4ab0a7b2c5362e9530b03cf563820b +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.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-2025.12.0-pyhcf101f3_1.conda#cc7b371edd70319942c802c7d828a428 +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.5.8-pyhd8ed1ab_1.conda#5fa196c3b07cabe3cd1dc9a369c785fe +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.6-pyhd8ed1ab_1.conda#1cfa64a0a8211bafbb05e9b8f7e472c8 -https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda#146402bf0f11cbeb8f781fa4309a95d3 +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.0-pyhcf101f3_1.conda#eec5b361dbbaa69dba05050977a414b0 -https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.3-py313hfa70ccb_0.conda#fd5f875c18a10f18bd294f5d12f766b4 +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.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_2.conda#c21e0b30ab92ca01e64e1891b76ffeac 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.1-pyhd8ed1ab_0.conda#7de28c27fe620a4f7dbfaea137c6232b -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.8-pyhd8ed1ab_0.conda#3181cf53cd50513a1a7c00aae2f08e7a +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/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_1.conda#2dfbc5aaac3424065eb81ec9a9f49761 +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 @@ -332,42 +424,40 @@ 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.0.0-pyh6dadd2b_0.conda#40df72e963d80a403c1861ae9428b13c +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.0-pyhd8ed1ab_0.conda#6fd1a65a2e8ea73120a9cc7f8e4848a9 +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/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda#2d983ff1b82a1ccb6f2e9d8784bdd6bd +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 https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960 @@ -382,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 @@ -397,20 +487,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.2.14-pyhd8ed1ab_0.conda#7e1e5ff31239f9cd5855714df8a3783d +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/async-lru-2.0.5-pyh29332c3_0.conda#d9d0f99095a9bb7e3641bca8c6ad2ac7 -https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.2-pyhd8ed1ab_0.conda#513e7fcc06c82b24c84ff88ece13ac9f +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.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.2-pyhcf101f3_0.conda#47b58fa741a608dac785b71b8083bdb7 +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 https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda#801dbf535ec26508fac6d4b24adfb76e https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-3.6.10-pyhd8ed1ab_0.conda#4d52bbdb661dc1b5a1c2aeb1afcd9a67 @@ -419,69 +509,37 @@ https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_ https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda#47672c493015ab57d5fcde9531ab18ef https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda#9453512288d20847de4356327d0e1282 https://conda.anaconda.org/conda-forge/win-64/jpype1-1.6.0-py313hf069bd2_1.conda#80013b2100a625d9886352f9d8d391bb -https://conda.anaconda.org/gurobi/win-64/gurobi-13.0.0-py313_0.conda#5f10f07902384b6ed57ec17b2330a050 +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_0.conda#bf74a83f7a0f2a21b5d709997402cac4 +https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda#5498feb783ab29db6ca8845f68fa0f03 https://conda.anaconda.org/conda-forge/win-64/numcodecs-0.16.5-py313hc90dcd4_0.conda#4006d795b35200d0d6e28a1de84dfcc5 https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda#c56a7fa5597ad78b62e1f5d21f7f8b8f https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda#c1844a94b2be61bb03bbb71574a0abfc https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda#8e7be844ccb9706a999a337e056606ab https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda#77ae41598d63b453bb3c9052f4a14c4b -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/win-64/h5py-3.15.1-nompi_py313hf7f959b_101.conda#29bcfb479b3030e2c190f53058b9a345 -https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.7.3-pyhd8ed1ab_0.conda#4ce3dfa4440b4aa5364f4a6fcc3d7cb3 -https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda#972bdca8f30147135f951847b30399ea -https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.27-pyhd8ed1ab_0.conda#4f772d239ac5d22ef5d6eff78888e88d +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.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.26-pyhd8ed1ab_0.conda#5225da63f2304a4e3a58c6f10497c0ff -https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.11.2-hb980946_0.conda#405c392813b74f3df06276e99c0e2841 -https://conda.anaconda.org/conda-forge/win-64/orc-2.2.1-h7414dfc_0.conda#a9b6ebf475194b0e5ad43168e9b936a7 -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-22.0.0-h89d7da9_6_cpu.conda#e9fe1ee5e997417347e1ee312af94092 -https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-22.0.0-h2db994a_6_cpu.conda#922c36699625c3f49940337feeba8291 -https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-22.0.0-py313h5921983_0_cpu.conda#ce1a640327f28325e345246fa838bd41 -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-22.0.0-h7051d1f_6_cpu.conda#d840a2b45e737bb768ec4e0d5bf36c90 -https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-22.0.0-h7d8d6a5_6_cpu.conda#bbef682dd3d8f686faad9f1a94b3d9ae -https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-22.0.0-h7d8d6a5_6_cpu.conda#974630001cbf61d4d94a7c7c142eade4 -https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-22.0.0-hf865cc0_6_cpu.conda#01d0606bf4202d358a71545759223202 -https://conda.anaconda.org/conda-forge/win-64/pyarrow-22.0.0-py313hfa70ccb_0.conda#dc9d22fa905cbb90914b29dc9791985d +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.2.5-pyhd8ed1ab_0.conda#e6f85f3cd0c5aff4ef0e07e80f49fa39 +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 https://conda.anaconda.org/conda-forge/win-64/cartopy-0.25.0-py313hc90dcd4_1.conda#a3e17bc9d5a5e82c0c0fbea5ced9a5ff https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda#d7585b6550ad04c8c5e21097ada2888e @@ -494,16 +552,16 @@ 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-2025.12.0-pyhcf101f3_1.conda#613cea9275c4773d0b53c879838ac0ad -https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.1-pyhd8ed1ab_0.conda#f301f72474b91f1f83d42bcc7d81ce09 -https://conda.anaconda.org/conda-forge/noarch/dask-2025.12.0-pyhcf101f3_0.conda#94d36804598479f9eafa9c973902280e +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.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 -https://conda.anaconda.org/conda-forge/win-64/eccodes-2.44.0-h2bffdaa_0.conda#c0824c1cb3674ad22be82d49c9dc0c59 -https://conda.anaconda.org/conda-forge/win-64/python-eccodes-2.44.0-py313h0591002_1.conda#0de0cc9bdbefa9af557c42e26792a6ca +https://conda.anaconda.org/conda-forge/win-64/eccodes-2.45.0-h2bffdaa_0.conda#d2813976958e0066e083e5e7f8e3480e +https://conda.anaconda.org/conda-forge/win-64/python-eccodes-2.45.0-np2py313haacffc7_1.conda#82fe43e13ca2ca5efc8251da86362acf https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda#0f12f8436a2a238e255d49ea3f8aefe2 https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda#e585c71c2ed48e4eee1663d627ddcd47 -https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.conda#ea90ece1da754ca0c5d6766eb59908c2 +https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda#d957f10f516dcdeb9e382c91d771df12 https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda#1f878573c1ee2798c052bee1f5a94f50 https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda#81f981df273cd627927372680aa9dd31 diff --git a/envs/environment.yaml b/envs/environment.yaml index 7cde1e9b6..1d6e781fa 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -35,17 +35,19 @@ dependencies: - jpype1 >=1.6.0 - jupyter >=1.1.1 - libgdal-netcdf >=3.10.3 -- linopy >=0.4.4 +- linopy >=0.6.1 - lxml >=6.0.2 - matplotlib >=3.10.7 - memory_profiler >=0.61.0 -- netcdf4 >=1.7.2 +- netcdf4 >=1.7.2,!=1.7.4 - networkx >=3.5 - numpy >=1.26.4 - openpyxl >=3.1.5 - pandas >=2.1 - plotly >=6.4.0 - powerplantmatching >=0.5.15 +- pydantic >=2 +- python-dotenv >=1.0 - pre-commit >=4.3.0 - proj >=9.6.2 - pylint >=4.0.2 @@ -57,13 +59,14 @@ 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 - scipy >=1.16.3 - seaborn >=0.13.2 - shapely >=2.0 - snakemake-executor-plugin-cluster-generic >=1.0.9 -- snakemake-executor-plugin-slurm >=1.9.2 - snakemake-minimal >=9 - snakemake-storage-plugin-http >=0.3 - tenacity >=9.1.2 @@ -72,5 +75,10 @@ dependencies: - xarray >=2024.3.0,<2025.7.0 - xlrd >=2.0.2 - yaml >=0.2.5 -- snakemake-storage-plugin-cached-http >=0.1.0 - +- 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 +- snakemake-executor-plugin-slurm >=1.9.2 diff --git a/pixi.lock b/pixi.lock index ae49fd778..c2b211eea 100644 --- a/pixi.lock +++ b/pixi.lock @@ -9,30 +9,29 @@ environments: pypi-prerelease-mode: if-necessary-or-explicit 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 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.2-py312h27b7581_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.3-py312h5d8c7f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.14-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + - 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.0-pyhcf101f3_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/arcosparse-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-25.1.0-py312h4c3975b_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.2-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.4-py312h7900ff3_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.0.5-pyh29332c3_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 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda @@ -52,50 +51,51 @@ 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.15.0-h2a74896_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.11.0-h3d7a050_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.13.0-hf38f1be_1.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/backports.zstd-1.2.0-py312h90b7ffd_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-py312h90b7ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.10-pyhd8ed1ab_0.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.53-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.53-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py312hfb8c2c5_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-py312hdb49522_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/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.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/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + - 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-py312hf79963d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-26.1.0-pyhcf101f3_1.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-2025.11.12-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-py312h460c074_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.4-py312h4f23490_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py312h4f23490_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 - conda: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-cbc-2.10.12-h4d16d09_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-cgl-0.60.9-hc46dffc_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-clp-1.17.10-hc03379b_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-cbc-2.10.12-h4d16d09_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-cgl-0.60.9-hc46dffc_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-clp-1.17.10-hc03379b_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-osi-0.108.11-hf4fecb4_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-utils-2.11.12-hc93afbd_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda @@ -104,47 +104,47 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/conda-inject-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/configargparse-1.7.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/connection_pool-0.0.3-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312hd9148b4_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.2.5-pyhd8ed1ab_0.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/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.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_1.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-py312h8285ef7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py312h8285ef7_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_0.conda + - 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.0-pyhcf101f3_1.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-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_1.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.3-pyhd8ed1ab_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.44.0-h83bc92c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_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/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.8-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 - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.128.0-h0ea4129_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.20-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.128.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.129.0-hccfc660_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.129.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-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-py312h1289d80_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.10.1-py312h053e1f3_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -152,7 +152,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 @@ -161,59 +161,65 @@ 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-py312h447239a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.12.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/furl-2.1.4-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/linux-64/gdk-pixbuf-2.44.5-h2b0a6b4_1.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.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.14.1-h480dda7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.4-h1000f5c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - 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.45-pyhff2d567_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/noarch/gitpython-3.1.46-pyhd8ed1ab_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.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.7.1-py312h03f33d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.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.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.0-h8b86629_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.3.0-py312h1289d80_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.3.1-py312h8285ef7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.73.1-py312h6f3464c_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/linux-64/gtk3-3.24.43-h993cebd_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-ha5ea40c_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/gurobi/linux-64/gurobi-13.0.0-py312_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/gurobi/linux-64/gurobi-13.0.1-py312_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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.7.3-pyhd8ed1ab_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_py312ha4f8f14_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.2.0-h15599e2_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_104.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/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.7-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.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/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/linux-64/httptools-0.7.1-py312h4c3975b_1.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/noarch/iam-units-2025.10.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.15-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-py312h4c3975b_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 @@ -221,64 +227,67 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/intervals-0.9.2-pyhd8ed1ab_1.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.8.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-8.1.8-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/noarch/ixmp4-0.14.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jpype1-1.6.0-py312hd9148b4_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.12.1-pyhd8ed1ab_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.25.1-pyhe01879c_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.1-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.7.0-pyhcf101f3_0.conda + - 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.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.1-pyhd8ed1ab_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.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-3.0.16-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py312h0a2e395_2.conda - 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.17-h717163a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_104.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/lcms2-2.18-h0c24ade_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 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.2-gpl_h7be2006_100.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-22.0.0-hb6ed5f4_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-22.0.0-h635bf11_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-22.0.0-h8c2c5c3_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-22.0.0-h635bf11_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-22.0.0-h3f74fd7_6_cpu.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-h40b5c2d_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.0-h635bf11_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.0-h8c2c5c3_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.0-h635bf11_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.0-h3f74fd7_2_cpu.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.7-default_h99862b1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.7-default_h746c552_1.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.17.0-h4e3cde8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-h4e3cde8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.125-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda @@ -286,41 +295,43 @@ 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/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.10.3-h1f481a6_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf4-3.10.3-ha810028_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf5-3.10.3-h966a9c2_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-netcdf-3.10.3-ha526aae_27.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/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.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.12.1-default_hafda6a7_1003.conda + - 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.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.7-hf7376ad_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.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/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/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 @@ -328,40 +339,41 @@ 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-22.0.0-h7376487_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.0-h7376487_2_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.53-h421ea60_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.1-h5c52fec_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_2.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-gpl_h2abfd87_119.conda - 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.1-h0c1763c_0.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.2-hfe17d71_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-h5347b49_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/libuv-1.51.0-hb03c661_1.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.1-hca5e8e5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-ha9997c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-h26afc86_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.1-h26afc86_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-hca6bf5a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-he237659_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.1-he237659_1.conda - 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.5.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.4-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-py312h63ddcf0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda @@ -369,6 +381,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.8-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.8-py312he3d6523_0.conda @@ -378,7 +391,7 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py312hd9148b4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.0-py312h8a5da7c_0.conda @@ -386,174 +399,189 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/mumps-include-5.7.3-h82cca05_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mumps-seq-5.7.3-h27a6a8b_0.conda - 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/linux-64/mypy-1.19.1-py312h4c3975b_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.13.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-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/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.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.3-nompi_py312hf6400b3_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda - 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-py312hf79963d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.14.1-py312h88efc94_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.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-py312h7f6eeab_2.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/orc-2.2.1-hd747db4_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.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/orderedmultidict-1.0.1-pyhd8ed1ab_2.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-py312hf79963d_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/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/passlib-1.7.4-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-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/linux-64/pendulum-3.1.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pendulum-3.2.0-py312h868fb18_2.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/noarch/phonenumbers-8.13.55-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.0.0-py312h50c33e8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py312h50c33e8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.2-pyhcf101f3_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/plotly-6.5.0-pyhd8ed1ab_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.36.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.36.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/pre-commit-4.5.0-pyha770c72_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-h99ae125_0.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.23.1-pyhd8ed1ab_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-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-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.1.3-py312h5253ce2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/psycopg-3.3.2-pyh848bd53_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psycopg-c-3.3.2-py312hc3ef785_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/noarch/psycopg-3.3.3-pyh848bd53_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psycopg-c-3.3.3-py312hc3ef785_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-py312hd0750ca_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/noarch/pyam-3.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-22.0.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-22.0.0-py312hc195796_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-23.0.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.0-py312h2054cf2_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 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - 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-py312h868fb18_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.12.0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.8.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.13.1-pyhd8ed1ab_0.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.11.0-py312h02b19dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py312h053e1f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyomo-6.9.5-py312h1289d80_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.2.5-pyhcf101f3_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-py312h9b6a7d9_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyscipopt-5.6.0-py312h1289d80_1.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-6.1.0-np2py312h0f77346_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-py312h9da60e5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.2-py312h9da60e5_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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py312hefc0c3f_10.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-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-hd63d673_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.12-hd63d673_2_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/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2.44.0-py312h4f23490_1.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-fastjsonschema-2.21.2-pyhe01879c_0.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-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.7.8-py312h5253ce2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.21-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.8.1-py312h5253ce2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_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.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/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - 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/pyzmq-27.1.0-py312hfb55c3c_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/pyzmq-27.1.0-py312hda471dd_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.10.1-h6f76662_2.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-py312h1289d80_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.4.4-py312h762fea3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.5.0-py312hcedc861_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-pyhd8ed1ab_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/rich-14.2.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.17.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py312h868fb18_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-py312h5253ce2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.9-h4196e79_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.2-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-np2py312h3226591_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/scipy-1.16.3-py312h7a1785b_1.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-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/semver-3.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.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_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-py312h383787d_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-py312h4c3975b_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.0.3-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2 + - 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 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda - 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-minimal-9.14.4-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.1.0-pyhdfd78af_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.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 - conda: https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.43-py312h4c3975b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.46-py312h5253ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-arrow-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-babel-0.42.1-hd8ed1ab_0.conda @@ -566,60 +594,64 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-phone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-timezone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-url-0.42.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.51.1-hbc0de68_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.46-pyh0a47959_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.46-pyh0a47959_1.conda + - 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/noarch/starlette-0.50.0-pyhfdc7a7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.52.1-pyhfdc7a7d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py312h4f23490_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/terminado-0.18.1-pyh0d859eb_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/linux-64/time-machine-3.2.0-py312h5253ce2_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/linux-64/time-machine-2.19.0-py312h5253ce2_2.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/toml-0.10.2-pyhcf101f3_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.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-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-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/typer-0.21.1-pyhf8876ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.21.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.21.1-h378290b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-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-h8577fbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312hd9148b4_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.0-py312h4c3975b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ujson-5.11.0-py312h8285ef7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.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/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/urllib3-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.40.0-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.40.0-h4cd5af1_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/uvicorn-0.41.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.41.0-he9f3e0c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.22.1-py312h4c3975b_1.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.35.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.38.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.1-py312h0ccc70a_0.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.2.14-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/linux-64/websockets-16.0-py312h5253ce2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.15-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/wquantiles-0.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.3-py312h4c3975b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda @@ -629,31 +661,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-h988505b_0.conda + - 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.5-h5888daf_1.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-libxinerama-1.1.6-hecca717_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.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.2-ha02ee65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.2-ha02ee65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.2-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.22.0-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda @@ -662,7 +696,8 @@ 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-h54a6638_0.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: - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda @@ -670,14 +705,14 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.13.2-py312h352d07c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.13.3-py312h80cd6c1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_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.0-pyhcf101f3_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arcosparse-0.4.2-pyhd8ed1ab_0.conda @@ -685,9 +720,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-25.1.0-py312h80b0991_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.2-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.4-py312hb401068_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.0.5-pyh29332c3_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 - conda: https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda @@ -704,50 +739,51 @@ 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.15.0-h388f2e7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.11.0-h56a711b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.13.0-h1984e67_1.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/backports.zstd-1.2.0-py312hcb931b7_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-py312h6917036_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bcrypt-5.0.0-py312h8a6388b_1.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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.10-pyhd8ed1ab_0.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.53-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.53-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bottleneck-1.6.0-np2py312he8eb05d_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-py312h4b46afd_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/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.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/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + - 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-py312h86abcb1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-26.1.0-pyhcf101f3_1.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-2025.11.12-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-py312he90777b_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.4-py312h587b97d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cftime-1.6.5-py312h8ab2c85_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 - conda: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-cbc-2.10.12-h084678f_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-cgl-0.60.9-hbb40df2_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-clp-1.17.10-heb008f4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-cbc-2.10.12-h2b2dcb5_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-cgl-0.60.9-h62ac857_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-clp-1.17.10-h58ba847_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-osi-0.108.11-hcf72bcd_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-utils-2.11.12-h6e60e65_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda @@ -756,45 +792,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/conda-inject-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/configargparse-1.7.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/connection_pool-0.0.3-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py312hd099df3_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.2.5-pyhd8ed1ab_0.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/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.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/cyrus-sasl-2.1.28-h610c526_0.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.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.19-py312h6c02384_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_1.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-py312h29de90a_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_0.conda + - 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.0-pyhcf101f3_1.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-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_1.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.3-pyhd8ed1ab_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.44.0-h163e534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.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/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.8-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 - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.128.0-h0ea4129_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.20-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.128.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.129.0-hccfc660_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.129.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-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-py312h69bf00f_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fiona-1.10.1-py312hb20e208_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -802,7 +838,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 @@ -810,181 +846,193 @@ 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-py312h18bfd43_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.12.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/furl-2.1.4-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/osx-64/gdk-pixbuf-2.44.5-hae309b2_1.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.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/geos-3.14.1-he483b9e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.7.4-h6952e58_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.conda - 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.45-pyhff2d567_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/noarch/gitpython-3.1.46-pyhd8ed1ab_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.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.7.1-py312h0d55a24_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.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.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 - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h21dd04a_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-14.1.0-had0cc5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.3.0-py312h69bf00f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-14.1.2-h44fc223_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.3.1-py312h29de90a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/grpcio-1.73.1-py312h53eab48_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/osx-64/gtk3-3.24.43-h5e629aa_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-hf2d442a_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - - conda: https://conda.anaconda.org/gurobi/osx-64/gurobi-13.0.0-py312_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/gurobi/osx-64/gurobi-13.0.1-py312_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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.7.3-pyhd8ed1ab_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_py312hcf08926_101.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-12.2.0-hc5d3ef4_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_hc1508a4_104.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/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.7-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_3.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/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/osx-64/httptools-0.7.1-py312h80b0991_1.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/noarch/iam-units-2025.10.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.15-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-py312h2f459f6_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/infinity-1.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/intervals-0.9.2-pyhd8ed1ab_1.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.8.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-8.1.8-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/noarch/ixmp4-0.14.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jpype1-1.6.0-py312hedd4973_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.12.1-pyhd8ed1ab_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.25.1-pyhe01879c_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.1-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.7.0-pyhcf101f3_0.conda + - 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.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.1-pyhd8ed1ab_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.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-3.0.16-pyhcf101f3_1.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-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/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_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/lcms2-2.18-h90db99b_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 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.4-ha6bc127_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.8.2-gpl_h889603c_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-22.0.0-h563529e_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-22.0.0-h2db2d7d_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-22.0.0-h7751554_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-22.0.0-h2db2d7d_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-22.0.0-h4653b8a_6_cpu.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-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.17.0-h7dd4100_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.7-h3d58e20_0.conda + - 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-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/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.10.3-hb8c6b92_27.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf4-3.10.3-h0c59102_27.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf5-3.10.3-ha7247fd_27.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-netcdf-3.10.3-hee41eee_27.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/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.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 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libhwloc-2.12.1-default_h273dbb7_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libhwloc-2.12.2-default_h273dbb7_1000.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libhwy-1.3.0-hab838a1_1.conda - 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.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.1-hd471939_2.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/liblzma-5.8.2-h11316ed_0.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/libntlm-1.8-h6e16a3a_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-22.0.0-habb56ca_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.53-h380d223_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpq-18.1-h1e038c5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-h03562ea_2.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/libpq-18.2-hb73b81d_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/libscotch-7.0.11-int64_h80fc1e8_0.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/libspatialite-5.1.0-gpl_hb921464_119.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.1-h6cc646a_0.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 - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-h687e942_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-ha0a348c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.2-h7983711_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.3-hc282952_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-ha1d9b0f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h7b7ecba_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-devel-2.15.1-h7b7ecba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-he456531_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h24ca049_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-devel-2.15.1-h24ca049_1.conda - 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.5.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.7-h472b3d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.4-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-py312hd94307c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-4.4.5-py312ha706d14_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda @@ -992,6 +1040,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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-py312hacf3034_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.8-py312hb401068_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.8-py312h7894933_0.conda @@ -1001,180 +1050,195 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.2-py312hd099df3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.7.0-py312h2352a57_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/osx-64/mypy-1.19.1-py312h80b0991_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.13.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-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/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.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 - conda: https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.7.3-nompi_py312hab8b850_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h53ec75d_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h06076ce_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda - 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-py312h86abcb1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numexpr-2.14.1-py312hd12f69b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-1.26.4-py312he3a82b2_0.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/openldap-2.6.10-hd8a590d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312hc14bf67_2.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/orc-2.2.1-hd1b02dc_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.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/orderedmultidict-1.0.1-pyhd8ed1ab_2.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-py312h86abcb1_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-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/passlib-1.7.4-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-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/osx-64/pendulum-3.1.0-py312h0d0de52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pendulum-3.2.0-py312h933127a_2.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/noarch/phonenumbers-8.13.55-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.0.0-py312hea0c9db_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py312h4985050_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.2-pyhcf101f3_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/plotly-6.5.0-pyhd8ed1ab_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.36.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.36.1-py310hfb6bc98_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/pre-commit-4.5.0-pyha770c72_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.0-h3124640_0.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.23.1-pyhd8ed1ab_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-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-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.1.3-py312h01f6755_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/psycopg-3.3.2-pyh848bd53_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psycopg-c-3.3.2-py312ha23389c_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/noarch/psycopg-3.3.3-pyh848bd53_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psycopg-c-3.3.3-py312h87b31b3_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-py312hda2ad9a_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/noarch/pyam-3.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-22.0.0-py312hb401068_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-22.0.0-py312hefc66a4_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-23.0.0-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.0-py312hfcd758a_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 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - 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-py312h8a6388b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.12.0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.8.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.13.1-pyhd8ed1ab_0.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-py312h4a480f0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-12.1-py312h1993040_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyogrio-0.11.0-py312h4bcfd6b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyogrio-0.12.1-py312h17ccd7d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyomo-6.9.5-py312h69bf00f_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.2.5-pyhcf101f3_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-py312hfea2d77_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyscipopt-5.6.0-py312h462f358_1.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-6.1.0-np2py312h834d234_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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py312he4c742b_10.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-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-h74c2667_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.12-h74c2667_2_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/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-eccodes-2.44.0-py312h391ab28_1.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-fastjsonschema-2.21.2-pyhe01879c_0.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-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.7.8-py312hf7082af_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.21-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.8.1-py312hba6025d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_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.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/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - 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/pyzmq-27.1.0-py312hb7d603e_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/pyzmq-27.1.0-py312h2ac7433_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.4-py312hd11fb3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rasterio-1.5.0-py312h6f80297_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-pyhd8ed1ab_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/rich-14.2.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.17.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.30.0-py312h8a6388b_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-py312hf7082af_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.14.9-h6e677d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.15.2-h8ee721d_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-np2py312hc921ccd_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/scipy-1.16.3-py312he2acf2f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.8.0-np2py312h47bbdc5_1.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-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/semver-3.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.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_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-py312hd8edc82_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-py312h80b0991_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.0.3-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2 + - 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 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda - 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-minimal-9.14.4-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.1.0-pyhdfd78af_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.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 - conda: https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.43-py312h80b0991_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.46-py312hf7082af_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-arrow-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-babel-0.42.1-hd8ed1ab_0.conda @@ -1187,65 +1251,71 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-phone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-timezone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-url-0.42.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.51.1-h9e4bfbb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.46-pyh0a47959_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.46-pyh0a47959_1.conda + - 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/noarch/starlette-0.50.0-pyhfdc7a7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.52.1-pyhfdc7a7d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.14.6-py312h391ab28_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-hf0c99ee_1.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/terminado-0.18.1-pyh31c8845_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/osx-64/time-machine-3.2.0-py312h01f6755_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/osx-64/time-machine-2.19.0-py312h01f6755_2.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/toml-0.10.2-pyhcf101f3_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.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-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-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/typer-0.21.1-pyhf8876ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.21.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.21.1-h378290b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-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-h8577fbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hedd4973_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-17.0.0-py312h80b0991_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ujson-5.11.0-py312h2ac44ba_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py312h0aa9c5c_0.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/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/urllib3-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.40.0-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.40.0-h4cd5af1_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/uvicorn-0.41.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.41.0-he9f3e0c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/uvloop-0.22.1-py312h80b0991_1.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.35.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.38.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/watchfiles-1.1.1-py312h1f62012_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.14-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/osx-64/websockets-16.0-py312hf7082af_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.15-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/wquantiles-0.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-1.17.3-py312h2f459f6_1.conda - 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-hd0321b6_0.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 @@ -1257,7 +1327,8 @@ 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-h53ec75d_0.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: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda @@ -1265,14 +1336,14 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.2-py312he52fbff_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.3-py312h9f8c436_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_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.0-pyhcf101f3_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arcosparse-0.4.2-pyhd8ed1ab_0.conda @@ -1280,9 +1351,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-25.1.0-py312h4409184_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.2-py312h81bd7bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.4-py312h81bd7bf_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.0.5-pyh29332c3_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 - conda: https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda @@ -1299,50 +1370,51 @@ 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.15.0-h10d327b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.11.0-h7e4aa5d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.13.0-hb288d13_1.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/backports.zstd-1.2.0-py312h84d6f5f_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-py312h44dc372_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bcrypt-5.0.0-py312h6ef9ec0_1.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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.10-pyhd8ed1ab_0.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.53-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.53-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bottleneck-1.6.0-np2py312h931d34d_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-py312h0dfefe5_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/noarch/ca-certificates-2025.11.12-hbd8a1cb_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/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - 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-py312h5978115_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-26.1.0-pyhcf101f3_1.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-2025.11.12-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-py312h1b4d9a2_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.4-py312hc7121bb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.5-py312hf57c059_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 - conda: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cbc-2.10.12-h0c75da4_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cgl-0.60.9-h24d7dbf_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-clp-1.17.10-ha5fe85a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cbc-2.10.12-h2032c40_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cgl-0.60.9-h034796e_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-clp-1.17.10-he934a02_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-osi-0.108.11-ha2b0f8f_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-utils-2.11.12-hbea9910_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda @@ -1351,45 +1423,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/conda-inject-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/configargparse-1.7.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/connection_pool-0.0.3-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312h84eede6_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.2.5-pyhd8ed1ab_0.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/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.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/cyrus-sasl-2.1.28-ha1cbb27_0.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.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.19-py312h56d30c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_1.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-py312h6510ced_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_0.conda + - 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.0-pyhcf101f3_1.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-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_1.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.3-pyhd8ed1ab_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.44.0-h6f4dcf9_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.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/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.8-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 - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.128.0-h0ea4129_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.20-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.128.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.129.0-hccfc660_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.129.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-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-py312h455b684_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.10.1-py312h515fe7d_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -1397,7 +1469,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 @@ -1405,181 +1477,193 @@ 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-py312h512c567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.12.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/furl-2.1.4-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/osx-arm64/gdk-pixbuf-2.44.5-h4e57454_1.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.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/geos-3.14.1-h5afe852_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/geotiff-1.7.4-hf862be1_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - 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.45-pyhff2d567_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/noarch/gitpython-3.1.46-pyhd8ed1ab_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.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.7.1-py312h859a1db_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.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.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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.0-ha8f0fc4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.3.0-py312h455b684_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.2-hec8c438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.3.1-py312h6510ced_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/grpcio-1.73.1-py312h9bc1d27_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/osx-arm64/gtk3-3.24.43-h5febe37_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-hc0f3e19_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - - conda: https://conda.anaconda.org/gurobi/osx-arm64/gurobi-13.0.0-py312_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/gurobi/osx-arm64/gurobi-13.0.1-py312_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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.7.3-pyhd8ed1ab_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_py312h4eecd6b_101.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-12.2.0-haf38c7b_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_hd3baa01_104.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/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.7-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_3.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/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/osx-arm64/httptools-0.7.1-py312h4409184_1.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/noarch/iam-units-2025.10.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.15-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-py312h163523d_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/infinity-1.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/intervals-0.9.2-pyhd8ed1ab_1.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.8.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-8.1.8-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/noarch/ixmp4-0.14.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jpype1-1.6.0-py312ha0dd364_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.12.1-pyhd8ed1ab_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.25.1-pyhe01879c_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.1-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.7.0-pyhcf101f3_0.conda + - 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.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.1-pyhd8ed1ab_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.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-3.0.16-pyhcf101f3_1.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-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/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_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/lcms2-2.18-hdfa7624_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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.4-h51d1e36_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.8.2-gpl_h46575ef_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-22.0.0-he6e817a_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-22.0.0-hc317990_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-22.0.0-h75845d1_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-22.0.0-hc317990_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-22.0.0-h144af7f_6_cpu.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-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.17.0-hdece5d2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.7-hf598326_0.conda + - 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-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/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.10.3-h9991b8b_27.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf4-3.10.3-he522aa2_27.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf5-3.10.3-hdacffec_27.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-netcdf-3.10.3-h1c3283e_27.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/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.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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.12.1-default_ha3cc4f2_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.12.2-default_ha3cc4f2_1000.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwy-1.3.0-h48b13b8_1.conda - 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.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.1-h39f12f2_2.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/liblzma-5.8.2-h8088a28_0.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/libntlm-1.8-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_3.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-22.0.0-h0ac143b_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.53-hfab5511_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-18.1-h944245b_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h658db43_2.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/libpq-18.2-h6caddbb_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/libscotch-7.0.11-int64_hd8baee2_0.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/libspatialite-5.1.0-gpl_ha239c29_119.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h9a5124b_0.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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h14a376c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h4030677_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.2-hd2415e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.3-h2431656_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h6caf38d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h0ff4647_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h9329255_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-devel-2.15.1-h9329255_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h5ef1a60_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h8d039ee_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-devel-2.15.1-h8d039ee_1.conda - 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.5.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.7-h4a912ad_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.4-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-py312h447b5cf_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.4.5-py312h2b25a0d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda @@ -1587,6 +1671,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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-py312h5748b74_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.8-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.8-py312h605b88b_0.conda @@ -1596,180 +1681,195 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.2-py312h84eede6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.7.0-py312hf0dca4a_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/osx-arm64/mypy-1.19.1-py312hefc2c51_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.13.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-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/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.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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/netcdf4-1.7.3-nompi_py312h947358d_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h248ca61_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h784d473_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda - 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-py312h5978115_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numexpr-2.14.1-py312h3de7d89_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.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/openldap-2.6.10-hbe55e7a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312h4fb2c50_2.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/orc-2.2.1-h4fd0076_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.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/orderedmultidict-1.0.1-pyhd8ed1ab_2.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-py312h5978115_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/passlib-1.7.4-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-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/osx-arm64/pendulum-3.1.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pendulum-3.2.0-py312hb9d4441_2.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/noarch/phonenumbers-8.13.55-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.0.0-py312h95c711c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py312h4e908a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.2-pyhcf101f3_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/plotly-6.5.0-pyhd8ed1ab_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.36.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.36.1-py310h34bb384_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/pre-commit-4.5.0-pyha770c72_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-h46dec42_0.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.23.1-pyhd8ed1ab_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-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-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.1.3-py312h37e1c23_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/psycopg-3.3.2-pyh848bd53_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psycopg-c-3.3.2-py312h7aab862_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/noarch/psycopg-3.3.3-pyh848bd53_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psycopg-c-3.3.3-py312hf1f24e4_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-py312h38bd297_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/noarch/pyam-3.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-22.0.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-22.0.0-py312hea229ce_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-23.0.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.0-py312h21b41d0_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 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - 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-py312h6ef9ec0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.12.0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.8.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.13.1-pyhd8ed1ab_0.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-py312h19bbe71_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-12.1-py312h1de3e18_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyogrio-0.11.0-py312hfd5e53c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyogrio-0.12.1-py312h07dd7c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyomo-6.9.5-py312h455b684_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.2.5-pyhcf101f3_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-py312h66ed876_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyscipopt-5.6.0-py312h6b01ec3_1.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-6.1.0-np2py312h60fbb24_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.1-pyhd8ed1ab_0.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-py312hc3f5fac_10.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.12.12-h18782d2_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-h18782d2_2_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/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-eccodes-2.44.0-py312ha11c99a_1.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-fastjsonschema-2.21.2-pyhe01879c_0.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-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.7.8-py312hb3ab3e3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.21-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.8.1-py312hb3ab3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_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.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/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - 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/pyzmq-27.1.0-py312hd65ceae_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/pyzmq-27.1.0-py312h022ad19_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.4-py312h129b95a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rasterio-1.5.0-py312h8fc80b0_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-pyhd8ed1ab_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/rich-14.2.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.17.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.30.0-py312h6ef9ec0_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-py312hb3ab3e3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.9-h48e45a7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.2-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-np2py312he7bfc6a_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/scipy-1.16.3-py312ha6bbf71_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.8.0-np2py312he5ca3e3_1.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-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/semver-3.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.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_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-py312h35cd81b_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-py312h4409184_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.0.3-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2 + - 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 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda - 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-minimal-9.14.4-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.1.0-pyhdfd78af_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.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 - conda: https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.43-py312h4409184_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.46-py312hb3ab3e3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-arrow-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-babel-0.42.1-hd8ed1ab_0.conda @@ -1782,65 +1882,71 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-phone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-timezone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-url-0.42.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.51.1-he8f07e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.46-pyh0a47959_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.46-pyh0a47959_1.conda + - 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/noarch/starlette-0.50.0-pyhfdc7a7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.52.1-pyhfdc7a7d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py312ha11c99a_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-h66ce52b_1.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/terminado-0.18.1-pyh31c8845_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/osx-arm64/time-machine-3.2.0-py312h37e1c23_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/osx-arm64/time-machine-2.19.0-py312h37e1c23_2.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/toml-0.10.2-pyhcf101f3_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.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-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-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/typer-0.21.1-pyhf8876ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.21.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.21.1-h378290b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-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-h8577fbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312ha0dd364_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.0-py312h4409184_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ujson-5.11.0-py312he360a15_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py312h766f71e_0.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/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/urllib3-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.40.0-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.40.0-h4cd5af1_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/uvicorn-0.41.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.41.0-he9f3e0c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.22.1-py312h4409184_1.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.35.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.38.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.1.1-py312h7a0e18e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.14-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/osx-arm64/websockets-16.0-py312hb3ab3e3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.15-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/wquantiles-0.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.3-py312h163523d_1.conda - 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-hd62221f_0.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 @@ -1852,30 +1958,31 @@ 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-h248ca61_0.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/affine-2.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.13.2-py312h927b8db_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.13.3-py312h6b91d65_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_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.0-pyhcf101f3_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/arcosparse-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-25.1.0-py312he06e257_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.2-py312h2e8e312_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.4-py312h2e8e312_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.0.5-pyh29332c3_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 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.9.3-h2970c50_0.conda @@ -1891,37 +1998,43 @@ 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/backports.zstd-1.2.0-py312h06d0912_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/win-64/bcrypt-5.0.0-py312hdabe01f_1.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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.10-pyhd8ed1ab_0.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.53-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.53-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bottleneck-1.6.0-np2py312h226b611_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-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/noarch/ca-certificates-2025.11.12-h4c7d964_0.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/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - - 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-py312hc128f0a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-26.1.0-pyhcf101f3_1.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-2025.11.12-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-py312he06e257_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.4-py312h196c9fc_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cftime-1.6.5-py312h196c9fc_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 @@ -1938,44 +2051,44 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/conda-inject-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/configargparse-1.7.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/connection_pool-0.0.3-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py312hf90b1b7_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.2.5-pyhd8ed1ab_0.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/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.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.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.19-py312ha1a9051_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_1.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-py312ha1a9051_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_0.conda + - 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.0-pyhcf101f3_1.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-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_1.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.3-pyhd8ed1ab_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.44.0-h2bffdaa_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_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/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.8-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/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.128.0-h0ea4129_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.20-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.128.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.129.0-hccfc660_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.129.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-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-py312hbb81ca0_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fiona-1.10.1-py312h3f2e00f_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -1983,7 +2096,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 @@ -1992,165 +2105,177 @@ 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-py312hfdf67e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.12.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/furl-2.1.4-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.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/geos-3.14.1-hdade9fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/geotiff-1.7.4-h73469f5_4.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/gitdb-4.0.12-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.45-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda - 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.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/google-crc32c-1.7.1-py312h3d708b0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.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.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-14.1.0-h4c50273_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/greenlet-3.3.0-py312hbb81ca0_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/greenlet-3.3.1-py312ha1a9051_1.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/gts-0.7.6-h6b5321d_4.conda - - conda: https://conda.anaconda.org/gurobi/win-64/gurobi-13.0.0-py312_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/gurobi/win-64/gurobi-13.0.1-py312_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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.7.3-pyhd8ed1ab_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-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_104.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/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.7-pyh332efcf_0.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/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/win-64/httptools-0.7.1-py312he06e257_1.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/noarch/iam-units-2025.10.13-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/noarch/identify-2.6.15-pyhd8ed1ab_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-py312he06e257_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/infinity-1.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/intervals-0.9.2-pyhd8ed1ab_1.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.8.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-8.1.8-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/noarch/ixmp4-0.14.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda - 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-py312hf90b1b7_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.1-pyhd8ed1ab_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.25.1-pyhe01879c_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.1-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.7.0-pyhcf101f3_0.conda + - 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.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.1-pyhd8ed1ab_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.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-3.0.16-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py312h78d62e6_2.conda - 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.17-hbcf6048_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/lcms2-2.18-hf2c6c5f_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/libaec-1.1.4-h20038f6_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarchive-3.8.2-gpl_h26aea39_100.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-22.0.0-h89d7da9_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-22.0.0-h7d8d6a5_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-22.0.0-h2db994a_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-22.0.0-h7d8d6a5_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-22.0.0-hf865cc0_6_cpu.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-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_6.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.7-default_ha2db4b5_1.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.17.0-h43ecb02_1.conda + - 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.10.3-h1a28ea4_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf4-3.10.3-ha47b6c4_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf5-3.10.3-h0f01001_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-netcdf-3.10.3-hbb26ad1_26.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 - - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.12.1-default_h4379cf1_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.12.2-default_h4379cf1_1000.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwy-1.3.0-ha71e874_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 + - 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.1-h2466b09_2.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-22.0.0-h7051d1f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.53-h7351971_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpq-18.1-h7c87ebf_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-6.31.1-hdcda5b4_2.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_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/libpq-18.2-h9e1d4a5_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 - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libspatialite-5.1.0-gpl_h0cd62ae_119.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.1-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.2-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda - 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.2-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/libutf8proc-2.11.3-hb980946_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.5.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-21.1.7-h4fa8253_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.4-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-py312h2f35c63_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-4.4.5-py312hc3c93f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.10.0-h2466b09_1.conda @@ -2158,6 +2283,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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-py312h05f76fc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.8-py312h2e8e312_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.8-py312h0ebf65c_0.conda @@ -2166,116 +2292,123 @@ environments: - 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.1.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-include-2025.3.0-h57928b3_454.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-static-2025.3.0-hbcdf7a0_454.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-include-2025.3.0-h57928b3_455.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-static-2025.3.0-hfdbc840_455.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mpfr-4.2.1-hbc20e70_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.1.2-py312hf90b1b7_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/multidict-6.7.0-py312h05f76fc_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/win-64/mypy-1.19.1-py312he06e257_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.13.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-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/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.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_py312h79d12a2_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda - 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-py312hc128f0a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numexpr-2.14.1-py312h0c4f959_101.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-1.26.4-py312h8753938_0.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-py312h83acffa_2.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.1-h7414dfc_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.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/orderedmultidict-1.0.1-pyhd8ed1ab_2.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-py312hc128f0a_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/passlib-1.7.4-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-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/pendulum-3.1.0-py312h2615798_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pendulum-3.2.0-py312hdabe01f_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/phonenumbers-8.13.55-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.0.0-py312h31f0997_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.1-py312h31f0997_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.2-pyhcf101f3_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/plotly-6.5.0-pyhd8ed1ab_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.36.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.36.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/pre-commit-4.5.0-pyha770c72_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-h7b1ce8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.23.1-pyhd8ed1ab_0.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-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-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-py312hcb3287e_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.1.3-py312he5662c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/psycopg-3.3.2-pyh848bd53_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psycopg-c-3.3.2-py312hfd315ce_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/noarch/psycopg-3.3.3-pyh848bd53_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psycopg-c-3.3.3-py312hfd315ce_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-py312he39998a_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/noarch/pyam-3.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-22.0.0-py312h2e8e312_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-22.0.0-py312h85419b5_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.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/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 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - 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-py312hdabe01f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.12.0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.8.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.13.1-pyhd8ed1ab_0.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.0-py312h6e88f47_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.12.1-py312h3f2e00f_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyomo-6.9.5-py312hbb81ca0_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.2.5-pyhcf101f3_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-py312habbd053_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyreadline3-3.5.4-py312h2e8e312_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyscipopt-5.6.0-py312hbb81ca0_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyscipopt-6.1.0-np2py312ha76dc74_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-py312h0c8bdd4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.10.2-py312h0c8bdd4_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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py312h20cef2e_10.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-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-h0159041_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.12-h0159041_2_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/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-eccodes-2.44.0-py312h196c9fc_1.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-fastjsonschema-2.21.2-pyhe01879c_0.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-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-librt-0.7.8-py312he5662c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.21-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-librt-0.8.1-py312he5662c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_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.12-8_cp312.conda @@ -2284,60 +2417,66 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py312h829343e_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_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-py312h05f76fc_0.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/pyyaml-6.0.3-py312h05f76fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.1.0-py312h343a6d4_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.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-py312hbb81ca0_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.4.4-py312h11f88aa_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.5.0-py312h064b072_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-pyhd8ed1ab_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/rich-14.2.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.17.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.30.0-py312hdabe01f_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-py312he5662c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.9-h37e10c4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.15.2-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-np2py312hea30aaf_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/scipy-1.16.3-py312hd0164fe_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-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/semver-3.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.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_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-py312h37f46ab_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-py312he06e257_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.0.3-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda - 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-minimal-9.14.4-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.1.0-pyhdfd78af_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.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 - conda: https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.43-py312he06e257_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.46-py312he5662c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-arrow-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-babel-0.42.1-hd8ed1ab_0.conda @@ -2350,78 +2489,85 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-phone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-timezone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-url-0.42.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/sqlite-3.51.1-hdb435a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.46-pyh0a47959_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.46-pyh0a47959_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/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.50.0-pyhfdc7a7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.52.1-pyhfdc7a7d_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/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-hd094cb3_1.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/terminado-0.18.1-pyh5737063_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/win-64/time-machine-3.2.0-py312he5662c2_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/win-64/time-machine-2.19.0-py312he5662c2_2.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/toml-0.10.2-pyhcf101f3_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.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-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-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/typer-0.21.1-pyhf8876ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.21.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.21.1-h378290b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-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-h8577fbf_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/ukkonen-1.0.1-py312hf90b1b7_6.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/ujson-5.11.0-py312ha1a9051_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.1.0-py312hf90b1b7_0.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/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/urllib3-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.40.0-pyh6dadd2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.40.0-hcfb189c_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/uvicorn-0.41.0-pyh6dadd2b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.41.0-hf7a0800_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-h2b53caa_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_33.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.35.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_33.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.38.0-pyhcf101f3_0.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/win-64/watchfiles-1.1.1-py312hb0142fd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.14-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/win-64/websockets-16.0-py312he5662c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.15-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/noarch/wquantiles-0.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py312he06e257_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-he0c23c2_0.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/yaml-0.2.5-h6a83c73_3.conda @@ -2432,7 +2578,8 @@ 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-h5112557_0.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-py312he5662c2_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda doc: channels: @@ -2443,90 +2590,87 @@ environments: pypi-prerelease-mode: if-necessary-or-explicit 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 - 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 - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.2-py312h27b7581_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.3-py312h5d8c7f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.14-hb9d3cd8_0.conda + - 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/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.2-h39aace5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h8b1a151_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.7-h28f887f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-ha8fc4e3_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.23.3-hdaf4b65_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-hc63082f_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.3-h06ab39a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda - - 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.15.0-h2a74896_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.11.0-h3d7a050_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.13.0-hf38f1be_1.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/backports.zstd-1.2.0-py312h90b7ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.1-h48c9088_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.2-he7b75e1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.4-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h92c474e_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.6-h82d11aa_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.4-h94feff3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.22.0-h57f3b0d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-h2b1cf8c_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.8.6-h4e5ac4b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h92c474e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h92c474e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.34.4-h60c762c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h32384e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.0-h3a458e0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.12.0-ha729027_0.conda + - 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.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.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py312hfb8c2c5_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-py312hdb49522_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/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_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/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.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/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.25.0-py312hf79963d_1.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-2025.11.12-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.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-py312h35888ee_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py312h4f23490_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py312h4f23490_1.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.3.1-pyh8f84b5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - 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-py312hd9148b4_3.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.11.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.11.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.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/distributed-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2025.11.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-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/linux-64/eccodes-2.44.0-h83bc92c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.8-pyhd8ed1ab_0.conda + - 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.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 @@ -2537,7 +2681,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 @@ -2546,39 +2690,39 @@ 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-2025.12.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.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.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.14.1-h480dda7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.4-h1000f5c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.13.1-h97f6797_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.4-h239500f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_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.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.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.7.1-py312h03f33d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.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.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.0-h8b86629_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-13.1.2-h87b6fe6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.73.1-py312h6f3464c_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/linux-64/gtk3-3.24.43-h993cebd_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_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.7.3-pyhd8ed1ab_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_py312ha4f8f14_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.2.0-h15599e2_0.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_104.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/hdf5-1.14.6-nompi_h19486de_106.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.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 @@ -2590,58 +2734,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.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/jsonpointer-3.0.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py312h0a2e395_2.conda - 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.17-h717163a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_104.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/lcms2-2.18-h0c24ade_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 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.2-gpl_h7be2006_100.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-22.0.0-hb6ed5f4_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-22.0.0-h635bf11_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-22.0.0-h8c2c5c3_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-22.0.0-h635bf11_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-22.0.0-h3f74fd7_6_cpu.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.1-gpl_h98cc613_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-21.0.0-h56a6dad_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-21.0.0-h635bf11_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-21.0.0-h8c2c5c3_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-21.0.0-h635bf11_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-21.0.0-h3f74fd7_8_cpu.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/libbrotlicommon-1.1.0-hb03c661_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb03c661_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb03c661_4.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.7-default_h99862b1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.7-default_h746c552_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp20.1-20.1.8-default_h99862b1_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.0-default_h746c552_1.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.17.0-h4e3cde8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-h4e3cde8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.125-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda - 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.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-h1f481a6_27.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/libgdal-core-3.10.3-h02f45b3_13.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.86.3-h6548e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.3-hf39c6af_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 @@ -2649,9 +2793,10 @@ environments: - 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/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/libllvm21-21.1.7-hf7376ad_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.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/libllvm20-20.1.8-hecd9e04_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.0-hecd9e04_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/libnetcdf-4.9.3-nompi_h81b047f_102.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 @@ -2659,35 +2804,32 @@ 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-22.0.0-h7376487_6_cpu.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.53-h421ea60_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.1-h5c52fec_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_2.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 - - 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/librttopo-1.1.0-h46dd2a8_20.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-gpl_h2abfd87_119.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.1-h0c1763c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-hd718a1a_18.conda + - 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-h9d88235_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.2-hfe17d71_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-h5347b49_1.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/libtiff-4.7.1-h8261f1e_0.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/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 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.1-hca5e8e5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-ha9997c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-h26afc86_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.1-h26afc86_0.conda - - 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/libxkbcommon-1.11.0-he8b52b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.9-h04c0eec_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h7a3aeb2_0.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.5.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.5.7-pyhd8ed1ab_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/linux-64/lz4-4.4.5-py312h3d67a73_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda @@ -2695,8 +2837,8 @@ environments: - 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-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.8-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.8-py312he3d6523_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.7-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.7-py312he3d6523_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.5.0-pyhd8ed1ab_0.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 @@ -2706,46 +2848,46 @@ 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.13.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.3-nompi_py312hf6400b3_100.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.14.1-py312h88efc94_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjdk-25.0.1-h5755bd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjdk-24.0.2-h5755bd7_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-py312h7f6eeab_2.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/openpyxl-3.1.5-py312h7f6eeab_3.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-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py312hf79963d_1.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.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.47-haa7fec5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.0.0-py312h50c33e8_2.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.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.0-pyhd8ed1ab_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.36.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.36.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.7.1-h99ae125_0.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.26.1-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.1.3-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-22.0.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-22.0.0-py312hc195796_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.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 - conda: https://conda.anaconda.org/conda-forge/noarch/pybtex-docutils-1.0.3-pyhcf101f3_4.conda @@ -2753,55 +2895,57 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydot-4.0.1-py312h7900ff3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.11.0-py312h02b19dd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyomo-6.9.5-py312h1289d80_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.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py312h9b6a7d9_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-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/linux-64/pyproj-3.7.2-py312h1c88c49_1.conda + - 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/linux-64/pyside6-6.10.1-py312h9da60e5_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-hd63d673_1_cpython.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.44.0-py312h4f23490_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-tzdata-2025.3-pyhd8ed1ab_0.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_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.10.1-h6f76662_2.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 - - conda: https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.4.4-py312h762fea3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.4.3-py312h1df8778_2.conda - 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/requests-2.32.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_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/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 - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_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/linux-64/scikit-learn-1.8.0-np2py312h3226591_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.3-py312h7a1785b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.26-h5ac9029_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.7.2-py312h4f0b9e3_0.conda + - 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.9.0-pyhff2d567_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.1.2-py312h383787d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.7-py312h21f5128_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-book-theme-1.1.4-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-design-0.6.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-jsonschema-1.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.6.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -2809,62 +2953,63 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.51.1-hbc0de68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.51.2-hbc0de68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py312h4f23490_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tabula-py-2.7.0-py312h7900ff3_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/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_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/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-h8577fbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.0-py312h4c3975b_1.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.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.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-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/linux-64/wayland-1.24.0-hd6090a7_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.12.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-h988505b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.5-h988505b_2.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/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.5-h5888daf_1.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-libxinerama-1.1.6-hecca717_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 - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.22.0-py312h8a5da7c_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/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.2-h54a6638_0.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: - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda @@ -2873,75 +3018,73 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.13.2-py312h352d07c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.13.3-py312h80cd6c1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.9.3-hdff831d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.13-hea39f9f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.12.6-h8616949_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.1-h901532c_9.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.5.7-ha05da6a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.10.7-h924c446_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.23.3-hf559bb5_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.13.3-ha72ff4e_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.11.3-he30762a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.4-h901532c_4.conda - - 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.15.0-h388f2e7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.11.0-h56a711b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.13.0-h1984e67_1.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/backports.zstd-1.2.0-py312hcb931b7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.9.1-h2e727e9_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.2-h6f29d6d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.12.4-h1c43f85_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.1-h7a4e982_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.5.6-hfc6d359_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.10.4-h892fe1a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.22.0-h5c36c82_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.13.3-h04ed212_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.8.6-h19e4261_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.4-h7a4e982_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.7-h7a4e982_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.34.4-h3f46267_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.606-hda6ec86_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.0-he2a98a9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.12.0-hc0a8a32_0.conda + - 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.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.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bottleneck-1.6.0-np2py312he8eb05d_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-py312h4b46afd_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/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_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/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.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/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cartopy-0.25.0-py312h86abcb1_1.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-2025.11.12-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py312he90777b_1.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-py312hf9bc6d9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cftime-1.6.4-py312h587b97d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cftime-1.6.5-py312h8ab2c85_1.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.3.1-pyh8f84b5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - 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-py312hd099df3_3.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.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.11.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.11.0-pyhcf101f3_0.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/distributed-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2025.11.0-pyhcf101f3_0.conda - 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.44.0-h163e534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.8-pyhd8ed1ab_0.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.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 @@ -2952,7 +3095,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 @@ -2960,39 +3103,39 @@ 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-2025.12.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.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.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/geos-3.14.1-he483b9e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.7.4-h6952e58_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/geos-3.13.1-h502464c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.7.4-h88234f0_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.2-h10d778d_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.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.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.7.1-py312h0d55a24_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.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.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 - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h21dd04a_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-14.1.0-had0cc5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-13.1.2-h42bfd48_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/grpcio-1.73.1-py312h53eab48_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/osx-64/gtk3-3.24.43-h5e629aa_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_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.7.3-pyhd8ed1ab_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_py312hcf08926_101.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-12.2.0-hc5d3ef4_0.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_hc1508a4_104.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/hdf5-1.14.6-nompi_hf563b80_106.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_3.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 @@ -3004,43 +3147,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.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/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.17-h72f5680_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/lcms2-2.18-h90db99b_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 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.4-ha6bc127_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.8.2-gpl_h889603c_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-22.0.0-h563529e_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-22.0.0-h2db2d7d_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-22.0.0-h7751554_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-22.0.0-h2db2d7d_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-22.0.0-h4653b8a_6_cpu.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.1-gpl_h9912a37_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-21.0.0-h3202d62_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-21.0.0-h2db2d7d_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-21.0.0-h7751554_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-21.0.0-h2db2d7d_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-21.0.0-h4653b8a_8_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/libbrotlicommon-1.1.0-h1c43f85_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h1c43f85_4.conda + - 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.17.0-h7dd4100_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.7-h3d58e20_0.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/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/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.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-hb8c6b92_27.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.10.3-h55ca5b3_13.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 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.73.1-h451496d_1.conda @@ -3049,33 +3192,31 @@ environments: - 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/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/liblzma-5.8.1-hd471939_2.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/liblzma-5.8.2-h11316ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.3-nompi_hd7ff75f_102.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-22.0.0-habb56ca_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.53-h380d223_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-h03562ea_2.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.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/librttopo-1.1.0-h16cd5d8_20.conda - - 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.1-h6cc646a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librttopo-1.1.0-hd2ea1e3_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libspatialite-5.1.0-hf0eb338_14.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 - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-h687e942_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-ha0a348c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.2-h7983711_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-haa3b502_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.3-hc282952_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-ha1d9b0f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h7b7ecba_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-devel-2.15.1-h7b7ecba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.9-he1bc88e_0.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.5.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.7-h472b3d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.5.7-pyhd8ed1ab_0.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/osx-64/lz4-4.4.5-py312ha706d14_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda @@ -3083,8 +3224,8 @@ environments: - 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-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.3-py312hacf3034_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.8-py312hb401068_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.8-py312h7894933_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.7-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.7-py312h7894933_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.5.0-pyhd8ed1ab_0.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 @@ -3094,44 +3235,44 @@ 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.13.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.3-nompi_py312hab8b850_100.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 - - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h53ec75d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h06076ce_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numexpr-2.14.1-py312hd12f69b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-1.26.4-py312he3a82b2_0.conda - - 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/openjdk-25.0.2-h48c29e7_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-py312hc14bf67_2.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/openpyxl-3.1.5-py312h35dbd26_3.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-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.3-py312h86abcb1_2.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.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.47-h13923f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.0.0-py312hea0c9db_2.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.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.0-pyhd8ed1ab_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.36.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.36.1-py310hfb6bc98_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.7.0-h3124640_0.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.26.1-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.1.3-py312h01f6755_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-22.0.0-py312hb401068_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-22.0.0-py312hefc66a4_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.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 - conda: https://conda.anaconda.org/conda-forge/noarch/pybtex-docutils-1.0.3-pyhcf101f3_4.conda @@ -3139,52 +3280,54 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pydot-4.0.1-py312hb401068_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyogrio-0.11.0-py312h4bcfd6b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyomo-6.9.5-py312h69bf00f_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.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.7.2-py312hfea2d77_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-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/osx-64/pyproj-3.7.2-py312hb613793_1.conda + - 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-h74c2667_1_cpython.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.44.0-py312h391ab28_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-tzdata-2025.3-pyhd8ed1ab_0.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_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.4-py312hd11fb3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rasterio-1.4.3-py312h2efda69_2.conda - 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/requests-2.32.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_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/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 - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.8.0-np2py312hc921ccd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.16.3-py312he2acf2f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.7.2-py312hfee4f84_0.conda + - 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.9.0-pyhff2d567_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.1.2-py312hd8edc82_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/shapely-2.0.7-py312hbf10b29_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.2-h01f5ddf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-book-theme-1.1.4-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-design-0.6.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-jsonschema-1.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.6.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -3192,28 +3335,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.51.1-h9e4bfbb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.51.2-h5af3ad2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.14.6-py312h391ab28_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tabula-py-2.7.0-py312hb401068_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/osx-64/tk-8.6.13-hf689a15_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_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/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-h8577fbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-17.0.0-py312h80b0991_1.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.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.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-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/xarray-2025.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.3.0-hd0321b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.2.5-h197e74d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda - 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 @@ -3223,7 +3366,8 @@ 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-h53ec75d_0.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: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda @@ -3232,75 +3376,73 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.2-py312he52fbff_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.3-py312h9f8c436_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.9.3-h1ddaa69_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.13-h6ee9776_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.12.6-hc919400_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.1-h16f91aa_9.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.7-h9ae9c55_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.7-h5928ca5_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.23.3-hbe03c90_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.13.3-haf5c5c8_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.11.3-h8da9771_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.4-h16f91aa_4.conda - - 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.15.0-h10d327b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.11.0-h7e4aa5d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.13.0-hb288d13_1.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/backports.zstd-1.2.0-py312h84d6f5f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.9.1-h41ebd0a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.2-hd08b81e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.12.4-h6caf38d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.1-habbe1e8_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.6-hf65d68d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.4-h70a9c10_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.22.0-h89d1e94_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.13.3-he7b126b_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.8.6-h7a3c519_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.4-habbe1e8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.7-habbe1e8_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.34.4-h01415d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.606-h2169b1b_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.0-h88fedcc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.12.0-hd83eed2_0.conda + - 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.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.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bottleneck-1.6.0-np2py312h931d34d_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-py312h0dfefe5_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/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_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-2025.11.12-hbd8a1cb_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/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cartopy-0.25.0-py312h5978115_1.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-2025.11.12-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py312h1b4d9a2_1.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-py312hb65edc0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.4-py312hc7121bb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.5-py312hf57c059_1.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.3.1-pyh8f84b5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - 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-py312h84eede6_3.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.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.11.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.11.0-pyhcf101f3_0.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/distributed-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2025.11.0-pyhcf101f3_0.conda - 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.44.0-h6f4dcf9_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.8-pyhd8ed1ab_0.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.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 @@ -3311,7 +3453,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 @@ -3319,39 +3461,39 @@ 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-2025.12.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.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.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/geos-3.14.1-h5afe852_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/geotiff-1.7.4-hf862be1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/geos-3.13.1-hc9a1286_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/geotiff-1.7.4-h1d7e6e1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.2-h93a5062_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.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.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.7.1-py312h859a1db_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.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.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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.0-ha8f0fc4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-13.1.2-hcd33d8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/grpcio-1.73.1-py312h9bc1d27_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/osx-arm64/gtk3-3.24.43-h5febe37_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_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.7.3-pyhd8ed1ab_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_py312h4eecd6b_101.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-12.2.0-haf38c7b_0.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_hd3baa01_104.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/hdf5-1.14.6-nompi_had3affe_106.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_3.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 @@ -3363,43 +3505,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.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/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.17-h7eeda09_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/lcms2-2.18-hdfa7624_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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.4-h51d1e36_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.8.2-gpl_h46575ef_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-22.0.0-he6e817a_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-22.0.0-hc317990_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-22.0.0-h75845d1_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-22.0.0-hc317990_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-22.0.0-h144af7f_6_cpu.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.1-gpl_h46e8061_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-21.0.0-hd43feaf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-21.0.0-hc317990_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-21.0.0-h75845d1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-21.0.0-hc317990_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-21.0.0-h144af7f_8_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/libbrotlicommon-1.1.0-h6caf38d_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-h6caf38d_4.conda + - 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.17.0-hdece5d2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.7-hf598326_0.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/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/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.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-h9991b8b_27.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.10.3-hef24e92_13.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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.73.1-h3063b79_1.conda @@ -3408,33 +3550,31 @@ environments: - 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/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/liblzma-5.8.1-h39f12f2_2.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/liblzma-5.8.2-h8088a28_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.3-nompi_h6808abe_102.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_3.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-22.0.0-h0ac143b_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.53-hfab5511_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h658db43_2.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.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/librttopo-1.1.0-ha909e78_20.conda - - 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.1-h9a5124b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librttopo-1.1.0-h26cc057_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libspatialite-5.1.0-hea0a7cd_14.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.2-h1b79a29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h14a376c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h4030677_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.2-hd2415e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h7dc4979_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.3-h2431656_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h0ff4647_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h9329255_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-devel-2.15.1-h9329255_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.9-h4a9ca0c_0.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.5.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.7-h4a912ad_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.5.7-pyhd8ed1ab_0.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/osx-arm64/lz4-4.4.5-py312h2b25a0d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda @@ -3442,8 +3582,8 @@ environments: - 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-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py312h5748b74_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.8-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.8-py312h605b88b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.7-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.7-py312h605b88b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.5.0-pyhd8ed1ab_0.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 @@ -3453,44 +3593,44 @@ 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.13.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.3-nompi_py312h947358d_100.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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h248ca61_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h784d473_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numexpr-2.14.1-py312h3de7d89_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - 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/openjdk-25.0.2-h258754b_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-py312h4fb2c50_2.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/openpyxl-3.1.5-py312h2a925e6_3.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-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py312h5978115_2.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.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.47-h30297fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.0.0-py312h95c711c_2.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.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.0-pyhd8ed1ab_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.36.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.36.1-py310h34bb384_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.7.1-h46dec42_0.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.26.1-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.1.3-py312h37e1c23_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-22.0.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-22.0.0-py312hea229ce_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.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 - conda: https://conda.anaconda.org/conda-forge/noarch/pybtex-docutils-1.0.3-pyhcf101f3_4.conda @@ -3498,52 +3638,54 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydot-4.0.1-py312h81bd7bf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyogrio-0.11.0-py312hfd5e53c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyomo-6.9.5-py312h455b684_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.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyproj-3.7.2-py312h66ed876_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-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/osx-arm64/pyproj-3.7.2-py312hf0774e8_1.conda + - 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-arm64/pytables-3.10.2-py312hc3f5fac_10.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.12.12-h18782d2_1_cpython.conda + - 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.44.0-py312ha11c99a_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-tzdata-2025.3-pyhd8ed1ab_0.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_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.4-py312h129b95a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rasterio-1.4.3-py312h460a678_2.conda - 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/requests-2.32.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_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/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 - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.8.0-np2py312he7bfc6a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.16.3-py312ha6bbf71_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.7.2-py312h79e0ffc_0.conda + - 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.9.0-pyhff2d567_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.1.2-py312h35cd81b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/shapely-2.0.7-py312hf733f26_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.2-hada39a4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-book-theme-1.1.4-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-design-0.6.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-jsonschema-1.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.6.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -3551,28 +3693,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.51.1-he8f07e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.51.2-h85ec8f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py312ha11c99a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tabula-py-2.7.0-py312h81bd7bf_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/osx-arm64/tk-8.6.13-h892fb3f_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_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/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-h8577fbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.0-py312h4409184_1.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.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.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-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/xarray-2025.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.3.0-hd62221f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.2.5-h92fc2f4_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda - 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 @@ -3582,78 +3724,83 @@ 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-h248ca61_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.13.2-py312h927b8db_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.13.3-py312h6b91d65_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.9.3-h2970c50_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.9.4-hdf23a24_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.9.13-h46f3b43_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.12.6-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.3.1-hcb3a2da_9.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-event-stream-0.5.7-ha388e84_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.10.7-hc678f4a_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.23.3-h0d5b9f9_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.13.3-hfa314fa_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.11.3-ha659bf3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.3.2-hcb3a2da_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-event-stream-0.5.9-h972bbec_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.10.10-hb410799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.26.1-h0d5b9f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.14.0-h833cf40_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.11.5-h9708004_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.2.4-hcb3a2da_4.conda - - 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/backports.zstd-1.2.0-py312h06d0912_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.2.10-hcb3a2da_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.36.0-h15365d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.606-h867832e_12.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bottleneck-1.6.0-np2py312h226b611_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-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/noarch/ca-certificates-2025.11.12-h4c7d964_0.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/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - 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/cartopy-0.25.0-py312hc128f0a_1.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-2025.11.12-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-py312he06e257_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/win-64/cftime-1.6.4-py312h196c9fc_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cftime-1.6.5-py312h196c9fc_1.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.3.1-pyha7b4d00_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - 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-py312hf90b1b7_3.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.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.11.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.11.0-pyhcf101f3_0.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/distributed-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2025.11.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.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/win-64/eccodes-2.44.0-h2bffdaa_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.8-pyhd8ed1ab_0.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/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.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 @@ -3663,7 +3810,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 @@ -3672,33 +3819,33 @@ 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-2025.12.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.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/geos-3.14.1-hdade9fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/geotiff-1.7.4-h73469f5_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/geos-3.13.1-h9ea8674_0.conda + - 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.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/google-crc32c-1.7.1-py312h3d708b0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.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.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-14.1.0-h4c50273_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/graphviz-13.1.2-ha5e8f4b_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.7.3-pyhd8ed1ab_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-12.2.0-h5f2951f_0.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_104.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 @@ -3709,72 +3856,69 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/jasper-4.2.8-h8ad263b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-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/win-64/kiwisolver-1.4.9-py312h78d62e6_2.conda - 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.17-hbcf6048_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/lcms2-2.18-hf2c6c5f_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/libaec-1.1.4-h20038f6_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarchive-3.8.2-gpl_h26aea39_100.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-22.0.0-h89d7da9_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-22.0.0-h7d8d6a5_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-22.0.0-h2db994a_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-22.0.0-h7d8d6a5_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-22.0.0-hf865cc0_6_cpu.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.1-haed0678_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-23.0.1-h7d8d6a5_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.1-h081cd8e_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.1-h7d8d6a5_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.1-h524e9bd_1_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.7-default_ha2db4b5_1.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.17.0-h43ecb02_1.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/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/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.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-h6e9dab2_27.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.3-h0c9aed9_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/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_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 - 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.1-h2466b09_2.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-22.0.0-h7051d1f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.53-h7351971_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-6.31.1-hdcda5b4_2.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 - - conda: https://conda.anaconda.org/conda-forge/win-64/libspatialite-5.1.0-gpl_h0cd62ae_119.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.1-hf5d6505_0.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.1-h7051d1f_1_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 - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda - 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.2-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/libtiff-4.7.1-h550210a_0.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/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/libxslt-1.1.43-h0fbe4c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.9-h741aa76_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.43-h25c3957_0.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.5.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.5.7-pyhd8ed1ab_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/win-64/lz4-4.4.5-py312hc3c93f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.10.0-h2466b09_1.conda @@ -3782,8 +3926,8 @@ environments: - 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-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.3-py312h05f76fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.8-py312h2e8e312_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.8-py312h0ebf65c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.7-py312h2e8e312_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.7-py312h0ebf65c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.5.0-pyhd8ed1ab_0.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 @@ -3793,42 +3937,42 @@ 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.13.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/netcdf4-1.7.3-nompi_py312h79d12a2_100.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 - conda: https://conda.anaconda.org/conda-forge/win-64/numexpr-2.14.1-py312h0c4f959_101.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-1.26.4-py312h8753938_0.conda - - 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/openjdk-25.0.2-he453025_1.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_2.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.1-h7414dfc_0.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-py312hc128f0a_2.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.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.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.47-hd2b5f0e_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.0.0-py312h31f0997_2.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.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.0-pyhd8ed1ab_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.36.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.36.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.7.1-h7b1ce8f_0.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.26.1-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.1.3-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-22.0.0-py312h2e8e312_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-22.0.0-py312h85419b5_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.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 - conda: https://conda.anaconda.org/conda-forge/noarch/pybtex-docutils-1.0.3-pyhcf101f3_4.conda @@ -3836,53 +3980,56 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pydot-4.0.1-py312h2e8e312_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.11.0-py312h6e88f47_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyomo-6.9.5-py312hbb81ca0_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.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyproj-3.7.2-py312habbd053_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-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/win-64/pyproj-3.7.2-py312h235ce7f_1.conda + - 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/win-64/pyside6-6.10.1-py312h0c8bdd4_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-h0159041_1_cpython.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.44.0-py312h196c9fc_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/win-64/python-eccodes-2.45.0-np2py312h226b611_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.10.1-hf1bda90_2.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.4-py312h11f88aa_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/re2-2025.11.05-ha104f34_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.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_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 - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/scikit-learn-1.8.0-np2py312hea30aaf_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.16.3-py312hd0164fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/scikit-learn-1.7.2-py312h91ac024_0.conda + - 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.9.0-pyhff2d567_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.1.2-py312h37f46ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/shapely-2.0.7-py312h3f81574_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.2-h7fa0ca8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-book-theme-1.1.4-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-design-0.6.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-jsonschema-1.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.6.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -3890,43 +4037,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - 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.1-hdb435a2_0.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_2.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/noarch/tomli-2.3.0-pyhcf101f3_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/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-h8577fbf_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.2-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-h2b53caa_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_33.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/win-64/vs2015_runtime-14.44.35208-h38c0c73_34.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/noarch/xarray-2025.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xerces-c-3.3.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xerces-c-3.2.5-he0c23c2_2.conda - 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 @@ -3934,7 +4081,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-h5112557_0.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: @@ -3945,30 +4092,29 @@ environments: pypi-prerelease-mode: if-necessary-or-explicit 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 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.2-py312h27b7581_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.3-py312h5d8c7f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.14-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + - 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.0-pyhcf101f3_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/arcosparse-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-25.1.0-py312h4c3975b_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.2-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.4-py312h7900ff3_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.0.5-pyh29332c3_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 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda @@ -3988,50 +4134,51 @@ 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.15.0-h2a74896_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.11.0-h3d7a050_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.13.0-hf38f1be_1.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/backports.zstd-1.2.0-py312h90b7ffd_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-py312h90b7ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.10-pyhd8ed1ab_0.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.53-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.53-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py312hfb8c2c5_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-py312hdb49522_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/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.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/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + - 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-py312hf79963d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-26.1.0-pyhcf101f3_1.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-2025.11.12-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-py312h460c074_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.4-py312h4f23490_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py312h4f23490_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 - conda: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-cbc-2.10.12-h4d16d09_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-cgl-0.60.9-hc46dffc_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-clp-1.17.10-hc03379b_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-cbc-2.10.12-h4d16d09_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-cgl-0.60.9-hc46dffc_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-clp-1.17.10-hc03379b_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-osi-0.108.11-hf4fecb4_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-utils-2.11.12-hc93afbd_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda @@ -4040,47 +4187,47 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/conda-inject-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/configargparse-1.7.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/connection_pool-0.0.3-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312hd9148b4_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.2.5-pyhd8ed1ab_0.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/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.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_1.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-py312h8285ef7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py312h8285ef7_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_0.conda + - 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.0-pyhcf101f3_1.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-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_1.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.3-pyhd8ed1ab_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.44.0-h83bc92c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_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/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.8-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 - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.128.0-h0ea4129_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.20-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.128.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.129.0-hccfc660_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.129.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-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-py312h1289d80_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.10.1-py312h053e1f3_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -4088,7 +4235,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 @@ -4097,59 +4244,65 @@ 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-py312h447239a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.12.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/furl-2.1.4-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/linux-64/gdk-pixbuf-2.44.5-h2b0a6b4_1.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.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.14.1-h480dda7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.4-h1000f5c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - 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.45-pyhff2d567_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/noarch/gitpython-3.1.46-pyhd8ed1ab_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.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.7.1-py312h03f33d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.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.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.0-h8b86629_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.3.0-py312h1289d80_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.3.1-py312h8285ef7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.73.1-py312h6f3464c_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/linux-64/gtk3-3.24.43-h993cebd_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-ha5ea40c_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/gurobi/linux-64/gurobi-13.0.0-py312_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/gurobi/linux-64/gurobi-13.0.1-py312_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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.7.3-pyhd8ed1ab_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_py312ha4f8f14_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.2.0-h15599e2_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_104.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/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.7-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.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/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/linux-64/httptools-0.7.1-py312h4c3975b_1.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/noarch/iam-units-2025.10.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.15-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-py312h4c3975b_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 @@ -4157,64 +4310,67 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/intervals-0.9.2-pyhd8ed1ab_1.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.8.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-8.1.8-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/noarch/ixmp4-0.14.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jpype1-1.6.0-py312hd9148b4_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.12.1-pyhd8ed1ab_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.25.1-pyhe01879c_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.1-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.7.0-pyhcf101f3_0.conda + - 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.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.1-pyhd8ed1ab_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.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-3.0.16-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py312h0a2e395_2.conda - 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.17-h717163a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_104.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/lcms2-2.18-h0c24ade_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 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.2-gpl_h7be2006_100.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-22.0.0-hb6ed5f4_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-22.0.0-h635bf11_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-22.0.0-h8c2c5c3_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-22.0.0-h635bf11_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-22.0.0-h3f74fd7_6_cpu.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-h40b5c2d_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.0-h635bf11_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.0-h8c2c5c3_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.0-h635bf11_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.0-h3f74fd7_2_cpu.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.7-default_h99862b1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.7-default_h746c552_1.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.17.0-h4e3cde8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-h4e3cde8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.125-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda @@ -4222,41 +4378,43 @@ 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/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.10.3-h1f481a6_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf4-3.10.3-ha810028_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf5-3.10.3-h966a9c2_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-netcdf-3.10.3-ha526aae_27.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/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.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.12.1-default_hafda6a7_1003.conda + - 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.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.7-hf7376ad_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.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/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/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 @@ -4264,40 +4422,41 @@ 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-22.0.0-h7376487_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.0-h7376487_2_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.53-h421ea60_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.1-h5c52fec_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_2.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-gpl_h2abfd87_119.conda - 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.1-h0c1763c_0.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.2-hfe17d71_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-h5347b49_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/libuv-1.51.0-hb03c661_1.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.1-hca5e8e5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-ha9997c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-h26afc86_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.1-h26afc86_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-hca6bf5a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-he237659_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.1-he237659_1.conda - 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.5.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.4-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-py312h63ddcf0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda @@ -4305,6 +4464,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.8-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.8-py312he3d6523_0.conda @@ -4314,7 +4474,7 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py312hd9148b4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.0-py312h8a5da7c_0.conda @@ -4322,174 +4482,189 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/mumps-include-5.7.3-h82cca05_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mumps-seq-5.7.3-h27a6a8b_0.conda - 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/linux-64/mypy-1.19.1-py312h4c3975b_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.13.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-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/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.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.3-nompi_py312hf6400b3_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda - 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-py312hf79963d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.14.1-py312h88efc94_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.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-py312h7f6eeab_2.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/orc-2.2.1-hd747db4_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.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/orderedmultidict-1.0.1-pyhd8ed1ab_2.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-py312hf79963d_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/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/passlib-1.7.4-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-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/linux-64/pendulum-3.1.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pendulum-3.2.0-py312h868fb18_2.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/noarch/phonenumbers-8.13.55-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.0.0-py312h50c33e8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py312h50c33e8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.2-pyhcf101f3_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/plotly-6.5.0-pyhd8ed1ab_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.36.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.36.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/pre-commit-4.5.0-pyha770c72_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-h99ae125_0.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.23.1-pyhd8ed1ab_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-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-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.1.3-py312h5253ce2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/psycopg-3.3.2-pyh848bd53_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psycopg-c-3.3.2-py312hc3ef785_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/noarch/psycopg-3.3.3-pyh848bd53_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psycopg-c-3.3.3-py312hc3ef785_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-py312hd0750ca_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/noarch/pyam-3.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-22.0.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-22.0.0-py312hc195796_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-23.0.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.0-py312h2054cf2_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 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - 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-py312h868fb18_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.12.0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.8.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.13.1-pyhd8ed1ab_0.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.11.0-py312h02b19dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py312h053e1f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyomo-6.9.5-py312h1289d80_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.2.5-pyhcf101f3_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-py312h9b6a7d9_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyscipopt-5.6.0-py312h1289d80_1.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-6.1.0-np2py312h0f77346_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-py312h9da60e5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.2-py312h9da60e5_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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py312hefc0c3f_10.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-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-hd63d673_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.12-hd63d673_2_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/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2.44.0-py312h4f23490_1.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-fastjsonschema-2.21.2-pyhe01879c_0.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-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.7.8-py312h5253ce2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.21-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.8.1-py312h5253ce2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_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.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/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - 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/pyzmq-27.1.0-py312hfb55c3c_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/pyzmq-27.1.0-py312hda471dd_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.10.1-h6f76662_2.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-py312h1289d80_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.4.4-py312h762fea3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.5.0-py312hcedc861_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-pyhd8ed1ab_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/rich-14.2.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.17.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py312h868fb18_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-py312h5253ce2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.9-h4196e79_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.2-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-np2py312h3226591_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/scipy-1.16.3-py312h7a1785b_1.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-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/semver-3.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.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_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-py312h383787d_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-py312h4c3975b_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.0.3-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2 + - 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 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda - 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-minimal-9.14.4-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.1.0-pyhdfd78af_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.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 - conda: https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.43-py312h4c3975b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.46-py312h5253ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-arrow-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-babel-0.42.1-hd8ed1ab_0.conda @@ -4502,60 +4677,64 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-phone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-timezone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-url-0.42.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.51.1-hbc0de68_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.46-pyh0a47959_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.46-pyh0a47959_1.conda + - 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/noarch/starlette-0.50.0-pyhfdc7a7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.52.1-pyhfdc7a7d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py312h4f23490_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/terminado-0.18.1-pyh0d859eb_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/linux-64/time-machine-3.2.0-py312h5253ce2_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/linux-64/time-machine-2.19.0-py312h5253ce2_2.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/toml-0.10.2-pyhcf101f3_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.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-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-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/typer-0.21.1-pyhf8876ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.21.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.21.1-h378290b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-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-h8577fbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312hd9148b4_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.0-py312h4c3975b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ujson-5.11.0-py312h8285ef7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.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/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/urllib3-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.40.0-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.40.0-h4cd5af1_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/uvicorn-0.41.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.41.0-he9f3e0c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.22.1-py312h4c3975b_1.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.35.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.38.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.1-py312h0ccc70a_0.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.2.14-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/linux-64/websockets-16.0-py312h5253ce2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.15-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/wquantiles-0.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.3-py312h4c3975b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda @@ -4565,31 +4744,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-h988505b_0.conda + - 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.5-h5888daf_1.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-libxinerama-1.1.6-hecca717_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.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.2-ha02ee65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.2-ha02ee65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.2-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.22.0-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda @@ -4598,7 +4779,8 @@ 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-h54a6638_0.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: - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda @@ -4606,14 +4788,14 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.13.2-py312h352d07c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.13.3-py312h80cd6c1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_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.0-pyhcf101f3_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arcosparse-0.4.2-pyhd8ed1ab_0.conda @@ -4621,9 +4803,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-25.1.0-py312h80b0991_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.2-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.4-py312hb401068_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.0.5-pyh29332c3_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 - conda: https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda @@ -4640,50 +4822,51 @@ 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.15.0-h388f2e7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.11.0-h56a711b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.13.0-h1984e67_1.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/backports.zstd-1.2.0-py312hcb931b7_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-py312h6917036_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bcrypt-5.0.0-py312h8a6388b_1.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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.10-pyhd8ed1ab_0.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.53-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.53-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bottleneck-1.6.0-np2py312he8eb05d_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-py312h4b46afd_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/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.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/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + - 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-py312h86abcb1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-26.1.0-pyhcf101f3_1.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-2025.11.12-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-py312he90777b_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.4-py312h587b97d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cftime-1.6.5-py312h8ab2c85_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 - conda: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-cbc-2.10.12-h084678f_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-cgl-0.60.9-hbb40df2_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-clp-1.17.10-heb008f4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-cbc-2.10.12-h2b2dcb5_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-cgl-0.60.9-h62ac857_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-clp-1.17.10-h58ba847_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-osi-0.108.11-hcf72bcd_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-utils-2.11.12-h6e60e65_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda @@ -4692,45 +4875,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/conda-inject-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/configargparse-1.7.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/connection_pool-0.0.3-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py312hd099df3_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.2.5-pyhd8ed1ab_0.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/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.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/cyrus-sasl-2.1.28-h610c526_0.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.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.19-py312h6c02384_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_1.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-py312h29de90a_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_0.conda + - 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.0-pyhcf101f3_1.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-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_1.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.3-pyhd8ed1ab_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.44.0-h163e534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.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/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.8-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 - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.128.0-h0ea4129_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.20-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.128.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.129.0-hccfc660_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.129.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-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-py312h69bf00f_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fiona-1.10.1-py312hb20e208_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -4738,7 +4921,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 @@ -4746,181 +4929,193 @@ 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-py312h18bfd43_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.12.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/furl-2.1.4-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/osx-64/gdk-pixbuf-2.44.5-hae309b2_1.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.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/geos-3.14.1-he483b9e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.7.4-h6952e58_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.conda - 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.45-pyhff2d567_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/noarch/gitpython-3.1.46-pyhd8ed1ab_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.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.7.1-py312h0d55a24_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.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.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 - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h21dd04a_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-14.1.0-had0cc5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.3.0-py312h69bf00f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-14.1.2-h44fc223_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.3.1-py312h29de90a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/grpcio-1.73.1-py312h53eab48_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/osx-64/gtk3-3.24.43-h5e629aa_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-hf2d442a_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - - conda: https://conda.anaconda.org/gurobi/osx-64/gurobi-13.0.0-py312_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/gurobi/osx-64/gurobi-13.0.1-py312_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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.7.3-pyhd8ed1ab_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_py312hcf08926_101.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-12.2.0-hc5d3ef4_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_hc1508a4_104.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/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.7-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_3.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/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/osx-64/httptools-0.7.1-py312h80b0991_1.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/noarch/iam-units-2025.10.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.15-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-py312h2f459f6_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/infinity-1.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/intervals-0.9.2-pyhd8ed1ab_1.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.8.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-8.1.8-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/noarch/ixmp4-0.14.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jpype1-1.6.0-py312hedd4973_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.12.1-pyhd8ed1ab_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.25.1-pyhe01879c_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.1-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.7.0-pyhcf101f3_0.conda + - 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.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.1-pyhd8ed1ab_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.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-3.0.16-pyhcf101f3_1.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-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/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_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/lcms2-2.18-h90db99b_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 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.4-ha6bc127_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.8.2-gpl_h889603c_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-22.0.0-h563529e_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-22.0.0-h2db2d7d_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-22.0.0-h7751554_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-22.0.0-h2db2d7d_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-22.0.0-h4653b8a_6_cpu.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-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.17.0-h7dd4100_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.7-h3d58e20_0.conda + - 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-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/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.10.3-hb8c6b92_27.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf4-3.10.3-h0c59102_27.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf5-3.10.3-ha7247fd_27.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-netcdf-3.10.3-hee41eee_27.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/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.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 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libhwloc-2.12.1-default_h273dbb7_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libhwloc-2.12.2-default_h273dbb7_1000.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libhwy-1.3.0-hab838a1_1.conda - 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.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.1-hd471939_2.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/liblzma-5.8.2-h11316ed_0.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/libntlm-1.8-h6e16a3a_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-22.0.0-habb56ca_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.53-h380d223_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpq-18.1-h1e038c5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-h03562ea_2.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/libpq-18.2-hb73b81d_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/libscotch-7.0.11-int64_h80fc1e8_0.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/libspatialite-5.1.0-gpl_hb921464_119.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.1-h6cc646a_0.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 - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-h687e942_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-ha0a348c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.2-h7983711_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.3-hc282952_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-ha1d9b0f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h7b7ecba_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-devel-2.15.1-h7b7ecba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-he456531_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h24ca049_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-devel-2.15.1-h24ca049_1.conda - 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.5.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.7-h472b3d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.4-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-py312hd94307c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-4.4.5-py312ha706d14_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda @@ -4928,6 +5123,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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-py312hacf3034_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.8-py312hb401068_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.8-py312h7894933_0.conda @@ -4937,180 +5133,195 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.2-py312hd099df3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.7.0-py312h2352a57_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/osx-64/mypy-1.19.1-py312h80b0991_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.13.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-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/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.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 - conda: https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.7.3-nompi_py312hab8b850_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h53ec75d_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h06076ce_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda - 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-py312h86abcb1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numexpr-2.14.1-py312hd12f69b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-1.26.4-py312he3a82b2_0.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/openldap-2.6.10-hd8a590d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312hc14bf67_2.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/orc-2.2.1-hd1b02dc_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.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/orderedmultidict-1.0.1-pyhd8ed1ab_2.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-py312h86abcb1_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-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/passlib-1.7.4-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-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/osx-64/pendulum-3.1.0-py312h0d0de52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pendulum-3.2.0-py312h933127a_2.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/noarch/phonenumbers-8.13.55-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.0.0-py312hea0c9db_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py312h4985050_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.2-pyhcf101f3_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/plotly-6.5.0-pyhd8ed1ab_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.36.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.36.1-py310hfb6bc98_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/pre-commit-4.5.0-pyha770c72_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.0-h3124640_0.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.23.1-pyhd8ed1ab_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-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-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.1.3-py312h01f6755_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/psycopg-3.3.2-pyh848bd53_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psycopg-c-3.3.2-py312ha23389c_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/noarch/psycopg-3.3.3-pyh848bd53_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psycopg-c-3.3.3-py312h87b31b3_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-py312hda2ad9a_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/noarch/pyam-3.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-22.0.0-py312hb401068_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-22.0.0-py312hefc66a4_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-23.0.0-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.0-py312hfcd758a_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 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - 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-py312h8a6388b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.12.0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.8.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.13.1-pyhd8ed1ab_0.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-py312h4a480f0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-12.1-py312h1993040_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyogrio-0.11.0-py312h4bcfd6b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyogrio-0.12.1-py312h17ccd7d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyomo-6.9.5-py312h69bf00f_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.2.5-pyhcf101f3_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-py312hfea2d77_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyscipopt-5.6.0-py312h462f358_1.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-6.1.0-np2py312h834d234_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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py312he4c742b_10.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-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-h74c2667_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.12-h74c2667_2_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/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-eccodes-2.44.0-py312h391ab28_1.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-fastjsonschema-2.21.2-pyhe01879c_0.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-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.7.8-py312hf7082af_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.21-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.8.1-py312hba6025d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_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.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/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - 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/pyzmq-27.1.0-py312hb7d603e_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/pyzmq-27.1.0-py312h2ac7433_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.4-py312hd11fb3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rasterio-1.5.0-py312h6f80297_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-pyhd8ed1ab_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/rich-14.2.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.17.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.30.0-py312h8a6388b_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-py312hf7082af_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.14.9-h6e677d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.15.2-h8ee721d_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-np2py312hc921ccd_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/scipy-1.16.3-py312he2acf2f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.8.0-np2py312h47bbdc5_1.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-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/semver-3.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.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_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-py312hd8edc82_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-py312h80b0991_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.0.3-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2 + - 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 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda - 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-minimal-9.14.4-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.1.0-pyhdfd78af_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.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 - conda: https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.43-py312h80b0991_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.46-py312hf7082af_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-arrow-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-babel-0.42.1-hd8ed1ab_0.conda @@ -5123,65 +5334,71 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-phone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-timezone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-url-0.42.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.51.1-h9e4bfbb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.46-pyh0a47959_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.46-pyh0a47959_1.conda + - 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/noarch/starlette-0.50.0-pyhfdc7a7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.52.1-pyhfdc7a7d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.14.6-py312h391ab28_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-hf0c99ee_1.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/terminado-0.18.1-pyh31c8845_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/osx-64/time-machine-3.2.0-py312h01f6755_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/osx-64/time-machine-2.19.0-py312h01f6755_2.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/toml-0.10.2-pyhcf101f3_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.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-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-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/typer-0.21.1-pyhf8876ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.21.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.21.1-h378290b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-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-h8577fbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hedd4973_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-17.0.0-py312h80b0991_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ujson-5.11.0-py312h2ac44ba_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py312h0aa9c5c_0.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/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/urllib3-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.40.0-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.40.0-h4cd5af1_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/uvicorn-0.41.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.41.0-he9f3e0c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/uvloop-0.22.1-py312h80b0991_1.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.35.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.38.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/watchfiles-1.1.1-py312h1f62012_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.14-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/osx-64/websockets-16.0-py312hf7082af_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.15-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/wquantiles-0.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-1.17.3-py312h2f459f6_1.conda - 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-hd0321b6_0.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 @@ -5193,7 +5410,8 @@ 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-h53ec75d_0.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: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda @@ -5201,14 +5419,14 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.2-py312he52fbff_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.3-py312h9f8c436_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_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.0-pyhcf101f3_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arcosparse-0.4.2-pyhd8ed1ab_0.conda @@ -5216,9 +5434,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-25.1.0-py312h4409184_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.2-py312h81bd7bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.4-py312h81bd7bf_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.0.5-pyh29332c3_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 - conda: https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda @@ -5235,50 +5453,51 @@ 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.15.0-h10d327b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.11.0-h7e4aa5d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.13.0-hb288d13_1.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/backports.zstd-1.2.0-py312h84d6f5f_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-py312h44dc372_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bcrypt-5.0.0-py312h6ef9ec0_1.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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.10-pyhd8ed1ab_0.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.53-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.53-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bottleneck-1.6.0-np2py312h931d34d_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-py312h0dfefe5_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/noarch/ca-certificates-2025.11.12-hbd8a1cb_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/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - 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-py312h5978115_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-26.1.0-pyhcf101f3_1.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-2025.11.12-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-py312h1b4d9a2_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.4-py312hc7121bb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.5-py312hf57c059_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 - conda: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cbc-2.10.12-h0c75da4_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cgl-0.60.9-h24d7dbf_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-clp-1.17.10-ha5fe85a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cbc-2.10.12-h2032c40_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cgl-0.60.9-h034796e_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-clp-1.17.10-he934a02_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-osi-0.108.11-ha2b0f8f_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-utils-2.11.12-hbea9910_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda @@ -5287,45 +5506,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/conda-inject-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/configargparse-1.7.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/connection_pool-0.0.3-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312h84eede6_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.2.5-pyhd8ed1ab_0.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/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.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/cyrus-sasl-2.1.28-ha1cbb27_0.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.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.19-py312h56d30c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_1.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-py312h6510ced_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_0.conda + - 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.0-pyhcf101f3_1.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-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_1.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.3-pyhd8ed1ab_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.44.0-h6f4dcf9_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.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/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.8-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 - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.128.0-h0ea4129_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.20-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.128.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.129.0-hccfc660_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.129.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-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-py312h455b684_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.10.1-py312h515fe7d_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -5333,7 +5552,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 @@ -5341,181 +5560,193 @@ 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-py312h512c567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.12.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/furl-2.1.4-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/osx-arm64/gdk-pixbuf-2.44.5-h4e57454_1.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.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/geos-3.14.1-h5afe852_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/geotiff-1.7.4-hf862be1_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - 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.45-pyhff2d567_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/noarch/gitpython-3.1.46-pyhd8ed1ab_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.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.7.1-py312h859a1db_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.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.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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.0-ha8f0fc4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.3.0-py312h455b684_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.2-hec8c438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.3.1-py312h6510ced_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/grpcio-1.73.1-py312h9bc1d27_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/osx-arm64/gtk3-3.24.43-h5febe37_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-hc0f3e19_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - - conda: https://conda.anaconda.org/gurobi/osx-arm64/gurobi-13.0.0-py312_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/gurobi/osx-arm64/gurobi-13.0.1-py312_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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.7.3-pyhd8ed1ab_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_py312h4eecd6b_101.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-12.2.0-haf38c7b_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_hd3baa01_104.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/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.7-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_3.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/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/osx-arm64/httptools-0.7.1-py312h4409184_1.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/noarch/iam-units-2025.10.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.15-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-py312h163523d_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/infinity-1.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/intervals-0.9.2-pyhd8ed1ab_1.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.8.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-8.1.8-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/noarch/ixmp4-0.14.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jpype1-1.6.0-py312ha0dd364_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.12.1-pyhd8ed1ab_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.25.1-pyhe01879c_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.1-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.7.0-pyhcf101f3_0.conda + - 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.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.1-pyhd8ed1ab_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.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-3.0.16-pyhcf101f3_1.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-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/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_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/lcms2-2.18-hdfa7624_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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.4-h51d1e36_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.8.2-gpl_h46575ef_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-22.0.0-he6e817a_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-22.0.0-hc317990_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-22.0.0-h75845d1_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-22.0.0-hc317990_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-22.0.0-h144af7f_6_cpu.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-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.17.0-hdece5d2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.7-hf598326_0.conda + - 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-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/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.10.3-h9991b8b_27.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf4-3.10.3-he522aa2_27.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf5-3.10.3-hdacffec_27.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-netcdf-3.10.3-h1c3283e_27.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/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.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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.12.1-default_ha3cc4f2_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.12.2-default_ha3cc4f2_1000.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwy-1.3.0-h48b13b8_1.conda - 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.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.1-h39f12f2_2.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/liblzma-5.8.2-h8088a28_0.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/libntlm-1.8-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_3.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-22.0.0-h0ac143b_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.53-hfab5511_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-18.1-h944245b_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h658db43_2.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/libpq-18.2-h6caddbb_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/libscotch-7.0.11-int64_hd8baee2_0.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/libspatialite-5.1.0-gpl_ha239c29_119.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h9a5124b_0.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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h14a376c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h4030677_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.2-hd2415e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.3-h2431656_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h6caf38d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h0ff4647_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h9329255_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-devel-2.15.1-h9329255_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h5ef1a60_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h8d039ee_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-devel-2.15.1-h8d039ee_1.conda - 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.5.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.7-h4a912ad_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.4-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-py312h447b5cf_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.4.5-py312h2b25a0d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda @@ -5523,6 +5754,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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-py312h5748b74_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.8-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.8-py312h605b88b_0.conda @@ -5532,180 +5764,195 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.2-py312h84eede6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.7.0-py312hf0dca4a_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/osx-arm64/mypy-1.19.1-py312hefc2c51_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.13.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-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/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.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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/netcdf4-1.7.3-nompi_py312h947358d_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h248ca61_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h784d473_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda - 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-py312h5978115_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numexpr-2.14.1-py312h3de7d89_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.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/openldap-2.6.10-hbe55e7a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312h4fb2c50_2.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/orc-2.2.1-h4fd0076_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.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/orderedmultidict-1.0.1-pyhd8ed1ab_2.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-py312h5978115_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/passlib-1.7.4-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-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/osx-arm64/pendulum-3.1.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pendulum-3.2.0-py312hb9d4441_2.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/noarch/phonenumbers-8.13.55-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.0.0-py312h95c711c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py312h4e908a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.2-pyhcf101f3_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/plotly-6.5.0-pyhd8ed1ab_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.36.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.36.1-py310h34bb384_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/pre-commit-4.5.0-pyha770c72_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-h46dec42_0.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.23.1-pyhd8ed1ab_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-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-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.1.3-py312h37e1c23_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/psycopg-3.3.2-pyh848bd53_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psycopg-c-3.3.2-py312h7aab862_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/noarch/psycopg-3.3.3-pyh848bd53_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psycopg-c-3.3.3-py312hf1f24e4_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-py312h38bd297_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/noarch/pyam-3.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-22.0.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-22.0.0-py312hea229ce_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-23.0.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.0-py312h21b41d0_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 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - 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-py312h6ef9ec0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.12.0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.8.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.13.1-pyhd8ed1ab_0.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-py312h19bbe71_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-12.1-py312h1de3e18_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyogrio-0.11.0-py312hfd5e53c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyogrio-0.12.1-py312h07dd7c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyomo-6.9.5-py312h455b684_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.2.5-pyhcf101f3_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-py312h66ed876_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyscipopt-5.6.0-py312h6b01ec3_1.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-6.1.0-np2py312h60fbb24_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.1-pyhd8ed1ab_0.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-py312hc3f5fac_10.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.12.12-h18782d2_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-h18782d2_2_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/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-eccodes-2.44.0-py312ha11c99a_1.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-fastjsonschema-2.21.2-pyhe01879c_0.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-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.7.8-py312hb3ab3e3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.21-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.8.1-py312hb3ab3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_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.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/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - 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/pyzmq-27.1.0-py312hd65ceae_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/pyzmq-27.1.0-py312h022ad19_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.4-py312h129b95a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rasterio-1.5.0-py312h8fc80b0_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-pyhd8ed1ab_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/rich-14.2.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.17.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.30.0-py312h6ef9ec0_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-py312hb3ab3e3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.9-h48e45a7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.2-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-np2py312he7bfc6a_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/scipy-1.16.3-py312ha6bbf71_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.8.0-np2py312he5ca3e3_1.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-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/semver-3.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.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_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-py312h35cd81b_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-py312h4409184_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.0.3-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2 + - 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 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda - 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-minimal-9.14.4-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.1.0-pyhdfd78af_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.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 - conda: https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.43-py312h4409184_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.46-py312hb3ab3e3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-arrow-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-babel-0.42.1-hd8ed1ab_0.conda @@ -5718,65 +5965,71 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-phone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-timezone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-url-0.42.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.51.1-he8f07e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.46-pyh0a47959_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.46-pyh0a47959_1.conda + - 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/noarch/starlette-0.50.0-pyhfdc7a7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.52.1-pyhfdc7a7d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py312ha11c99a_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-h66ce52b_1.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/terminado-0.18.1-pyh31c8845_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/osx-arm64/time-machine-3.2.0-py312h37e1c23_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/osx-arm64/time-machine-2.19.0-py312h37e1c23_2.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/toml-0.10.2-pyhcf101f3_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.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-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-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/typer-0.21.1-pyhf8876ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.21.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.21.1-h378290b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-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-h8577fbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312ha0dd364_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.0-py312h4409184_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ujson-5.11.0-py312he360a15_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py312h766f71e_0.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/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/urllib3-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.40.0-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.40.0-h4cd5af1_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/uvicorn-0.41.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.41.0-he9f3e0c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.22.1-py312h4409184_1.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.35.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.38.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.1.1-py312h7a0e18e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.14-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/osx-arm64/websockets-16.0-py312hb3ab3e3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.15-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/wquantiles-0.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.3-py312h163523d_1.conda - 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-hd62221f_0.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 @@ -5788,30 +6041,31 @@ 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-h248ca61_0.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/affine-2.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.13.2-py312h927b8db_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.13.3-py312h6b91d65_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_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.0-pyhcf101f3_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/arcosparse-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-25.1.0-py312he06e257_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.2-py312h2e8e312_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.4-py312h2e8e312_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.0.5-pyh29332c3_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 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.9.3-h2970c50_0.conda @@ -5827,37 +6081,43 @@ 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/backports.zstd-1.2.0-py312h06d0912_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/win-64/bcrypt-5.0.0-py312hdabe01f_1.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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.10-pyhd8ed1ab_0.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.53-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.53-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bottleneck-1.6.0-np2py312h226b611_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-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/noarch/ca-certificates-2025.11.12-h4c7d964_0.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/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - - 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-py312hc128f0a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-26.1.0-pyhcf101f3_1.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-2025.11.12-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-py312he06e257_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.4-py312h196c9fc_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cftime-1.6.5-py312h196c9fc_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 @@ -5874,44 +6134,44 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/conda-inject-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/configargparse-1.7.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/connection_pool-0.0.3-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py312hf90b1b7_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.2.5-pyhd8ed1ab_0.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/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.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.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.19-py312ha1a9051_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_1.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-py312ha1a9051_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_0.conda + - 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.0-pyhcf101f3_1.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-2025.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_1.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.3-pyhd8ed1ab_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.44.0-h2bffdaa_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_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/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.8-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/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.128.0-h0ea4129_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.20-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.128.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.129.0-hccfc660_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.129.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-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-py312hbb81ca0_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fiona-1.10.1-py312h3f2e00f_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -5919,7 +6179,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 @@ -5928,165 +6188,177 @@ 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-py312hfdf67e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.12.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/furl-2.1.4-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.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/geos-3.14.1-hdade9fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/geotiff-1.7.4-h73469f5_4.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/gitdb-4.0.12-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.45-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda - 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.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/google-crc32c-1.7.1-py312h3d708b0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.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.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-14.1.0-h4c50273_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/greenlet-3.3.0-py312hbb81ca0_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/greenlet-3.3.1-py312ha1a9051_1.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/gts-0.7.6-h6b5321d_4.conda - - conda: https://conda.anaconda.org/gurobi/win-64/gurobi-13.0.0-py312_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/gurobi/win-64/gurobi-13.0.1-py312_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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.7.3-pyhd8ed1ab_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-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_104.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/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.7-pyh332efcf_0.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/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/win-64/httptools-0.7.1-py312he06e257_1.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/noarch/iam-units-2025.10.13-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/noarch/identify-2.6.15-pyhd8ed1ab_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-py312he06e257_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/infinity-1.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/intervals-0.9.2-pyhd8ed1ab_1.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.8.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-8.1.8-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/noarch/ixmp4-0.14.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda - 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-py312hf90b1b7_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.1-pyhd8ed1ab_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.25.1-pyhe01879c_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.1-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.7.0-pyhcf101f3_0.conda + - 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.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.1-pyhd8ed1ab_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.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-3.0.16-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py312h78d62e6_2.conda - 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.17-hbcf6048_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/lcms2-2.18-hf2c6c5f_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/libaec-1.1.4-h20038f6_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarchive-3.8.2-gpl_h26aea39_100.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-22.0.0-h89d7da9_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-22.0.0-h7d8d6a5_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-22.0.0-h2db994a_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-22.0.0-h7d8d6a5_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-22.0.0-hf865cc0_6_cpu.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-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_6.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.7-default_ha2db4b5_1.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.17.0-h43ecb02_1.conda + - 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.10.3-h1a28ea4_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf4-3.10.3-ha47b6c4_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf5-3.10.3-h0f01001_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-netcdf-3.10.3-hbb26ad1_26.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 - - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.12.1-default_h4379cf1_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.12.2-default_h4379cf1_1000.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwy-1.3.0-ha71e874_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 + - 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.1-h2466b09_2.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-22.0.0-h7051d1f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.53-h7351971_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpq-18.1-h7c87ebf_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-6.31.1-hdcda5b4_2.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_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/libpq-18.2-h9e1d4a5_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 - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libspatialite-5.1.0-gpl_h0cd62ae_119.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.1-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.2-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda - 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.2-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/libutf8proc-2.11.3-hb980946_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.5.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-21.1.7-h4fa8253_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.4-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-py312h2f35c63_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-4.4.5-py312hc3c93f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.10.0-h2466b09_1.conda @@ -6094,6 +6366,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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-py312h05f76fc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.8-py312h2e8e312_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.8-py312h0ebf65c_0.conda @@ -6102,116 +6375,123 @@ environments: - 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.1.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-include-2025.3.0-h57928b3_454.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-static-2025.3.0-hbcdf7a0_454.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-include-2025.3.0-h57928b3_455.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-static-2025.3.0-hfdbc840_455.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mpfr-4.2.1-hbc20e70_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.1.2-py312hf90b1b7_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/multidict-6.7.0-py312h05f76fc_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/win-64/mypy-1.19.1-py312he06e257_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.13.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-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/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.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_py312h79d12a2_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda - 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-py312hc128f0a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numexpr-2.14.1-py312h0c4f959_101.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-1.26.4-py312h8753938_0.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-py312h83acffa_2.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.1-h7414dfc_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.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/orderedmultidict-1.0.1-pyhd8ed1ab_2.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-py312hc128f0a_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/passlib-1.7.4-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-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/pendulum-3.1.0-py312h2615798_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pendulum-3.2.0-py312hdabe01f_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/phonenumbers-8.13.55-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.0.0-py312h31f0997_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.1-py312h31f0997_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.2-pyhcf101f3_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/plotly-6.5.0-pyhd8ed1ab_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.36.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.36.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/pre-commit-4.5.0-pyha770c72_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-h7b1ce8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.23.1-pyhd8ed1ab_0.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-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-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-py312hcb3287e_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.1.3-py312he5662c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/psycopg-3.3.2-pyh848bd53_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psycopg-c-3.3.2-py312hfd315ce_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/noarch/psycopg-3.3.3-pyh848bd53_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psycopg-c-3.3.3-py312hfd315ce_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-py312he39998a_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/noarch/pyam-3.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-22.0.0-py312h2e8e312_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-22.0.0-py312h85419b5_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.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/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 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - 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-py312hdabe01f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.12.0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.8.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.13.1-pyhd8ed1ab_0.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.0-py312h6e88f47_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.12.1-py312h3f2e00f_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyomo-6.9.5-py312hbb81ca0_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.2.5-pyhcf101f3_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-py312habbd053_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyreadline3-3.5.4-py312h2e8e312_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyscipopt-5.6.0-py312hbb81ca0_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyscipopt-6.1.0-np2py312ha76dc74_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-py312h0c8bdd4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.10.2-py312h0c8bdd4_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.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py312h20cef2e_10.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-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-h0159041_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.12-h0159041_2_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/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-eccodes-2.44.0-py312h196c9fc_1.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-fastjsonschema-2.21.2-pyhe01879c_0.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-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-librt-0.7.8-py312he5662c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.21-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-librt-0.8.1-py312he5662c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_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.12-8_cp312.conda @@ -6220,60 +6500,66 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py312h829343e_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_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-py312h05f76fc_0.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/pyyaml-6.0.3-py312h05f76fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.1.0-py312h343a6d4_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.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-py312hbb81ca0_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.4.4-py312h11f88aa_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.5.0-py312h064b072_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-pyhd8ed1ab_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/rich-14.2.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.17.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.30.0-py312hdabe01f_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-py312he5662c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.9-h37e10c4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.15.2-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-np2py312hea30aaf_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/scipy-1.16.3-py312hd0164fe_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-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/semver-3.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.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_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-py312h37f46ab_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-py312he06e257_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.0.3-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda - 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-minimal-9.14.4-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.1.0-pyhdfd78af_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.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 - conda: https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.43-py312he06e257_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.46-py312he5662c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-arrow-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-babel-0.42.1-hd8ed1ab_0.conda @@ -6286,78 +6572,85 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-phone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-timezone-0.42.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-url-0.42.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/sqlite-3.51.1-hdb435a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.46-pyh0a47959_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.46-pyh0a47959_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/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.50.0-pyhfdc7a7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.52.1-pyhfdc7a7d_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/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-hd094cb3_1.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/terminado-0.18.1-pyh5737063_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/win-64/time-machine-3.2.0-py312he5662c2_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/win-64/time-machine-2.19.0-py312he5662c2_2.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/toml-0.10.2-pyhcf101f3_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.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-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-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/typer-0.21.1-pyhf8876ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.21.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.21.1-h378290b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-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-h8577fbf_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/ukkonen-1.0.1-py312hf90b1b7_6.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/ujson-5.11.0-py312ha1a9051_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.1.0-py312hf90b1b7_0.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/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/urllib3-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.40.0-pyh6dadd2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.40.0-hcfb189c_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/uvicorn-0.41.0-pyh6dadd2b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.41.0-hf7a0800_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-h2b53caa_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_33.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_33.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.35.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_33.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.38.0-pyhcf101f3_0.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/win-64/watchfiles-1.1.1-py312hb0142fd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.14-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/win-64/websockets-16.0-py312he5662c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.15-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/noarch/wquantiles-0.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py312he06e257_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-he0c23c2_0.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/yaml-0.2.5-h6a83c73_3.conda @@ -6368,28 +6661,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-h5112557_0.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-py312he5662c2_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 @@ -6410,20 +6698,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 @@ -6473,9 +6761,9 @@ packages: license_family: PSF size: 19750 timestamp: 1741775303303 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.2-py312h27b7581_0.conda - sha256: baf2bbf52aeecdbfe6e03a373b2664169cbdc37a92a2ac68bc7ef45353f65d61 - md5: ad84ca57d502eead2df0233090261dfb +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.3-py312h5d8c7f2_0.conda + sha256: ee6a1ac887fac367899278baab066c08b48a98ecdc3138bc497064c7d6ec5a17 + md5: 7ee12bbdb2e989618c080c7c611048db depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.5.0 @@ -6490,11 +6778,11 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 1014925 - timestamp: 1761727721839 -- conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.13.2-py312h352d07c_0.conda - sha256: 9a88e9eba482a489ff2ff58e243d0e4ce1ecb371790523541d85f9c6fc7cdef4 - md5: f2ab5e6e6ffde3580460181bf094749b + size: 1022914 + timestamp: 1767525761337 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.13.3-py312h80cd6c1_0.conda + sha256: 7703f430156a933756c57afab320aaa8d30639e8f9f899628a3eb5fbfa9b685b + md5: 1d67d1baba2a1917f1cd6519029a3fbf depends: - __osx >=10.13 - aiohappyeyeballs >=2.5.0 @@ -6508,11 +6796,11 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 983635 - timestamp: 1761726866534 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.2-py312he52fbff_0.conda - sha256: 390d41a479791835dcb24631661d28892bd2b1c8dc5ad3c86612b44e02204508 - md5: b4abb46248fa5cf1bc71c1b837c648a8 + size: 993471 + timestamp: 1767525057464 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.3-py312h9f8c436_0.conda + sha256: 7b6668363c0ae7060e57d48da8ace94a885b428ae8ae2fbd357f004cb281eef5 + md5: 18c1c68638daa92ca6a8fb36f6d92691 depends: - __osx >=11.0 - aiohappyeyeballs >=2.5.0 @@ -6527,11 +6815,11 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 985894 - timestamp: 1761727100703 -- conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.13.2-py312h927b8db_0.conda - sha256: 81391f625cac7dc7b336bfa4204d8b07371c593a72f1766886591434793f17aa - md5: 21bb8466e377d3d952a48a95dd52dbad + size: 989060 + timestamp: 1767524911343 +- conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.13.3-py312h6b91d65_0.conda + sha256: ef7eb9709f46d1d1138c9d667a72a9b2c1907a83daa54e63e6d7b7fb7043f331 + md5: 65ebd46fdc1e28a6b035935246bd6531 depends: - aiohappyeyeballs >=2.5.0 - aiosignal >=1.4.0 @@ -6547,8 +6835,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 960833 - timestamp: 1761726896002 + size: 964547 + timestamp: 1767524981872 - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda sha256: 8dc149a6828d19bf104ea96382a9d04dae185d4a03cc6beb1bc7b84c428e3ca2 md5: 421a865222cd0c9d83ff08bc78bf3a61 @@ -6569,30 +6857,30 @@ packages: license_family: BSD size: 18684 timestamp: 1733750512696 -- conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.0-pyhcf101f3_0.conda - sha256: e91beea97434050545febf98cdca822de89eb88b4abef6d88488eb452c9b231a - md5: c48a746587f853385f408105faf5f23d +- conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + sha256: 83fc576dbcd59427f55be9623e1b101a1607ed9b4dc8633d86ada30c6ec1cf1d + md5: c45fa7cf996b766cb63eadf3c3e6408a depends: - python >=3.10 - - sqlalchemy >=1.4.0 + - sqlalchemy >=1.4.23 - mako - typing_extensions >=4.12 - tomli - python license: MIT license_family: MIT - size: 183092 - timestamp: 1768123347737 -- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.14-hb9d3cd8_0.conda - sha256: b9214bc17e89bf2b691fad50d952b7f029f6148f4ac4fe7c60c08f093efdf745 - md5: 76df83c2a9035c54df5d04ff81bcc02d + size: 184763 + timestamp: 1770806831769 +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda + sha256: d88aa7ae766cf584e180996e92fef2aa7d8e0a0a5ab1d4d49c32390c1b5fff31 + md5: dcdc58c15961dbf17a0621312b01f5cb depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 license: LGPL-2.1-or-later license_family: GPL - size: 566531 - timestamp: 1744668655747 + size: 584660 + timestamp: 1768327524772 - conda: https://conda.anaconda.org/conda-forge/linux-64/ampl-asl-1.0.0-h5888daf_2.conda sha256: c5c1057778bec78e07a4a8f122c3659767817fc0a9fa034724ff931ad90af57b md5: ef757816a8f0fee2650b6c7e19980b6b @@ -6669,9 +6957,9 @@ packages: license_family: MIT size: 18074 timestamp: 1733247158254 -- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.0-pyhcf101f3_0.conda - sha256: 830fc81970cd9d19869909b9b16d241f4d557e4f201a1030aa6ed87c6aa8b930 - md5: 9958d4a1ee7e9c768fe8f4fb51bd07ea +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda + sha256: eb0c4e2b24f1fbefaf96ce6c992c6bd64340bc3c06add4d7415ab69222b201da + md5: 11a2b8c732d215d977998ccd69a9d5e8 depends: - exceptiongroup >=1.0.2 - idna >=2.8 @@ -6683,8 +6971,8 @@ packages: - uvloop >=0.21 license: MIT license_family: MIT - size: 144702 - timestamp: 1764375386926 + size: 145175 + timestamp: 1767719033569 - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda sha256: 5b9ef6d338525b332e17c3ed089ca2f53a5d74b7a7b432747d29c6466e39346d md5: f4e90937bbfc3a4a92539545a37bb448 @@ -6803,47 +7091,47 @@ packages: license_family: APACHE size: 113854 timestamp: 1760831179410 -- conda: https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.2-py312h7900ff3_0.conda - sha256: 314383c405003585d27883e7e9f3cc3973a1b29d625ba7feb6cf1b60ed94e704 - md5: 01ddf9d3e4a39c3f032ba14ad91bdc82 +- conda: https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.4-py312h7900ff3_0.conda + sha256: 50d706c0700ee47617de6a850cab0bb4a3419c2ed86804c21f449735f09e1c48 + md5: 78bdb6d3da524bdea10ef44e5ec7658d depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: LGPL-2.1-or-later license_family: LGPL - size: 509814 - timestamp: 1762775882212 -- conda: https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.2-py312hb401068_0.conda - sha256: ae9baaf6064b0ed78b4d52bee1be97c66553824f84f8926a1023859377bb0e29 - md5: e308f588a2018574d680dd737f373ed5 + size: 509570 + timestamp: 1770634488093 +- conda: https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.4-py312hb401068_0.conda + sha256: 3803f7475a0b62585847dfd03a55571ee21495a9667ef07dbdd9f34b7a923706 + md5: 6c383a4df7daf22811ab8172d01cff6f depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: LGPL-2.1-or-later license_family: LGPL - size: 510324 - timestamp: 1762776047658 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.2-py312h81bd7bf_0.conda - sha256: d99d8544823925d21140481754f849b1599204a974c308acc3e43d6d4d893ea5 - md5: ad0ba493bf5f9799c1875d511fcfab7e + size: 509345 + timestamp: 1770634843191 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.4-py312h81bd7bf_0.conda + sha256: a4b8f314e2ced66f99d7d5948d3e481f24f336be0db64e6417f6bb9aa0df5fb3 + md5: 6d1f4744a6b483b7738b60f4cd508a20 depends: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: LGPL-2.1-or-later license_family: LGPL - size: 511022 - timestamp: 1762776240673 -- conda: https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.2-py312h2e8e312_0.conda - sha256: 8722448dc0caeb86407a9d10ef0d9c735a278ffd80b1425a2734df9c974651e9 - md5: c5301ff9ec4c62757f2655e23eb60329 + size: 509900 + timestamp: 1770634914230 +- conda: https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.4-py312h2e8e312_0.conda + sha256: 24916ad967b6b0d25c6ed2cff1e61b17f4f72d0c73cbdc5f2afdd55dcc0a36b5 + md5: 0cec3709c887fd21483f9fe36d039bac depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: LGPL-2.1-or-later license_family: LGPL - size: 508690 - timestamp: 1762776003031 + size: 508356 + timestamp: 1770634547561 - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda sha256: ee4da0f3fe9d59439798ee399ef3e482791e48784873d546e706d0935f9ff010 md5: 9673a61a297b00016442e022d689faa6 @@ -6855,17 +7143,17 @@ packages: license_family: Apache size: 28797 timestamp: 1763410017955 -- conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - sha256: 3b7233041e462d9eeb93ea1dfe7b18aca9c358832517072054bb8761df0c324b - md5: d9d0f99095a9bb7e3641bca8c6ad2ac7 +- conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda + sha256: fb09cb9bfe4da1586d0ad3bf80bb65e70acfd5fe0f76df384250a1c0587d6acc + md5: 04d2e5fba67e5a1ecec8e25d6c769004 depends: - - python >=3.9 + - python >=3.10 - typing_extensions >=4.0.0 - python license: MIT license_family: MIT - size: 17335 - timestamp: 1742153708859 + size: 19458 + timestamp: 1768752884184 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 sha256: 26ab9386e80bf196e51ebe005da77d57decf6d989b4f34d96130560bc133479c md5: 6b889f174df1e0f816276ae69281af4d @@ -6984,6 +7272,21 @@ packages: license_family: MIT size: 64759 timestamp: 1764875182184 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.1-h48c9088_3.conda + sha256: e9c3dece30c12dfac995a8386bd2d1225d0b5f14c0753fcf4fef086047f77048 + md5: afdbdbe7f786f47a36a51fdc2fe91210 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-http >=0.10.4,<0.10.5.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 122946 + timestamp: 1757625693207 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.conda sha256: d9c5babed03371448bb0dc91a1573c80d278d1222a3b0accef079ed112e584f9 md5: bdd464b33f6540ed70845b946c11a7b8 @@ -6999,6 +7302,20 @@ packages: license_family: APACHE size: 133443 timestamp: 1764765235190 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.9.1-h2e727e9_3.conda + sha256: e4d314403229b4c899de1322a3e57ca2fddfb2b641e7ed73eb11bd3f04c1f2ca + md5: b57046504c4331fbcff511f8fc8ef288 + depends: + - __osx >=10.13 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-http >=0.10.4,<0.10.5.0a0 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 110690 + timestamp: 1757625708334 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.9.3-hdff831d_0.conda sha256: aaadae39675911059bf0caa072c9d0cab622278365f6c3ceb6a63a2e9e57df03 md5: a04fb222805ce5697065036ae1676436 @@ -7013,6 +7330,20 @@ packages: license_family: APACHE size: 119662 timestamp: 1764765258455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.9.1-h41ebd0a_3.conda + sha256: 4114ebee79ea6c4bab0522e9c6ce366b87f9bbc28ab11b3ce1becd9f51b58b67 + md5: c011208b4dd96a573efb00805ffae8b1 + depends: + - __osx >=11.0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - aws-c-http >=0.10.4,<0.10.5.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 106581 + timestamp: 1757625789102 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.9.3-h1ddaa69_0.conda sha256: 491576e1ef8640e0cc345705c2028aebb98e015d51471395fe595f60a3b33884 md5: f0cc47ecd2058f2dd65fde1a5f6528ec @@ -7043,11 +7374,27 @@ packages: license_family: APACHE size: 125616 timestamp: 1764765271198 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda - sha256: f21d648349a318f4ae457ea5403d542ba6c0e0343b8642038523dd612b2a5064 - md5: 3c3d02681058c3d206b562b2e3bc337f +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.9.4-hdf23a24_1.conda + sha256: 61e9f0bf866f2fe743a4b745587598a441ff7b33435dc33646442942972b8500 + md5: 9555513fbcb6349c895b5a1a1f3477bc depends: - - __glibc >=2.17,<3.0.a0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-io >=0.26.1,<0.26.2.0a0 + - aws-c-http >=0.10.10,<0.10.11.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + license: Apache-2.0 + license_family: APACHE + size: 125761 + timestamp: 1771457560538 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda + sha256: f21d648349a318f4ae457ea5403d542ba6c0e0343b8642038523dd612b2a5064 + md5: 3c3d02681058c3d206b562b2e3bc337f + depends: + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.12.6,<0.12.7.0a0 - libgcc >=14 - openssl >=3.5.4,<4.0a0 @@ -7055,6 +7402,18 @@ packages: license_family: Apache size: 56230 timestamp: 1764593147526 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.2-he7b75e1_1.conda + sha256: 30ecca069fdae0aa6a8bb64c47eb5a8d9a7bef7316181e8cbb08b7cb47d8b20f + md5: c04d1312e7feec369308d656c18e7f3e + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - libgcc >=14 + - openssl >=3.5.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 50942 + timestamp: 1752240577225 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.13-hea39f9f_1.conda sha256: c085b749572ca7c137dfbf8a2a4fd505657f8f7f8a7b374d5f41bf4eb2dd9214 md5: cbf7be9e03e8b5e38ec60b6dbdf3a649 @@ -7065,6 +7424,16 @@ packages: license_family: Apache size: 45262 timestamp: 1764593359925 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.2-h6f29d6d_1.conda + sha256: 41d60e59a6c906636a6c82b441d10d21a1623fd03188965319572a17e03f4da1 + md5: 44f3a90d7c5a280f68bf1a7614f057b6 + depends: + - __osx >=10.13 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: Apache + size: 40872 + timestamp: 1752240723936 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.13-h6ee9776_1.conda sha256: 13c42cb54619df0a1c3e5e5b0f7c8e575460b689084024fd23abeb443aac391b md5: 8baab664c541d6f059e83423d9fc5e30 @@ -7075,6 +7444,16 @@ packages: license_family: Apache size: 45233 timestamp: 1764593742187 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.2-hd08b81e_1.conda + sha256: 0cff81daf70f64bb8bf51f0883727d253c0462085f6bfe3d6c619479fbaec329 + md5: f8d75a83ced3f7296fed525502eac257 + depends: + - __osx >=11.0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: Apache + size: 41154 + timestamp: 1752240791193 - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.9.13-h46f3b43_1.conda sha256: 5f61082caea9fbdd6ba02702935e9dea9997459a7e6c06fd47f21b81aac882fb md5: 7cc4953d504d4e8f3d6f4facb8549465 @@ -7087,6 +7466,16 @@ packages: license_family: Apache size: 53613 timestamp: 1764593604081 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.4-hb03c661_0.conda + sha256: 6c9e1b9e82750c39ac0251dcfbeebcbb00a1af07c0d7e3fb1153c4920da316eb + md5: ae5621814cb99642c9308977fe90ed0d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + size: 236420 + timestamp: 1752193614294 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda sha256: 926a5b9de0a586e88669d81de717c8dd3218c51ce55658e8a16af7e7fe87c833 md5: e36ad70a7e0b48f091ed6902f04c23b8 @@ -7097,6 +7486,15 @@ packages: license_family: Apache size: 239605 timestamp: 1763585595898 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.12.4-h1c43f85_0.conda + sha256: 94e26ee718358b505aa3c3ddfcedcabd0882de9ff877057985151874b54e9851 + md5: f9547dfb10c15476c17d2d54b61747b8 + depends: + - __osx >=10.13 + license: Apache-2.0 + license_family: Apache + size: 228243 + timestamp: 1752193906883 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.12.6-h8616949_0.conda sha256: 66fb2710898bb3e25cb4af52ee88a0559dcde5e56e6bd09b31b98a346a89b2e3 md5: c7f2d588a6d50d170b343f3ae0b72e62 @@ -7106,6 +7504,15 @@ packages: license_family: Apache size: 230785 timestamp: 1763585852531 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.12.4-h6caf38d_0.conda + sha256: d94c508308340b5b8294d2c382737b72b77e9df688610fa034d0a009a9339d73 + md5: 7a3edd3d065687fe3aa9a04a515fd2bf + depends: + - __osx >=11.0 + license: Apache-2.0 + license_family: Apache + size: 221313 + timestamp: 1752193769784 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.12.6-hc919400_0.conda sha256: cd3817c82470826167b1d8008485676862640cff65750c34062e6c20aeac419b md5: b759f02a7fa946ea9fd9fb035422c848 @@ -7137,6 +7544,27 @@ packages: license_family: APACHE size: 22272 timestamp: 1764593718823 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h92c474e_6.conda + sha256: 154d4a699f4d8060b7f2cec497a06e601cbd5c8cde6736ced0fb7e161bc6f1bb + md5: 3490e744cb8b9d5a3b9785839d618a17 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 22116 + timestamp: 1752240005329 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.1-h7a4e982_6.conda + sha256: 2029ee55f83e1952ea0c220b0dd30f1b6f9e9411146c659489fcfd6a29af2ddf + md5: 6a4b25acf73532bbec863c2c2ae45842 + depends: + - __osx >=10.13 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 21116 + timestamp: 1752240021842 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.1-h901532c_9.conda sha256: b99ddb6654ca12b9f530ca4cbe4d2063335d4ac43f9d97092c4076ccaf9b89e7 md5: abb79371a321d47da8f7ddca128533de @@ -7157,6 +7585,16 @@ packages: license_family: APACHE size: 21372 timestamp: 1764593773975 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.1-habbe1e8_6.conda + sha256: 633c7ee0e80c24fa6354b2e1c940af6d7f746c9badc3da94681a1a660faeca39 + md5: 35c95aad3ab99e0a428c2e02e8b8e282 + depends: + - __osx >=11.0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 21037 + timestamp: 1752240015504 - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.3.1-hcb3a2da_9.conda sha256: ff1046d67709960859adfa5793391a2d233bb432ec7429069fcfab5b643827df md5: 0888dbe9e883582d138ec6221f5482d6 @@ -7169,6 +7607,32 @@ packages: license_family: APACHE size: 23136 timestamp: 1764593733263 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.3.2-hcb3a2da_0.conda + sha256: f98fbb797d28de3ae41dbd42590549ee0a2a4e61772f9cc6d1a4fa45d47637de + md5: 0385f2340be1776b513258adaf70e208 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 23087 + timestamp: 1767790877990 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.6-h82d11aa_3.conda + sha256: 849d645bf5c7923d9b0d4ba02050714c856495e34b0328b46c0c968045691117 + md5: a6374ed86387e0b1967adc8d8988db86 + depends: + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-checksums >=0.2.7,<0.2.8.0a0 + license: Apache-2.0 + license_family: APACHE + size: 58941 + timestamp: 1757606335645 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.7-h28f887f_1.conda sha256: a5b151db1c8373b6ca2dacea65bc8bda02791a43685eebfa4ea987bb1a758ca9 md5: 7b8e3f846353b75db163ad93248e5f9d @@ -7183,6 +7647,19 @@ packages: license_family: APACHE size: 58806 timestamp: 1764675439822 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.5.6-hfc6d359_3.conda + sha256: addd56bead2c44d96b1818f182e3caff862e1b1c91e5caf872eba7d421337ad6 + md5: 71141779bef9168a5bbe24bfdb4af5d9 + depends: + - libcxx >=19 + - __osx >=10.13 + - aws-checksums >=0.2.7,<0.2.8.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 52439 + timestamp: 1757606366817 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.5.7-ha05da6a_1.conda sha256: 56f7aebd59d5527830ef7cf6e91f63ee4c5cf510af56529276affe8e2dc9eb24 md5: e0d71662f35b21fb993484238b4861d9 @@ -7196,6 +7673,19 @@ packages: license_family: APACHE size: 52911 timestamp: 1764675471218 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.6-hf65d68d_3.conda + sha256: d84e174bc63a9d22b538ee00924d9e1089b9aa34d7419276230ded5af9ab8d1b + md5: 6f8e9b398a144ed59b0a0c380e152968 + depends: + - libcxx >=19 + - __osx >=11.0 + - aws-checksums >=0.2.7,<0.2.8.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 51857 + timestamp: 1757606346473 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.7-h9ae9c55_1.conda sha256: c336b71a356d9b39fa6e9769d475dea6fd0cfe25ad81dcecac3102ef30f8b753 md5: 53c59e7f68bbd3754de6c8dcd4c27f86 @@ -7223,6 +7713,34 @@ packages: license_family: APACHE size: 57054 timestamp: 1764675494741 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-event-stream-0.5.9-h972bbec_2.conda + sha256: a5be74b1fdab94159eedf2c094cf177cbddc921bc775b0daf850e4c0372468f4 + md5: a18eef8a4007656c5408fc8afe9f4442 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - aws-checksums >=0.2.10,<0.2.11.0a0 + - aws-c-io >=0.26.1,<0.26.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 57333 + timestamp: 1771380438001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.4-h94feff3_3.conda + sha256: ce1fb6eb7a3bb633112b334647382c4a28a1bf85ab7b02b53a34aebc984a8e89 + md5: 8dd69714ac24879be0865676eb333f6b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - aws-c-compression >=0.3.1,<0.3.2.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 224208 + timestamp: 1757610690937 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-ha8fc4e3_5.conda sha256: 5527224d6e0813e37426557d38cb04fed3753d6b1e544026cfbe2654f5e556be md5: 3028f20dacafc00b22b88b324c8956cc @@ -7237,6 +7755,19 @@ packages: license_family: APACHE size: 224580 timestamp: 1764675497060 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.10.4-h892fe1a_3.conda + sha256: 380cb2f286a0be9cccc3d1582caeac99a774ac9c89ddfd0f0e575b58a84fabf4 + md5: aa7b5f43139c24f915494d27c760e57e + depends: + - __osx >=10.13 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - aws-c-compression >=0.3.1,<0.3.2.0a0 + license: Apache-2.0 + license_family: APACHE + size: 191788 + timestamp: 1757610727097 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.10.7-h924c446_5.conda sha256: 53ee041db79f6cbff62179b2f693e50e484d163b9a843a3dbbb80dbc36220c7e md5: acff093ebb711857fb78fae3b656631c @@ -7250,6 +7781,19 @@ packages: license_family: APACHE size: 192149 timestamp: 1764675489248 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.4-h70a9c10_3.conda + sha256: a9e2c19378d5dd42904f76fbaf0b9726e2af890e5b53fcf975f242a6aa4c6196 + md5: 39d91ec5c4ac0c0fba2e1c48e383706b + depends: + - __osx >=11.0 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-compression >=0.3.1,<0.3.2.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 170425 + timestamp: 1757610702161 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.7-h5928ca5_5.conda sha256: 29e180b61155279a2e64011b95957fbe38385113c60467b8d34fce47bc29c728 md5: f12bd6066c693efba2e5886e2c70d7ba @@ -7263,6 +7807,21 @@ packages: license_family: APACHE size: 171020 timestamp: 1764675515369 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.10.10-hb410799_0.conda + sha256: d528826b08c20d38b5a44bcd440aa6acff21e41821bf13726cc5d8f6f54a2f56 + md5: 37efcd1b134dbec06e22cbffbb115762 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-io >=0.26.1,<0.26.2.0a0 + - aws-c-compression >=0.3.2,<0.3.3.0a0 + license: Apache-2.0 + license_family: APACHE + size: 207441 + timestamp: 1771421383740 - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.10.7-hc678f4a_5.conda sha256: 4f41b922ce01c983f98898208d49af5f3d6b0d8f3e8dcb44bd13d8183287b19a md5: 3427460b0654d317e72a0ba959bb3a23 @@ -7278,6 +7837,19 @@ packages: license_family: APACHE size: 206709 timestamp: 1764675527860 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.22.0-h57f3b0d_1.conda + sha256: 3dc378afddcdaf4179daccba1ef0b755eea264ff739ceab1d499b271340ea874 + md5: 2de3494a513d360155b7f4da7b017840 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - s2n >=1.5.26,<1.5.27.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 180809 + timestamp: 1758212800114 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.23.3-hdaf4b65_5.conda sha256: 07d7f2a4493ada676084c3f4313da1fab586cf0a7302572c5d8dde6606113bf4 md5: 132e8f8f40f0ffc0bbde12bb4e8dd1a1 @@ -7291,6 +7863,17 @@ packages: license_family: APACHE size: 181361 timestamp: 1765168239856 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.22.0-h5c36c82_1.conda + sha256: a1a34d8779e81846dd78140fb217a123c964461a07283c13f595cc8970576aed + md5: 763c3d88bd8b0ca47e97c8cf10b3a734 + depends: + - __osx >=10.15 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 182335 + timestamp: 1758212805103 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.23.3-hf559bb5_5.conda sha256: 734496fb5a33a4d13ff0a27c5bc4a0f4e7fe9ed15ec099722d5be82b456b9502 md5: d9cc056da3a1ee0a2da750d10a5496f3 @@ -7302,6 +7885,17 @@ packages: license_family: APACHE size: 182572 timestamp: 1765168277462 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.22.0-h89d1e94_1.conda + sha256: 680c309d4ebbd5a1b408d043766d1aec628c5b6d304ceff13a01db8ca21fa9a8 + md5: 2e51b01a5f52349f51e8e0965f604fe6 + depends: + - __osx >=11.0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + license: Apache-2.0 + license_family: APACHE + size: 176207 + timestamp: 1758212831591 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.23.3-hbe03c90_5.conda sha256: bf1c7cf7997d28922283e6612e5ea6a9409fcfc2749cd4acfafd1bf6e0c57c08 md5: c249aa1a151e319d7acd05a2e1f165d2 @@ -7326,6 +7920,32 @@ packages: license_family: APACHE size: 182053 timestamp: 1765168273517 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.26.1-h0d5b9f9_1.conda + sha256: 4d25fecaa5fc7364ca44135dd053fba393ec0ebaa53ae35a2f8b19b55f9a31cc + md5: c0fcc0542f9892a8ba3c55c80912df75 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + license: Apache-2.0 + license_family: APACHE + size: 182323 + timestamp: 1771374503084 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-h2b1cf8c_6.conda + sha256: e4d782791591d6d19e1ea196e1f9494a4c30b0a052555648b64098a682ce9703 + md5: 7bb5e26afec09a59283ec1783798d74a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-http >=0.10.4,<0.10.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 216041 + timestamp: 1757626689282 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-hc63082f_11.conda sha256: fb102b0346a1f5c4f3bb680ec863c529b0333fa4119d78768c3e8a5d1cc2c812 md5: 6a653aefdc5d83a4f959869d1759e6e3 @@ -7339,6 +7959,18 @@ packages: license_family: APACHE size: 216454 timestamp: 1764681745427 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.13.3-h04ed212_6.conda + sha256: ecd46edbf180ecd929ac338b94a70a1b0879688cae5bad4bbe609146a6564495 + md5: 229caca3b9c8b264e4184e37238988bf + depends: + - __osx >=10.13 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-c-http >=0.10.4,<0.10.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 188189 + timestamp: 1757626711253 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.13.3-ha72ff4e_11.conda sha256: c05215c85f90a0caba1202f4c852d6e3a2ad93b4a25f286435a8e855db4237ae md5: 96f22c912f1cf3493d9113b9fd04c912 @@ -7363,6 +7995,18 @@ packages: license_family: APACHE size: 150454 timestamp: 1764681796127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.13.3-he7b126b_6.conda + sha256: d1928f5f726e76b654eb395ccd983a80698019784da9020c04d16bf0e91fc2cb + md5: ff984f7e551996b8624a38b69b81e068 + depends: + - __osx >=11.0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-http >=0.10.4,<0.10.5.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 150220 + timestamp: 1757626776230 - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.13.3-hfa314fa_11.conda sha256: 9b241397ef436dcf67e8e6cde15ff9c0d03ea942ad11e27c77caecce0d51b5be md5: 6c043365f1d3f89c0b68238c6f5b8cce @@ -7377,6 +8021,20 @@ packages: license_family: APACHE size: 206357 timestamp: 1764681793150 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.14.0-h833cf40_1.conda + sha256: 6340943c5adfc73a9b9b7e6152a2d8c793fd6d9d85bfaa0b399ca09fcf40ebf8 + md5: 0088f53ad6df2dfb2832d7bde7567dd7 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-io >=0.26.1,<0.26.2.0a0 + - aws-c-http >=0.10.10,<0.10.11.0a0 + license: Apache-2.0 + license_family: APACHE + size: 210780 + timestamp: 1771458049739 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.3-h06ab39a_1.conda sha256: 8de2292329dce2fd512413d83988584d616582442a07990f67670f9bc793a98b md5: 3689a4290319587e3b54a4f9e68f70c8 @@ -7394,6 +8052,23 @@ packages: license_family: APACHE size: 151382 timestamp: 1765174166541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.8.6-h4e5ac4b_5.conda + sha256: 2e1fdbcbb3da881ae0eb381697f4f1ece2bd9f534b05e7ed9f21b0e6cbac6f32 + md5: 1557911474d926a8bd7b32a5f02bba35 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - openssl >=3.5.2,<4.0a0 + - aws-c-http >=0.10.4,<0.10.5.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-checksums >=0.2.7,<0.2.8.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-auth >=0.9.1,<0.9.2.0a0 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + license: Apache-2.0 + license_family: APACHE + size: 137467 + timestamp: 1757647972268 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.11.3-he30762a_1.conda sha256: 9c989a5f0b35ff5cee91b74bcba0d540ce5684450dc072ba0bb5299783cdf9cd md5: 33c653401dc7b016b0011cb4d16de458 @@ -7409,6 +8084,21 @@ packages: license_family: APACHE size: 133827 timestamp: 1765174162875 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.8.6-h19e4261_5.conda + sha256: bef31467a073e6d4cac12b215caa6444d9220d0590bb62c86b56e7955bf20350 + md5: 02d47c3d0ce99304bd6ccbd8578a01ed + depends: + - __osx >=10.13 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - aws-c-auth >=0.9.1,<0.9.2.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-checksums >=0.2.7,<0.2.8.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-http >=0.10.4,<0.10.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 121692 + timestamp: 1757648036791 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.11.3-h8da9771_1.conda sha256: 31f432d1a0f7dacbe80b476c3236c22a71f4018e840ae6974e843d38d5763335 md5: 06417cb45f131cf503d3483446cedbc3 @@ -7424,6 +8114,21 @@ packages: license_family: APACHE size: 129384 timestamp: 1765174183548 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.8.6-h7a3c519_5.conda + sha256: 4d1e30120d846420ccaf46be44a2f24a4ca3a98acd3f383fbe98d9d60ad3be69 + md5: c33295f9e4a4bdb0d6e08e0d242599b0 + depends: + - __osx >=11.0 + - aws-c-http >=0.10.4,<0.10.5.0a0 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-c-auth >=0.9.1,<0.9.2.0a0 + - aws-checksums >=0.2.7,<0.2.8.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + license: Apache-2.0 + license_family: APACHE + size: 117752 + timestamp: 1757647971064 - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.11.3-ha659bf3_1.conda sha256: cda138c03683e85f29eafc680b043a40f304ac8759138dc141a42878eb17a90f md5: dcfc08ccd8e332411c454e38110ea915 @@ -7441,6 +8146,23 @@ packages: license_family: APACHE size: 141805 timestamp: 1765174184168 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.11.5-h9708004_2.conda + sha256: 335afa958c53f109bfb20858925fdacdb8bb353122b70e686f7800bb1f862d49 + md5: d707d9bfac38de17467975028d69fc13 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - aws-checksums >=0.2.10,<0.2.11.0a0 + - aws-c-io >=0.26.1,<0.26.2.0a0 + - aws-c-auth >=0.9.4,<0.9.5.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.10,<0.10.11.0a0 + license: Apache-2.0 + license_family: APACHE + size: 141985 + timestamp: 1771570464468 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda sha256: 9d62c5029f6f8219368a8665f0a549da572dc777f52413b7d75609cacdbc02cc md5: c7e3e08b7b1b285524ab9d74162ce40b @@ -7452,6 +8174,27 @@ packages: license_family: APACHE size: 59383 timestamp: 1764610113765 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h92c474e_1.conda + sha256: a9e071a584be0257b2ec6ab6e1f203e9d6b16d2da2233639432727ffbf424f3d + md5: 4ab554b102065910f098f88b40163835 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 59146 + timestamp: 1752240966518 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.4-h7a4e982_1.conda + sha256: 85d1b9eb67e02f6a622dcc0c854683da8ccd059d59b80a1ffa7f927eac771b93 + md5: 9ab61d370fc6e4caeb5525ef92e2d477 + depends: + - __osx >=10.13 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 55375 + timestamp: 1752240983413 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.4-h901532c_4.conda sha256: 468629dbf52fee6dcabda1fcb0c0f2f29941b9001dcc75a57ebfbe38d0bde713 md5: b384fb05730f549a55cdb13c484861eb @@ -7472,6 +8215,16 @@ packages: license_family: APACHE size: 53430 timestamp: 1764755714246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.4-habbe1e8_1.conda + sha256: cab7f54744619b88679c577c9ec8d56957bc8f6829e9966a7e50857fbc6c756d + md5: 9d77627725afb71b57f38355ee9e2829 + depends: + - __osx >=11.0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 53149 + timestamp: 1752240972623 - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.2.4-hcb3a2da_4.conda sha256: c86c30edba7457e04d905c959328142603b62d7d1888aed893b2e21cca9c302c md5: 3c97faee5be6fd0069410cf2bca71c85 @@ -7495,6 +8248,27 @@ packages: license_family: APACHE size: 76915 timestamp: 1764593731486 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h92c474e_2.conda + sha256: 7168007329dfb1c063cd5466b33a1f2b8a28a00f587a0974d97219432361b4db + md5: 248831703050fe9a5b2680a7589fdba9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 76748 + timestamp: 1752241068761 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.7-h7a4e982_2.conda + sha256: 523e5d6ffb58a333c6e4501e18120b53290ddad1f879e72ac7f58b15b505f92a + md5: a8a7aa3088b1310cebbc4777f887bd80 + depends: + - __osx >=10.13 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 75320 + timestamp: 1752241080472 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.7-h901532c_5.conda sha256: 0f67c453829592277f90d520f7855e260cf0565a3dc59fe90c55293996b7fbe9 md5: cccf553ce36da9ae739206b69c1a4d28 @@ -7515,6 +8289,28 @@ packages: license_family: APACHE size: 74377 timestamp: 1764593734393 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.7-habbe1e8_2.conda + sha256: 648c3d23df53b4cea1d551e4e54a544284be5436af5453296ed8184d970efc3a + md5: f3f6fef7c8d8ce7f80df37e4aaaf6b93 + depends: + - __osx >=11.0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 74030 + timestamp: 1752241089866 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.2.10-hcb3a2da_0.conda + sha256: 505b2365bbf3c197c9c2e007ba8262bcdaaddc970f84ce67cf73868ca2990989 + md5: 96e950e5007fb691322db578736aba52 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 116853 + timestamp: 1771063509650 - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.2.7-hcb3a2da_5.conda sha256: ca5e0719b7ca257462a4aa7d3b99fde756afaf579ee1472cac91c04c7bf3a725 md5: 38f1501fc55f833a4567c83581a2d2ed @@ -7527,6 +8323,27 @@ packages: license_family: APACHE size: 93142 timestamp: 1764593765744 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.34.4-h60c762c_0.conda + sha256: 4fce59fd1fc9848cb060e9ad59f0934ff848ca06455eb487ea52152d7299b7ed + md5: d41cf259f1b3e2a2347b11b98f64623d + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-s3 >=0.8.6,<0.8.7.0a0 + - aws-c-http >=0.10.4,<0.10.5.0a0 + - aws-c-event-stream >=0.5.6,<0.5.7.0a0 + - aws-c-mqtt >=0.13.3,<0.13.4.0a0 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - aws-c-auth >=0.9.1,<0.9.2.0a0 + license: Apache-2.0 + license_family: APACHE + size: 408260 + timestamp: 1758141985203 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.4-h8824e59_0.conda sha256: 524fc8aa2645e5701308b865bf5c523257feabc6dfa7000cb8207ccfbb1452a1 md5: 113b9d9913280474c0868b0e290c0326 @@ -7547,6 +8364,25 @@ packages: license_family: APACHE size: 408804 timestamp: 1765200263609 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.34.4-h3f46267_0.conda + sha256: 9178e2c387e225ce4ede4cbb9014f7cddf2b7ef223ca63520b9887c106774f76 + md5: acefbcecb87a1c7b11c54e73376c8d65 + depends: + - libcxx >=19 + - __osx >=10.13 + - aws-c-http >=0.10.4,<0.10.5.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-auth >=0.9.1,<0.9.2.0a0 + - aws-c-event-stream >=0.5.6,<0.5.7.0a0 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-c-mqtt >=0.13.3,<0.13.4.0a0 + - aws-c-s3 >=0.8.6,<0.8.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 343151 + timestamp: 1758142004222 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.35.4-h7484968_0.conda sha256: d3ab94c9245f667c78940d6838529401795ce0df02ad561d190c38819a312cd9 md5: 31db311b3005b16ff340796e424a6b3c @@ -7566,6 +8402,25 @@ packages: license_family: APACHE size: 343812 timestamp: 1765200322696 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.34.4-h01415d0_0.conda + sha256: 9b6e87354496d34c4b71bd012bc69705d1316b2c2ba4532c850105cd9cf27b47 + md5: 034456ff7a54b8d8e505cfd9b17005fd + depends: + - libcxx >=19 + - __osx >=11.0 + - aws-c-cal >=0.9.2,<0.9.3.0a0 + - aws-c-event-stream >=0.5.6,<0.5.7.0a0 + - aws-c-http >=0.10.4,<0.10.5.0a0 + - aws-c-s3 >=0.8.6,<0.8.7.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-auth >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.22.0,<0.22.1.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-c-mqtt >=0.13.3,<0.13.4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 265588 + timestamp: 1758142053181 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.35.4-h74951b9_0.conda sha256: 465527f414c2399ab70503d9d4e891658e7698439ba7f22d723f2ca8c03bb3e8 md5: 87351fb3a08425237b701c582773be1a @@ -7605,6 +8460,26 @@ packages: license_family: APACHE size: 302247 timestamp: 1765200336894 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.36.0-h15365d6_1.conda + sha256: 0b255aa61b7ce2adece300e7bb9a1c43c993baef23ef14d477c6efad0c9dfe64 + md5: 8dc0911a01fbf2f1e030fea1f679db00 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - aws-c-io >=0.26.1,<0.26.2.0a0 + - aws-c-http >=0.10.10,<0.10.11.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-mqtt >=0.14.0,<0.14.1.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-event-stream >=0.5.9,<0.5.10.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-auth >=0.9.4,<0.9.5.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 302295 + timestamp: 1771520063075 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h20b40b1_10.conda sha256: e0d81b7dd6d054d457a1c54d17733d430d96dc5ca9b2ca69a72eb41c3fc8c9bf md5: 937d1d4c233adc6eeb2ac3d6e9a73e53 @@ -7621,6 +8496,22 @@ packages: license_family: APACHE size: 3472674 timestamp: 1765257107074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h32384e2_4.conda + sha256: 9ec76250145458fed50f02ac26af254c90a90d49249649e0eb81f9ddb6176384 + md5: 31067fbcb4ddfd76bc855532cc228568 + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.34.4,<0.34.5.0a0 + - aws-c-event-stream >=0.5.6,<0.5.7.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - libcurl >=8.14.1,<9.0a0 + - libzlib >=1.3.1,<2.0a0 + license: Apache-2.0 + license_family: APACHE + size: 3367060 + timestamp: 1758606136188 - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.606-h386ebac_10.conda sha256: 3b7ee2bc2bbd41e1fca87b1c1896b2186644f20912bf89756fd39020f8461e13 md5: 768c6b78e331a2938af208e062fd6702 @@ -7636,21 +8527,65 @@ packages: license_family: APACHE size: 3313002 timestamp: 1765257111791 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.606-h4e1b0f7_10.conda - sha256: 87660413df6c49984a897544c8ace8461cd4ed69301ede5a793d00530985f702 - md5: a392fe9e9a3c6e0b65161533aca39be9 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.606-hda6ec86_4.conda + sha256: cc2c1caf7cb0eb4c0cab4a5fbee6f93f0d6d901888098b55e986c52f5774bab1 + md5: 0077cfdb12c7cda7cfa4e30408884eb4 depends: - - __osx >=11.0 + - __osx >=10.13 - libcxx >=19 - - aws-c-event-stream >=0.5.7,<0.5.8.0a0 - libzlib >=1.3.1,<2.0a0 - - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-crt-cpp >=0.34.4,<0.34.5.0a0 + - libcurl >=8.14.1,<9.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + - aws-c-event-stream >=0.5.6,<0.5.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 3190106 + timestamp: 1758606185517 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.606-h2169b1b_4.conda + sha256: 0e0a1d5cfa4e4a3f229fd6cb7db5e3f4a603132e22cfff47e94c4e58ab81a897 + md5: 0871f2fc2273bfd84c4e40d0604949ed + depends: + - libcxx >=19 + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + - libcurl >=8.14.1,<9.0a0 + - aws-c-event-stream >=0.5.6,<0.5.7.0a0 + - aws-crt-cpp >=0.34.4,<0.34.5.0a0 + - aws-c-common >=0.12.4,<0.12.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 3011040 + timestamp: 1758701033139 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.606-h4e1b0f7_10.conda + sha256: 87660413df6c49984a897544c8ace8461cd4ed69301ede5a793d00530985f702 + md5: a392fe9e9a3c6e0b65161533aca39be9 + depends: + - __osx >=11.0 + - libcxx >=19 + - aws-c-event-stream >=0.5.7,<0.5.8.0a0 + - libzlib >=1.3.1,<2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 - aws-crt-cpp >=0.35.4,<0.35.5.0a0 - libcurl >=8.17.0,<9.0a0 license: Apache-2.0 license_family: APACHE size: 3121951 timestamp: 1765257130593 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.606-h867832e_12.conda + sha256: 64b80cf291a2795a3eb3e9e8c9b81bdad1c36069188625c7bf369c7a838308c4 + md5: 6c042da91bd74c4d0cdc69a0e6897449 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - aws-c-event-stream >=0.5.9,<0.5.10.0a0 + - libzlib >=1.3.1,<2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-crt-cpp >=0.36.0,<0.36.1.0a0 + license: Apache-2.0 + size: 3438952 + timestamp: 1771595855217 - conda: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.606-hac16450_10.conda sha256: 8a12c4f6774ecb3641048b74133ff5e6c2b560469fe5ac1d7515631b84e63059 md5: d9b942bede589d0ad1e8e360e970efd0 @@ -7666,213 +8601,467 @@ packages: license_family: APACHE size: 3438133 timestamp: 1765257127502 -- 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.0-h3a458e0_1.conda + sha256: a1f1be2e34a2e331899a69b642e8bda1e66002bda3b611d70141a43c397181ca + md5: 682cb082bbd998528c51f1e77d9ce415 depends: - __glibc >=2.17,<3.0.a0 - libcurl >=8.14.1,<9.0a0 - libgcc >=14 - libstdcxx >=14 + - openssl >=3.5.2,<4.0a0 + license: MIT + license_family: MIT + size: 351962 + timestamp: 1758035811172 +- 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.18.0,<9.0a0 + - libgcc >=14 + - libstdcxx >=14 - openssl >=3.5.4,<4.0a0 license: MIT license_family: MIT - size: 348231 - timestamp: 1760926677260 -- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.1-he2a98a9_0.conda - sha256: 923a0f9fab0c922e17f8bb27c8210d8978111390ff4e0cf6c1adff3c1a4d13bc - md5: 9f39c22aad61e76bfb73bb7d4114efac + 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 depends: - __osx >=10.13 - libcurl >=8.14.1,<9.0a0 - libcxx >=19 + - openssl >=3.5.2,<4.0a0 + license: MIT + license_family: MIT + size: 300765 + timestamp: 1758036085232 +- 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.18.0,<9.0a0 + - libcxx >=19 - openssl >=3.5.4,<4.0a0 license: MIT license_family: MIT - size: 297681 - timestamp: 1760927174036 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.1-h88fedcc_0.conda - sha256: d995413e4daf19ee3120f3ab9f0c9e330771787f33cbd4a33d8e5445f52022e3 - md5: fbe485a39b05090c0b5f8bb4febcd343 + 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 depends: - __osx >=11.0 - libcurl >=8.14.1,<9.0a0 - libcxx >=19 + - openssl >=3.5.2,<4.0a0 + license: MIT + license_family: MIT + size: 292995 + timestamp: 1758036239250 +- 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.18.0,<9.0a0 + - libcxx >=19 - openssl >=3.5.4,<4.0a0 license: MIT license_family: MIT - size: 289984 - timestamp: 1760927117177 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.2-h3a5f585_1.conda - sha256: fc1df5ea2595f4f16d0da9f7713ce5fed20cb1bfc7fb098eda7925c7d23f0c45 - md5: 4e921d9c85e6559c60215497978b3cdb + 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 depends: - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 - libgcc >=14 - libstdcxx >=14 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.1,<4.0a0 + license: MIT + license_family: MIT + size: 241853 + timestamp: 1753212593417 +- 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.2,<1.16.3.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT - size: 249684 - timestamp: 1761066654684 -- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.13.2-h0e8e1c8_1.conda - sha256: 555e9c9262b996f8c688598760b4cddf4d16ae1cb2f0fd0a31cb76c2fdc7d628 - md5: 32eb613f88ae1530ca78481bdce41cdd + 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 depends: - __osx >=10.13 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 - libcxx >=19 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.1,<4.0a0 + license: MIT + license_family: MIT + size: 169886 + timestamp: 1753212914544 +- 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.2,<1.16.3.0a0 + - libcxx >=19 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT - size: 174582 - timestamp: 1761067038720 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.2-h853621b_1.conda - sha256: a4ed52062025035d9c1b3d8c70af39496fc5153cc741420139a770bc1312cfd6 - md5: fac63edc393d7035ab23fbccdeda34f4 + 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 depends: - __osx >=11.0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 - libcxx >=19 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.1,<4.0a0 + license: MIT + license_family: MIT + size: 162705 + timestamp: 1753212949473 +- 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.2,<1.16.3.0a0 + - libcxx >=19 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + 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 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 + - azure-storage-common-cpp >=12.10.0,<12.10.1.0a0 + - libgcc >=14 + - libstdcxx >=14 license: MIT license_family: MIT - size: 167268 - timestamp: 1761066827371 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.15.0-h2a74896_1.conda - sha256: 58879f33cd62c30a4d6a19fd5ebc59bd0c4560f575bd02645d93d342b6f881d2 - md5: ffd553ff98ce5d74d3d89ac269153149 + size: 577592 + timestamp: 1753219590665 +- 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-storage-common-cpp >=12.11.0,<12.11.1.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: 576406 - timestamp: 1761080005291 -- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.15.0-h388f2e7_1.conda - sha256: 0a736f04c9778b87884422ebb6b549495430652204d964ff161efb719362baee - md5: 6b5f36e610295f4f859dd9cf680bbf7d + 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 + depends: + - __osx >=10.13 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 + - azure-storage-common-cpp >=12.10.0,<12.10.1.0a0 + - libcxx >=19 + license: MIT + license_family: MIT + size: 433081 + timestamp: 1753219827826 +- 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-storage-common-cpp >=12.11.0,<12.11.1.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: 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 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 + - azure-storage-common-cpp >=12.10.0,<12.10.1.0a0 - libcxx >=19 license: MIT license_family: MIT - size: 432811 - timestamp: 1761080273088 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.15.0-h10d327b_1.conda - sha256: 274267b458ed51f4b71113fe615121fabd6f1d7b62ebfefdad946f8436a5db8e - md5: 443b74cf38c6b0f4b675c0517879ce69 + size: 425677 + timestamp: 1753219837256 +- 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-storage-common-cpp >=12.11.0,<12.11.1.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: 425175 - timestamp: 1761080947110 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.11.0-h3d7a050_1.conda - sha256: eb590e5c47ee8e6f8cc77e9c759da860ae243eed56aceb67ce51db75f45c9a50 - md5: 89985ba2a3742f34be6aafd6a8f3af8c + 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 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libxml2 >=2.13.8,<2.14.0a0 + - openssl >=3.5.1,<4.0a0 + license: MIT + license_family: MIT + size: 148875 + timestamp: 1753211824276 +- 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: 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 + depends: + - __osx >=10.13 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 + - libcxx >=19 + - libxml2 >=2.13.8,<2.14.0a0 + - openssl >=3.5.1,<4.0a0 license: MIT license_family: MIT - size: 149620 - timestamp: 1761066643066 -- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.11.0-h56a711b_1.conda - sha256: 322919e9842ddf5c9d0286667420a76774e1e42ae0520445d65726f8a2565823 - md5: 278ccb9a3616d4342731130287c3ba79 + size: 125256 + timestamp: 1753211912801 +- 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: 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 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 + - libcxx >=19 + - libxml2 >=2.13.8,<2.14.0a0 + - openssl >=3.5.1,<4.0a0 license: MIT license_family: MIT - size: 126230 - timestamp: 1761066840950 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.11.0-h7e4aa5d_1.conda - sha256: 74803bd26983b599ea54ff1267a0c857ff37ccf6f849604a72eb63d8d30e4425 - md5: ac9113ea0b7ed5ecf452503f82bf2956 + size: 120171 + timestamp: 1753211997430 +- 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: 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 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 + - azure-storage-blobs-cpp >=12.14.0,<12.14.1.0a0 + - azure-storage-common-cpp >=12.10.0,<12.10.1.0a0 + - libgcc >=14 + - libstdcxx >=14 license: MIT license_family: MIT - size: 121744 - timestamp: 1761066874537 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.13.0-hf38f1be_1.conda - sha256: 9f3d0f484e97cef5f019b7faef0c07fb7ee6c584e3a6e2954980f440978a365e - md5: f10b9303c7239fbce3580a60a92bcf97 + size: 299871 + timestamp: 1753226720130 +- 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-storage-blobs-cpp >=12.15.0,<12.15.1.0a0 - - azure-storage-common-cpp >=12.11.0,<12.11.1.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: 299198 - timestamp: 1761094654852 -- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.13.0-h1984e67_1.conda - sha256: 268175ab07f1917eff35e4c38a17a2b71c5f9b86e38e5c0b313da477600a82df - md5: ef5701f2da108d432e7872d58e8ac64e + 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 + depends: + - __osx >=10.13 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 + - azure-storage-blobs-cpp >=12.14.0,<12.14.1.0a0 + - azure-storage-common-cpp >=12.10.0,<12.10.1.0a0 + - libcxx >=19 + license: MIT + license_family: MIT + size: 203691 + timestamp: 1753226916309 +- 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-storage-blobs-cpp >=12.15.0,<12.15.1.0a0 - - azure-storage-common-cpp >=12.11.0,<12.11.1.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: 203298 - timestamp: 1761095036240 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.13.0-hb288d13_1.conda - sha256: 2205e24d587453a04b075f86c59e3e72ad524c447fc5be61d7d1beb3cf2d7661 - md5: 595091ae43974e5059d6eabf0a6a7aa5 + 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 depends: - __osx >=11.0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 - - azure-storage-blobs-cpp >=12.15.0,<12.15.1.0a0 - - azure-storage-common-cpp >=12.11.0,<12.11.1.0a0 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 + - azure-storage-blobs-cpp >=12.14.0,<12.14.1.0a0 + - azure-storage-common-cpp >=12.10.0,<12.10.1.0a0 - libcxx >=19 license: MIT license_family: MIT - size: 197152 - timestamp: 1761094913245 -- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - sha256: 1c656a35800b7f57f7371605bc6507c8d3ad60fbaaec65876fce7f73df1fc8ac - md5: 0a01c169f0ab0f91b26e77a3301fbfe4 + size: 197289 + timestamp: 1753227070997 +- 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: - - python >=3.9 + - __osx >=11.0 + - 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: 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: + - 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 -- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.2.0-py312h90b7ffd_0.conda - sha256: c0e375fd6a67a39b3d855d1cb53c2017faf436e745a780ca2bbb527f4cac25fd - md5: 9fc7e65938c0e4b2658631b8bfd380e8 + size: 7684373 + timestamp: 1770326844118 +- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py312h90b7ffd_0.conda + sha256: d77a24be15e283d83214121428290dbe55632a6e458378205b39c550afa008cf + md5: 5b8c55fed2e576dde4b0b33693a4fdb1 depends: - python - libgcc >=14 @@ -7880,44 +9069,44 @@ packages: - python_abi 3.12.* *_cp312 - zstd >=1.5.7,<1.6.0a0 license: BSD-3-Clause AND MIT AND EPL-2.0 - size: 238087 - timestamp: 1765057663263 -- conda: https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.2.0-py312hcb931b7_0.conda - sha256: 5fe811e1c582febda13afab3cf06badda62157bd851cdb6f67201da827fdbdde - md5: 5b8b4a50dae13f2d8412388ae7fa996b + size: 237970 + timestamp: 1767045004512 +- conda: https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.3.0-py312h6917036_0.conda + sha256: 96eefe04e072e8c31fcac7d5e89c9d4a558d2565eef629cfc691a755b2fa6e59 + md5: c8b7d0fb5ff6087760dde8f5f388b135 depends: - python - __osx >=10.13 - python_abi 3.12.* *_cp312 - zstd >=1.5.7,<1.6.0a0 license: BSD-3-Clause AND MIT AND EPL-2.0 - size: 238407 - timestamp: 1765057706612 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.2.0-py312h84d6f5f_0.conda - sha256: 833370729199ef55f3f9efd024e28bba87fcd8b5c397d8afecefde63851e6997 - md5: c0ca697637ef6cf0ac768a50964e4af6 + size: 238093 + timestamp: 1767044989890 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.3.0-py312h44dc372_0.conda + sha256: aee745bfca32f7073d3298157bbb2273d6d83383cb266840cf0a7862b3cd8efc + md5: c2d5961bfd98504b930e704426d16572 depends: - python - - __osx >=11.0 - python 3.12.* *_cpython - - python_abi 3.12.* *_cp312 + - __osx >=11.0 - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.12.* *_cp312 license: BSD-3-Clause AND MIT AND EPL-2.0 - size: 241337 - timestamp: 1765057702057 -- conda: https://conda.anaconda.org/conda-forge/win-64/backports.zstd-1.2.0-py312h06d0912_0.conda - sha256: 7c5577c9b4b72b92fab75a9d80ffc0414e11f6bb073798356dac5a9ad00d2374 - md5: e67a3846aade9f635a7f5aa200a7bdba + size: 241051 + timestamp: 1767045000787 +- conda: https://conda.anaconda.org/conda-forge/win-64/backports.zstd-1.3.0-py312h06d0912_0.conda + sha256: c9c97cd644faa6c4fb38017c5ecfd082f56a3126af5925d246364fa4a22b2a74 + md5: 2db2b356f08f19ce4309a79a9ee6b9d8 depends: - python - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - zstd >=1.5.7,<1.6.0a0 - python_abi 3.12.* *_cp312 + - zstd >=1.5.7,<1.6.0a0 license: BSD-3-Clause AND MIT AND EPL-2.0 - size: 236911 - timestamp: 1765057699400 + size: 236635 + timestamp: 1767045021157 - conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.conda sha256: 22020286e3d27eba7c9efef79c1020782885992aea0e7d28d7274c4405001521 md5: 8fbbd949c452efde5a75b62b22a88938 @@ -7986,27 +9175,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 @@ -8074,9 +9263,9 @@ packages: license_family: BSD size: 49840 timestamp: 1733513605730 -- conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.1-pyhd8ed1ab_0.conda - sha256: f76ff3ce23987f68f1a09ce9f56c81a417e47826a1beb34fdc121a452edd9df8 - md5: f301f72474b91f1f83d42bcc7d81ce09 +- conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda + sha256: 5e1aaaa2d193c1d4acea261b8cf822ee84cb59b4cf8c26ad40ca172584ab2a85 + md5: 0b830ba4947de6d60dd9d96827a1cacb depends: - contourpy >=1.2 - jinja2 >=2.9 @@ -8091,23 +9280,23 @@ packages: - xyzservices >=2021.09.1 license: BSD-3-Clause license_family: BSD - size: 5027028 - timestamp: 1762557204752 -- conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.10-pyhd8ed1ab_0.conda - sha256: 4f6efb23c4393712316106ba407f264ec640c416910fed67ac4a2e754508bb23 - md5: 744912e02101b0dad552a69e5b00f1ae + size: 4713032 + timestamp: 1769414672158 +- conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.53-pyhd8ed1ab_0.conda + sha256: 3918338c17d95297e94053f23dfdd393f67b557e1b44e7b0413d701de02f783e + md5: 6bfff0befe1290d76d15871440fb4b68 depends: - - botocore >=1.42.10,<1.43.0 + - botocore >=1.42.53,<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: 84805 - timestamp: 1765847749625 -- conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.10-pyhd8ed1ab_0.conda - sha256: 1cd6e65ce06019082647a7c3aa87c7fb28db54988fdaaa6648131c4281acd901 - md5: 0f0905095794d68d2a6c5ad43c1be9e9 + size: 85117 + timestamp: 1771591432303 +- conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.53-pyhd8ed1ab_0.conda + sha256: 15d770cb69bfeb975038fff0197b3401d395ea29d5b5edcaf292cba99491066b + md5: 60da259f6823990c87af0f60b880bcdb depends: - jmespath >=0.7.1,<2.0.0 - python >=3.10 @@ -8115,8 +9304,8 @@ packages: - urllib3 >=1.25.4,!=2.2.0,<3 license: Apache-2.0 license_family: Apache - size: 8343722 - timestamp: 1765840642160 + size: 8386557 + timestamp: 1771580689458 - conda: https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py312hfb8c2c5_3.conda sha256: 59deb2e5147e1727c67f0409cf40163e32254362ae361b5761fd10bc7c255267 md5: 99981dfd6b851dba87c43b5f895e6d6a @@ -8186,6 +9375,19 @@ packages: license_family: MIT size: 30176 timestamp: 1759755695447 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb03c661_4.conda + sha256: 294526a54fa13635341729f250d0b1cf8f82cad1e6b83130304cbf3b6d8b74cc + md5: eaf3fbd2aa97c212336de38a51fe404e + depends: + - __glibc >=2.17,<3.0.a0 + - brotli-bin 1.1.0 hb03c661_4 + - libbrotlidec 1.1.0 hb03c661_4 + - libbrotlienc 1.1.0 hb03c661_4 + - libgcc >=14 + license: MIT + license_family: MIT + size: 19883 + timestamp: 1756599394934 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda sha256: e511644d691f05eb12ebe1e971fd6dc3ae55a4df5c253b4e1788b789bdf2dfa6 md5: 8ccf913aaba749a5496c17629d859ed1 @@ -8199,6 +9401,18 @@ packages: license_family: MIT size: 20103 timestamp: 1764017231353 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h1c43f85_4.conda + sha256: 13847b7477bd66d0f718f337e7980c9a32f82ec4e4527c7e0a0983db2d798b8e + md5: 1a0a37da4466d45c00fc818bb6b446b3 + depends: + - __osx >=10.13 + - brotli-bin 1.1.0 h1c43f85_4 + - libbrotlidec 1.1.0 h1c43f85_4 + - libbrotlienc 1.1.0 h1c43f85_4 + license: MIT + license_family: MIT + size: 20022 + timestamp: 1756599872109 - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.2.0-hf139dec_1.conda sha256: c838c71ded28ada251589f6462fc0f7c09132396799eea2701277566a1a863bf md5: 149d8ee7d6541a02a6117d8814fd9413 @@ -8211,6 +9425,18 @@ packages: license_family: MIT size: 20194 timestamp: 1764017661405 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-h6caf38d_4.conda + sha256: 8aa8ee52b95fdc3ef09d476cbfa30df722809b16e6dca4a4f80e581012035b7b + md5: ce8659623cea44cc812bc0bfae4041c5 + depends: + - __osx >=11.0 + - brotli-bin 1.1.0 h6caf38d_4 + - libbrotlidec 1.1.0 h6caf38d_4 + - libbrotlienc 1.1.0 h6caf38d_4 + license: MIT + license_family: MIT + size: 20003 + timestamp: 1756599758165 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda sha256: 422ac5c91f8ef07017c594d9135b7ae068157393d2a119b1908c7e350938579d md5: 48ece20aa479be6ac9a284772827d00c @@ -8237,6 +9463,18 @@ packages: license_family: MIT size: 20342 timestamp: 1764017988883 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb03c661_4.conda + sha256: 444903c6e5c553175721a16b7c7de590ef754a15c28c99afbc8a963b35269517 + md5: ca4ed8015764937c81b830f7f5b68543 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlidec 1.1.0 hb03c661_4 + - libbrotlienc 1.1.0 hb03c661_4 + - libgcc >=14 + license: MIT + license_family: MIT + size: 19615 + timestamp: 1756599385418 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda sha256: 64b137f30b83b1dd61db6c946ae7511657eead59fdf74e84ef0ded219605aa94 md5: af39b9a8711d4a8d437b52c1d78eb6a1 @@ -8249,6 +9487,17 @@ packages: license_family: MIT size: 21021 timestamp: 1764017221344 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h1c43f85_4.conda + sha256: 549ea0221019cfb4b370354f2c3ffbd4be1492740e1c73b2cdf9687ed6ad7364 + md5: 718fb8aa4c8cb953982416db9a82b349 + depends: + - __osx >=10.13 + - libbrotlidec 1.1.0 h1c43f85_4 + - libbrotlienc 1.1.0 h1c43f85_4 + license: MIT + license_family: MIT + size: 17311 + timestamp: 1756599830763 - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.2.0-h8616949_1.conda sha256: dcb5a2b29244b82af2545efad13dfdf8dddb86f88ce64ff415be9e7a10cc0383 md5: 34803b20dfec7af32ba675c5ccdbedbf @@ -8260,6 +9509,17 @@ packages: license_family: MIT size: 18589 timestamp: 1764017635544 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-h6caf38d_4.conda + sha256: e57d402b02c9287b7c02d9947d7b7b55a4f7d73341c210c233f6b388d4641e08 + md5: ab57f389f304c4d2eb86d8ae46d219c3 + depends: + - __osx >=11.0 + - libbrotlidec 1.1.0 h6caf38d_4 + - libbrotlienc 1.1.0 h6caf38d_4 + license: MIT + license_family: MIT + size: 17373 + timestamp: 1756599741779 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hc919400_1.conda sha256: e2d142052a83ff2e8eab3fe68b9079cad80d109696dc063a3f92275802341640 md5: 377d015c103ad7f3371be1777f8b584c @@ -8284,6 +9544,21 @@ packages: license_family: MIT size: 22714 timestamp: 1764017952449 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h1289d80_4.conda + sha256: 52a9ac412512b418ecdb364ba21c0f3dc96f0abbdb356b3cfbb980020b663d9b + md5: fd0e7746ed0676f008daacb706ce69e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb03c661_4 + license: MIT + license_family: MIT + size: 354149 + timestamp: 1756599553574 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312hdb49522_1.conda sha256: 49df13a1bb5e388ca0e4e87022260f9501ed4192656d23dc9d9a1b4bf3787918 md5: 64088dffd7413a2dd557ce837b4cbbdb @@ -8299,6 +9574,20 @@ packages: license_family: MIT size: 368300 timestamp: 1764017300621 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h462f358_4.conda + sha256: f5b7f28d19f21c2f5bd4608b2a075e872727dae8409303f53c756f44044a3a7f + md5: 6ed15514446509f33df546dcc1752eb1 + depends: + - __osx >=10.13 + - libcxx >=19 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h1c43f85_4 + license: MIT + license_family: MIT + size: 369380 + timestamp: 1756600123615 - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.2.0-py312h4b46afd_1.conda sha256: 8854a80360128157e8d05eb57c1c7e7c1cb10977e4c4557a77d29c859d1f104b md5: 01fdbccc39e0a7698e9556e8036599b7 @@ -8313,6 +9602,21 @@ packages: license_family: MIT size: 389534 timestamp: 1764017976737 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312h6b01ec3_4.conda + sha256: e45f24660a89c734c3d54f185ecdc359e52a5604d7e0b371e35dce042fa3cf3a + md5: 0d50ab05d6d8fa7a38213c809637ba6d + depends: + - __osx >=11.0 + - libcxx >=19 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h6caf38d_4 + license: MIT + license_family: MIT + size: 341750 + timestamp: 1756600036931 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py312h0dfefe5_1.conda sha256: 6178775a86579d5e8eec6a7ab316c24f1355f6c6ccbe84bb341f342f1eda2440 md5: 311fcf3f6a8c4eb70f912798035edd35 @@ -8343,45 +9647,45 @@ packages: license_family: MIT size: 335482 timestamp: 1764018063640 -- 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 @@ -8421,33 +9725,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 @@ -8461,36 +9765,36 @@ 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/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 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-h4c7d964_0.conda - sha256: 686a13bd2d4024fc99a22c1e0e68a7356af3ed3304a8d3ff6bb56249ad4e82f0 - md5: f98fb7db808b94bc1ec5b0e62f9f1069 + size: 226219 + timestamp: 1769992288490 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-h4c7d964_0.conda + sha256: 4ddcb01be03f85d3db9d881407fb13a673372f1b9fac9c836ea441893390e049 + md5: 84d389c9eee640dda3d26fc5335c67d8 depends: - __win license: ISC - size: 152827 - timestamp: 1762967310929 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda - sha256: b986ba796d42c9d3265602bc038f6f5264095702dd546c14bc684e60c385e773 - md5: f0991f0f84902f6b6009b4d2350a83aa + size: 147139 + timestamp: 1767500904211 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda + sha256: b5974ec9b50e3c514a382335efa81ed02b05906849827a34061c496f4defa0b2 + md5: bddacf101bb4dd0e51811cb69c7790e2 depends: - __unix license: ISC - size: 152432 - timestamp: 1762967197890 + size: 146519 + timestamp: 1767500828366 - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 noarch: python sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 @@ -8510,15 +9814,6 @@ packages: license_family: BSD size: 11065 timestamp: 1615209567874 -- conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - sha256: e00325243791f4337d147224e4e1508de450aeeab1abc0470f2227748deddbfc - md5: 629c8fd0c11eb853732608e2454abf8e - depends: - - python >=3.10 - license: MIT - license_family: MIT - size: 16867 - timestamp: 1765829705483 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda sha256: 3bd6a391ad60e471de76c0e9db34986c4b5058587fbf2efa5a7f54645e28c2c7 md5: 09262e66b19567aff4f592fb53b28760 @@ -8544,6 +9839,51 @@ packages: license: LGPL-2.1-only or MPL-1.1 size: 978114 timestamp: 1741554591855 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda + sha256: 06525fa0c4e4f56e771a3b986d0fdf0f0fc5a3270830ee47e127a5105bde1b9a + md5: bb6c4808bfa69d6f7f6b07e5846ced37 + depends: + - __glibc >=2.17,<3.0.a0 + - 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 + - libgcc >=14 + - libglib >=2.86.3,<3.0a0 + - libpng >=1.6.53,<1.7.0a0 + - libstdcxx >=14 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.46.4,<1.0a0 + - xorg-libice >=1.1.2,<2.0a0 + - xorg-libsm >=1.2.6,<2.0a0 + - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.12,<0.10.0a0 + license: LGPL-2.1-only or MPL-1.1 + size: 989514 + timestamp: 1766415934926 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h7656bdc_1.conda + sha256: 88e7e1efb6a0f6b1477e617338e0ed3d27d4572a3283f8341ce6143b7118e31a + md5: 9917add2ab43df894b9bb6f5bf485975 + depends: + - __osx >=10.13 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - icu >=78.1,<79.0a0 + - libcxx >=19 + - 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 + license: LGPL-2.1-only or MPL-1.1 + size: 896676 + timestamp: 1766416262450 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda sha256: d4297c3a9bcff9add3c5a46c6e793b88567354828bcfdb6fc9f6b1ab34aa4913 md5: 32403b4ef529a2018e4d8c4f2a719f16 @@ -8580,14 +9920,53 @@ packages: license: LGPL-2.1-only or MPL-1.1 size: 896173 timestamp: 1741554795915 -- conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - sha256: b9f577bddb033dba4533e851853924bfe7b7c1623d0697df382eef177308a917 - md5: 20e32ced54300292aff690a69c5e7b97 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-he0f2337_1.conda + sha256: cde9b79ee206fe3ba6ca2dc5906593fb7a1350515f85b2a1135a4ce8ec1539e3 + md5: 36200ecfbbfbcb82063c87725434161f depends: + - __osx >=11.0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 - - icu >=75.1,<76.0a0 + - icu >=78.1,<79.0a0 + - libcxx >=19 + - 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 + 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 + depends: + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 - libexpat >=2.6.4,<3.0a0 - libglib >=2.82.2,<3.0a0 - libpng >=1.6.47,<1.7.0a0 @@ -8674,6 +10053,19 @@ packages: license_family: BSD size: 1583967 timestamp: 1756884001067 +- conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-26.1.0-pyhcf101f3_1.conda + sha256: c3c5772e8f3c9080b3b89765bb9e9d88972792b54d96d546c29672965bbb8d6c + md5: eb57a77657c275d8d0b3542b070f484c + depends: + - python >=3.10 + - attrs >=25.4.0 + - typing_extensions >=4.14.0 + - exceptiongroup >=1.1.1 + - python + license: MIT + license_family: MIT + size: 59678 + timestamp: 1771485958517 - conda: https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda sha256: 1237a587e35fa74b36323084e58620367a3adf7f60f201b7a9c41261958dc5d4 md5: 1f878573c1ee2798c052bee1f5a94f50 @@ -8686,14 +10078,28 @@ packages: license_family: APACHE size: 17643 timestamp: 1759286472486 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.11.12-pyhd8ed1ab_0.conda - sha256: 083a2bdad892ccf02b352ecab38ee86c3e610ba9a4b11b073ea769d55a115d32 - md5: 96a02a5c1a65470a7e4eedb644c872fd +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda + sha256: 110338066d194a715947808611b763857c15458f8b3b97197387356844af9450 + md5: eacc711330cd46939f66cd401ff9c44b depends: - python >=3.10 license: ISC - size: 157131 - timestamp: 1762976260320 + size: 150969 + timestamp: 1767500900768 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h35888ee_0.conda + sha256: f9e906b2cb9ae800b5818259472c3f781b14eb1952e867ac5c1f548e92bf02d9 + md5: 60b9cd087d22272885a6b8366b1d3d43 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=14 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 296986 + timestamp: 1758716192805 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda sha256: 7dafe8173d5f94e46cf9cd597cc8ff476a8357fbbd4433a8b5697b2864845d9c md5: 648ee28dcd4e07a1940a17da62eccd40 @@ -8721,6 +10127,19 @@ packages: license_family: MIT size: 288241 timestamp: 1761203170357 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py312hf9bc6d9_0.conda + sha256: 74d987c4e7c50404b782ff05200c835e881bb37e47b00951693b3b92371f2b07 + md5: 60bd93639037ab61a11ed14955e53848 + depends: + - __osx >=10.13 + - libffi >=3.4.6,<3.5.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 289913 + timestamp: 1758716346335 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py312h1b4d9a2_1.conda sha256: 597e986ac1a1bd1c9b29d6850e1cdea4a075ce8292af55568952ec670e7dd358 md5: 503ac138ad3cfc09459738c0f5750705 @@ -8735,6 +10154,20 @@ packages: license_family: MIT size: 288080 timestamp: 1761203317419 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py312hb65edc0_0.conda + sha256: ad49c48044a5f12c7bcc6ae6a66b79f10e24e681e9f3ad4fa560b0f708a9393c + md5: 1b36501506f4ef414524891ca5f0a561 + depends: + - __osx >=11.0 + - libffi >=3.4.6,<3.5.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 287573 + timestamp: 1758716529098 - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-2.0.0-py312he06e257_1.conda sha256: 3e3bdcb85a2e79fe47d9c8ce64903c76f663b39cb63b8e761f6f884e76127f82 md5: 46f7dccfee37a52a97c0ed6f33fcf0a3 @@ -8774,48 +10207,52 @@ packages: license_family: MIT size: 13589 timestamp: 1763607964133 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py312h4f23490_2.conda - sha256: ec8ec46cc9d9d17d904aa82a297708effcafb299fd22b07ca59cc278ec122b17 - md5: ff4b5976814bc00861f962276c8fb87f +- conda: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py312h4f23490_1.conda + sha256: 02c483817cce596ab0fb79f0f64027a166e20db0c84973e61a08285d53ee463d + md5: 84bf349fad55056ed326fc550671b65c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 + - numpy >=1.21.2 - numpy >=1.23,<3 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 234335 - timestamp: 1756511954678 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cftime-1.6.4-py312h587b97d_2.conda - sha256: 678252eace709be2cb37e3c8ed87ca4bb474d3b227ee13c68fcf78a12d157cca - md5: 4da3d493adb979c3339c1fb76f2ad8b2 + size: 426552 + timestamp: 1768510920948 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cftime-1.6.5-py312h8ab2c85_1.conda + sha256: 46637d1e733541eedc58496ef4891fcbe4e16738fa2cf0235333868044a3aa9e + md5: 54ba6dea57839640386fddb0349a272b depends: - __osx >=10.13 + - numpy >=1.21.2 - numpy >=1.23,<3 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 197714 - timestamp: 1756512041292 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.4-py312hc7121bb_2.conda - sha256: df520ad3d99bf28aa4f8a5f5a04993418a001ef63c7bde215b32f9427da1f433 - md5: a2ed43e189d6f163a5b15ceebec4c09b + size: 395770 + timestamp: 1768511272881 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.5-py312hf57c059_1.conda + sha256: 80bb769852c90c763cdb90e55a9f2a392164de907a6df579cc8b94bff85d0158 + md5: bd54402123a03de02e03c509597c635b depends: - __osx >=11.0 + - numpy >=1.21.2 - numpy >=1.23,<3 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 190885 - timestamp: 1756512150892 -- conda: https://conda.anaconda.org/conda-forge/win-64/cftime-1.6.4-py312h196c9fc_2.conda - sha256: ae031599c4f603323c88bbfa8111d2b669eece027e0b82d8af412e37f9673d7a - md5: af5b99c9a4e8e5cd85c299b652c077e5 + size: 387077 + timestamp: 1768511266483 +- conda: https://conda.anaconda.org/conda-forge/win-64/cftime-1.6.5-py312h196c9fc_1.conda + sha256: 59f52a05804736e08b2f9d623c46b928392a17fea40993c22902f823fae02de2 + md5: 050bf7fb12ce89a057121f790d0fc659 depends: + - numpy >=1.21.2 - numpy >=1.23,<3 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -8824,8 +10261,17 @@ packages: - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - size: 170387 - timestamp: 1756512108177 + size: 371147 + timestamp: 1768511070154 +- 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 @@ -8909,9 +10355,9 @@ packages: license_family: BSD size: 27353 timestamp: 1765303462831 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-cbc-2.10.12-h4d16d09_4.conda - sha256: f0d30355938591dbb45530f86484e0786b7eae0afdf1790ca3640cf0e7af6899 - md5: 603a1a18878030b5e6793ba558fac972 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-cbc-2.10.12-h4d16d09_5.conda + sha256: 23dcd78e3346c8fea31d3e462c68ba9f9c0558e01471845407b2b7afd65ce19f + md5: 06455c25d5ccaee980897ae4b5cf21f1 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -8932,11 +10378,11 @@ packages: - coincbc * *_metapackage license: EPL-2.0 license_family: OTHER - size: 910494 - timestamp: 1754142617737 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-cbc-2.10.12-h084678f_4.conda - sha256: 8ce7807e56e94cec6b05197e3b463faf19081d141725cc956f00fd86260dc8eb - md5: 5f4886245ab5bc69a4f6ab2378ca1b54 + size: 907866 + timestamp: 1767757612280 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-cbc-2.10.12-h2b2dcb5_5.conda + sha256: 2c4388c69ce3fde2868c09a084f06ae78f3b9b5c349ff123591d4b65b7ad1864 + md5: 35aeb4eb765148c469af1b2292ecd48f depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 @@ -8949,7 +10395,6 @@ packages: - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.1.0 - liblapack >=3.9.0,<4.0a0 - liblapacke >=3.9.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 @@ -8957,11 +10402,11 @@ packages: - coincbc * *_metapackage license: EPL-2.0 license_family: OTHER - size: 867897 - timestamp: 1754142770324 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cbc-2.10.12-h0c75da4_4.conda - sha256: 06f84794d2166727af59e991f92ed7ba012b68df36901ebc115d16e9e509593c - md5: 3795d77c93c3b02009f6bbc4b2c8e1aa + size: 867616 + timestamp: 1767757905071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cbc-2.10.12-h2032c40_5.conda + sha256: 6fe758d3219503736e19c05e5fc9252c2e8c2ea663b3998407456b0e75ea3248 + md5: bd1ca992b0a0241fdfb49447d5b674aa depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 @@ -8974,7 +10419,6 @@ packages: - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.1.0 - liblapack >=3.9.0,<4.0a0 - liblapacke >=3.9.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 @@ -8982,8 +10426,8 @@ packages: - coincbc * *_metapackage license: EPL-2.0 license_family: OTHER - size: 799180 - timestamp: 1754142888237 + size: 799094 + timestamp: 1767758155224 - conda: https://conda.anaconda.org/conda-forge/win-64/coin-or-cbc-2.10.12-hd3ed8bd_3.conda sha256: 267c5349f017dc0264f2207dc7dbcaa723d95156381f93c70d7f5317a2936006 md5: 1a4baa2f67377e0c55199c0f6fb243c4 @@ -9006,9 +10450,9 @@ packages: license_family: OTHER size: 3618368 timestamp: 1753932634209 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-cgl-0.60.9-hc46dffc_6.conda - sha256: 37aa7b2c010f10e8876cb1d6a8b7671b3b67b289e581dd6b1bbedd38b4b7e918 - md5: e98b685998df1badbaf1245f67b909a3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-cgl-0.60.9-hc46dffc_7.conda + sha256: dd81daa140ce30705491ee18d19d41fe3f5915ae3d83efb01adf040535df2c44 + md5: 4a05507c2db2f1722e62fffc95510205 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -9028,11 +10472,11 @@ packages: - coincbc * *_metapackage license: EPL-2.0 license_family: OTHER - size: 533284 - timestamp: 1754137230937 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-cgl-0.60.9-hbb40df2_6.conda - sha256: 2353d4cbafb4fd065f20a8739fb663925bed62cbbb1de2a097c122728cef7d61 - md5: 734365056c54a4c63b8de90993f4817d + size: 533375 + timestamp: 1767733101257 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-cgl-0.60.9-h62ac857_7.conda + sha256: 583628e16ff65a54795b52997984e406d97e03f236f30f0bd9383925fe964647 + md5: 65ea7a4112ac45dbea02657b95f26d65 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 @@ -9044,7 +10488,6 @@ packages: - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.1.0 - liblapack >=3.9.0,<4.0a0 - liblapacke >=3.9.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 @@ -9052,11 +10495,11 @@ packages: - coincbc * *_metapackage license: EPL-2.0 license_family: OTHER - size: 516526 - timestamp: 1754137359716 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cgl-0.60.9-h24d7dbf_6.conda - sha256: 687b53af9a7e82f053eef79461c1aa132501d0546c2e296eb441ff4130135bb0 - md5: 6471c23e2a4d037d30eddbdbcb31fe11 + size: 516876 + timestamp: 1767733412918 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-cgl-0.60.9-h034796e_7.conda + sha256: 07ee0d1c7bf5881ddb2b6ce825609e9403a8d5fb44f5da040a482d01fd0402e1 + md5: 7662f50cfe60644ba76c7b3a69db64cb depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 @@ -9068,7 +10511,6 @@ packages: - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.1.0 - liblapack >=3.9.0,<4.0a0 - liblapacke >=3.9.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 @@ -9076,8 +10518,8 @@ packages: - coincbc * *_metapackage license: EPL-2.0 license_family: OTHER - size: 439413 - timestamp: 1754137373988 + size: 438550 + timestamp: 1767733471874 - conda: https://conda.anaconda.org/conda-forge/win-64/coin-or-cgl-0.60.9-hacf86d0_5.conda sha256: 1aaa50213704ac118c6c37ee570bcf0b0d070500bc544e07da4400ea20a81abd md5: f6c0a31bbd15559ae27c11385ff1c360 @@ -9099,9 +10541,9 @@ packages: license_family: OTHER size: 1004850 timestamp: 1753923034553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-clp-1.17.10-hc03379b_3.conda - sha256: b4b3b0920654640adf73413abdb89da78c6452af96a46989bb374bbf56d41a0e - md5: 36a0b880feba1c1a14a37eb95b3d8dd6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coin-or-clp-1.17.10-hc03379b_4.conda + sha256: 5d0fcb1d5acf0150c3d532414562838ba97a9e258a8f470a48038f6e322d659d + md5: 2646b9648d2cc643eddbe0e440f57fe6 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -9120,11 +10562,11 @@ packages: - coincbc * *_metapackage license: EPL-2.0 license_family: OTHER - size: 1151752 - timestamp: 1754133583925 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-clp-1.17.10-heb008f4_3.conda - sha256: 22c748a18f0ec71cf42a0f8c5411becf976858d7cd756a95ab4560a83ef7b1c9 - md5: f743fd25c0107b0ed5f4ae0955fe27a6 + size: 1151315 + timestamp: 1767604918158 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coin-or-clp-1.17.10-h58ba847_4.conda + sha256: fc7b7944ff8317f9de443f837dfb9edf6cace004a7b1746e50666ba6ed399ab9 + md5: 88c9058ba921d6aee30b02071a605a5a depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 @@ -9135,7 +10577,6 @@ packages: - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.1.0 - liblapack >=3.9.0,<4.0a0 - liblapacke >=3.9.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 @@ -9143,11 +10584,11 @@ packages: - coincbc * *_metapackage license: EPL-2.0 license_family: OTHER - size: 1060987 - timestamp: 1754133973978 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-clp-1.17.10-ha5fe85a_3.conda - sha256: 8b775adf86a9c9bdbce6a37fdb65f04c593654cf3d94ad59e6d3243000cf6bba - md5: f1c94cb2a0b489a8561e92969c08d57f + size: 1058926 + timestamp: 1767605091357 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin-or-clp-1.17.10-he934a02_4.conda + sha256: f63c083b6508e32b5cffc3e36a06d7983e5f8410314bf464f42ae21024dcf7f3 + md5: 7ee39de6862705eb7bcad3bd95ecba34 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 @@ -9158,7 +10599,6 @@ packages: - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.1.0 - liblapack >=3.9.0,<4.0a0 - liblapacke >=3.9.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 @@ -9166,8 +10606,8 @@ packages: - coincbc * *_metapackage license: EPL-2.0 license_family: OTHER - size: 914907 - timestamp: 1754133677490 + size: 915310 + timestamp: 1767605522978 - conda: https://conda.anaconda.org/conda-forge/win-64/coin-or-clp-1.17.10-h626fd10_2.conda sha256: 82658130feca5915961cd4ea6fdbf2712b6440aedbd7b080bf9a0b8fe4e45e18 md5: 4fb1c61625995e7d0f14371bc0ba2852 @@ -9399,64 +10839,64 @@ packages: license_family: MIT size: 8331 timestamp: 1608581999360 -- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312hd9148b4_3.conda - sha256: e173ea96fb135b233c7f57c35c0d07f7adc50ebacf814550f3daf1c7ba2ed51e - md5: 86cf7a7d861b79d38e3f0e5097e4965b +- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda + sha256: 62447faf7e8eb691e407688c0b4b7c230de40d5ecf95bf301111b4d05c5be473 + md5: 43c2bc96af3ae5ed9e8a10ded942aa50 depends: + - numpy >=1.25 + - python - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - libstdcxx >=14 - - numpy >=1.25 - - python >=3.12,<3.13.0a0 + - libgcc >=14 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 295243 - timestamp: 1762525427240 -- conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py312hd099df3_3.conda - sha256: a317f6d5c8d574656665907fa5bf9ca1017ef132a988c6d126f2121d7817e4ec - md5: 83036bb23aad87b7256d7ae13d1fdb89 + size: 320386 + timestamp: 1769155979897 +- conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py312hb0c38da_4.conda + sha256: 6c03943009b07c6deb3a64afa094b6ca694062b58127a4da6f656a13d508c340 + md5: 625f08687ba33cc9e57865e7bf8e8123 depends: + - numpy >=1.25 + - python - __osx >=10.13 - libcxx >=19 - - numpy >=1.25 - - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 269184 - timestamp: 1762525977233 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312h84eede6_3.conda - sha256: ee6a2497f2d9aff6ec53b6998a37c546916b79118e386bb90a7cb1f389d35197 - md5: e3fbe173dea7137a6d766cbacf697df2 + size: 298198 + timestamp: 1769156053873 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312h3093aea_4.conda + sha256: fa1b3967c644c1ffaf8beba3d7aee2301a8db32c0e9a56649a0e496cf3abd27c + md5: f9cce0bc86b46533489a994a47d3c7d2 depends: + - numpy >=1.25 + - python + - python 3.12.* *_cpython - __osx >=11.0 - libcxx >=19 - - numpy >=1.25 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 258388 - timestamp: 1762525877844 -- conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py312hf90b1b7_3.conda - sha256: 735847f474ffbef028e2bac81c786f46b2498d422b834b799f50e30d95730b37 - md5: 9dabe26ca46b845b669408109975b922 + size: 286084 + timestamp: 1769156157865 +- conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py312h78d62e6_4.conda + sha256: 5f0dd3a4243e8293acc40abf3b11bcb23401268a1ef2ed3bce4d5a060383c1da + md5: 475bd41a63e613f2f2a2764cd1cd3b25 depends: - numpy >=1.25 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 + - python - vc >=14.3,<15 - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 224936 - timestamp: 1762525927186 -- conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.2.5-pyhd8ed1ab_0.conda - sha256: 874b0a1cef18f5cc8369fb9b82ac5785ffd2b8e78706cfb6f93ff064416c628b - md5: e6f85f3cd0c5aff4ef0e07e80f49fa39 + size: 244035 + timestamp: 1769155978578 +- conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda + sha256: 88d889261b057b5465d60b778a03795b5db464077c17b3fb0ca090a94429a273 + md5: 9e18b048c69d2d72bc69d120a435d731 depends: - arcosparse >=0.4.0,<0.5.0 - boto3 >=1.26 @@ -9474,8 +10914,8 @@ packages: - xarray >=2023.4.0 - zarr >=2.13.3 license: EUPL-1.2 - size: 82156 - timestamp: 1763035169125 + size: 87946 + timestamp: 1768809714531 - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda sha256: b161a074b92715b9b6a53c35bb84abc0cecea4299ca76b0aaebab0e35b46f3dc md5: 193a9e54636d8d70781a3e56370f5502 @@ -9486,92 +10926,54 @@ 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/linux-64/cryptography-46.0.3-py312ha4b625e_1.conda - sha256: 28dd9ae4bf7913a507e08ccd13788f0abe75557831095244e487bda2c474554f - md5: a42f7c8a15d53cdb6738ece5bd745d13 + size: 46644 + timestamp: 1769471040321 +- 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/osx-64/cryptography-46.0.3-py312heb31a8c_1.conda - sha256: 699ecf64e9063ede65956cf5c8138c8f34194b22f2417515f6cfe32d3f0e0a00 - md5: 3d055072c43c46fbce57662072fe68ec + size: 1712251 + timestamp: 1770772759286 +- 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-arm64/cryptography-46.0.3-py312hd13a024_1.conda - sha256: d9c000b52d51cbdbb3f7f566cf453d684361c20e96e125b5fca5cb2d339a2f94 - md5: afc792a91a796ebe05f883534ff0d437 + size: 1648309 + timestamp: 1770772877585 +- 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 @@ -9579,14 +10981,14 @@ 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/win-64/cryptography-46.0.3-py312h232196e_1.conda - sha256: 451a183bede51d5c8da10c45fd79a0e44141ba68155dd7c4fbe573d8dd2ab8e0 - md5: 62803136695cd61ff5f980840919c15c + size: 1595763 + timestamp: 1770772744039 +- 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 @@ -9594,8 +10996,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: 1482597 - timestamp: 1764805365967 + size: 1481687 + timestamp: 1770772649710 - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda sha256: bb47aec5338695ff8efbddbc669064a3b10fe34ad881fb8ad5d64fbfa6910ed1 md5: 4c2a8fef270f6c69591889b93f9f55c1 @@ -9699,13 +11101,13 @@ packages: license_family: BSD size: 520577 timestamp: 1760906450314 -- conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.12.0-pyhcf101f3_0.conda - sha256: 16c6774ca5235e2adb55822f4a27dc7dc0b453f822ef4adcb3637f28680a8eb9 - md5: 94d36804598479f9eafa9c973902280e +- conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.11.0-pyhcf101f3_0.conda + sha256: 8c4b681857ea44f4a299997a024509c21b1c054bbc0335ad82cc1bbfef4a8880 + md5: 1f97a470dbcf4a633e8da14e08428d42 depends: - python >=3.10 - - dask-core >=2025.12.0,<2025.12.1.0a0 - - distributed >=2025.12.0,<2025.12.1.0a0 + - dask-core >=2025.11.0,<2025.11.1.0a0 + - distributed >=2025.11.0,<2025.11.1.0a0 - cytoolz >=0.11.0 - lz4 >=4.3.2 - numpy >=1.24 @@ -9718,11 +11120,50 @@ packages: - openssl !=1.1.1e license: BSD-3-Clause license_family: BSD - size: 11329 - timestamp: 1765559052366 -- conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda - sha256: f02b63259e8f927a7e38e818a8dd251a06bce3f3f853235b8886a3cb89e0dded - md5: cc7b371edd70319942c802c7d828a428 + size: 11723 + timestamp: 1762461029811 +- conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_1.conda + sha256: 12bbfcff238d56ea2f576a3c0f1074c84bdff3f3d1d522af99b471692bc0bfb8 + md5: 8826c749da19cdeff0a987411ba6dcd2 + depends: + - python >=3.10 + - dask-core >=2026.1.2,<2026.1.3.0a0 + - distributed >=2026.1.2,<2026.1.3.0a0 + - cytoolz >=0.11.2 + - lz4 >=4.3.2 + - numpy >=1.26 + - pandas >=2.0 + - bokeh >=3.1.0 + - jinja2 >=2.10.3 + - pyarrow >=16.0 + - python + constrains: + - openssl !=1.1.1e + license: BSD-3-Clause + license_family: BSD + size: 11370 + timestamp: 1771422174009 +- conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.11.0-pyhcf101f3_0.conda + sha256: a1fa1457cf759d90deb87c258da393809285b807ecef47a317d210fa4fa9f7fb + md5: 91549f296c15ef7b49ee6600e7c934c1 + depends: + - python >=3.10 + - click >=8.1 + - cloudpickle >=3.0.0 + - fsspec >=2021.9.0 + - packaging >=20.0 + - partd >=1.4.0 + - pyyaml >=5.3.1 + - toolz >=0.10.0 + - importlib-metadata >=4.13.0 + - python + license: BSD-3-Clause + license_family: BSD + size: 1060758 + timestamp: 1762449427391 +- 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 @@ -9736,8 +11177,8 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 1062442 - timestamp: 1765558272352 + size: 1063599 + timestamp: 1769829714443 - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda sha256: 8bb557af1b2b7983cf56292336a1a1853f26555d9c6cecf1e5b2b96838c9da87 md5: ce96f2f470d39bd96ce03945af92e280 @@ -9751,33 +11192,49 @@ packages: license: AFL-2.1 OR GPL-2.0-or-later size: 447649 timestamp: 1764536047944 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.18-py312h8285ef7_0.conda - sha256: 73fc65a652736377f098a2fdac3960442ed062d9485dbb990c2301a4fb479562 - md5: 4d7e170b575fc405dc106927a2f0a311 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda + sha256: 3b988146a50e165f0fa4e839545c679af88e4782ec284cc7b6d07dd226d6a068 + md5: 679616eb5ad4e521c83da4650860aba7 + depends: + - libstdcxx >=13 + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libexpat >=2.7.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - libglib >=2.84.2,<3.0a0 + license: GPL-2.0-or-later + license_family: GPL + size: 437860 + timestamp: 1747855126005 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py312h8285ef7_0.conda + sha256: f20121b67149ff80bf951ccae7442756586d8789204cd08ade59397b22bfd098 + md5: ee1b48795ceb07311dd3e665dd4f5f33 depends: - python - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 + - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2856928 - timestamp: 1765704062579 -- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.19-py312h6c02384_0.conda - sha256: ce1ca3e92f5879a3644fa14f584f1ca826c464bdeae622a484776b0353affb14 - md5: d977af0b04dcbb6bf264a54a8c8bcea1 + size: 2858582 + timestamp: 1769744978783 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.20-py312h29de90a_0.conda + sha256: 310f737be38bd4a53b2c13c6387b880031fc0995a13194511cc08a48d3160462 + md5: 4e508cd9d5d630c7db0bdebb24a3be90 depends: - python - libcxx >=19 - - __osx >=11.0 + - __osx >=10.13 - python_abi 3.12.* *_cp312 license: MIT - size: 2762312 - timestamp: 1765840820960 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.19-py312h56d30c9_0.conda - sha256: 1de7a56b4cc3e7d96165c78d436edfc417b2e3d015f9a0dc1b3bbd2ae7da4f86 - md5: 2542eb8df5bf05555b0c9abe65926ba3 + license_family: MIT + size: 2764546 + timestamp: 1769744989784 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.20-py312h6510ced_0.conda + sha256: f0ca130b5ffd6949673d3c61d7b8562ab76ad8debafb83f8b3443d30c172f5eb + md5: da3b5efcb0caabcede61a6ce4e0a7669 depends: - python - __osx >=11.0 @@ -9785,11 +11242,12 @@ packages: - libcxx >=19 - python_abi 3.12.* *_cp312 license: MIT - size: 2751841 - timestamp: 1765840807484 -- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.19-py312ha1a9051_0.conda - sha256: b885ff2eb9d7ac4d59620ae30f0fd721ca67dafe69f3301a3e14303b80e22350 - md5: 1f0c0be0cf4893e17e71a023865c7230 + license_family: MIT + size: 2752978 + timestamp: 1769744996462 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.20-py312ha1a9051_0.conda + sha256: 5a886b1af3c66bf58213c7f3d802ea60fe8218313d9072bc1c9e8f7840548ba0 + md5: 032746a0b0663920f0afb18cec61062b depends: - python - vc >=14.3,<15 @@ -9797,8 +11255,9 @@ packages: - ucrt >=10.0.20348.0 - python_abi 3.12.* *_cp312 license: MIT - size: 3995535 - timestamp: 1765840830814 + license_family: MIT + size: 3996113 + timestamp: 1769745013982 - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda sha256: c17c6b9937c08ad63cb20a26f403a3234088e57d4455600974a0ce865cb14017 md5: 9ce473d1d1be1cc3810856a48b3fab32 @@ -9817,16 +11276,16 @@ packages: license_family: PSF size: 24062 timestamp: 1615232388757 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_0.conda - sha256: c994a70449d548dd388768090c71c1da81e1e128a281547ab9022908d46878c5 - md5: bf74a83f7a0f2a21b5d709997402cac4 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda + sha256: 7d57a7b8266043ffb99d092ebc25e89a0a2490bed4146b9432c83c2c476fa94d + md5: 5498feb783ab29db6ca8845f68fa0f03 depends: - python >=3.10 - - wrapt <2,>=1.10 + - wrapt <3,>=1.10 license: MIT license_family: MIT - size: 15815 - timestamp: 1761813872696 + size: 15896 + timestamp: 1768934186726 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2 sha256: 2695a60ff355b114d0c459458461d941d2209ec9aff152853b6a3ca8700c94ec md5: 7b6747d7cc2076341029cff659669e8b @@ -9847,16 +11306,25 @@ packages: license_family: BSD size: 10632 timestamp: 1734602698202 -- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.0-pyhcf101f3_1.conda - sha256: c0c91bd91e59940091cec1760db51a82a58e9c64edf4b808bd2da94201ccfdb4 - md5: eec5b361dbbaa69dba05050977a414b0 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda + sha256: 1ef84c0cc4efd0c2d58c3cb365945edbd9ee42a1c54514d1ccba4b641005f757 + md5: 080a808fce955026bf82107d955d32da depends: - python >=3.10 - python license: BSD-3-Clause license_family: BSD - size: 94889 - timestamp: 1764517905571 + 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 @@ -9866,15 +11334,43 @@ packages: license_family: APACHE size: 275642 timestamp: 1752823081585 -- conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2025.12.0-pyhcf101f3_1.conda - sha256: efaf699a2b8dc4bc23ed517184c7fa3182a9f9072a0e97566ea5a1c532916bee - md5: 613cea9275c4773d0b53c879838ac0ad +- conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2025.11.0-pyhcf101f3_0.conda + sha256: 2c66187658069e66957b27265531e94911e9484276bb8a00a0377d25bc8d52ee + md5: a072de34cd7024a54f1b309bc9e36a3b + depends: + - python >=3.10 + - click >=8.0 + - cloudpickle >=3.0.0 + - cytoolz >=0.11.2 + - dask-core >=2025.11.0,<2025.11.1.0a0 + - jinja2 >=2.10.3 + - locket >=1.0.0 + - msgpack-python >=1.0.2 + - packaging >=20.0 + - psutil >=5.8.0 + - pyyaml >=5.4.1 + - sortedcontainers >=2.0.5 + - tblib >=1.6.0 + - toolz >=0.11.2 + - tornado >=6.2.0 + - urllib3 >=1.26.5 + - zict >=3.0.0 + - python + constrains: + - openssl !=1.1.1e + license: BSD-3-Clause + license_family: BSD + size: 844827 + timestamp: 1762451399920 +- conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_1.conda + sha256: 678869f02e4d01cb6ce6838d279ff43c161a7730a3a63fec0a85d3524961ab66 + md5: 3c155e2914169b807ebb4027a8c0999c depends: - python >=3.10 - click >=8.0 - cloudpickle >=3.0.0 - cytoolz >=0.12.0 - - dask-core >=2025.12.0,<2025.12.1.0a0 + - dask-core >=2026.1.2,<2026.1.3.0a0 - jinja2 >=2.10.3 - locket >=1.0.0 - msgpack-python >=1.0.2 @@ -9892,8 +11388,8 @@ packages: - openssl !=1.1.1e license: BSD-3-Clause license_family: BSD - size: 844019 - timestamp: 1765560702026 + size: 844804 + timestamp: 1771421764975 - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda sha256: 5603c7d0321963bb9b4030eadabc3fd7ca6103a38475b4e0ed13ed6d97c86f4e md5: 0a2014fd9860f8b1eaa0b1f3d3771a08 @@ -9930,14 +11426,14 @@ packages: license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 size: 402700 timestamp: 1733217860944 -- conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.3-pyhd8ed1ab_0.conda - sha256: ab77ee201665dc654248e3a250bd6fe05db0a1892716a6feb8da4a3162518624 - md5: abbe8c85619c87c4f4f61b44173434af +- conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda + sha256: 0d605569a77350fb681f9ed8d357cc71649b59a304099dc9d09fbeec5e84a65e + md5: d6bd3cd217e62bbd7efe67ff224cd667 depends: - python >=3.10 license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 - size: 436965 - timestamp: 1762425841874 + size: 438002 + timestamp: 1766092633160 - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda sha256: d58e97d418f71703e822c422af5b9c431e3621a0ecdc8b0334c1ca33e076dfe7 md5: c56a7fa5597ad78b62e1f5d21f7f8b8f @@ -9948,6 +11444,17 @@ packages: license_family: MIT size: 22491 timestamp: 1734368817583 +- conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.1-h5888daf_0.conda + sha256: 1bcc132fbcc13f9ad69da7aa87f60ea41de7ed4d09f3a00ff6e0e70e1c690bc2 + md5: bfd56492d8346d669010eccafe0ba058 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 69544 + timestamp: 1739569648873 - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda sha256: 40cdd1b048444d3235069d75f9c8e1f286db567f6278a93b4f024e5642cfaecc md5: dbe3ec0f120af456b3477743ffd99b74 @@ -9990,9 +11497,9 @@ packages: license_family: MIT size: 21853 timestamp: 1762165431693 -- conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.44.0-h83bc92c_0.conda - sha256: 9d88f201263e9742cca41760b1c18f6189355cc695da766568bc4a035abb08a9 - md5: 2d37fd4ccfd98453a02a278e4112da39 +- conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.45.0-h83bc92c_0.conda + sha256: 118573f583a3a9476fad02e66eaec25b9c1114f6d75b98f57b0df8901219fd7e + md5: a981ecc85b1ff6307b8f09cf66b77083 depends: - __glibc >=2.17,<3.0.a0 - hdf5 >=1.14.6,<1.14.7.0a0 @@ -10002,16 +11509,16 @@ packages: - libgfortran - libgfortran5 >=14.3.0 - libnetcdf >=4.9.3,<4.9.4.0a0 - - libpng >=1.6.50,<1.7.0a0 + - libpng >=1.6.54,<1.7.0a0 - libstdcxx >=14 - libzlib >=1.3.1,<2.0a0 license: Apache-2.0 license_family: Apache - size: 4666382 - timestamp: 1759850694036 -- conda: https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.44.0-h163e534_0.conda - sha256: f3711696994315feb3f1a530069c13c4dd409959b1db7db14855a8065b580ed0 - md5: 297d010f244b28d465a538b4f5044057 + size: 4778986 + timestamp: 1768991430426 +- conda: https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.45.0-hef68630_0.conda + sha256: e749dd9457e97b9e391461e5706c009102e039c218fc7f8651ca877ea3dd45ac + md5: c2d8f6d37131139dbaeba869b036b9cb depends: - __osx >=10.13 - hdf5 >=1.14.6,<1.14.7.0a0 @@ -10020,17 +11527,16 @@ packages: - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.2.0 - libnetcdf >=4.9.3,<4.9.4.0a0 - - libpng >=1.6.50,<1.7.0a0 + - libpng >=1.6.54,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 license: Apache-2.0 license_family: Apache - size: 4859452 - timestamp: 1759851141414 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/eccodes-2.44.0-h6f4dcf9_0.conda - sha256: b437c1f21fc09bdccfeff14fddc84a84dce8693d6fe9042f736c80786ab11435 - md5: ed0d5a772f60e3c18f35125d1e23e7e5 + size: 5266558 + timestamp: 1768916550349 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/eccodes-2.45.0-h768f3a7_0.conda + sha256: 378ed51575fe268f90704663b7fcb5f80f7c77865d46d0643124546225773d00 + md5: 73c9f89679eb90386f2787e7681e95b7 depends: - __osx >=11.0 - hdf5 >=1.14.6,<1.14.7.0a0 @@ -10039,34 +11545,33 @@ packages: - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.2.0 - libnetcdf >=4.9.3,<4.9.4.0a0 - - libpng >=1.6.50,<1.7.0a0 + - libpng >=1.6.54,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 license: Apache-2.0 license_family: Apache - size: 5144121 - timestamp: 1759850666153 -- conda: https://conda.anaconda.org/conda-forge/win-64/eccodes-2.44.0-h2bffdaa_0.conda - sha256: 45a95120e08c09bb5dd40d45cff8d41115922f875639cf32111399064e770f96 - md5: c0824c1cb3674ad22be82d49c9dc0c59 + size: 5142958 + timestamp: 1768915692443 +- conda: https://conda.anaconda.org/conda-forge/win-64/eccodes-2.45.0-h2bffdaa_0.conda + sha256: 4ae454952c781a542e165fd332f0123da775128b3730130a65601daaa6294969 + md5: d2813976958e0066e083e5e7f8e3480e depends: - hdf5 >=1.14.6,<1.14.7.0a0 - jasper >=4.2.8,<5.0a0 - libaec >=1.1.4,<2.0a0 - libnetcdf >=4.9.3,<4.9.4.0a0 - - libpng >=1.6.50,<1.7.0a0 + - libpng >=1.6.54,<1.7.0a0 - 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: 2256452 - timestamp: 1759850345892 -- conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.1-pyhd8ed1ab_0.conda - sha256: 4a3ab3cdc52b367a44568e474604e724e8ea7ab57a77e88f763357cffa993a23 - md5: ea90ece1da754ca0c5d6766eb59908c2 + size: 2325273 + timestamp: 1768914992523 +- conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda + sha256: c9e08781d043ab18ea83d2523a17d0bd763ae01274fb854c3024f2fee27aaecf + md5: d957f10f516dcdeb9e382c91d771df12 depends: - attrs - multiurl >=0.3.2 @@ -10075,8 +11580,8 @@ packages: - typing_extensions license: Apache-2.0 license_family: APACHE - size: 26004 - timestamp: 1762273676956 + size: 26195 + timestamp: 1769417703446 - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda sha256: c37320864c35ef996b0e02e289df6ee89582d6c8e233e18dc9983375803c46bb md5: 3bc0ac31178387e8ed34094d9481bfe8 @@ -10095,9 +11600,9 @@ packages: license: Unlicense size: 7077 timestamp: 1756221480651 -- conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.8-pyhd8ed1ab_0.conda - sha256: d5ba8432f725e5690991476cd64c7c7f9c8f5c1dc1183f583390b982e7c6d486 - md5: 3181cf53cd50513a1a7c00aae2f08e7a +- 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 @@ -10106,8 +11611,8 @@ packages: - requests license: MIT license_family: MIT - size: 950839 - timestamp: 1761149386980 + size: 947103 + timestamp: 1769485540786 - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda sha256: a5b51e491fec22bcc1765f5b2c8fff8a97428e9a5a7ee6730095fb9d091b0747 md5: 057083b06ccf1c2778344b6dabace38b @@ -10175,11 +11680,11 @@ packages: license_family: MIT size: 30753 timestamp: 1756729456476 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.128.0-h0ea4129_1.conda - sha256: 3df305329c6c0ce1e6c40ffc90805c9d486610c807d03864e1b853c026e33962 - md5: a7d3e9e9c9894cc91d0c069249293de2 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.129.0-hccfc660_0.conda + sha256: fad45069d3c7f477b18ed4d564612499b3d8f96bcdd29b0c0a0e2d5c587c6fdc + md5: 4d72b56864ce334ae2cb8c0d6f73e02b depends: - - fastapi-core ==0.128.0 pyhcf101f3_1 + - fastapi-core ==0.129.0 pyhcf101f3_0 - email_validator - fastapi-cli - httpx @@ -10190,11 +11695,11 @@ packages: - uvicorn-standard license: MIT license_family: MIT - size: 4800 - timestamp: 1767625503492 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.20-pyhcf101f3_0.conda - sha256: 284cae62b2061a9f423b468f720deeff98783eccff6bf3b32965afb21a53e349 - md5: e2b464522fa49c5948c4da6c8d8ea9b3 + size: 4851 + timestamp: 1770937221332 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + sha256: cb60fc8c96dcd2a6335914d4d6d7d5f5549c9e1ff4533be28ba699e648babf37 + md5: 442ec6511754418c87a84bc1dc0c5384 depends: - python >=3.10 - rich-toolkit >=0.14.8 @@ -10204,16 +11709,17 @@ packages: - python license: MIT license_family: MIT - size: 18993 - timestamp: 1766435117562 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.128.0-pyhcf101f3_1.conda - sha256: 8a5b4d04ceabd98e5e39e2c75a24e27010f0d429681fc6053663e33ede4e190e - md5: 77831edf7b296b00b8b4a49257084330 + size: 18920 + timestamp: 1771293215825 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.129.0-pyhcf101f3_0.conda + sha256: df47d96eb05f76cffc5b3d6afc5700d1217a0a36cd0defe9874de063d8068fc3 + md5: 8f3f6fd4ea20716c74d223c859b2ade5 depends: - python >=3.10 - annotated-doc >=0.0.2 - - starlette >=0.40.0,<0.51.0 + - starlette >=0.40.0,<1.0.0 - typing_extensions >=4.8.0 + - typing-inspection >=0.4.2 - pydantic >=2.7.0 - python constrains: @@ -10227,16 +11733,16 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 84909 - timestamp: 1767625503489 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.1-pyhd8ed1ab_0.conda - sha256: 8028582d956ab76424f6845fa1bdf5cb3e629477dd44157ca30d45e06d8a9c7c - md5: 81a651287d3000eb12f0860ade0a1b41 + size: 85180 + timestamp: 1770937221329 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.3-pyhd8ed1ab_0.conda + sha256: 6d576ed3bd0e7c57b1144f0b2014de9ea3fab9786316bc3e748105d44e0140a0 + md5: 9dbb20eec24beb026291c20a35ce1ff9 depends: - python >=3.10 license: Unlicense - size: 18609 - timestamp: 1765846639623 + size: 24808 + timestamp: 1771468713029 - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda sha256: d02d04e24b79003442751240a7c7ad251c30e368f38808fb44c5a6e925c0436a md5: fa9e9ec7bf26619a8edd3e11155f15d6 @@ -10246,6 +11752,26 @@ packages: license_family: Apache size: 16541 timestamp: 1753777739225 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.10.1-py312h053e1f3_6.conda + sha256: 801274da37e28d0cff6d091b679d34b10df718420a97d8fe577a968805f396d3 + md5: a68cae58a81a937a6edcb3e4e6f0bbe7 + depends: + - __glibc >=2.17,<3.0.a0 + - attrs >=19.2.0 + - click >=8.0,<9.dev0 + - click-plugins >=1.0 + - cligj >=0.5 + - libgcc >=14 + - libgdal-core >=3.12.1,<3.13.0a0 + - libstdcxx >=14 + - pyparsing + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - shapely + license: BSD-3-Clause + license_family: BSD + size: 1203804 + timestamp: 1767051329805 - conda: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.10.1-py312h1289d80_4.conda sha256: 97fa972c2f9e8a044dad9f35fb38d21c270b4446d7b6ba671914432260f321e6 md5: 3358596ee8cd04cca8c3404e8190d8bc @@ -10285,6 +11811,25 @@ packages: license_family: BSD size: 1042055 timestamp: 1764875013543 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fiona-1.10.1-py312hb20e208_6.conda + sha256: c19086be0ccfb80507feac7e8f9ca6295fb44f5d8f24beb6394d051c62edbdeb + md5: e82a20a3c91736e615f87c5564f0753b + depends: + - __osx >=10.13 + - attrs >=19.2.0 + - click >=8.0,<9.dev0 + - click-plugins >=1.0 + - cligj >=0.5 + - libcxx >=19 + - libgdal-core >=3.12.1,<3.13.0a0 + - pyparsing + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - shapely + license: BSD-3-Clause + license_family: BSD + size: 1043587 + timestamp: 1767051571374 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.10.1-py312h455b684_4.conda sha256: cd6ef8ae8237c237abda0fad3c58984959f792a1607d610b86b7e3f8b0b0c488 md5: 9835aa65ef5d25e7e7f12653c1c56f22 @@ -10305,6 +11850,46 @@ packages: license_family: BSD size: 1042406 timestamp: 1764875395749 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.10.1-py312h515fe7d_6.conda + sha256: f23b7acc59a4c8e31a633cff81e7872fbcd210b848f3753d84d45503deef3be4 + md5: ac14e26b9c555ef3aee80db8fcfce7e6 + depends: + - __osx >=11.0 + - attrs >=19.2.0 + - click >=8.0,<9.dev0 + - click-plugins >=1.0 + - cligj >=0.5 + - libcxx >=19 + - libgdal-core >=3.12.1,<3.13.0a0 + - pyparsing + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - shapely + license: BSD-3-Clause + license_family: BSD + size: 1045446 + timestamp: 1767051694318 +- conda: https://conda.anaconda.org/conda-forge/win-64/fiona-1.10.1-py312h3f2e00f_6.conda + sha256: 075511c84efaea59dddc8380a10a96d0813f14fa41878b171dd86fe514488c95 + md5: cc679ec1a1dd027e5b0ae5721d9df2b2 + depends: + - attrs >=19.2.0 + - click >=8.0,<9.dev0 + - click-plugins >=1.0 + - cligj >=0.5 + - libgdal-core >=3.12.1,<3.13.0a0 + - pyparsing + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - shapely + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-3-Clause + license_family: BSD + size: 985362 + timestamp: 1767051538939 - conda: https://conda.anaconda.org/conda-forge/win-64/fiona-1.10.1-py312hbb81ca0_4.conda sha256: 540cfe6b2be7ced6dd302c5a40f22bf2a0fe2ab41f4d4c8dc882ad493f4f72f0 md5: de0104b8c5c9ae98ebf045bf17b13344 @@ -10388,59 +11973,63 @@ 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 @@ -10681,6 +12270,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 @@ -10732,15 +12350,15 @@ packages: license_family: APACHE size: 49472 timestamp: 1752167442686 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.12.0-pyhd8ed1ab_0.conda - sha256: 64a4ed910e39d96cd590d297982b229c57a08e70450d489faa34fd2bec36dbcc - md5: a3b9510e2491c20c7fc0f5e730227fbb +- 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: 147391 - timestamp: 1764784920938 + size: 148757 + timestamp: 1770387898414 - conda: https://conda.anaconda.org/conda-forge/noarch/furl-2.1.4-pyhd8ed1ab_0.conda sha256: eca093d4b0e057803d5c1c6b0af37cdaf35ee28abf4f7df2855d4b52a1fafee8 md5: ae62f6c56946309738c5f6d0654ad85c @@ -10751,51 +12369,96 @@ packages: license: Unlicense size: 30441 timestamp: 1741505873840 -- 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.42.12-h2b0a6b4_3.conda + sha256: d8a9d0df91e1939b1fb952b5214e097d681c49faf215d1ad69a7f0acb03c8e08 + md5: aeec474bd508d8aa6c015e2cc7d14651 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - libglib >=2.86.0,<3.0a0 + - libglib >=2.84.3,<3.0a0 - libjpeg-turbo >=3.1.0,<4.0a0 - liblzma >=5.8.1,<6.0a0 - libpng >=1.6.50,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 579311 + timestamp: 1754960116630 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.5-h2b0a6b4_1.conda + sha256: b2a6fb56b8f2d576a3ae5e6c57b2dbab91d52d1f1658bf1b258747ae25bb9fde + md5: 7eb4977dd6f60b3aaab0715a0ea76f11 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libglib >=2.86.4,<3.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 - libtiff >=4.7.1,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL - size: 572093 - timestamp: 1761082340749 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.4-h07555a4_0.conda - sha256: f1d85cf18cba23f9fac3c01f5aaf0a8d44822b531d3fc132f81e7cf25f589a4e - md5: bb9e17e69566ded88342156e58de3f87 + size: 575109 + timestamp: 1771530561157 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-h5720e38_3.conda + sha256: 17e804d758c898757209a7eac8073500b7b585a68789731a8a4ab3bc63d80cac + md5: 34d25f5203c6c6e61fb5a40d2249b614 depends: - __osx >=10.13 - - libglib >=2.86.0,<3.0a0 + - libglib >=2.84.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 + - libtiff >=4.7.0,<4.8.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 556549 + timestamp: 1754960291328 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.5-hae309b2_1.conda + sha256: 594bc16f8e92ca10b106eb80f2b9f5be9b2d86ffef12f2c9b26686bb669626ae + md5: cde2fa97a1a466df37e78d071efb8579 + depends: + - __osx >=11.0 + - libglib >=2.86.4,<3.0a0 + - libintl >=0.25.1,<1.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 - libtiff >=4.7.1,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL - size: 548999 - timestamp: 1761082565353 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.4-h7542897_0.conda - sha256: 1164ba63360736439c6e50f2d390e93f04df86901e7711de41072a32d9b8bfc9 - md5: 0b349c0400357e701cf2fa69371e5d39 + size: 553039 + timestamp: 1771530777722 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7af3d76_3.conda + sha256: b9a928be779da5ce90e4dbc1f70829ac6bb45c3b244d6913c71439ce6a0d631b + md5: da68375a855e361d5833f84a7d012ef1 depends: - __osx >=11.0 - - libglib >=2.86.0,<3.0a0 + - libglib >=2.84.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 + - libtiff >=4.7.0,<4.8.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 549845 + timestamp: 1754960472079 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.5-h4e57454_1.conda + sha256: ed637a29deb9afb77c51a0e8b3961eb725fcbf7d6d84dadb0983a457f24dba24 + md5: 444c1d08dc4c0303ae08fa7cd14497a4 + depends: + - __osx >=11.0 + - libglib >=2.86.4,<3.0a0 + - libintl >=0.25.1,<1.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 - libtiff >=4.7.1,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL - size: 544149 - timestamp: 1761082904334 + size: 549384 + timestamp: 1771530540200 - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda sha256: 4bcebe8f5f449b728bd0140e38c036060f22d31048e0c7980bf4cd6acdad2b62 md5: 43dd16b113cc7b244d923b630026ff4f @@ -10814,12 +12477,12 @@ packages: license_family: BSD size: 18963 timestamp: 1734884985416 -- conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.1-pyhd8ed1ab_1.conda - sha256: aa378cf3a8c557f71e0390961e7ee2ea5b213b5ab87fee2d03016e265271604e - md5: 99baf7d3c98e77f22972757af7e774f8 +- conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda + sha256: 7c3e5dc62c0b3d067a6f517ea9176e9d52682499d4afb78704354a60f37c5444 + md5: 3b9d40bef27d094e48bb1a821e86a252 depends: - folium - - geopandas-base 1.1.1 pyha770c72_1 + - geopandas-base 1.1.2 pyha770c72_0 - mapclassify >=2.5.0 - matplotlib-base - pyogrio >=0.7.2 @@ -10828,11 +12491,11 @@ packages: - xyzservices license: BSD-3-Clause license_family: BSD - size: 8381 - timestamp: 1759763365542 -- conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.conda - sha256: 383f9003eb65158ef767e23a748b7bf5c7d91859bbd126accacbb02a33154f61 - md5: 23e25e079cd0108ec9cbae779ef4b685 + size: 8454 + timestamp: 1766475276498 +- conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.2-pyha770c72_0.conda + sha256: e907715daf3b312a12d124744abe9644540f104832055b58edcf0c19eb4c45c0 + md5: ca79e96c1fd39ab6d12c8f99968111b1 depends: - numpy >=1.24 - packaging @@ -10841,8 +12504,8 @@ packages: - shapely >=2.0.0 license: BSD-3-Clause license_family: BSD - size: 250856 - timestamp: 1759763364111 + size: 254151 + timestamp: 1766475275483 - conda: https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda sha256: ac453c9558c48febe452c79281c632b3749baef7c04ed4b62f871709aee2aa03 md5: 40182a8d62a61d147ec7d3e4c5c36ac2 @@ -10853,6 +12516,16 @@ packages: license_family: MIT size: 72999 timestamp: 1734342056836 +- conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.13.1-h97f6797_0.conda + sha256: 3a9c854fa8cf1165015b6ee994d003c3d6a8b0f532ca22b6b29cd6e8d03942ed + md5: 5bc18c66111bc94532b0d2df00731c66 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.1-only + size: 1871567 + timestamp: 1741051481612 - conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.14.1-h480dda7_0.conda sha256: 08896dcd94e14a83f247e91748444e610f344ab42d80cbf2b6082b481c3f8f4b md5: 4d4efd0645cd556fab54617c4ad477ef @@ -10863,6 +12536,15 @@ packages: license: LGPL-2.1-only size: 1974942 timestamp: 1761593471198 +- conda: https://conda.anaconda.org/conda-forge/osx-64/geos-3.13.1-h502464c_0.conda + sha256: d2ec00b2600ebda6ec5f953d5e65eacdb66f356acc7dd952bb42e2bf7a22b602 + md5: 480d6bc3033367f3d7b412cc5a9e0819 + depends: + - __osx >=10.13 + - libcxx >=18 + license: LGPL-2.1-only + size: 1562536 + timestamp: 1741051661501 - conda: https://conda.anaconda.org/conda-forge/osx-64/geos-3.14.1-he483b9e_0.conda sha256: 4d95fd55a9e649620b4e50ddafff064c4ec52d87e1ed64aa4cad13e643b32baf md5: d83030a79ce1276edc2332c1730efa17 @@ -10872,6 +12554,15 @@ packages: license: LGPL-2.1-only size: 1631280 timestamp: 1761593838143 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/geos-3.13.1-hc9a1286_0.conda + sha256: b3f116968699ef72271f608a8ef2794b609e9a3cecbd5c178d8ccb797be709d6 + md5: 3528352bdf54e8b11eca0eb97daf7d55 + depends: + - __osx >=11.0 + - libcxx >=18 + license: LGPL-2.1-only + size: 1470335 + timestamp: 1741051878236 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/geos-3.14.1-h5afe852_0.conda sha256: 1ac5f5a3a35f2e4778025043c87993208d336e30539406e380e0952bb7ffd188 md5: 4238412c29eff0bb2bb5c60a720c035a @@ -10881,6 +12572,16 @@ packages: license: LGPL-2.1-only size: 1530844 timestamp: 1761594597236 +- conda: https://conda.anaconda.org/conda-forge/win-64/geos-3.13.1-h9ea8674_0.conda + sha256: 8b2dd4b831ddac64584d49b50f0547c90f5b352a7ec62f941686bb59c21d6055 + md5: 2ebe8eb886545cdc287324d41186a698 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-only + size: 1703268 + timestamp: 1741052039669 - conda: https://conda.anaconda.org/conda-forge/win-64/geos-3.14.1-hdade9fe_0.conda sha256: 032a16d78e69a20ffae6216191a66977bc50f6c21cb75f9853b37298b95308c4 md5: 8c75d7e401a4d799ce8d4bb922320967 @@ -10891,83 +12592,68 @@ packages: license: LGPL-2.1-only size: 1772787 timestamp: 1761593910217 -- conda: https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.4-h1000f5c_4.conda - sha256: d17e2f34fe5c61eb620e8679368d8ee90be36379cd6023f8690bdcba1c60761c - md5: ff1966654a6cd1cf06a6e44c13e60b8a +- conda: https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.4-h239500f_2.conda + sha256: 0cd4454921ac0dfbf9d092d7383ba9717e223f9e506bc1ac862c99f98d2a953c + md5: b0c42bce162a38b1aa2f6dfb5c412bc4 depends: - - proj - - zlib - - libjpeg-turbo - - libtiff - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - - proj >=9.7.0,<9.8.0a0 - - libjpeg-turbo >=3.1.0,<4.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + - proj >=9.6.0,<9.7.0a0 + - zlib license: MIT license_family: MIT - size: 144495 - timestamp: 1757965550923 -- conda: https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.7.4-h6952e58_4.conda - sha256: a32d888db10e1103e3e6f3f0127cfa58d3ad4a4857ca047a080fa11d80f65e74 - md5: 30f1583db3fcb2893dbcafb2328d6393 + size: 128758 + timestamp: 1742402413139 +- conda: https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.7.4-h88234f0_2.conda + sha256: bc72d7628743e47e4cb1e17e087561275efb0f4c9fdbc023fc08749c94578645 + md5: b6e9e421b9646dce6cafa65d6e5f9d4c depends: - - proj - - zlib - - libjpeg-turbo - - libtiff - __osx >=10.13 - - libcxx >=19 - - libjpeg-turbo >=3.1.0,<4.0a0 + - libcxx >=18 + - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - proj >=9.7.0,<9.8.0a0 - libzlib >=1.3.1,<2.0a0 + - proj >=9.6.0,<9.7.0a0 + - zlib license: MIT license_family: MIT - size: 132762 - timestamp: 1757965579446 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/geotiff-1.7.4-hf862be1_4.conda - sha256: 139909705857801b2cf4ff738a70c035365248a35583ba6ecab7c981ac5356da - md5: 111fe25c7b56f8e8f10322b4d99abe69 + size: 114937 + timestamp: 1742402589010 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/geotiff-1.7.4-h1d7e6e1_2.conda + sha256: f82eb2b3465f860a8703b9f7694ad6419b1d477e0485cebb1d1b76b94a8606fe + md5: d341bc43aedb09c6256ef321793e6890 depends: - - proj - - zlib - - libjpeg-turbo - - libtiff - __osx >=11.0 - - libcxx >=19 - - libzlib >=1.3.1,<2.0a0 - - libjpeg-turbo >=3.1.0,<4.0a0 + - libcxx >=18 + - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - proj >=9.7.0,<9.8.0a0 + - libzlib >=1.3.1,<2.0a0 + - proj >=9.6.0,<9.7.0a0 + - zlib license: MIT license_family: MIT - size: 128471 - timestamp: 1757965588361 -- conda: https://conda.anaconda.org/conda-forge/win-64/geotiff-1.7.4-h73469f5_4.conda - sha256: 5f01f23fc4447b130238668a40d1c7baa916f3ad175e5772c8482fc1f8c9e2e7 - md5: 2a62961eeffe28d84c166600e4bf6e25 + size: 113025 + timestamp: 1742402688792 +- conda: https://conda.anaconda.org/conda-forge/win-64/geotiff-1.7.4-h86c3423_2.conda + sha256: d7f94ece67db2e70af5d55a50ee481dfc20bbef7ed03a61ec85101b77ae0013d + md5: 9328cad37c17330530ce1b8ac8b71254 depends: - - proj - - zlib - - libjpeg-turbo - - libtiff - - 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 - - libzlib >=1.3.1,<2.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - proj >=9.7.0,<9.8.0a0 - - libjpeg-turbo >=3.1.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - proj >=9.6.0,<9.7.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zlib license: MIT license_family: MIT - size: 137535 - timestamp: 1757965585058 + size: 123660 + timestamp: 1742402704770 - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda sha256: d04c4a6c11daa72c4a0242602e1d00c03291ef66ca2d7cd0e171088411d57710 md5: 49c36fcad2e9af6b91e91f2ce5be8ebd @@ -11046,47 +12732,80 @@ packages: license_family: BSD size: 53136 timestamp: 1735887290843 -- conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.45-pyhff2d567_0.conda - sha256: 12df2c971e98f30f2a9bec8aa96ea23092717ace109d16815eeb4c095f181aa2 - md5: b91d463ea8be13bcbe644ae8bc99c39f +- conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda + sha256: 8043bcb4f59d17467c6c2f8259e7ded18775de5d62a8375a27718554d9440641 + md5: 74c0cfdd5359cd2a1f178a4c3d0bd3a5 depends: - gitdb >=4.0.1,<5 - - python >=3.9 + - python >=3.10 - typing_extensions >=3.10.0.2 license: BSD-3-Clause license_family: BSD - size: 157875 - timestamp: 1753444241693 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.86.3-hf516916_0.conda - sha256: 591e948c56f40e7fbcbd63362814736d9c9a3f0cd3cf4284002eff0bec7abe4e - md5: fd6acbf37b40cbe919450fa58309fbe1 + size: 158433 + timestamp: 1767358832407 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.3-hf516916_0.conda + sha256: bf744e0eaacff469196f6a18b3799fde15b8afbffdac4f5ff0fdd82c3321d0f6 + md5: 39f817fb8e0bb88a63bbdca0448143ea + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libglib 2.84.3 hf39c6af_0 + license: LGPL-2.1-or-later + size: 116716 + timestamp: 1754315054614 +- 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 -- conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.86.3-h8650975_0.conda - sha256: f8563491a04c1aa2ccc2d730382949797316674d1c9bdde42f023924081e8295 - md5: 16ce4f8eddf8ad9233631f79404a4267 + 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 depends: - __osx >=10.13 - - libglib 2.86.3 hf241ffe_0 + - libglib 2.84.3 h5fed8df_0 + - libintl >=0.25.1,<1.0a0 + license: LGPL-2.1-or-later + size: 102128 + timestamp: 1754315404852 +- conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.86.4-h8501676_0.conda + sha256: ab4dd3495ec97feb53efe4a02b52ef1e1afb66141afac4a4f334ade304c1b7f0 + md5: 0f1383d5427e74ff79d89b2d6bf8a979 + depends: + - __osx >=11.0 + - libffi + - libglib 2.86.4 hec30fc1_0 + - libintl >=0.25.1,<1.0a0 + license: LGPL-2.1-or-later + 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 + depends: + - __osx >=11.0 + - libglib 2.84.3 h587fa63_0 - libintl >=0.25.1,<1.0a0 license: LGPL-2.1-or-later - size: 102445 - timestamp: 1765222621327 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.86.3-hb9d6e3a_0.conda - sha256: a4630914a543d7ae6bdce031f63da32af039d4d7d76b445b4f5d09f0b6e4ddcb - md5: 07cf8a6e2d3f9c25ee3f123bf955b34b + size: 101984 + timestamp: 1754315707816 +- 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 @@ -11197,53 +12916,55 @@ packages: license: GPL-2.0-or-later OR LGPL-3.0-or-later size: 567053 timestamp: 1718982076982 -- conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.28.1-pyhd8ed1ab_0.conda - sha256: 3dde5af0fdafae40315c278cd63ed531282f651868b1cb259d96234bc138dce0 - md5: 4f543962961d34db6b5c72ebe827caf7 +- conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.30.0-pyhcf101f3_0.conda + sha256: 23b93f620c3fd07d8ac6440b547e3e04e6ce1192c585620f6236ef9381515fd0 + md5: 7b98d992f037ebe87496162bd5885cf6 depends: - - google-auth >=2.14.1,<3.0.0 - - googleapis-common-protos >=1.56.2,<2.0.0 - - proto-plus >=1.25.0,<2.0.0 - - protobuf >=3.19.5,<7.0.0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 - python >=3.10 - - requests >=2.18.0,<3.0.0 + - googleapis-common-protos >=1.56.3,<2.0.0 + - protobuf >=4.25.8,<7.0.0 + - proto-plus >=1.25.0,<2.0.0 + - google-auth >=2.14.1,<3.0.0 + - requests >=2.20.0,<3.0.0 + - python license: Apache-2.0 license_family: APACHE - size: 98155 - timestamp: 1761990483177 -- conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.43.0-pyhd8ed1ab_0.conda - sha256: 35fa2eec3fb90ee1c6c2989579f586b4243ff2a0a0dabaeae12fe7c142d44fe7 - md5: 5b33d9974cab063dcf39e8671ddee1c1 + size: 105274 + timestamp: 1771485965861 +- conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda + sha256: f9fd7cbfc6cea1b43c9e210f0042c5ca62ded641a83ed6e7c046ef08dfac4583 + md5: 6e643ba74997c8dddbaa98fc2fc3481b depends: - - aiohttp >=3.6.2,<4.0.0 - - cachetools >=2.0.0,<7.0 - - cryptography >=38.0.3 + - 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 - - python >=3.10 - pyu2f >=0.1.5 - - requests >=2.20.0,<3.0.0 - - rsa >=3.1.4,<5 + - python license: Apache-2.0 - license_family: Apache - size: 124222 - timestamp: 1762419588179 -- conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhd8ed1ab_0.conda - sha256: a555b95ad2fed59a382da096bd23ece580ce240383f59917599f1c142acad8fc - md5: 862b63f7548be0c97e9c6f4f85959189 + license_family: APACHE + 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 depends: + - python >=3.10,<3.14 - google-api-core >=1.31.6,<3.0.0,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0 - google-auth >=1.25.0,<3.0.0 - grpcio >=1.38.0,<2.0.0 - grpcio-status >=1.38.0,<2.0.0 - - python >=3.10,<3.14 + - python license: Apache-2.0 - license_family: Apache - size: 28892 - timestamp: 1761989216405 -- conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.7.0-pyhcf101f3_0.conda - sha256: 1dcc2a6431ee534b46caea77fbfb8898df77c141853a7b330a37670f4af80095 - md5: 9a4ab0a7b2c5362e9530b03cf563820b + license_family: APACHE + size: 33593 + timestamp: 1768561863777 +- 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 @@ -11253,15 +12974,14 @@ 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: 193031 - timestamp: 1765317879465 -- conda: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.7.1-py312h03f33d3_1.conda - sha256: 2224172f2df1990f244920a0bed7c771146cc006f112aa69d12e08e5bf432e8a - md5: e177c8834a368f6e9691017d4e85f0ac + 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 depends: - __glibc >=2.17,<3.0.a0 - libcrc32c >=1.1.2,<1.2.0a0 @@ -11270,11 +12990,11 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 24556 - timestamp: 1755850516665 -- conda: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.7.1-py312h0d55a24_1.conda - sha256: 2b8b0129307f06ff4ac3df3e6214daca5fd40a8f097999aa210f6931a4f0870f - md5: feaf00447484382bb529b562a2bc3f39 + size: 24900 + timestamp: 1768549198202 +- conda: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.8.0-py312hb9001e9_1.conda + sha256: ffd90aaf431a1a1d45f1b852aef16e56c1ce73bd443fae96d83c9d8d2b8a9af2 + md5: 558f8364bc7ccb5be86f035dadab7981 depends: - __osx >=10.13 - libcrc32c >=1.1.2,<1.2.0a0 @@ -11282,11 +13002,11 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 23942 - timestamp: 1755850572435 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.7.1-py312h859a1db_1.conda - sha256: e10e40e19c2ec10006f652fdd25e12646a04fe05951b74e07ca3a5a9b9bfb236 - md5: 2203124f5a2807a20972b7dd1c18146b + size: 24287 + timestamp: 1768549357803 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.8.0-py312h090f823_1.conda + sha256: cf6c1345d2c4fb4cee1128256d3a1d3fe5150c8788bc6cad12a04cbfc44bb247 + md5: 0c8ad601cdbec3be85d1c62080b388d7 depends: - __osx >=11.0 - libcrc32c >=1.1.2,<1.2.0a0 @@ -11295,11 +13015,11 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 24274 - timestamp: 1755850444603 -- conda: https://conda.anaconda.org/conda-forge/win-64/google-crc32c-1.7.1-py312h3d708b0_1.conda - sha256: 6e33c28b4fdc224fc58eee9427ce5322acb2dc3e0ecf29d9110bef8a7f19449c - md5: 182388b6abd7e6884d487a090972b1ab + size: 25105 + timestamp: 1768549598713 +- conda: https://conda.anaconda.org/conda-forge/win-64/google-crc32c-1.8.0-py312h3d708b0_1.conda + sha256: 58381cbd3f0df0382b4f0981a6c1f34ba6f0be7fb84a9a29de134c5fe86f646c + md5: 91f5fad53070eed2524245d9a7902efa depends: - libcrc32c >=1.1.2,<1.2.0a0 - python >=3.12,<3.13.0a0 @@ -11309,8 +13029,8 @@ packages: - vc14_runtime >=14.44.35208 license: Apache-2.0 license_family: Apache - size: 27585 - timestamp: 1755850542424 + size: 28231 + timestamp: 1768549335337 - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda sha256: 23d825ed0664a8089c7958bffd819d26e1aba7579695c40dfbdb25a4864d8be6 md5: ba7f04ba62be69f9c9fef0c4487c210b @@ -11376,9 +13096,33 @@ packages: license_family: LGPL size: 96336 timestamp: 1755102441729 -- conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.0-h8b86629_0.conda - sha256: af8ca1fe02eba1c4e72918e56ef180563ba38032bcbae0433bff13d0ba099113 - md5: 39dcf8bb370df27fd81dbe41d4cb605e +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-13.1.2-h87b6fe6_0.conda + sha256: efbd7d483f3d79b7882515ccf229eceb7f4ff636ea2019044e98243722f428be + md5: 0adddc9b820f596638d8b0ff9e3b4823 + depends: + - __glibc >=2.17,<3.0.a0 + - adwaita-icon-theme + - cairo >=1.18.4,<2.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.42.12,<3.0a0 + - gtk3 >=3.24.43,<4.0a0 + - gts >=0.7.6,<0.8.0a0 + - libexpat >=2.7.1,<3.0a0 + - libgcc >=14 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.84.3,<3.0a0 + - librsvg >=2.58.4,<3.0a0 + - libstdcxx >=14 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.4,<2.0a0 + license: EPL-1.0 + license_family: Other + size: 2427887 + timestamp: 1754732581595 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda + sha256: 48d4aae8d2f7dd038b8c2b6a1b68b7bca13fa6b374b78c09fcc0757fa21234a1 + md5: 341fc61cfe8efa5c72d24db56c776f44 depends: - __glibc >=2.17,<3.0.a0 - adwaita-icon-theme @@ -11390,7 +13134,7 @@ packages: - libexpat >=2.7.3,<3.0a0 - libgcc >=14 - libgd >=2.3.3,<2.4.0a0 - - libglib >=2.86.2,<3.0a0 + - libglib >=2.86.3,<3.0a0 - librsvg >=2.60.0,<3.0a0 - libstdcxx >=14 - libwebp-base >=1.6.0,<2.0a0 @@ -11398,11 +13142,34 @@ packages: - pango >=1.56.4,<2.0a0 license: EPL-1.0 license_family: Other - size: 2417740 - timestamp: 1765099199559 -- conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-14.1.0-had0cc5b_0.conda - sha256: fad9d2f0f8de9e8cf5f2a3c7620b9dd325645262e81a96a6f9d906c9cd4fb3be - md5: 2b817259cccac25ca7190fe3a48d54d4 + size: 2426455 + timestamp: 1769427102743 +- conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-13.1.2-h42bfd48_0.conda + sha256: dae3d09e93c1221d63a2bc10fa2919504fd846891e1196b62b0a6f5953c8fe1c + md5: 18d8fd0b5eac07127635b37f1e72e1b0 + depends: + - __osx >=10.13 + - adwaita-icon-theme + - cairo >=1.18.4,<2.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.42.12,<3.0a0 + - gtk3 >=3.24.43,<4.0a0 + - gts >=0.7.6,<0.8.0a0 + - libcxx >=19 + - libexpat >=2.7.1,<3.0a0 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.84.3,<3.0a0 + - librsvg >=2.58.4,<3.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.4,<2.0a0 + license: EPL-1.0 + license_family: Other + size: 2287587 + timestamp: 1754732429816 +- conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-14.1.2-h44fc223_0.conda + sha256: dd6a5e3599a2e07c04f4d33e61ecd5c26738eee9e88b9faa1da0f8b062ac9ca3 + md5: 4c1c78d65d867d032c07303cf38117ba depends: - __osx >=10.13 - adwaita-icon-theme @@ -11414,18 +13181,41 @@ packages: - libcxx >=19 - 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 - librsvg >=2.60.0,<3.0a0 - libwebp-base >=1.6.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pango >=1.56.4,<2.0a0 license: EPL-1.0 license_family: Other - size: 2294073 - timestamp: 1765099724798 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.0-ha8f0fc4_0.conda - sha256: 4ef67325f2c0b404c2eca57cec53f8b483f3d273ea1bfc0f3bfbc3e9ecd3c846 - md5: 1463b9b703d3fc6eba63587c69611e91 + size: 2297868 + timestamp: 1769427939677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-13.1.2-hcd33d8b_0.conda + sha256: f25e1828d02ebd78214966f483cfca5ac6a7b18824369c748d8cda99c66ff588 + md5: 81ab85a5a8481667660c7ce6e84bd681 + depends: + - __osx >=11.0 + - adwaita-icon-theme + - cairo >=1.18.4,<2.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.42.12,<3.0a0 + - gtk3 >=3.24.43,<4.0a0 + - gts >=0.7.6,<0.8.0a0 + - libcxx >=19 + - libexpat >=2.7.1,<3.0a0 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.84.3,<3.0a0 + - librsvg >=2.58.4,<3.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.4,<2.0a0 + license: EPL-1.0 + license_family: Other + size: 2201370 + timestamp: 1754732518951 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.2-hec8c438_0.conda + sha256: 755c72d469330265f80a615912a3b522aef6f26cbc52763862b6a3c492fbf97c + md5: 1f3d859de3ca2bcaa845e92e87d73660 depends: - __osx >=11.0 - adwaita-icon-theme @@ -11437,25 +13227,45 @@ packages: - libcxx >=19 - 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 - librsvg >=2.60.0,<3.0a0 - libwebp-base >=1.6.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pango >=1.56.4,<2.0a0 license: EPL-1.0 license_family: Other - size: 2214133 - timestamp: 1765099666613 -- conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-14.1.0-h4c50273_0.conda - sha256: c14e28d2dc405c58dc2094d98961bc6c0aab591fb074d36f7c9fefbd420ebfd6 - md5: c347e0f1819e771361861afc57e2f418 + size: 2218284 + timestamp: 1769427599940 +- conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-13.1.2-ha5e8f4b_0.conda + sha256: aef252782fcfd8ebffdcc49c525702db33127535d13d7b00808bbc40919caaed + md5: a1599e42b950661f58f219f3fbe87fde + 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.1,<3.0a0 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.84.3,<3.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.4,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: EPL-1.0 + license_family: Other + size: 1208526 + timestamp: 1754732367050 +- 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 @@ -11464,59 +13274,59 @@ packages: - vc14_runtime >=14.44.35208 license: EPL-1.0 license_family: Other - size: 1218044 - timestamp: 1765099565970 -- conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.3.0-py312h1289d80_0.conda - sha256: 40522a733920e03853f7c625b2251ee9f2c62358de9785f2e7dbc69ee5f08744 - md5: 83ce8529c70d9f5a6aef1cd0819e1238 + size: 1223547 + timestamp: 1769427507016 +- conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.3.1-py312h8285ef7_1.conda + sha256: 819abdb56444baf06ff2f70ddaa552ca9a636a910579089c28506046092285ee + md5: a2f6062a30e6bbae2a59b773b5daa605 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - python - libstdcxx >=14 - - python >=3.12,<3.13.0a0 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 239282 - timestamp: 1764863742698 -- conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.3.0-py312h69bf00f_0.conda - sha256: 014af326635c54d681a9f6f4a0b4ef5c2d22df9270090d4915ebe891840f414b - md5: 9d9104f945e9ab8fc747bc0bbf96a77f + size: 249389 + timestamp: 1770077497186 +- conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.3.1-py312h29de90a_1.conda + sha256: 5588217529161744f5570c5a4e5f507c90ef848b76ec2d13fab923b382ed8656 + md5: 6c4ccf468d8a79dff256dcf4588f3509 depends: - - __osx >=10.13 + - python - libcxx >=19 - - python >=3.12,<3.13.0a0 + - __osx >=10.13 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 233550 - timestamp: 1764864006675 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.3.0-py312h455b684_0.conda - sha256: f2810adaa7a12902c53e8c46598be97074178edcb2e4c15de89a2fa182f62319 - md5: 05c6af3d27e8e073787c281b7761422d + size: 243914 + timestamp: 1770077627013 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.3.1-py312h6510ced_1.conda + sha256: c726207ad966eccc92d8e1685a14f4488d53d133f17743fce8ae6489a7800451 + md5: 08facef1f9416ca7ff7e4e19ef820fd2 depends: + - python - __osx >=11.0 + - python 3.12.* *_cpython - libcxx >=19 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 233656 - timestamp: 1764863941582 -- conda: https://conda.anaconda.org/conda-forge/win-64/greenlet-3.3.0-py312hbb81ca0_0.conda - sha256: 0b4761f1fb0f2ec9ed387b9145950df7992c4b3e42b0c43736cbcb257697c79c - md5: f6f9f8c5215974bf161765f29f08c840 + size: 245797 + timestamp: 1770077667591 +- conda: https://conda.anaconda.org/conda-forge/win-64/greenlet-3.3.1-py312ha1a9051_1.conda + sha256: dbabd8511840dc2691050c3bf54c18bf416973034101188a1e7abbdcb666ad64 + md5: 164f992798caafd640dc660f68d33ba7 depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 + - python - 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: 223521 - timestamp: 1764864061900 + size: 231041 + timestamp: 1770077512114 - conda: https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.73.1-py312h6f3464c_1.conda sha256: 9b6ef222599d63ca23a9e292c35f454756e321cce52af9f5142303230f0c2762 md5: dca50c100d8d67882ada32756810372f @@ -11576,6 +13386,24 @@ packages: license_family: APACHE size: 708691 timestamp: 1761054048135 +- conda: https://conda.anaconda.org/conda-forge/win-64/grpcio-1.78.0-py312h5881051_1.conda + sha256: 253790d7a9d383f63acb351535ef60bb4bca520b638fb8e46716fcd0d5dd34e2 + md5: 2077ba1361f926ca3ecefb8531d72b8f + depends: + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libgrpc 1.78.0 h9ff2b3e_1 + - libzlib >=1.3.1,<2.0a0 + - 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: 715033 + timestamp: 1770253995043 - conda: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.73.1-pyhd8ed1ab_0.conda sha256: 040fbfe95f62f633869fad6e2069a4b12af3b2236cae1d28c79648a00e93af7f md5: 5a2944f868149ad5a2e6588be8eed838 @@ -11588,9 +13416,21 @@ packages: license_family: APACHE size: 18918 timestamp: 1751787690403 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h993cebd_6.conda - sha256: 004688fbb2c479b200a6d85ef38c3129fcd4ce13537b7ee2371d962b372761c1 - md5: f9f33c65b20e6a61f21714785e3613ec +- 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 depends: - __glibc >=2.17,<3.0.a0 - at-spi2-atk >=2.38.0,<3.0a0 @@ -11599,81 +13439,173 @@ packages: - epoxy >=1.5.10,<1.6.0a0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - fribidi >=1.0.16,<2.0a0 - - gdk-pixbuf >=2.44.4,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 - glib-tools - - harfbuzz >=11.5.1 + - harfbuzz >=11.0.0,<12.0a0 - hicolor-icon-theme - libcups >=2.3.3,<2.4.0a0 - libcups >=2.3.3,<3.0a0 - - libexpat >=2.7.1,<3.0a0 - - libgcc >=14 - - libglib >=2.86.0,<3.0a0 - - liblzma >=5.8.1,<6.0a0 - - libxkbcommon >=1.12.2,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.84.0,<3.0a0 + - liblzma >=5.6.4,<6.0a0 + - libxkbcommon >=1.8.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - pango >=1.56.4,<2.0a0 - - wayland >=1.24.0,<2.0a0 + - pango >=1.56.3,<2.0a0 + - wayland >=1.23.1,<2.0a0 - xorg-libx11 >=1.8.12,<2.0a0 - 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-libxfixes >=6.0.2,<7.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 - xorg-libxi >=1.8.2,<2.0a0 - xorg-libxinerama >=1.1.5,<1.2.0a0 - xorg-libxrandr >=1.5.4,<2.0a0 - xorg-libxrender >=0.9.12,<0.10.0a0 license: LGPL-2.0-or-later license_family: LGPL - size: 5587108 - timestamp: 1761327349586 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h5e629aa_6.conda - sha256: 5911ee39ababbd29794f958b129fd0254eb106ea4b4f750a03306c251bb20bae - md5: dbd0346e44fcbda7fe4f6eaf42597ef9 + size: 5585389 + timestamp: 1743405684985 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-ha5ea40c_7.conda + sha256: 67f187287d400d74e6cfe3daa676b1ca8a81973d1a50364c3a663d9f1e6ec8b4 + md5: f605332e1e4d9ff5c599933ae81db57d depends: - - __osx >=10.13 + - __glibc >=2.17,<3.0.a0 + - at-spi2-atk >=2.38.0,<3.0a0 - atk-1.0 >=2.38.0 - cairo >=1.18.4,<2.0a0 - epoxy >=1.5.10,<1.6.0a0 + - fontconfig >=2.17.1,<3.0a0 + - fonts-conda-ecosystem - fribidi >=1.0.16,<2.0a0 - - gdk-pixbuf >=2.44.4,<3.0a0 + - gdk-pixbuf >=2.44.5,<3.0a0 - glib-tools - - harfbuzz >=11.5.1 + - harfbuzz >=12.3.2 - hicolor-icon-theme - - libexpat >=2.7.1,<3.0a0 - - libglib >=2.86.0,<3.0a0 - - libintl >=0.25.1,<1.0a0 - - liblzma >=5.8.1,<6.0a0 + - libcups >=2.3.3,<2.4.0a0 + - libcups >=2.3.3,<3.0a0 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libgcc >=14 + - libglib >=2.86.4,<3.0a0 + - liblzma >=5.8.2,<6.0a0 + - libxkbcommon >=1.13.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pango >=1.56.4,<2.0a0 + - wayland >=1.24.0,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 + - xorg-libxcomposite >=0.4.7,<1.0a0 + - xorg-libxcursor >=1.2.3,<2.0a0 + - xorg-libxdamage >=1.1.6,<2.0a0 + - xorg-libxext >=1.3.7,<2.0a0 + - xorg-libxfixes >=6.0.2,<7.0a0 + - xorg-libxi >=1.8.2,<2.0a0 + - xorg-libxinerama >=1.1.6,<1.2.0a0 + - xorg-libxrandr >=1.5.5,<2.0a0 + - xorg-libxrender >=0.9.12,<0.10.0a0 + license: LGPL-2.0-or-later + license_family: LGPL + size: 5571424 + timestamp: 1771540136457 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda + sha256: 4f1be786342408492578dc696165ed3515bb1c4887c30e0909e50d0f8245fb38 + md5: 38eeb48f9466e5763567d1be1b7ff444 + depends: + - __osx >=10.13 + - atk-1.0 >=2.38.0 + - cairo >=1.18.4,<2.0a0 + - epoxy >=1.5.10,<1.6.0a0 + - fribidi >=1.0.10,<2.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - glib-tools + - harfbuzz >=11.0.0,<12.0a0 + - hicolor-icon-theme + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.84.0,<3.0a0 + - libintl >=0.23.1,<1.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.3,<2.0a0 license: LGPL-2.0-or-later license_family: LGPL - size: 4922163 - timestamp: 1761327865236 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h5febe37_6.conda - sha256: bd66a3325bf3ce63ada3bf12eaafcfe036698741ee4bb595e83e5fdd3dba9f3d - md5: a99f96906158ebae5e3c0904bcd45145 + size: 4916900 + timestamp: 1743405835449 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-hf2d442a_7.conda + sha256: cbeb0d817d6bac62fbc86ecdd1f75798a01c2c160aea8d2dcb4f34a45aa34cb2 + md5: 2e6fa8fa583dfabc32f656100618973d depends: - __osx >=11.0 - atk-1.0 >=2.38.0 - cairo >=1.18.4,<2.0a0 - epoxy >=1.5.10,<1.6.0a0 - fribidi >=1.0.16,<2.0a0 - - gdk-pixbuf >=2.44.4,<3.0a0 + - gdk-pixbuf >=2.44.5,<3.0a0 - glib-tools - - harfbuzz >=11.5.1 + - harfbuzz >=12.3.2 - hicolor-icon-theme - - libexpat >=2.7.1,<3.0a0 - - libglib >=2.86.0,<3.0a0 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libglib >=2.86.4,<3.0a0 - libintl >=0.25.1,<1.0a0 - - liblzma >=5.8.1,<6.0a0 + - liblzma >=5.8.2,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.4,<2.0a0 + license: LGPL-2.0-or-later + license_family: LGPL + size: 4929665 + timestamp: 1771540880055 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda + sha256: 9650ac1a02975ae0a3917443dc3c35ddc4d8e87a1cb04fda115af5f98e5d457c + md5: 8353369d4c2ecc5afd888405d3226fd9 + depends: + - __osx >=11.0 + - atk-1.0 >=2.38.0 + - cairo >=1.18.4,<2.0a0 + - epoxy >=1.5.10,<1.6.0a0 + - fribidi >=1.0.10,<2.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - glib-tools + - harfbuzz >=11.0.0,<12.0a0 + - hicolor-icon-theme + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.84.0,<3.0a0 + - libintl >=0.23.1,<1.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.3,<2.0a0 + license: LGPL-2.0-or-later + license_family: LGPL + size: 4792338 + timestamp: 1743406461562 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-hc0f3e19_7.conda + sha256: c1ebcaafb18dec22b76812dc241bb93a10e293878db4f340402db91b7088bf40 + md5: 0b8504fee77edf51a420a8d6b8aeb3d5 + depends: + - __osx >=11.0 + - atk-1.0 >=2.38.0 + - cairo >=1.18.4,<2.0a0 + - epoxy >=1.5.10,<1.6.0a0 + - fribidi >=1.0.16,<2.0a0 + - gdk-pixbuf >=2.44.5,<3.0a0 + - glib-tools + - harfbuzz >=12.3.2 + - hicolor-icon-theme + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libglib >=2.86.4,<3.0a0 + - libintl >=0.25.1,<1.0a0 + - liblzma >=5.8.2,<6.0a0 - libzlib >=1.3.1,<2.0a0 - pango >=1.56.4,<2.0a0 license: LGPL-2.0-or-later license_family: LGPL - size: 4768791 - timestamp: 1761328318680 + size: 8962974 + timestamp: 1771539846304 - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda sha256: b5cd16262fefb836f69dc26d879b6508d29f8a5c5948a966c47fe99e2e19c99b md5: 4d8df0b0db060d33c9a702ada998a8fe @@ -11717,52 +13649,53 @@ packages: license_family: LGPL size: 188688 timestamp: 1686545648050 -- conda: https://conda.anaconda.org/gurobi/linux-64/gurobi-13.0.0-py312_0.conda - sha256: 05786a9201a205217413cb4931c7a4fec1d2910c1276abb604d6bbabfd9fbbf4 - md5: ef0ccf2535c1ad7699b19ec5831b7c4e +- conda: https://conda.anaconda.org/gurobi/linux-64/gurobi-13.0.1-py312_0.conda + sha256: d8a3564018ea7e34b76548d0259d8933bd808eb1e5eabedf1a0e4ca85f940f8a + md5: a1841f5378cf8df084e4807c6f724b2e depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: PROPRIETARY - size: 47869815 - timestamp: 1762321505617 -- conda: https://conda.anaconda.org/gurobi/osx-64/gurobi-13.0.0-py312_0.conda - sha256: 09f95e36fd3ebbb2232ca4dc08807ae88025ca37c3e88047565125ba607a7dbf - md5: 1685723870a342300f4d9ee1d55e7de6 + size: 47997079 + timestamp: 1768425596261 +- conda: https://conda.anaconda.org/gurobi/osx-64/gurobi-13.0.1-py312_0.conda + sha256: 7d6f976acdd9f218ead1d21ace6df670489253882ba16df8ea4e05d2d985a89b + md5: 87623ec0e5a5b15e08bd2b794d444298 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: PROPRIETARY - size: 48219649 - timestamp: 1762316049347 -- conda: https://conda.anaconda.org/gurobi/osx-arm64/gurobi-13.0.0-py312_0.conda - sha256: 678b518975f04a2c21477ec6cde2807ef2ffc7683812433598e828a6b318d58a - md5: 55126f693602482dc8a8677fe9bfc68f + size: 48458216 + timestamp: 1768419400920 +- conda: https://conda.anaconda.org/gurobi/osx-arm64/gurobi-13.0.1-py312_0.conda + sha256: 4ed4a68115c1313a7c6664345a523799184e5bbbba5ccee3f031c2f88c964944 + md5: 537aec789300ac8c576a975a9331b9ea depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: PROPRIETARY - size: 43989380 - timestamp: 1762319283613 -- conda: https://conda.anaconda.org/gurobi/win-64/gurobi-13.0.0-py312_0.conda - sha256: da51db4daa9bd0f8b008d41e5c9a6163240ee32222b037367501f60c2302a0ce - md5: 4b28ca56726d68ced86307620d1860e3 + size: 44107173 + timestamp: 1768422626403 +- conda: https://conda.anaconda.org/gurobi/win-64/gurobi-13.0.1-py312_0.conda + sha256: 3b34c25291e507ee7371a468cca139f8fe0cbc45ebc32b64a78dc7495b8490ab + md5: a464a5f0be05649bdbf06ff78793f1dc depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: PROPRIETARY - size: 43763677 - timestamp: 1762312138757 -- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - sha256: f64b68148c478c3bfc8f8d519541de7d2616bf59d44485a5271041d40c061887 - md5: 4b69232755285701bc86a5afe4d9933a + size: 43892573 + timestamp: 1768419318447 +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.conda + sha256: 96cac6573fd35ae151f4d6979bab6fbc90cb6b1fb99054ba19eb075da9822fcb + md5: b8993c19b0c32a2f7b66cbb58ca27069 depends: - - python >=3.9 + - python >=3.10 - typing_extensions + - python license: MIT license_family: MIT - size: 37697 - timestamp: 1745526482242 + size: 39069 + timestamp: 1767729720872 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda sha256: 84c64443368f84b600bfecc529a1194a3b14c3656ee2e832d15a20e0329b6da3 md5: 164fc43f0b53b6e3a7bc7dce5e4f1dc9 @@ -11775,17 +13708,18 @@ packages: license_family: MIT size: 95967 timestamp: 1756364871835 -- conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.7.3-pyhd8ed1ab_0.conda - sha256: a7f9999242156b981eaffabc38eb3baf66c51af2ea89749df83b089f48e42c6e - md5: 4ce3dfa4440b4aa5364f4a6fcc3d7cb3 +- conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda + sha256: 5bf081c0f21a57fc84b5000d53f043d63638b77dcc2137f87511a4581838c9f6 + md5: ca7f9ba8762d3e360e47917a10e23760 depends: - h5py + - numpy - packaging - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 52353 - timestamp: 1761062104664 + size: 57732 + timestamp: 1769241877548 - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.15.1-nompi_py312ha4f8f14_101.conda sha256: bb5cefbe5b54195a54f749189fc6797568d52e8790b2f542143c681b98a92b71 md5: 23965cb240cb534649dfe2327ecec4fa @@ -11846,28 +13780,47 @@ packages: license_family: BSD size: 1050907 timestamp: 1764016810256 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.2.0-h15599e2_0.conda - sha256: 6bd8b22beb7d40562b2889dc68232c589ff0d11a5ad3addd41a8570d11f039d9 - md5: b8690f53007e9b5ee2c2178dd4ac778c +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.4.5-h15599e2_0.conda + sha256: 9d0d74858e8f8b76f6d3bf11a7390e6eb18eb743dd6e5fd7c4e9822634556f6d + md5: 1276ae4aa3832a449fcb4253c30da4bc depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 - graphite2 >=1.3.14,<2.0a0 - icu >=75.1,<76.0a0 - libexpat >=2.7.1,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libgcc >=14 + - libglib >=2.84.3,<3.0a0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 2402438 + timestamp: 1756738217200 +- 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.2,<79.0a0 + - libexpat >=2.7.3,<3.0a0 - libfreetype >=2.14.1 - libfreetype6 >=2.14.1 - libgcc >=14 - - libglib >=2.86.1,<3.0a0 + - libglib >=2.86.3,<3.0a0 - libstdcxx >=14 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT - size: 2411408 - timestamp: 1762372726141 -- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-12.2.0-hc5d3ef4_0.conda - sha256: 352c0fe4445599c3081a41e16b91d66041f9115b9490b7f3daea63897f593385 - md5: 05a72f9d35dddd5bf534d7da4929297c + size: 2035859 + timestamp: 1769445400168 +- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.4.5-h0ffbb26_0.conda + sha256: 2b5e8af8a457af825360b0aef0b9641a675ea9b0e0945d1e469d8a0f3e1ddc06 + md5: 6dfe87116a746f3c2e93eec0df8386ec depends: - __osx >=10.13 - cairo >=1.18.4,<2.0a0 @@ -11875,17 +13828,35 @@ packages: - icu >=75.1,<76.0a0 - libcxx >=19 - libexpat >=2.7.1,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libglib >=2.84.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 1593280 + timestamp: 1756738433915 +- 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.2,<79.0a0 + - libcxx >=19 + - 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 license: MIT license_family: MIT - size: 1875555 - timestamp: 1762373120771 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-12.2.0-haf38c7b_0.conda - sha256: 2f8d95fe1cb655fe3bac114062963f08cc77b31b042027ef7a04ebde3ce21594 - md5: 1c7ff9d458dd8220ac2ee71dd4af1be5 + size: 1552174 + timestamp: 1769445918360 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.4.5-hf4e55d4_0.conda + sha256: 8106c2941f842dad81444bbc7f68b08b65c63adb5d0ba399d7180926a51f8829 + md5: 0938e21caccd8fd5b30527396f8aaa82 depends: - __osx >=11.0 - cairo >=1.18.4,<2.0a0 @@ -11893,33 +13864,70 @@ packages: - icu >=75.1,<76.0a0 - libcxx >=19 - libexpat >=2.7.1,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libglib >=2.84.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 1551301 + timestamp: 1756738697245 +- 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.2,<79.0a0 + - libcxx >=19 + - 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 license: MIT license_family: MIT - size: 1537764 - timestamp: 1762373922469 -- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-12.2.0-h5f2951f_0.conda - sha256: db73714c7f7e0c47b3b9db9302a83f2deb6f8d6081716d35710ef3c6756af6c3 - md5: e798ef748fc564e42f381d3d276850f0 + size: 1441619 + timestamp: 1769446246348 +- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.4.5-h5f2951f_0.conda + sha256: e1aaf8cf922cb7c7dabc12ddcad16c218b926c5e43d845288a4a8a0910df1b18 + md5: e9f9b4c46f6bc9b51adf57909b4d4652 depends: - cairo >=1.18.4,<2.0a0 - graphite2 >=1.3.14,<2.0a0 - icu >=75.1,<76.0a0 - libexpat >=2.7.1,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libglib >=2.84.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: 1134542 + timestamp: 1756738659278 +- 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 >=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 @@ -11967,108 +13975,145 @@ packages: license_family: BSD size: 779637 timestamp: 1695662145568 -- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h1b119a7_104.conda - sha256: 454e9724b322cee277abd7acf4f8d688e9c4ded006b6d5bc9fcc2a1ff907d27a - md5: 0857f4d157820dcd5625f61fdfefb780 +- 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 - - libcurl >=8.17.0,<9.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: 3720961 - timestamp: 1764771748126 -- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_hc1508a4_104.conda - sha256: aed322f0e8936960332305fbc213831a3cd301db5ea22c06e1293d953ddec563 - md5: 9425a5c53febdf71696aed291586d038 + 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 - - libcurl >=8.17.0,<9.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: 3528765 - timestamp: 1764773824647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_hd3baa01_104.conda - sha256: 3cd591334a838b127dfe8a626f38241892063eac8873abb93255962c71155533 - md5: 5a1cbaf2349dd2e6dd6cfaab378de51b + 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 - - libcurl >=8.17.0,<9.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: 3292042 - timestamp: 1764771887501 -- conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_h89f0904_104.conda - sha256: cc948149f700033ff85ce4a1854edf6adcb5881391a3df5c40cbe2a793dd9f81 - md5: 9cc4a5567d46c7fcde99563e86522882 + 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 - - libcurl >=8.17.0,<9.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: 2028777 - timestamp: 1764771527382 -- conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - sha256: 336f29ceea9594f15cc8ec4c45fdc29e10796573c697ee0d57ebb7edd7e92043 - md5: bbf6f174dcd3254e19a2f5d2295ce808 + 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.7-pyh332efcf_0.conda + sha256: 55476ac71e5408fe72927aedc15bf7a623b7da3539607b2423baf084fae784b5 + md5: 3eba7431181ef7d221ba7778a0521bc2 + 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: 57748 + timestamp: 1771525998318 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda + sha256: 6d7e6e1286cb521059fe69696705100a03b006efb914ffe82a2ae97ecbae66b7 + md5: 129e404c5b001f3ef5581316971e3ea0 license: GPL-2.0-or-later license_family: GPL - size: 13841 - timestamp: 1605162808667 -- conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - sha256: a5cb0c03d731bfb09b4262a3afdeae33bef98bc73972f1bd6b7e3fcd240bea41 - md5: f64218f19d9a441e80343cea13be1afb + size: 17625 + timestamp: 1771539597968 +- conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_3.conda + sha256: 3321e8d2c2198ac796b0ae800473173ade528b49f84b6c6e4e112a9704698b41 + md5: 690e5077aaccf8d280a4284d7c9ec6b4 license: GPL-2.0-or-later license_family: GPL - size: 13821 - timestamp: 1605162984889 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - sha256: 286e33fb452f61133a3a61d002890235d1d1378554218ab063d6870416440281 - md5: 237b05b7eb284d7eebc3c5d93f5e4bca + size: 17650 + timestamp: 1771539977217 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_3.conda + sha256: 46a4958f2f916c5938f2a6dc0709f78b175ece42f601d79a04e0276d55d25d07 + md5: cfb39109ac5fa8601eb595d66d5bf156 license: GPL-2.0-or-later 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 + size: 17616 + timestamp: 1771539622983 +- 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/osx-64/highspy-1.12.0-np2py312h855832a_0.conda - sha256: 79dd0a490ac90821809ad1c923a99ac3b77597e6bc5d1b85c3be2a61ff69c4a5 - md5: 6680ff3c2fb8f30cd31f57c4a0c16338 + size: 2337815 + timestamp: 1770878930913 +- conda: https://conda.anaconda.org/conda-forge/osx-64/highspy-1.13.1-np2py312h834d234_0.conda + sha256: 46d51f26cb5c514e90f69cb96a63372d0f6ad2bfca135a0e99e245b6932e3b6a + md5: fda6cbb4da06b8770f170f9d9fdf5ac9 depends: - python - numpy @@ -12077,11 +14122,11 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2105053 - timestamp: 1761555279223 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.12.0-np2py312h5a6ab93_0.conda - sha256: f170b69bfca8f17fda140424390023342bad2711cce5ba4454ba8b7730ed1080 - md5: 1776611c8a9375154d061a82306d4fa3 + size: 2137005 + timestamp: 1770879152894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.13.1-np2py312h60fbb24_0.conda + sha256: 6592bb6565a79a68c0086c0aedbcb16bfccee1bc5b7f225fdd34973c6cf881ed + md5: b2bb098c9b70b70f1962258d149c132b depends: - python - numpy @@ -12091,25 +14136,22 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 1781733 - timestamp: 1761555209619 -- conda: https://conda.anaconda.org/conda-forge/win-64/highspy-1.12.0-np2py312ha76dc74_0.conda - sha256: 007b038b1606a8f70e17d992d08ea35f136065b37bb0a8a9c84bd1eb8419c5bb - md5: e5dd31058a613880438cdc7d379efbad + size: 1799622 + timestamp: 1770879123701 +- 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 + size: 2475313 + timestamp: 1770878946542 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba md5: 0a802cb9888dd14eeefc611f05c40b6e @@ -12119,6 +14161,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 @@ -12216,6 +14269,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 @@ -12246,6 +14308,17 @@ packages: license_family: MIT size: 12129203 timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.2-h33c6efd_0.conda + sha256: 142a722072fa96cf16ff98eaaf641f54ab84744af81754c292cb81e0881c0329 + md5: 186a18e3ba246eccfc7cff00cd19a870 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + size: 12728445 + timestamp: 1767969922681 - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7 md5: d68d48a3060eb5abdc1cdc8e2a3a5966 @@ -12255,6 +14328,15 @@ packages: license_family: MIT size: 11761697 timestamp: 1720853679409 +- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.2-h14c5de8_0.conda + sha256: f3066beae7fe3002f09c8a412cdf1819f49a2c9a485f720ec11664330cf9f1fe + md5: 30334add4de016489b731c6662511684 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 12263724 + timestamp: 1767970604977 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 md5: 5eb22c1d7b3fc4abb50d92d621583137 @@ -12264,6 +14346,15 @@ packages: license_family: MIT size: 11857802 timestamp: 1720853997952 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.2-h38cb7af_0.conda + sha256: d4cefbca587429d1192509edc52c88de52bc96c2447771ddc1f8bee928aed5ef + md5: 1e93aca311da0210e660d2247812fa02 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 12358010 + timestamp: 1767970350308 - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda sha256: 1d04369a1860a1e9e371b9fc82dd0092b616adcf057d6c88371856669280e920 md5: 8579b6bb8d18be7c0b27fb08adeeeb40 @@ -12275,16 +14366,27 @@ packages: license_family: MIT size: 14544252 timestamp: 1720853966338 -- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.15-pyhd8ed1ab_0.conda - sha256: 32d5007d12e5731867908cbf5345f5cd44a6c8755a2e8e63e15a184826a51f82 - md5: 25f954b7dae6dd7b0dc004dab74f1ce9 +- 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 depends: - python >=3.10 - ukkonen license: MIT license_family: MIT - size: 79151 - timestamp: 1759437561529 + size: 79302 + timestamp: 1768295306539 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda sha256: ae89d0299ada2a3162c2614a9d26557a92aa6a77120ce142f8e0109bbf0342b0 md5: 53abe63df7e10a6ba605dc5f9f961d36 @@ -12294,6 +14396,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 @@ -12303,6 +14414,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-py312h4c3975b_2.conda sha256: 33f87bd1b9a48c208919641a878541c13316afa1cfabea97c534227d52904a0b md5: 4cf92a9dd8712cdde044fb56be498bd4 @@ -12417,127 +14543,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.8.0-pyh53cf698_0.conda - sha256: 8a72c9945dc4726ee639a9652b622ae6b03f3eba0e16a21d1c6e5bfb562f5a3f - md5: fd77b1039118a3e8ce1070ac8ed45bae + 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 @@ -12554,11 +14678,11 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 645145 - timestamp: 1764766793792 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.8.0-pyhe2676ad_0.conda - sha256: 7c6974866caaccb7eb827bb70523205601c10b8e89d724b193cb4e818f4db2bd - md5: 1bc380b3fd0ea85afdfe0aba5b6b7398 + 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 @@ -12575,8 +14699,17 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 644388 - timestamp: 1764766840112 + size: 646337 + timestamp: 1770040952821 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda + sha256: 45821a8986b4cb2421f766b240dbe6998a3c3123f012dd566720c1322e9b6e18 + md5: 2f0ba4bc12af346bc6c99bdc377e8944 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 28153 + timestamp: 1733399692864 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda sha256: 894682a42a7d659ae12878dbcb274516a7031bbea9104e92f8e88c1f2765a104 md5: bd80ba060603cc228d9d81c257093119 @@ -12587,20 +14720,30 @@ packages: license_family: BSD size: 13993 timestamp: 1737123723464 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.8-pyhd8ed1ab_0.conda - sha256: 6bb58afb7eabc8b4ac0c7e92707fb498313cc0164cf04e7ba1090dbf49af514b - md5: d68e3f70d1f068f1b66d94822fdc644e +- conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda + sha256: 8cc67e44137bb779c76d92952fdc4d8cd475605f4f0d13e8d0f04f25c056939b + md5: 47672c493015ab57d5fcde9531ab18ef depends: - comm >=0.1.3 - - ipython >=6.1.0 - - jupyterlab_widgets >=3.0.15,<3.1.0 - - python >=3.10 + - ipython >=4.0.0 + - ipython_genutils >=0.2.0,<0.3.0 + - jupyterlab_widgets >=1.0.0,<3 + - python >=3.3 - traitlets >=4.3.1 - - widgetsnbextension >=4.0.14,<4.1.0 + - widgetsnbextension >=3.6.10,<3.7.0 + license: BSD-3-Clause + 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: 114376 - timestamp: 1762040524661 + size: 23778 + timestamp: 1733230826126 - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed md5: 0b0154421989637d424ccf0f104be51a @@ -12621,6 +14764,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/noarch/ixmp4-0.14.0-pyhd8ed1ab_0.conda sha256: c9de1480cce63ec42d22cc7e49af147f7afe213d3c6edd004058b20ae6fb22e6 md5: c53bb21bff6f3996d2da06ea7cc93a7b @@ -12711,15 +14863,16 @@ packages: license_family: BSD size: 120685 timestamp: 1764517220861 -- conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda - sha256: 3d2f20ee7fd731e3ff55c189db9c43231bc8bde957875817a609c227bcb295c6 - md5: 972bdca8f30147135f951847b30399ea +- conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda + sha256: 904d43d5210584004cf8b38f9657c717661ae55b0fb3f60573be974e50653fa1 + md5: cc73a9bd315659dc5307a5270f44786f depends: - - python >=3.9 + - python >=3.10 + - python license: MIT license_family: MIT - size: 23708 - timestamp: 1733229244590 + size: 25946 + timestamp: 1769161799923 - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda sha256: 301539229d7be6420c084490b8145583291123f0ce6b92f56be5948a2c83a379 md5: 615de2a4d97af50c350e5cf160149e77 @@ -12727,6 +14880,7 @@ packages: - python >=3.10 - setuptools license: BSD-3-Clause + license_family: BSD size: 226448 timestamp: 1765794135253 - conda: https://conda.anaconda.org/conda-forge/linux-64/jpype1-1.6.0-py312hd9148b4_1.conda @@ -12812,15 +14966,26 @@ packages: license_family: MIT size: 73715 timestamp: 1726487214495 -- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e08ccf9fa1103b617a4167a270768de736a36be795c6cd34c2761100d332f74 - md5: 0fc93f473c31a2f85c0bde213e7c63ca +- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda + sha256: ba03ca5a6db38d9f48bd30172e8c512dea7a686a5c7701c6fcdb7b3023dae2ad + md5: 8d5f66ebf832c4ce28d5c37a0e76605c depends: - - python >=3.9 + - python >=3.10 license: Apache-2.0 license_family: APACHE - size: 34191 - timestamp: 1755034963991 + 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 @@ -12831,20 +14996,20 @@ packages: license_family: BSD size: 13967 timestamp: 1765026384757 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.1-pyhe01879c_0.conda - sha256: ac377ef7762e49cb9c4f985f1281eeff471e9adc3402526eea78e6ac6589cf1d - md5: 341fd940c242cf33e832c0402face56f +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda + sha256: db973a37d75db8e19b5f44bbbdaead0c68dde745407f281e2a7fe4db74ec51d7 + md5: ada41c863af263cc4c5fcbaff7c3e4dc depends: - attrs >=22.2.0 - jsonschema-specifications >=2023.3.6 - - python >=3.9 + - python >=3.10 - referencing >=0.28.4 - - rpds-py >=0.7.1 + - rpds-py >=0.25.0 - python license: MIT license_family: MIT - size: 81688 - timestamp: 1755595646123 + size: 82356 + timestamp: 1767839954256 - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda sha256: 0a4f3b132f0faca10c89fdf3b60e15abb62ded6fa80aebfc007d05965192aa04 md5: 439cd0f567d697b20a8f45cb70a1005a @@ -12856,11 +15021,11 @@ packages: license_family: MIT size: 19236 timestamp: 1757335715225 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.1-he01879c_0.conda - sha256: aef6705fe1335e6472e1b6365fcdb586356b18dceff72d8d6a315fc90e900ccf - md5: 13e31c573c884962318a738405ca3487 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda + sha256: 6886fc61e4e4edd38fd38729976b134e8bd2143f7fce56cc80d7ac7bac99bce1 + md5: 8368d58342d0825f0843dc6acdd0c483 depends: - - jsonschema >=4.25.1,<4.25.2.0a0 + - jsonschema >=4.26.0,<4.26.1.0a0 - fqdn - idna - isoduration @@ -12872,8 +15037,8 @@ packages: - webcolors >=24.6.0 license: MIT license_family: MIT - size: 4744 - timestamp: 1755595646123 + size: 4740 + timestamp: 1767839954258 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda sha256: b538e15067d05768d1c0532a6d9b0625922a1cce751dd6a2af04f7233a1a70e9 md5: 9453512288d20847de4356327d0e1282 @@ -12901,9 +15066,9 @@ packages: license_family: BSD size: 60377 timestamp: 1756388269267 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.7.0-pyhcf101f3_0.conda - sha256: 6aa61417547b925de64905b7a4da7c98e0b355f48a7b21bdbef438f8950ee74e - md5: 1b0397a7b1fbffa031feb690b5fd0277 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda + sha256: e402bd119720862a33229624ec23645916a7d47f30e1711a4af9e005162b84f3 + md5: 8a3d6d0523f66cf004e563a50d9392b3 depends: - jupyter_core >=5.1 - python >=3.10 @@ -12914,8 +15079,8 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 111367 - timestamp: 1765375773813 + size: 112785 + timestamp: 1767954655912 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda sha256: aee0cdd0cb2b9321d28450aec4e0fd43566efcd79e862d70ce49a68bf0539bcd md5: 801dbf535ec26508fac6d4b24adfb76e @@ -12965,9 +15130,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 @@ -12981,8 +15146,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 @@ -13011,19 +15176,20 @@ packages: license_family: BSD size: 347094 timestamp: 1755870522134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - sha256: 0890fc79422191bc29edf17d7b42cff44ba254aa225d31eb30819f8772b775b8 - md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda + sha256: 5eda79ed9f53f590031d29346abd183051263227dd9ee667b5ca1133ce297654 + md5: 7b8bace4943e0dc345fc45938826f2b8 depends: - - python >=3.9 + - python >=3.10 - terminado >=0.8.3 + - python license: BSD-3-Clause license_family: BSD - size: 19711 - timestamp: 1733428049134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.1-pyhd8ed1ab_0.conda - sha256: ac31a517238173eb565ba9f517b1f9437fba48035f1276a9c1190c145657cafd - md5: f8e8f8db45e1a946ce9b20b0f60b3111 + size: 22052 + timestamp: 1768574057200 +- 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 @@ -13042,8 +15208,8 @@ packages: - traitlets license: BSD-3-Clause license_family: BSD - size: 8141875 - timestamp: 1765819955819 + size: 7911153 + timestamp: 1770773538140 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 md5: fd312693df06da3578383232528c468d @@ -13073,18 +15239,17 @@ packages: license_family: BSD size: 51621 timestamp: 1761145478692 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.16-pyhcf101f3_1.conda - sha256: 5c03de243d7ae6247f39a402f4785d95e61c3be79ef18738e8f17155585d31a8 - md5: dbf8b81974504fa51d34e436ca7ef389 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda + sha256: 639544e96969c7513b33bf3201a4dc3095625e34cff16c187f5dec9bee2dfb2f + md5: 05a08b368343304618b6a88425aa851a depends: - - python >=3.10 - - python + - python >=3.7 constrains: - jupyterlab >=3,<5 license: BSD-3-Clause license_family: BSD - size: 216779 - timestamp: 1762267481404 + size: 113654 + timestamp: 1729586559116 - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 md5: b38117a3c920364aff79f870c984b4a3 @@ -13175,6 +15340,19 @@ packages: license_family: MIT size: 1185323 timestamp: 1719463492984 +- 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 >=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: 1193620 + timestamp: 1769770267475 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b md5: c6dc8a0fdec13a0565936655c33069a1 @@ -13188,6 +15366,19 @@ packages: license_family: MIT size: 1155530 timestamp: 1719463474401 +- 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 >=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: 1160828 + timestamp: 1769770119811 - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda sha256: 18e8b3430d7d232dad132f574268f56b3eb1a19431d6d5de8c53c29e6c18fa81 md5: 31aec030344e962fbd7dbbbbd68e60a9 @@ -13219,75 +15410,65 @@ packages: license_family: MIT size: 18212 timestamp: 1592937373647 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda - sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 - md5: 000e85703f0fd9594c81710dd5066471 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda + sha256: 836ec4b895352110335b9fdcfa83a8dcdbe6c5fb7c06c4929130600caea91c0a + md5: 6f2e2c8f58160147c4d1c6f4c14cbac4 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 + - libgcc >=14 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 license: MIT license_family: MIT - size: 248046 - timestamp: 1739160907615 -- conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda - sha256: bcb81543e49ff23e18dea79ef322ab44b8189fb11141b1af99d058503233a5fc - md5: bf210d0c63f2afb9e414a858b79f0eaa + size: 249959 + timestamp: 1768184673131 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.18-h90db99b_0.conda + sha256: 3ec16c491425999a8461e1b7c98558060a4645a20cf4c9ac966103c724008cc2 + md5: 753acc10c7277f953f168890e5397c80 depends: - __osx >=10.13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 license: MIT license_family: MIT - size: 226001 - timestamp: 1739161050843 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda - sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f - md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + size: 226870 + timestamp: 1768184917403 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.18-hdfa7624_0.conda + sha256: d768da024ab74a4b30642401877fa914a68bdc238667f16b1ec2e0e98b2451a6 + md5: 6631a7bd2335bb9699b1dbc234b19784 depends: - __osx >=11.0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 license: MIT license_family: MIT - size: 212125 - timestamp: 1739161108467 -- conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.17-hbcf6048_0.conda - sha256: 7712eab5f1a35ca3ea6db48ead49e0d6ac7f96f8560da8023e61b3dbe4f3b25d - md5: 3538827f77b82a837fa681a4579e37a1 + size: 211756 + timestamp: 1768184994800 +- conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.18-hf2c6c5f_0.conda + sha256: 7eeb18c5c86db146b62da66d9e8b0e753a52987f9134a494309588bbeceddf28 + md5: b6c68d6b829b044cd17a41e0a8a23ca1 depends: - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libtiff >=4.7.1,<4.8.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: 510641 - timestamp: 1739161381270 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_104.conda - sha256: 9e191baf2426a19507f1d0a17be0fdb7aa155cdf0f61d5a09c808e0a69464312 - md5: a6abd2796fc332536735f68ba23f7901 + size: 522238 + timestamp: 1768184858107 +- 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: 725545 - timestamp: 1764007826689 -- 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 @@ -13439,51 +15620,83 @@ packages: license_family: Apache size: 1615210 timestamp: 1750194549591 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda - sha256: 410ab78fe89bc869d435de04c9ffa189598ac15bb0fe1ea8ace8fb1b860a2aa3 - md5: 01ba04e414e47f95c03d6ddd81fd37be +- 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 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - libgcc >=14 + - libstdcxx >=14 license: BSD-2-Clause license_family: BSD - size: 36825 - timestamp: 1749993532943 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.4-ha6bc127_0.conda - sha256: f4fe00ef0df58b670696c62f2ec3f6484431acbf366ecfbcb71141c81439e331 - md5: 1a768b826dfc68e07786788d98babfc3 + size: 36544 + timestamp: 1769221884824 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.5-he7c3a48_0.conda + sha256: b42ac9c684c730cb97cb3931a0a97aaf791da38bace4f6944eca10de609e5946 + md5: 975f98248cde8d54884c6d1eb5184e13 depends: - __osx >=10.13 - - libcxx >=18 + - libcxx >=19 license: BSD-2-Clause license_family: BSD - size: 30034 - timestamp: 1749993664561 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.4-h51d1e36_0.conda - sha256: 0ea6b73b3fb1511615d9648186a7409e73b7a8d9b3d890d39df797730e3d1dbb - md5: 8ed0f86b7a5529b98ec73b43a53ce800 + size: 30555 + timestamp: 1769222189944 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.5-h8664d51_0.conda + sha256: af9cd8db11eb719e38a3340c88bb4882cf19b5b4237d93845224489fc2a13b46 + md5: 13e6d9ae0efbc9d2e9a01a91f4372b41 depends: - __osx >=11.0 - - libcxx >=18 + - libcxx >=19 license: BSD-2-Clause license_family: BSD - size: 30173 - timestamp: 1749993648288 -- conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.4-h20038f6_0.conda - sha256: 0be89085effce9fdcbb6aea7acdb157b18793162f68266ee0a75acf615d4929b - md5: 85a2bed45827d77d5b308cb2b165404f + size: 30390 + timestamp: 1769222133373 +- conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.5-haf901d7_0.conda + sha256: e54c08964262c73671d9e80e400333e59c617e0b454476ad68933c0c458156c8 + md5: 43b6385cfad52a7083f2c41984eb4e91 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: 34463 + timestamp: 1769221960556 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.1-gpl_h98cc613_100.conda + sha256: 6f35e429909b0fa6a938f8ff79e1d7000e8f15fbb37f67be6f789348fea4c602 + md5: 9de6247361e1ee216b09cfb8b856e2ee + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc >=13 + - liblzma >=5.8.1,<6.0a0 + - libxml2 >=2.13.8,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - lzo >=2.10,<3.0a0 + - openssl >=3.5.0,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 license: BSD-2-Clause license_family: BSD - size: 33847 - timestamp: 1749993666162 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.2-gpl_h7be2006_100.conda - sha256: 3fb3baf9f6ac39a4720f91dbb6fdace0208fd76500d362e8d6ae985a8bd42451 - md5: 9d0eaa26e3c5d7af747b3ddee928327b + size: 883383 + timestamp: 1749385818314 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.5-gpl_hc2c16d8_100.conda + sha256: ee2cf1499a5a5fd5f03c6203597fe14bf28c6ca2a8fffb761e41f3cf371e768e + md5: 5fdaa8b856683a5598459dead3976578 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -13498,11 +15711,29 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: BSD-2-Clause license_family: BSD - size: 884698 - timestamp: 1760610562105 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.8.2-gpl_h889603c_100.conda - sha256: b3ebced2a683cf4c4f1529676f60a80d6dcea11bc50cee137aadfe09a75f551a - md5: 7520a1a2a186da7ade597f8fdf72a168 + size: 886102 + timestamp: 1767630453053 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.8.1-gpl_h9912a37_100.conda + sha256: 664e460f9f9eb59360bb1b467dbb3d652c5f76a07f2b0d297eaf7324ed3032fd + md5: fe514da5d15bfd92d70f3c163ad7119a + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libxml2 >=2.13.8,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - lzo >=2.10,<3.0a0 + - openssl >=3.5.0,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 756579 + timestamp: 1749385910756 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.8.5-gpl_h264331f_100.conda + sha256: 635b37726c865439b93f7887994eedde33f00ad4b715e286ba3634e39fbca690 + md5: bfb9152520db0958801b3c87846c942b depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 @@ -13517,11 +15748,29 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: BSD-2-Clause license_family: BSD - size: 760450 - timestamp: 1760611183190 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.8.2-gpl_h46575ef_100.conda - sha256: db847a255f9c61893f5ee364c194410fcdac57bf819bf1ed6e72c429c1aee055 - md5: 5ab60a0e4c99d6fa08605e0ea91e4fda + size: 759895 + timestamp: 1767630938323 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.8.1-gpl_h46e8061_100.conda + sha256: 7728d08880637622caaf03e6f8e92ee383715e145637a779d668e1ac677717f0 + md5: b8d09de5df5352f9e0eb7a27cc79a675 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libxml2 >=2.13.8,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - lzo >=2.10,<3.0a0 + - openssl >=3.5.0,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 788465 + timestamp: 1749385999215 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.8.5-gpl_h6fbacd7_100.conda + sha256: 7f19d9b16ec4383c3e307e5137d394defcc8e2ba1e036ec1c9bd47374f4213aa + md5: cea06a42883e807bcca32abdd122d1e7 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 @@ -13536,11 +15785,30 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: BSD-2-Clause license_family: BSD - size: 790591 - timestamp: 1760611525393 -- conda: https://conda.anaconda.org/conda-forge/win-64/libarchive-3.8.2-gpl_h26aea39_100.conda - sha256: 23b9bcba5e01fe756eb9aef875ba0237377401489b0238da871ba00ccaad6a95 - md5: ce09b133aaadd32f18a809260ac5c2c8 + size: 791357 + timestamp: 1767631176024 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarchive-3.8.1-gpl_h1ca5a36_100.conda + sha256: 7efe65c7ab7056f1a84d5f234584e60ba3cc55b487ba4065a29d23aacb4c5ef6 + md5: d8f4c086758bbf52b30750550cd38b1a + depends: + - bzip2 >=1.0.8,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libxml2 >=2.13.8,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - lzo >=2.10,<3.0a0 + - openssl >=3.5.0,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 1098688 + timestamp: 1749386269743 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarchive-3.8.5-gpl_he24518a_100.conda + sha256: f56df319078c67a46548c16f77cff0a4c60ab763fd98ffa64313a47a43c285e4 + md5: 8bb7102705dba973b3930c4b6094b257 depends: - bzip2 >=1.0.8,<2.0a0 - liblzma >=5.8.1,<6.0a0 @@ -13556,20 +15824,57 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: BSD-2-Clause license_family: BSD - size: 1107182 - timestamp: 1760611163870 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-22.0.0-hb6ed5f4_6_cpu.conda - build_number: 6 - sha256: bab5fcb86cf28a3de65127fbe61ed9194affc1cf2d9b60a9e09af8a8b96b93e3 - md5: fbaa3742ccca0f7096216c0832137b72 + size: 1106553 + timestamp: 1767630802450 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-21.0.0-h56a6dad_8_cpu.conda + build_number: 8 + sha256: 1fa9a6aea4c0d3dece59241ff1b92177624e68a89a84738df7fb1b7cad19319c + md5: 3dc4bd7a6243159d2a3291e259222ddc + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.34.4,<0.34.5.0a0 + - aws-sdk-cpp >=1.11.606,<1.11.607.0a0 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 + - azure-identity-cpp >=1.12.0,<1.12.1.0a0 + - azure-storage-blobs-cpp >=12.14.0,<12.14.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=14 + - libgoogle-cloud >=2.39.0,<2.40.0a0 + - libgoogle-cloud-storage >=2.39.0,<2.40.0a0 + - libopentelemetry-cpp >=1.21.0,<1.22.0a0 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.2.1,<2.2.2.0a0 + - snappy >=1.2.2,<1.3.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 6199233 + timestamp: 1759481842048 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.0-h40b5c2d_2_cpu.conda + build_number: 2 + sha256: 4c6f817c4008d09dc72a1fd91121fd97be670f76c5b3e61aef0f3f48667d60c7 + md5: 282f8460096fdc04d2c62ca2a30357a1 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-storage-blobs-cpp >=12.15.0,<12.15.1.0a0 - - azure-storage-files-datalake-cpp >=12.13.0,<12.13.1.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 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* @@ -13584,35 +15889,107 @@ packages: - libstdcxx >=14 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.2.1,<2.2.2.0a0 + - orc >=2.2.2,<2.2.3.0a0 - snappy >=1.2.2,<1.3.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + size: 6478168 + timestamp: 1770434744670 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-21.0.0-h3202d62_8_cpu.conda + build_number: 8 + sha256: f65944106f287042f24f1ea1099a2f1572231b588bab0317ea8a8fc5015c0a28 + md5: c0a631268e4ee440e3a83a5928de30f9 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.34.4,<0.34.5.0a0 + - aws-sdk-cpp >=1.11.606,<1.11.607.0a0 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 + - azure-identity-cpp >=1.12.0,<1.12.1.0a0 + - azure-storage-blobs-cpp >=12.14.0,<12.14.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=19 + - libgoogle-cloud >=2.39.0,<2.40.0a0 + - libgoogle-cloud-storage >=2.39.0,<2.40.0a0 + - libopentelemetry-cpp >=1.21.0,<1.22.0a0 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.2.1,<2.2.2.0a0 + - snappy >=1.2.2,<1.3.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 6324546 - timestamp: 1765381265473 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-22.0.0-h563529e_6_cpu.conda - build_number: 6 - sha256: a478600f0bfef3505b4ee1277bd8c9eee78551045879c5c1007e03f25b14d946 - md5: 9cdb6f5779fb935d84e7cdaa00d5c26d + size: 4170815 + timestamp: 1759483300750 +- 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-storage-blobs-cpp >=12.15.0,<12.15.1.0a0 - - azure-storage-files-datalake-cpp >=12.13.0,<12.13.1.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 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - libbrotlidec >=1.2.0,<1.3.0a0 - libbrotlienc >=1.2.0,<1.3.0a0 + - libcxx >=21 + - libgoogle-cloud >=2.39.0,<2.40.0a0 + - libgoogle-cloud-storage >=2.39.0,<2.40.0a0 + - libopentelemetry-cpp >=1.21.0,<1.22.0a0 + - libprotobuf >=6.31.1,<6.31.2.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 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + 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 + md5: 92d5cc7e1d494aeb82db5b2faa33b28c + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.34.4,<0.34.5.0a0 + - aws-sdk-cpp >=1.11.606,<1.11.607.0a0 + - azure-core-cpp >=1.16.0,<1.16.1.0a0 + - azure-identity-cpp >=1.12.0,<1.12.1.0a0 + - azure-storage-blobs-cpp >=12.14.0,<12.14.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 - libcxx >=19 - libgoogle-cloud >=2.39.0,<2.40.0a0 - libgoogle-cloud-storage >=2.39.0,<2.40.0a0 @@ -13628,345 +16005,663 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 4269871 - timestamp: 1765852154699 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-22.0.0-he6e817a_6_cpu.conda - build_number: 6 - sha256: 77d82f2d6787ec0300da0ad683d30eccc71723665c5dc4e7c6e4ca9b7955f599 - md5: b972d880c503c30ee178489ec76bbd6d + license_family: APACHE + size: 4070104 + timestamp: 1759481958097 +- 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-storage-blobs-cpp >=12.15.0,<12.15.1.0a0 - - azure-storage-files-datalake-cpp >=12.13.0,<12.13.1.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 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - libbrotlidec >=1.2.0,<1.3.0a0 - libbrotlienc >=1.2.0,<1.3.0a0 - - libcxx >=19 + - libcxx >=21 - libgoogle-cloud >=2.39.0,<2.40.0a0 - libgoogle-cloud-storage >=2.39.0,<2.40.0a0 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.2.1,<2.2.2.0a0 + - orc >=2.2.2,<2.2.3.0a0 - snappy >=1.2.2,<1.3.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 4160249 - timestamp: 1765382560379 -- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-22.0.0-h89d7da9_6_cpu.conda - build_number: 6 - sha256: 5469cd02381c6760893fc2bcfda9cfb7a2c248527132964d36740e5789648133 - md5: e9fe1ee5e997417347e1ee312af94092 + 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 - libbrotlidec >=1.2.0,<1.3.0a0 - libbrotlienc >=1.2.0,<1.3.0a0 - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl >=8.17.0,<9.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.31.1,<6.31.2.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.2.1,<2.2.2.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 + - 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-haed0678_1_cpu.conda + build_number: 1 + sha256: 59e79bdf7cb60ccb70b2799a6e5f80087e4b5c862e09b64388dc373b45413b70 + md5: 997183f784bdc0c7280fe4072172bfc7 + depends: + - aws-crt-cpp >=0.36.0,<0.36.1.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: - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + size: 4304302 + timestamp: 1771551354574 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-21.0.0-h635bf11_8_cpu.conda + build_number: 8 + sha256: f00a955134401585ed75d6e9d76d48f9512d1e4f56a2a9260c69008ffc4a6851 + md5: 1b8f002c3ea2f207a8306d94370f526b + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 21.0.0 h56a6dad_8_cpu + - libarrow-compute 21.0.0 h8c2c5c3_8_cpu + - libgcc >=14 + - libstdcxx >=14 license: Apache-2.0 license_family: APACHE - size: 3965279 - timestamp: 1765381971425 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-22.0.0-h635bf11_6_cpu.conda - build_number: 6 - sha256: b7e013502eb6dbb59bf58c34b83ed4e7bbcc32ee37600016d862f0bb21a6dc5a - md5: 5a8f878ca313083960ab819a009848b3 + size: 581216 + timestamp: 1759482031187 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.0-h635bf11_2_cpu.conda + build_number: 2 + sha256: 5fd1f8f394d6c1a910f66d6b8236db0f8dd0495bf01950defa2863de42d26c68 + md5: f67acaf4653452503669ade10edec780 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 22.0.0 hb6ed5f4_6_cpu - - libarrow-compute 22.0.0 h8c2c5c3_6_cpu + - libarrow 23.0.0 h40b5c2d_2_cpu + - libarrow-compute 23.0.0 h8c2c5c3_2_cpu - libgcc >=14 - libstdcxx >=14 license: Apache-2.0 license_family: APACHE - size: 585860 - timestamp: 1765381484672 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-22.0.0-h2db2d7d_6_cpu.conda - build_number: 6 - sha256: 48aaec89f7058d4f9a5a0a26a5d85b27d8bdd92afb29b8af15d07fda5776a675 - md5: 6167eebc2d1a893b5c9da5b28803c9b1 + size: 612958 + timestamp: 1770434974078 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-21.0.0-h2db2d7d_8_cpu.conda + build_number: 8 + sha256: 45ce2e464256060c193720e0feaebcfed4df4dd0fc2a2f4ddf249cc0747583bd + md5: 9b119b1b3833c4e81f1f29907bcfebe5 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 22.0.0 h563529e_6_cpu - - libarrow-compute 22.0.0 h7751554_6_cpu + - libarrow 21.0.0 h3202d62_8_cpu + - libarrow-compute 21.0.0 h7751554_8_cpu - libcxx >=19 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 license: Apache-2.0 - size: 557962 - timestamp: 1765852618606 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-22.0.0-hc317990_6_cpu.conda - build_number: 6 - sha256: 3250653194b95fc30785f7fc394381318ecc3afb500884967b6d736349b135fe - md5: f17f28aba732a290919eecdec17677d9 + license_family: APACHE + size: 552278 + timestamp: 1759484126007 +- 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 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 + 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 + md5: fedb5f48e5a038146af8cfcb11de5879 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 22.0.0 he6e817a_6_cpu - - libarrow-compute 22.0.0 h75845d1_6_cpu + - libarrow 21.0.0 hd43feaf_8_cpu + - libarrow-compute 21.0.0 h75845d1_8_cpu - libcxx >=19 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 license: Apache-2.0 license_family: APACHE - size: 523683 - timestamp: 1765383066107 -- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-22.0.0-h7d8d6a5_6_cpu.conda - build_number: 6 - sha256: bea322b50e5db84ba1de28a70e0da9ebb44a8d525a0ffb5facc2fa0b8332c3e5 - md5: bbef682dd3d8f686faad9f1a94b3d9ae + size: 517544 + timestamp: 1759482466808 +- 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: - - libarrow 22.0.0 h89d7da9_6_cpu - - libarrow-compute 22.0.0 h2db994a_6_cpu + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - 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 + 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_1_cpu.conda + build_number: 1 + sha256: 4db62384774ae1da76eae79430ad4067992778608a96d1e95adce4e498282eb6 + md5: 11a446e07a2c8f0de5a181632bb04324 + depends: + - libarrow 23.0.1 haed0678_1_cpu + - libarrow-compute 23.0.1 h081cd8e_1_cpu - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Apache-2.0 license_family: APACHE - size: 451321 - timestamp: 1765382291986 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-22.0.0-h8c2c5c3_6_cpu.conda - build_number: 6 - sha256: 0cd08dd11263105e2bf45514e08f8e4a59fac41a80a82f17540e047242835872 - md5: d2cd924b5f451a7c258001cb1c14155d + size: 464013 + timestamp: 1771551700303 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-21.0.0-h8c2c5c3_8_cpu.conda + build_number: 8 + sha256: a4e2ca70b727f9699f09a5e9c77ca73e555aa2555d9742da9790a0ac71e5ecce + md5: 64342bd7f29894d3f16ef7b71f8f2328 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 22.0.0 hb6ed5f4_6_cpu + - libarrow 21.0.0 h56a6dad_8_cpu - libgcc >=14 - libre2-11 >=2025.8.12 - libstdcxx >=14 - - libutf8proc >=2.11.2,<2.12.0a0 + - libutf8proc >=2.11.0,<2.12.0a0 - re2 license: Apache-2.0 license_family: APACHE - size: 2973397 - timestamp: 1765381343806 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-22.0.0-h7751554_6_cpu.conda - build_number: 6 - sha256: 68fabdf5dc7a06e952271894d3ed55edf65b60f342fc53d93862989293f03071 - md5: 1feda49b7df6cf16240c90b06e4220ec + size: 3071770 + timestamp: 1759481909971 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.0-h8c2c5c3_2_cpu.conda + build_number: 2 + sha256: 3f6b4c27aa4741349bd9e314924f938a821b8ed42f503ef41558cc7cf0e13e00 + md5: c9c3d7509b7faef60374fa290b4e5071 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.0 h40b5c2d_2_cpu + - libgcc >=14 + - libre2-11 >=2025.8.12 + - libstdcxx >=14 + - libutf8proc >=2.11.3,<2.12.0a0 + - re2 + license: Apache-2.0 + license_family: APACHE + size: 3007456 + timestamp: 1770434821507 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-21.0.0-h7751554_8_cpu.conda + build_number: 8 + sha256: bf58e7f7d5a3328f4a19e579aaa8d249b517c0f8ce9d218de94b013f314ac7bd + md5: 906b6dc5d8481d41f6b85cf220ca3605 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 22.0.0 h563529e_6_cpu + - libarrow 21.0.0 h3202d62_8_cpu - libcxx >=19 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 - libre2-11 >=2025.8.12 - - libutf8proc >=2.11.2,<2.12.0a0 + - libutf8proc >=2.11.0,<2.12.0a0 - re2 license: Apache-2.0 - size: 2399998 - timestamp: 1765852317142 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-22.0.0-h75845d1_6_cpu.conda - build_number: 6 - sha256: 053d096e77464ea8da7c35ab167864bacac3590af304aa3368d09aba8cdf8af8 - md5: 51b139c330f194379c4271c91c9cd1c7 + license_family: APACHE + size: 2450908 + timestamp: 1759483628040 +- 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 22.0.0 he6e817a_6_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 + - libre2-11 >=2025.8.12 + - libutf8proc >=2.11.3,<2.12.0a0 + - re2 + license: Apache-2.0 + 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 + md5: 528408dfe0c6a053360ceb8bfa468100 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libarrow 21.0.0 hd43feaf_8_cpu - libcxx >=19 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 - libre2-11 >=2025.8.12 - - libutf8proc >=2.11.2,<2.12.0a0 + - libutf8proc >=2.11.0,<2.12.0a0 + - re2 + license: Apache-2.0 + license_family: APACHE + size: 2213962 + timestamp: 1759482132558 +- 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 h585ae05_2_cpu + - libcxx >=21 + - libopentelemetry-cpp >=1.21.0,<1.22.0a0 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libre2-11 >=2025.8.12 + - libutf8proc >=2.11.3,<2.12.0a0 - re2 license: Apache-2.0 license_family: APACHE - size: 2155806 - timestamp: 1765382724366 -- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-22.0.0-h2db994a_6_cpu.conda - build_number: 6 - sha256: f26d1d4752f847c11ed3202b1314b1729a52f1468b17dfd3174885db7e3e2dfe - md5: 922c36699625c3f49940337feeba8291 - depends: - - libarrow 22.0.0 h89d7da9_6_cpu + 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 hfcfc620_2_cpu - libre2-11 >=2025.8.12 - - libutf8proc >=2.11.2,<2.12.0a0 + - 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: 1774227 + timestamp: 1770435760973 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.1-h081cd8e_1_cpu.conda + build_number: 1 + sha256: bd5cc2d6e2cbdabb6e4ce35c4ca7d5fddb2c4fb62b3534a4fcc025e077d7185a + md5: 568260375565920d9f19638e732bbc59 + depends: + - libarrow 23.0.1 haed0678_1_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: 1685242 - timestamp: 1765382093115 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-22.0.0-h635bf11_6_cpu.conda - build_number: 6 - sha256: d0321d8d82ccc55557ccb3119174179de3f282df68a6efe60f9c523bbf242a1f - md5: 579bdb829ab093d048e49a289d3c9883 + size: 1770102 + timestamp: 1771551480262 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-21.0.0-h635bf11_8_cpu.conda + build_number: 8 + sha256: 2f801c87f34bc7e93adb4f4d1ac54adf778d9d0ed7c0425dee2e8ffbe1c2d428 + md5: e0aef220789dd2234cbfb8baf759d405 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 21.0.0 h56a6dad_8_cpu + - libarrow-acero 21.0.0 h635bf11_8_cpu + - libarrow-compute 21.0.0 h8c2c5c3_8_cpu + - libgcc >=14 + - libparquet 21.0.0 h790f06f_8_cpu + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 579388 + timestamp: 1759482107976 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.0-h635bf11_2_cpu.conda + build_number: 2 + sha256: 03b453325748e0f5045fb3cd820f1061a5094f67cc51ba4f5750d9ab0b5577bd + md5: d3633b19c4d7e26474733e18e602e8ce depends: - __glibc >=2.17,<3.0.a0 - - libarrow 22.0.0 hb6ed5f4_6_cpu - - libarrow-acero 22.0.0 h635bf11_6_cpu - - libarrow-compute 22.0.0 h8c2c5c3_6_cpu + - libarrow 23.0.0 h40b5c2d_2_cpu + - libarrow-acero 23.0.0 h635bf11_2_cpu + - libarrow-compute 23.0.0 h8c2c5c3_2_cpu - libgcc >=14 - - libparquet 22.0.0 h7376487_6_cpu + - libparquet 23.0.0 h7376487_2_cpu - libstdcxx >=14 license: Apache-2.0 license_family: APACHE - size: 584952 - timestamp: 1765381575560 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-22.0.0-h2db2d7d_6_cpu.conda - build_number: 6 - sha256: 31b84bde000c0c5544feaaef82919eb0e3e934cfd5bf06b87ce5fc5a3ae09e33 - md5: d5a2c15f5cb9928b4d5847b2ca13af5f + size: 612157 + timestamp: 1770435074139 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-21.0.0-h2db2d7d_8_cpu.conda + build_number: 8 + sha256: 902200ce5a94a962d6b0bd6df847bc350ca75050d21db187f788990599eb4f80 + md5: f7baac5bf91d8f61267e4c7bf975a910 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 22.0.0 h563529e_6_cpu - - libarrow-acero 22.0.0 h2db2d7d_6_cpu - - libarrow-compute 22.0.0 h7751554_6_cpu + - libarrow 21.0.0 h3202d62_8_cpu + - libarrow-acero 21.0.0 h2db2d7d_8_cpu + - libarrow-compute 21.0.0 h7751554_8_cpu - libcxx >=19 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - - libparquet 22.0.0 habb56ca_6_cpu + - libparquet 21.0.0 ha67a804_8_cpu - libprotobuf >=6.31.1,<6.31.2.0a0 license: Apache-2.0 - size: 538184 - timestamp: 1765852838778 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-22.0.0-hc317990_6_cpu.conda - build_number: 6 - sha256: ab07545a7f99cb8026b3bfe0f7f2c33d3204972fe1d5eb011adf2eb002277989 - md5: cf0d62de81a3a2b7afb723b4b629879a + license_family: APACHE + size: 534087 + timestamp: 1759484554656 +- 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 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_2_cpu + - libprotobuf >=6.31.1,<6.31.2.0a0 + license: Apache-2.0 + 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 + md5: 0baa7e03e0bf1f00d436c3a8e2656464 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 22.0.0 he6e817a_6_cpu - - libarrow-acero 22.0.0 hc317990_6_cpu - - libarrow-compute 22.0.0 h75845d1_6_cpu + - libarrow 21.0.0 hd43feaf_8_cpu + - libarrow-acero 21.0.0 hc317990_8_cpu + - libarrow-compute 21.0.0 h75845d1_8_cpu - libcxx >=19 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - - libparquet 22.0.0 h0ac143b_6_cpu + - libparquet 21.0.0 h45c8936_8_cpu - libprotobuf >=6.31.1,<6.31.2.0a0 license: Apache-2.0 license_family: APACHE - size: 520397 - timestamp: 1765383321028 -- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-22.0.0-h7d8d6a5_6_cpu.conda - build_number: 6 - sha256: 147e9f2092443bf4facda44323097d8a494b4930c2865996aa54e2d19a454d93 - md5: 974630001cbf61d4d94a7c7c142eade4 - depends: - - libarrow 22.0.0 h89d7da9_6_cpu - - libarrow-acero 22.0.0 h7d8d6a5_6_cpu - - libarrow-compute 22.0.0 h2db994a_6_cpu - - libparquet 22.0.0 h7051d1f_6_cpu + size: 514947 + timestamp: 1759482675333 +- 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 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_2_cpu + - libprotobuf >=6.31.1,<6.31.2.0a0 + license: Apache-2.0 + 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: 435881 - timestamp: 1765382430115 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-22.0.0-h3f74fd7_6_cpu.conda - build_number: 6 - sha256: a343378e20aaa27e955c1f84394f00668458b69f6eaf7efcf4b21a3f8f10e02a - md5: cfc7d2c5a81eb6de3100661a69de5f3d + size: 450625 + timestamp: 1770436078161 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.1-h7d8d6a5_1_cpu.conda + build_number: 1 + sha256: f935b1a2c18e705bfcb055dd633acf43000bde295ac8dbb2409d5046082e5dd3 + md5: 13a3698c2c7275c1c6b3eabf18f81557 + depends: + - libarrow 23.0.1 haed0678_1_cpu + - libarrow-acero 23.0.1 h7d8d6a5_1_cpu + - libarrow-compute 23.0.1 h081cd8e_1_cpu + - libparquet 23.0.1 h7051d1f_1_cpu + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: APACHE + size: 445847 + timestamp: 1771551843618 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-21.0.0-h3f74fd7_8_cpu.conda + build_number: 8 + sha256: 83fcb14f742e34aad34f007a62f8b414543d20feee7485a74ed3d525148fca50 + md5: 86f6d887749f5f7f30d91ef6a5e01515 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libarrow 21.0.0 h56a6dad_8_cpu + - libarrow-acero 21.0.0 h635bf11_8_cpu + - libarrow-dataset 21.0.0 h635bf11_8_cpu + - libgcc >=14 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 483116 + timestamp: 1759482133380 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.0-h3f74fd7_2_cpu.conda + build_number: 2 + sha256: c78b7b150630e2e62006cd5648c8dc05e99acaf93bd3899d6891f87aa3988dbe + md5: 8b003b0de3b7c7455400752d0df67d76 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 22.0.0 hb6ed5f4_6_cpu - - libarrow-acero 22.0.0 h635bf11_6_cpu - - libarrow-dataset 22.0.0 h635bf11_6_cpu + - libarrow 23.0.0 h40b5c2d_2_cpu + - libarrow-acero 23.0.0 h635bf11_2_cpu + - libarrow-dataset 23.0.0 h635bf11_2_cpu - libgcc >=14 - libprotobuf >=6.31.1,<6.31.2.0a0 - libstdcxx >=14 license: Apache-2.0 license_family: APACHE - size: 487167 - timestamp: 1765381605708 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-22.0.0-h4653b8a_6_cpu.conda - build_number: 6 - sha256: 6ff0417c6e95b299f684e812c4cebe3fb9c935be8a628da875c40ce9588911b5 - md5: 0420b6cb0c11dfaf0dbd607cd808cf9c + size: 519666 + timestamp: 1770435107469 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-21.0.0-h4653b8a_8_cpu.conda + build_number: 8 + sha256: 78fc6d5d6144af5efb4329e643e29733567d96658708f12885fc251c16a71d2e + md5: b1585801dfe25c23dd3bacea49901f1b depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 22.0.0 h563529e_6_cpu - - libarrow-acero 22.0.0 h2db2d7d_6_cpu - - libarrow-dataset 22.0.0 h2db2d7d_6_cpu + - libarrow 21.0.0 h3202d62_8_cpu + - libarrow-acero 21.0.0 h2db2d7d_8_cpu + - libarrow-dataset 21.0.0 h2db2d7d_8_cpu - libcxx >=19 - libprotobuf >=6.31.1,<6.31.2.0a0 license: Apache-2.0 - size: 452871 - timestamp: 1765852913291 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-22.0.0-h144af7f_6_cpu.conda - build_number: 6 - sha256: f2181c286af7d0d4cf381976f100daf1ac84b9661975130adce4ce7a03025696 - md5: 58a5b39bc7d23fa938affe1bfc43c241 + license_family: APACHE + size: 448256 + timestamp: 1759484680404 +- 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 22.0.0 he6e817a_6_cpu - - libarrow-acero 22.0.0 hc317990_6_cpu - - libarrow-dataset 22.0.0 hc317990_6_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 + 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 + md5: 789bcc687969e48a482ed931d9fb0509 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20250512.1,<20250513.0a0 + - libarrow 21.0.0 hd43feaf_8_cpu + - libarrow-acero 21.0.0 hc317990_8_cpu + - libarrow-dataset 21.0.0 hc317990_8_cpu - libcxx >=19 - libprotobuf >=6.31.1,<6.31.2.0a0 license: Apache-2.0 license_family: APACHE - size: 458819 - timestamp: 1765383438751 -- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-22.0.0-hf865cc0_6_cpu.conda - build_number: 6 - sha256: 393a9bedc2424ea2335364de0be0de69f6dbcc456c893b70a9776975acd749d0 - md5: 01d0606bf4202d358a71545759223202 + size: 452889 + timestamp: 1759482755723 +- 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 22.0.0 h89d7da9_6_cpu - - libarrow-acero 22.0.0 h7d8d6a5_6_cpu - - libarrow-dataset 22.0.0 h7d8d6a5_6_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 + 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 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 + license_family: APACHE + size: 379196 + timestamp: 1770436121320 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.1-h524e9bd_1_cpu.conda + build_number: 1 + sha256: a67e55624fb0053bf8cffaf3bc2427657d95b50f1c9544866b2f4c2a887e26a5 + md5: 98c9fd5040de1e4f03d4a874ad1e9848 + depends: + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 haed0678_1_cpu + - libarrow-acero 23.0.1 h7d8d6a5_1_cpu + - libarrow-dataset 23.0.1 h7d8d6a5_1_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: 364040 - timestamp: 1765382475732 + size: 379240 + timestamp: 1771551890683 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda build_number: 5 sha256: 18c72545080b86739352482ba14ba2c4815e19e26a7417ca21a95b76ec8da24c @@ -13981,6 +16676,7 @@ packages: - blas 2.305 openblas - liblapacke 3.11.0 5*_openblas license: BSD-3-Clause + license_family: BSD size: 18213 timestamp: 1765818813880 - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-5_he492b99_openblas.conda @@ -13997,6 +16693,7 @@ packages: - mkl <2026 - liblapacke 3.11.0 5*_openblas license: BSD-3-Clause + license_family: BSD size: 18476 timestamp: 1765819054657 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-5_h51639a9_openblas.conda @@ -14013,6 +16710,7 @@ packages: - blas 2.305 openblas - mkl <2026 license: BSD-3-Clause + license_family: BSD size: 18546 timestamp: 1765819094137 - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.11.0-7_h6c93730_netlib.conda @@ -14032,9 +16730,9 @@ packages: license_family: BSD size: 152133 timestamp: 1763441180597 -- conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.88.0-h9dfe17d_6.conda - sha256: 06866ea751e85b68a7ed1337a41fa11b65ad8948f79b2624839d1e4d1de21333 - md5: b749addb561373326d03a21f24be1059 +- conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.88.0-h9dfe17d_7.conda + sha256: fad63bb3b722d4fc50c8258fc30402970ad36baf73edd87c1b647bdd6aed3f04 + md5: e13bc25d81b0132a0c51eb5cc179b0e9 depends: - bzip2 >=1.0.8,<2.0a0 - libiconv >=1.18,<2.0a0 @@ -14048,8 +16746,18 @@ packages: - boost-cpp <0.0a0 - __win ==0|>=10 license: BSL-1.0 - size: 2381816 - timestamp: 1763019598391 + size: 2404502 + timestamp: 1766348533008 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb03c661_4.conda + sha256: 2338a92d1de71f10c8cf70f7bb9775b0144a306d75c4812276749f54925612b6 + md5: 1d29d2e33fe59954af82ef54a8af3fe1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 69333 + timestamp: 1756599354727 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda sha256: 318f36bd49ca8ad85e6478bd8506c88d82454cc008c1ac1c6bf00a3c42fa610e md5: 72c8fd1af66bd67bf580645b426513ed @@ -14060,6 +16768,15 @@ packages: license_family: MIT size: 79965 timestamp: 1764017188531 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h1c43f85_4.conda + sha256: 28c1a5f7dbe68342b7341d9584961216bd16f81aa3c7f1af317680213c00b46a + md5: b8e1ee78815e0ba7835de4183304f96b + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 67948 + timestamp: 1756599727911 - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda sha256: 4c19b211b3095f541426d5a9abac63e96a5045e509b3d11d4f9482de53efe43b md5: f157c098841474579569c85a60ece586 @@ -14069,6 +16786,15 @@ packages: license_family: MIT size: 78854 timestamp: 1764017554982 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-h6caf38d_4.conda + sha256: 023b609ecc35bfee7935d65fcc5aba1a3ba6807cbba144a0730198c0914f7c79 + md5: 231cffe69d41716afe4525c5c1cc5ddd + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 68938 + timestamp: 1756599687687 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda sha256: a7cb9e660531cf6fbd4148cff608c85738d0b76f0975c5fc3e7d5e92840b7229 md5: 006e7ddd8a110771134fcc4e1e3a6ffa @@ -14089,6 +16815,17 @@ packages: license_family: MIT size: 82042 timestamp: 1764017799966 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb03c661_4.conda + sha256: fcec0d26f67741b122f0d5eff32f0393d7ebd3ee6bb866ae2f17f3425a850936 + md5: 5cb5a1c9a94a78f5b23684bcb845338d + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb03c661_4 + - libgcc >=14 + license: MIT + license_family: MIT + size: 33406 + timestamp: 1756599364386 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda sha256: 12fff21d38f98bc446d82baa890e01fd82e3b750378fedc720ff93522ffb752b md5: 366b40a69f0ad6072561c1d09301c886 @@ -14100,6 +16837,16 @@ packages: license_family: MIT size: 34632 timestamp: 1764017199083 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h1c43f85_4.conda + sha256: a287470602e8380c0bdb5e7a45ba3facac644432d7857f27b39d6ceb0dcbf8e9 + md5: 9cc4be0cc163d793d5d4bcc405c81bf3 + depends: + - __osx >=10.13 + - libbrotlicommon 1.1.0 h1c43f85_4 + license: MIT + license_family: MIT + size: 30743 + timestamp: 1756599755474 - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda sha256: 729158be90ae655a4e0427fe4079767734af1f9b69ff58cf94ca6e8d4b3eb4b7 md5: 63186ac7a8a24b3528b4b14f21c03f54 @@ -14110,6 +16857,16 @@ packages: license_family: MIT size: 30835 timestamp: 1764017584474 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-h6caf38d_4.conda + sha256: 7f1cf83a00a494185fc087b00c355674a0f12e924b1b500d2c20519e98fdc064 + md5: cb7e7fe96c9eee23a464afd57648d2cd + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 h6caf38d_4 + license: MIT + license_family: MIT + size: 29015 + timestamp: 1756599708339 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda sha256: 2eae444039826db0454b19b52a3390f63bfe24f6b3e63089778dd5a5bf48b6bf md5: 079e88933963f3f149054eec2c487bc2 @@ -14132,6 +16889,17 @@ packages: license_family: MIT size: 34449 timestamp: 1764017851337 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb03c661_4.conda + sha256: d42c7f0afce21d5279a0d54ee9e64a2279d35a07a90e0c9545caae57d6d7dc57 + md5: 2e55011fa483edb8bfe3fd92e860cd79 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb03c661_4 + - libgcc >=14 + license: MIT + license_family: MIT + size: 289680 + timestamp: 1756599375485 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda sha256: a0c15c79997820bbd3fbc8ecf146f4fe0eca36cc60b62b63ac6cf78857f1dd0d md5: 4ffbb341c8b616aa2494b6afb26a0c5f @@ -14143,6 +16911,16 @@ packages: license_family: MIT size: 298378 timestamp: 1764017210931 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h1c43f85_4.conda + sha256: 820caf0a78770758830adbab97fe300104981a5327683830d162b37bc23399e9 + md5: f2c000dc0185561b15de7f969f435e61 + depends: + - __osx >=10.13 + - libbrotlicommon 1.1.0 h1c43f85_4 + license: MIT + license_family: MIT + size: 294904 + timestamp: 1756599789206 - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda sha256: 8ece7b41b6548d6601ac2c2cd605cf2261268fc4443227cc284477ed23fbd401 md5: 12a58fd3fc285ce20cf20edf21a0ff8f @@ -14153,6 +16931,16 @@ packages: license_family: MIT size: 310355 timestamp: 1764017609985 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-h6caf38d_4.conda + sha256: a2f2c1c2369360147c46f48124a3a17f5122e78543275ff9788dc91a1d5819dc + md5: 4ce5651ae5cd6eebc5899f9bfe0eac3c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 h6caf38d_4 + license: MIT + license_family: MIT + size: 275791 + timestamp: 1756599724058 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda sha256: 01436c32bb41f9cb4bcf07dda647ce4e5deb8307abfc3abdc8da5317db8189d1 md5: b2b7c8288ca1a2d71ff97a8e6a1e8883 @@ -14186,6 +16974,7 @@ packages: - blas 2.305 openblas - liblapack 3.11.0 5*_openblas license: BSD-3-Clause + license_family: BSD size: 18194 timestamp: 1765818837135 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-5_h9b27e0a_openblas.conda @@ -14199,6 +16988,7 @@ packages: - blas 2.305 openblas - liblapacke 3.11.0 5*_openblas license: BSD-3-Clause + license_family: BSD size: 18484 timestamp: 1765819073006 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-5_hb0561ab_openblas.conda @@ -14212,6 +17002,7 @@ packages: - liblapack 3.11.0 5*_openblas - blas 2.305 openblas license: BSD-3-Clause + license_family: BSD size: 18548 timestamp: 1765819108956 - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.11.0-7_hc41557d_netlib.conda @@ -14230,33 +17021,57 @@ packages: license_family: BSD size: 44724 timestamp: 1763441236326 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.7-default_h99862b1_1.conda - sha256: ce8b8464b1230dd93d2b5a2646d2c80639774c9e781097f041581c07b83d4795 - md5: d3042ebdaacc689fd1daa701885fc96c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp20.1-20.1.8-default_h99862b1_8.conda + sha256: e4dfc9b820a5f7bcc5862f0d275a2c85e838a2de9c6d1d10b048ab7570f8a968 + md5: 0071e5b9af13b5bcf39e371f3100ce3f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libllvm20 >=20.1.8,<20.2.0a0 + - libstdcxx >=14 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 21291311 + timestamp: 1768845917554 +- 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 + - libllvm21 >=21.1.8,<21.2.0a0 + - libstdcxx >=14 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + 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 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - libllvm21 >=21.1.7,<21.2.0a0 + - libllvm21 >=21.1.0,<21.2.0a0 - libstdcxx >=14 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 21055642 - timestamp: 1764816319608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.7-default_h746c552_1.conda - sha256: a9bcd5fc463ddf088077eceaf314d560af347d10c4d92ca3177fa313a79a6e46 - md5: 66508e5f84c3dc9af1a0a62694325ef2 + size: 12358102 + timestamp: 1757383373129 +- 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 - - libllvm21 >=21.1.7,<21.2.0a0 + - libllvm21 >=21.1.8,<21.2.0a0 - libstdcxx >=14 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 12347100 - timestamp: 1764816644936 -- conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-21.1.7-default_ha2db4b5_1.conda - sha256: 9153b722591aac572b2384daac7f5071d59b746239e6d5b74b06844e49339ec7 - md5: 065bcc5d1a29de06d4566b7b9ac89882 + 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 @@ -14265,8 +17080,8 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 28995533 - timestamp: 1764820055107 + 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 @@ -14318,9 +17133,9 @@ packages: license_family: Apache size: 4523621 timestamp: 1749905341688 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.17.0-h4e3cde8_1.conda - sha256: 2d7be2fe0f58a0945692abee7bb909f8b19284b518d958747e5ff51d0655c303 - md5: 117499f93e892ea1e57fdca16c2e8351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-h4e3cde8_0.conda + sha256: 5454709d9fb6e9c3dd6423bc284fa7835a7823bfa8323f6e8786cdd555101fab + md5: 0a5563efed19ca4461cf927419b6eb73 depends: - __glibc >=2.17,<3.0.a0 - krb5 >=1.21.3,<1.22.0a0 @@ -14332,11 +17147,11 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT - size: 459417 - timestamp: 1765379027010 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.17.0-h7dd4100_1.conda - sha256: 80c7c8ff76eb699ec8d096dce80642b527fd8fc9dd72779bccec8d140c5b997a - md5: 9ddfaeed0eafce233ae8f4a430816aa5 + size: 462942 + timestamp: 1767821743793 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9348e2b_0.conda + sha256: 1a0af3b7929af3c5893ebf50161978f54ae0256abb9532d4efba2735a0688325 + md5: de1910529f64ba4a9ac9005e0be78601 depends: - __osx >=10.13 - krb5 >=1.21.3,<1.22.0a0 @@ -14347,11 +17162,41 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT - size: 413119 - timestamp: 1765379670120 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.17.0-hdece5d2_1.conda - sha256: 1a8a958448610ca3f8facddfe261fdbb010e7029a1571b84052ec9770fc0a36e - md5: 1d6e791c6e264ae139d469ce011aab51 + size: 419089 + timestamp: 1767822218800 +- 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.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.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + 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.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.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + size: 402616 + timestamp: 1770893178846 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-he38603e_0.conda + sha256: 11c78b3e89bc332933386f0a11ac60d9200afb7a811b9e3bec98aef8d4a6389b + md5: 36190179a799f3aee3c2d20a8a2b970d depends: - __osx >=11.0 - krb5 >=1.21.3,<1.22.0a0 @@ -14362,11 +17207,11 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT - size: 394471 - timestamp: 1765379821294 -- conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.17.0-h43ecb02_1.conda - sha256: 5ebab5c980c09d31b35a25095b295124d89fd8bdffdb3487604218ad56512885 - md5: c02248f96a0073904bb085a437143895 + size: 402681 + timestamp: 1767822693908 +- conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.18.0-h43ecb02_0.conda + sha256: 86258e30845571ea13855e8a0605275905781476f3edf8ae5df90a06fcada93a + md5: 2688214a9bee5d5650cd4f5f6af5c8f2 depends: - krb5 >=1.21.3,<1.22.0a0 - libssh2 >=1.11.1,<2.0a0 @@ -14376,26 +17221,36 @@ packages: - vc14_runtime >=14.44.35208 license: curl license_family: MIT - size: 379189 - timestamp: 1765379273605 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.7-h3d58e20_0.conda - sha256: 0ac1b1d1072a14fe8fd3a871c8ca0b411f0fdf30de70e5c95365a149bd923ac8 - md5: 67c086bf0efc67b54a235dd9184bd7a2 + size: 383261 + timestamp: 1767821977053 +- 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: 571564 - timestamp: 1764676139160 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.7-hf598326_0.conda - sha256: 4bdbef0241b52e7a8552e8af7425f0b56d5621dd69df46c816546fefa17d77ab - md5: 0de94f39727c31c0447e408c5a210a56 + 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: 568715 - timestamp: 1764676451068 + size: 570068 + timestamp: 1770238262922 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda + sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf + md5: 64f0c503da58ec25ebd359e4d990afa8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72573 + timestamp: 1747040452262 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 md5: 6c77a605a7a689d17d4819c0f8ac9a00 @@ -14406,6 +17261,15 @@ packages: license_family: MIT size: 73490 timestamp: 1761979956660 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda + sha256: 2733a4adf53daca1aa4f41fe901f0f8ee9e4c509abd23ffcd7660013772d6f45 + md5: f0a46c359722a3e84deb05cd4072d153 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 69751 + timestamp: 1747040526774 - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h517ebb2_0.conda sha256: 025f8b1e85dd8254e0ca65f011919fb1753070eb507f03bca317871a884d24de md5: 31aa65919a729dc48180893f62c25221 @@ -14415,6 +17279,15 @@ packages: license_family: MIT size: 70840 timestamp: 1761980008502 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda + sha256: 417d52b19c679e1881cce3f01cad3a2d542098fa2d6df5485aac40f01aede4d1 + md5: 3baf58a5a87e7c2f4d243ce2f8f2fe5c + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 54790 + timestamp: 1747040549847 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.25-hc11a715_0.conda sha256: 5e0b6961be3304a5f027a8c00bd0967fc46ae162cffb7553ff45c70f51b8314c md5: a6130c709305cd9828b4e1bd9ba0000c @@ -14424,6 +17297,17 @@ packages: license_family: MIT size: 55420 timestamp: 1761980066242 +- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda + sha256: 65347475c0009078887ede77efe60db679ea06f2b56f7853b9310787fe5ad035 + md5: 08d988e266c6ae77e03d164b83786dc4 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 156292 + timestamp: 1747040812624 - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.25-h51727cc_0.conda sha256: 834e4881a18b690d5ec36f44852facd38e13afe599e369be62d29bd675f107ee md5: e77030e67343e28b084fabd7db0ce43e @@ -14563,92 +17447,131 @@ 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: 70323 + timestamp: 1771259521393 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + sha256: 764432d32db45466e87f10621db5b74363a9f847d2b8b1f9743746cd160f06ab + md5: ede4673863426c0883c0063d853bbd85 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 70137 - timestamp: 1763550049107 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda - sha256: 25cbdfa65580cfab1b8d15ee90b4c9f1e0d72128f1661449c9a999d341377d54 - md5: 35f29eec58405aaf55e01cb470d8c26a + size: 57433 + timestamp: 1743434498161 +- 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 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-h750e83c_0.conda - sha256: 277dc89950f5d97f1683f26e362d6dca3c2efa16cb2f6fdb73d109effa1cd3d0 - md5: d214916b24c625bcc459b245d509f22e + size: 58592 + timestamp: 1769456073053 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + sha256: 6394b1bc67c64a21a5cc73d1736d1d4193a64515152e861785c44d2cfc49edf3 + md5: 4ca9ea59839a9ca8df84170fab4ceb41 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 51216 + timestamp: 1743434595269 +- 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 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda - sha256: 9b8acdf42df61b7bfe8bdc545c016c29e61985e79748c64ad66df47dbc2e295f - md5: 411ff7cd5d1472bba0f55c0faf04453b + size: 53583 + timestamp: 1769456300951 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + sha256: c6a530924a9b14e193ea9adfe92843de2a806d1b7dbfd341546ece9653129e60 + md5: c215a60c2935b517dcda8cad4705734d + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 39839 + timestamp: 1743434670405 +- 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 -- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda - sha256: ddff25aaa4f0aa535413f5d831b04073789522890a4d8626366e43ecde1534a3 - md5: ba4ad812d2afc22b9a34ce8327a0930f + size: 40979 + timestamp: 1769456747661 +- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + sha256: d3b0b8812eab553d3464bbd68204f007f1ebadf96ce30eb0cbc5159f72e353f5 + md5: 85d8fa5e55ed8f93f874b3b23ed54ec6 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 44978 + timestamp: 1743435053850 +- 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 @@ -14732,66 +17655,87 @@ 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 + depends: + - __glibc >=2.17,<3.0.a0 + - 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 + - libgcc >=14 + - 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 + license: GD + license_family: BSD + size: 177306 + timestamp: 1766331805898 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda sha256: 19e5be91445db119152217e8e8eec4fd0499d854acc7d8062044fb55a70971cd md5: 68fc66282364981589ef36868b1a7c78 @@ -14832,6 +17776,48 @@ packages: license_family: BSD size: 162601 timestamp: 1737548422107 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-hb2c11ec_12.conda + sha256: bf7b0c25b6cca5808f4da46c5c363fa1192088b0b46efb730af43f28d52b8f04 + md5: e12673b408d1eb708adb3ecc2f621d78 + depends: + - __osx >=10.13 + - 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 + - libiconv >=1.18,<2.0a0 + - 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 + license: GD + license_family: BSD + size: 163145 + timestamp: 1766332198196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-h05bcc79_12.conda + sha256: 269edce527e204a80d3d05673301e0207efcd0dbeebc036a118ceb52690d6341 + md5: fa4a92cfaae9570d89700a292a9ca714 + depends: + - __osx >=11.0 + - 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 + - libiconv >=1.18,<2.0a0 + - 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 + license: GD + license_family: BSD + size: 159247 + timestamp: 1766331953491 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda sha256: be038eb8dfe296509aee2df21184c72cb76285b0340448525664bc396aa6146d md5: 4581aa3cfcd1a90967ed02d4a9f3db4b @@ -14852,6 +17838,29 @@ packages: license_family: BSD size: 156868 timestamp: 1737548290283 +- 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 @@ -14866,146 +17875,264 @@ packages: - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - xorg-libxpm >=3.5.17,<4.0a0 - license: GD - license_family: BSD - size: 165838 - timestamp: 1737548342665 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.10.3-h1f481a6_27.conda - sha256: ec121a0e7b0577d278c94781cc763f3fece3eba9db86ef5a9fa5b31511157671 - md5: 01c9b96c9902d49dbeadc6762ee4d397 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xorg-libxpm >=3.5.17,<4.0a0 + license: GD + license_family: BSD + size: 165838 + timestamp: 1737548342665 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.10.3-h02f45b3_13.conda + sha256: 9a1170e7eb91b947fbe32e9d8f42a6c5b750de77b327c088948ecacf9a0ab5bd + md5: 728c94f861dfb7d7cfb9244516626ca9 + depends: + - __glibc >=2.17,<3.0.a0 + - blosc >=1.21.6,<2.0a0 + - geos >=3.13.1,<3.13.2.0a0 + - geotiff >=1.7.4,<1.8.0a0 + - giflib >=5.2.2,<5.3.0a0 + - json-c >=0.18,<0.19.0a0 + - lerc >=4.0.0,<5.0a0 + - libarchive >=3.8.1,<3.9.0a0 + - libcurl >=8.14.1,<9.0a0 + - libdeflate >=1.24,<1.25.0a0 + - libexpat >=2.7.1,<3.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - libkml >=1.3.0,<1.4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libpng >=1.6.50,<1.7.0a0 + - libspatialite >=5.1.0,<5.2.0a0 + - libsqlite >=3.50.4,<4.0a0 + - libstdcxx >=14 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libxml2 >=2.13.8,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - openssl >=3.5.2,<4.0a0 + - pcre2 >=10.45,<10.46.0a0 + - proj >=9.6.2,<9.7.0a0 + - xerces-c >=3.2.5,<3.3.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - libgdal 3.10.3.* + license: MIT + license_family: MIT + size: 11007446 + timestamp: 1755813512112 +- 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 + - 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.5,<3.9.0a0 + - libcurl >=8.18.0,<9.0a0 + - libdeflate >=1.25,<1.26.0a0 + - libexpat >=2.7.4,<3.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libjxl >=0.11,<1.0a0 + - libkml >=1.3.0,<1.4.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 + - libspatialite >=5.1.0,<5.2.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libstdcxx >=14 + - 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.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.2.* + license: MIT + license_family: MIT + 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 + depends: + - __osx >=10.13 + - blosc >=1.21.6,<2.0a0 + - geos >=3.13.1,<3.13.2.0a0 + - geotiff >=1.7.4,<1.8.0a0 + - giflib >=5.2.2,<5.3.0a0 + - json-c >=0.18,<0.19.0a0 + - lerc >=4.0.0,<5.0a0 + - libarchive >=3.8.1,<3.9.0a0 + - libcurl >=8.14.1,<9.0a0 + - libcxx >=19 + - libdeflate >=1.24,<1.25.0a0 + - libexpat >=2.7.1,<3.0a0 + - libiconv >=1.18,<2.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - libkml >=1.3.0,<1.4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libpng >=1.6.50,<1.7.0a0 + - libspatialite >=5.1.0,<5.2.0a0 + - libsqlite >=3.50.4,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libxml2 >=2.13.8,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - openssl >=3.5.2,<4.0a0 + - pcre2 >=10.45,<10.46.0a0 + - proj >=9.6.2,<9.7.0a0 + - xerces-c >=3.2.5,<3.3.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - libgdal 3.10.3.* + license: MIT + license_family: MIT + size: 9213226 + timestamp: 1755814469068 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.12.2-hbf8631d_1.conda + sha256: bc0f5e1275da95d91f59e39539056b527292a1f126fe44a3c84ca465c330b06f + md5: c0f41c8a932df0fcdb8f2bfe0bb124db depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - blosc >=1.21.6,<2.0a0 - geos >=3.14.1,<3.14.2.0a0 - - geotiff >=1.7.4,<1.8.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 - - libgcc >=14 + - libexpat >=2.7.4,<3.0a0 - libiconv >=1.18,<2.0a0 - libjpeg-turbo >=3.1.2,<4.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.51.0,<4.0a0 - - libstdcxx >=14 - - libtiff >=4.7.1,<4.8.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 - - openssl >=3.5.4,<4.0a0 + - muparser >=2.3.5,<2.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.10.3.* + - libgdal 3.12.2.* license: MIT license_family: MIT - size: 10979930 - timestamp: 1763756719255 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.10.3-hb8c6b92_27.conda - sha256: 6fa81d66ca2c9dac4a40f20588dcb239e0673bcdcd9b9ffe583b69faebefc211 - md5: 1285c38329dfd110fb87635817808376 + 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 depends: - - __osx >=10.13 + - __osx >=11.0 - blosc >=1.21.6,<2.0a0 - - geos >=3.14.1,<3.14.2.0a0 + - geos >=3.13.1,<3.13.2.0a0 - geotiff >=1.7.4,<1.8.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.1,<3.9.0a0 + - libcurl >=8.14.1,<9.0a0 - libcxx >=19 - - libdeflate >=1.25,<1.26.0a0 - - libexpat >=2.7.3,<3.0a0 + - libdeflate >=1.24,<1.25.0a0 + - libexpat >=2.7.1,<3.0a0 - libiconv >=1.18,<2.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 - libkml >=1.3.0,<1.4.0a0 - liblzma >=5.8.1,<6.0a0 - libpng >=1.6.50,<1.7.0a0 - libspatialite >=5.1.0,<5.2.0a0 - - libsqlite >=3.51.0,<4.0a0 - - libtiff >=4.7.1,<4.8.0a0 + - libsqlite >=3.50.4,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.6.0,<2.0a0 - - libxml2 - - libxml2-16 >=2.14.6 + - libxml2 >=2.13.8,<2.14.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - - openssl >=3.5.4,<4.0a0 - - pcre2 >=10.47,<10.48.0a0 - - proj >=9.7.0,<9.8.0a0 - - xerces-c >=3.3.0,<3.4.0a0 + - openssl >=3.5.2,<4.0a0 + - pcre2 >=10.45,<10.46.0a0 + - proj >=9.6.2,<9.7.0a0 + - xerces-c >=3.2.5,<3.3.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - libgdal 3.10.3.* license: MIT license_family: MIT - size: 9186739 - timestamp: 1763759672645 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.10.3-h9991b8b_27.conda - sha256: 3b2e80a36fb7ed8033081d68eb6bd4a9e9b8cad015df001ad11ca766916b451d - md5: 9cb16f1ba60a8a573a9c9f7c3c25e073 + size: 8509314 + timestamp: 1755814377889 +- 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 - geos >=3.14.1,<3.14.2.0a0 - - geotiff >=1.7.4,<1.8.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,<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.51.0,<4.0a0 - - libtiff >=4.7.1,<4.8.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 - - openssl >=3.5.4,<4.0a0 + - muparser >=2.3.5,<2.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.10.3.* + - libgdal 3.12.2.* license: MIT license_family: MIT - size: 8508907 - timestamp: 1763760125057 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-core-3.10.3-h1a28ea4_26.conda - sha256: aa5310549137504d1346a4461cf755ed49283301c60d758b099c6eaa32d934f6 - md5: afd9fa059bb24e51455be49b65f76fe3 + 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 depends: - blosc >=1.21.6,<2.0a0 - - geos >=3.14.1,<3.14.2.0a0 + - geos >=3.13.1,<3.13.2.0a0 - geotiff >=1.7.4,<1.8.0a0 - lerc >=4.0.0,<5.0a0 - - libarchive >=3.8.2,<3.9.0a0 - - libcurl >=8.16.0,<9.0a0 - - libdeflate >=1.25,<1.26.0a0 + - libarchive >=3.8.1,<3.9.0a0 + - libcurl >=8.14.1,<9.0a0 + - libdeflate >=1.24,<1.25.0a0 - libexpat >=2.7.1,<3.0a0 - libiconv >=1.18,<2.0a0 - libjpeg-turbo >=3.1.0,<4.0a0 @@ -15014,280 +18141,279 @@ packages: - libpng >=1.6.50,<1.7.0a0 - libspatialite >=5.1.0,<5.2.0a0 - libsqlite >=3.50.4,<4.0a0 - - libtiff >=4.7.1,<4.8.0a0 + - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.6.0,<2.0a0 - - libxml2 - - libxml2-16 >=2.14.6 + - libxml2 >=2.13.8,<2.14.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - - openssl >=3.5.4,<4.0a0 - - pcre2 >=10.46,<10.47.0a0 - - proj >=9.7.0,<9.8.0a0 + - openssl >=3.5.2,<4.0a0 + - pcre2 >=10.45,<10.46.0a0 + - proj >=9.6.2,<9.7.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - - xerces-c >=3.3.0,<3.4.0a0 + - xerces-c >=3.2.5,<3.3.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - libgdal 3.10.3.* license: MIT license_family: MIT - size: 8469206 - timestamp: 1762088554204 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-core-3.10.3-h6e9dab2_27.conda - sha256: f27e62325edbbebe8401cdedd9abb4be648c1738d55de963022ac5191b46c593 - md5: 1e4452681199c2e9ee4b04f2faaa7fda + size: 8439600 + timestamp: 1755815497434 +- 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 - - geotiff >=1.7.4,<1.8.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 - libiconv >=1.18,<2.0a0 - libjpeg-turbo >=3.1.2,<4.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.51.0,<4.0a0 - - libtiff >=4.7.1,<4.8.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 - - openssl >=3.5.4,<4.0a0 + - muparser >=2.3.5,<2.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 - 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.10.3.* + - libgdal 3.12.2.* license: MIT license_family: MIT - size: 8438647 - timestamp: 1763759897522 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf4-3.10.3-ha810028_27.conda - sha256: f4d48c761d44ade7814cc26c2b321bc8f7f1c6ae38388cea49000c3613e4a61a - md5: ef30db6b347517be5868b6dac3ced708 + 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.10.3 h1f481a6_27 + - libgdal-core 3.12.2 hc2c0581_1 - libstdcxx >=14 license: MIT license_family: MIT - size: 564651 - timestamp: 1763757744667 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf4-3.10.3-h0c59102_27.conda - sha256: 089c649f4510db4bc6d8118eb8621f3bd90b8b2059ec81c288cbc9d0d254ee54 - md5: 8d0a9c32f7f10a58cdd862d2d0f96630 + 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.10.3 hb8c6b92_27 + - libgdal-core 3.12.2 hbf8631d_1 license: MIT license_family: MIT - size: 552669 - timestamp: 1763762578436 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf4-3.10.3-he522aa2_27.conda - sha256: 765f064b47bba448fdb2b72790bdb7782d21aa5874ce75d449e19ad3a391c84d - md5: caf5587c96270e59396ab8695bb2d06a + 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.10.3 h9991b8b_27 + - libgdal-core 3.12.2 h779b996_1 license: MIT license_family: MIT - size: 546336 - timestamp: 1763764763732 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf4-3.10.3-ha47b6c4_26.conda - sha256: 4bc33730a308f338a9a5c8ac418ea6d40c7d7ba9df4c7822ede994ea9d8eabc7 - md5: 1b25f07ffc9cb213caac2e6c12698830 + 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.10.3 h1a28ea4_26 + - 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: 566127 - timestamp: 1762092729368 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf5-3.10.3-h966a9c2_27.conda - sha256: 169e4ef64aff98569da51c265f5b5969396a144c20ba65b92ea5853fd0b6a8d3 - md5: e60c7b05c260ef6e5f8fcb10964d38ff + 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.10.3 h1f481a6_27 + - libgdal-core 3.12.2 hc2c0581_1 - libstdcxx >=14 license: MIT license_family: MIT - size: 655338 - timestamp: 1763757801546 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf5-3.10.3-ha7247fd_27.conda - sha256: dc892f3d90d94b679487f3efdc007bf7fc4b45ac2ff8ceac21891df34cbb6339 - md5: 99942026e2013891bea83b43940c3c94 + 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.10.3 hb8c6b92_27 + - libgdal-core 3.12.2 hbf8631d_1 license: MIT license_family: MIT - size: 609466 - timestamp: 1763762736406 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf5-3.10.3-hdacffec_27.conda - sha256: cf645eb10e55fe8eb012731b51968eec942add7b66dfd7e077eeb06b201962c5 - md5: 8fb9ba30faa0ab2994a4694db0373439 + 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.10.3 h9991b8b_27 + - libgdal-core 3.12.2 h779b996_1 license: MIT license_family: MIT - size: 599199 - timestamp: 1763765060787 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf5-3.10.3-h0f01001_26.conda - sha256: 5d0fac15e11b3a0e725ccae7b45cb8a06fc09f14b450d4296bb2a2d6b524bc0a - md5: 9e740bd823af2ca105f9ec287294e4f5 + 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.10.3 h1a28ea4_26 + - 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: 628220 - timestamp: 1762092993982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-netcdf-3.10.3-ha526aae_27.conda - sha256: 293194e6bfb40d1eb556f6f28a91d136b17bf15baa1b60dd392ed85c7283cb23 - md5: d37548143add322ffbb8f9a89c1112a3 + 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.10.3 h1f481a6_27 - - libgdal-hdf4 3.10.3.* - - libgdal-hdf5 3.10.3.* + - 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: 746132 - timestamp: 1763758281898 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-netcdf-3.10.3-hee41eee_27.conda - sha256: 216d2e2bcb5bd578f056cfd45b4734bebd3a6b420adb18b725818ef4e449b64a - md5: 800554ab958e64fbc4658470e0021bd0 + 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.10.3 hb8c6b92_27 - - libgdal-hdf4 3.10.3.* - - libgdal-hdf5 3.10.3.* + - 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: 694404 - timestamp: 1763764120492 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-netcdf-3.10.3-h1c3283e_27.conda - sha256: 2388d83cc465942acdb96673573f5babd848bb485bdc36aab20d39d4cbc7c1cf - md5: 5fc8c32f887fe53ffdcd5d4e23bf639b + 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.10.3 h9991b8b_27 - - libgdal-hdf4 3.10.3.* - - libgdal-hdf5 3.10.3.* + - 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: 673747 - timestamp: 1763767554839 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-netcdf-3.10.3-hbb26ad1_26.conda - sha256: d246739bb23d004c9b3823819cb5c66acaa4d44a45d0a7da25abfd558245fbb5 - md5: d6be3a1f935968bb16930b01cd454e15 + 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.10.3 h1a28ea4_26 - - libgdal-hdf4 3.10.3.* - - libgdal-hdf5 3.10.3.* + - 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: 681946 - timestamp: 1762095326817 -- 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 @@ -15295,30 +18421,30 @@ packages: - 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 @@ -15339,9 +18465,24 @@ packages: license: LicenseRef-libglvnd size: 113911 timestamp: 1731331012126 -- 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.84.3-hf39c6af_0.conda + sha256: e1ad3d9ddaa18f95ff5d244587fd1a37aca6401707f85a37f7d9b5002fcf16d0 + md5: 467f23819b1ea2b89c3fc94d65082301 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.45,<10.46.0a0 + constrains: + - glib 2.84.3 *_0 + license: LGPL-2.1-or-later + size: 3961899 + timestamp: 1754315006443 +- 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 @@ -15350,28 +18491,58 @@ 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 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.86.3-hf241ffe_0.conda - sha256: d205ecdd0873dd92f7b55ac9b266b2eb09236ff5f3b26751579e435bbaed499c - md5: 584ce14b08050d3f1a25ab429b9360bc + size: 4432190 + timestamp: 1771291719860 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.3-h5fed8df_0.conda + sha256: 28d60cfaa74dd5427b35941ea28069bfd87d4dfdaaae79b13e569b4b4c21098d + md5: 2bb92de7159f9c47a4455eb3c08484d8 depends: - __osx >=10.13 + - libffi >=3.4.6,<3.5.0a0 + - libiconv >=1.18,<2.0a0 + - libintl >=0.25.1,<1.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.45,<10.46.0a0 + constrains: + - glib 2.84.3 *_0 + license: LGPL-2.1-or-later + size: 3735183 + timestamp: 1754315274931 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.86.4-hec30fc1_0.conda + sha256: 4158f8e4473be55730a2c6612c871a3f8fd343ddc3512a2c8386714794f4ffb2 + md5: 138aefa25f4d5efec2ac224745ee82f6 + depends: + - __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: 4164823 + timestamp: 1771292404681 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.3-h587fa63_0.conda + sha256: a30510a18f0b85a036f99c744750611b5f26b972cfa70cc9f130b9f42e5bbc18 + md5: bb98995c244b6038892fd59a694a93ed + depends: + - __osx >=11.0 + - libffi >=3.4.6,<3.5.0a0 + - libiconv >=1.18,<2.0a0 + - libintl >=0.25.1,<1.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.45,<10.46.0a0 + constrains: + - glib 2.84.3 *_0 license: LGPL-2.1-or-later - size: 3708599 - timestamp: 1765222438844 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.86.3-hfe11c1f_0.conda - sha256: 801c1835aa35a4f6e45e2192ad668bd7238d95c90ef8f02c52ce859c20117285 - md5: 057c7247514048ebdaf89373b263ebee + size: 3661135 + timestamp: 1754315631978 +- 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 @@ -15380,30 +18551,30 @@ 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 -- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.2-hd9c3897_0.conda - sha256: 60fa317d11a6f5d4bc76be5ff89b9ac608171a00b206c688e3cc4f65c73b1bc4 - md5: fbd144e60009d93f129f0014a76512d3 + size: 4124444 + timestamp: 1771293559119 +- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.3-h1c1036b_0.conda + sha256: bd322efaebc369e188a1dd93030325a40753a4c009e92c1f82ec481a20f0d232 + md5: 2bcc00752c158d4a70e1eaccbf6fe8ae depends: - - libffi >=3.5.2,<3.6.0a0 + - libffi >=3.4.6,<3.5.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.45,<10.46.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 constrains: - - glib 2.86.2 *_0 + - glib 2.84.3 *_0 license: LGPL-2.1-or-later - size: 3793396 - timestamp: 1763672587079 -- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.3-h0c9aed9_0.conda - sha256: 84b74fc81fff745f3d21a26c317ace44269a563a42ead3500034c27e407e1021 - md5: c2d5b6b790ef21abac0b5331094ccb56 + size: 3826069 + timestamp: 1754315362939 +- 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 @@ -15414,10 +18585,10 @@ packages: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 constrains: - - glib 2.86.3 *_0 + - glib 2.86.4 *_0 license: LGPL-2.1-or-later - size: 3818991 - timestamp: 1765222145992 + size: 4080064 + timestamp: 1771291641559 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda sha256: a0105eb88f76073bbb30169312e797ed5449ebb4e964a756104d6e54633d17ef md5: 8422fcc9e5e172c91e99aef703b3ce65 @@ -15458,26 +18629,26 @@ 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 @@ -15533,6 +18704,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 @@ -15616,6 +18805,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 @@ -15698,6 +18903,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 @@ -15711,9 +18937,9 @@ packages: license_family: BSD size: 2449346 timestamp: 1765089858592 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libhwloc-2.12.1-default_h273dbb7_1003.conda - sha256: 2430293eb7c88961fe3430400a9ef69e5c9603fbdf502d12ab7fb2ff372e12ba - md5: 5a87dfe5dcdc54ca4dc839e1d3577785 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libhwloc-2.12.2-default_h273dbb7_1000.conda + sha256: ecc1d327c422ce84fc3ef90effdcb8d54122fe1f80509545c2394e0a0cd762e0 + md5: 56aaf4b7cc4c24e30cecc185bb08668d depends: - __osx >=10.13 - libcxx >=19 @@ -15721,11 +18947,11 @@ packages: - libxml2-16 >=2.14.6 license: BSD-3-Clause license_family: BSD - size: 2382686 - timestamp: 1765090134853 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.12.1-default_ha3cc4f2_1003.conda - sha256: ac2c289ab9be362fa2ca87f8a845366802bf426ab53fa9bc6f77479dfd59787d - md5: 3ef06cea314e3849c80a9fbbce58a132 + size: 2382366 + timestamp: 1765104175416 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.12.2-default_ha3cc4f2_1000.conda + sha256: 4d03bb9bc0a813cf5e24f07e6adec3c42df2c9c36e226b71cb1dc6c7868c7d90 + md5: 38b8aa4ea25d313ad951bcb7d3cd0ad3 depends: - __osx >=11.0 - libcxx >=19 @@ -15733,11 +18959,11 @@ packages: - libxml2-16 >=2.14.6 license: BSD-3-Clause license_family: BSD - size: 2354776 - timestamp: 1765090154322 -- conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.12.1-default_h4379cf1_1003.conda - sha256: 2d534c09f92966b885acb3f4a838f7055cea043165a03079a539b06c54e20a49 - md5: d1699ce4fe195a9f61264a1c29b87035 + size: 2356224 + timestamp: 1765104113197 +- conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.12.2-default_h4379cf1_1000.conda + sha256: 8cdf11333a81085468d9aa536ebb155abd74adc293576f6013fc0c85a7a90da3 + md5: 3b576f6860f838f950c570f4433b086e depends: - libwinpthread >=12.0.0.r4.gg4f2fc60ca - libxml2 @@ -15747,8 +18973,46 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 2412642 - timestamp: 1765090345611 + size: 2411241 + timestamp: 1765104337762 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.3.0-h4c17acf_1.conda + sha256: 2bdd1cdd677b119abc5e83069bec2e28fe6bfb21ebaea3cd07acee67f38ea274 + md5: c2a0c1d0120520e979685034e0b79859 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 OR BSD-3-Clause + size: 1448617 + timestamp: 1758894401402 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libhwy-1.3.0-hab838a1_1.conda + sha256: 2f49632a3fd9ec5e38a45738f495f8c665298b0b35e6c89cef8e0fbc39b3f791 + md5: bb8ff4fec8150927a54139af07ef8069 + depends: + - __osx >=10.13 + - libcxx >=19 + license: Apache-2.0 OR BSD-3-Clause + size: 1003288 + timestamp: 1758894613094 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwy-1.3.0-h48b13b8_1.conda + sha256: 837fe775ba8ec9f08655bb924e28dba390d917423350333a75fd5eeac0776174 + md5: 6375717f5fcd756de929a06d0e40fab0 + depends: + - __osx >=11.0 + - libcxx >=19 + license: Apache-2.0 OR BSD-3-Clause + size: 581579 + timestamp: 1758894814983 +- conda: https://conda.anaconda.org/conda-forge/win-64/libhwy-1.3.0-ha71e874_1.conda + sha256: c722a04f065656b988a46dee87303ff0bf037179c50e2e76704b693def7f9a96 + md5: f4649d4b6bf40d616eda57d6255d2333 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 OR BSD-3-Clause + size: 536186 + timestamp: 1758894243956 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f md5: 915f5995e94f60e9a4826e0b0920ee88 @@ -15853,6 +19117,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.2-ha09017c_0.conda + sha256: 0c2399cef02953b719afe6591223fb11d287d5a108ef8bb9a02dd509a0f738d7 + md5: 1df8c1b1d6665642107883685db6cf37 + depends: + - __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 + license: BSD-3-Clause + license_family: BSD + 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: + - 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 + license: BSD-3-Clause + license_family: BSD + 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 + - 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: 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 + - 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: 1317916 + timestamp: 1770801992810 - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-haa4a5bd_1022.conda sha256: aa55f5779d6bc7bf24dc8257f053d5a0708b5910b6bc6ea1396f15febf812c98 md5: 00f0f4a9d2eb174015931b1a234d61ca @@ -15918,6 +19236,7 @@ packages: - liblapacke 3.11.0 5*_openblas - libcblas 3.11.0 5*_openblas license: BSD-3-Clause + license_family: BSD size: 18200 timestamp: 1765818857876 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-5_h859234e_openblas.conda @@ -15931,6 +19250,7 @@ packages: - blas 2.305 openblas - liblapacke 3.11.0 5*_openblas license: BSD-3-Clause + license_family: BSD size: 18491 timestamp: 1765819090240 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-5_hd9741b5_openblas.conda @@ -15944,6 +19264,7 @@ packages: - blas 2.305 openblas - liblapacke 3.11.0 5*_openblas license: BSD-3-Clause + license_family: BSD size: 18551 timestamp: 1765819121855 - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.11.0-7_h018ca30_netlib.conda @@ -15973,6 +19294,7 @@ packages: constrains: - blas 2.305 openblas license: BSD-3-Clause + license_family: BSD size: 18225 timestamp: 1765818880545 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapacke-3.11.0-5_h94b3770_openblas.conda @@ -15986,6 +19308,7 @@ packages: constrains: - blas 2.305 openblas license: BSD-3-Clause + license_family: BSD size: 18537 timestamp: 1765819115127 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapacke-3.11.0-5_h1b118fd_openblas.conda @@ -15999,11 +19322,40 @@ packages: constrains: - blas 2.305 openblas license: BSD-3-Clause + license_family: BSD size: 18540 timestamp: 1765819136654 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.7-hf7376ad_0.conda - sha256: afe5c5cfc90dc8b5b394e21cf02188394e36766119ad5d78a1d8619d011bbfb1 - md5: 27dc1a582b442f24979f2a28641fe478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.8-hecd9e04_0.conda + sha256: a6fddc510de09075f2b77735c64c7b9334cf5a26900da351779b275d9f9e55e1 + md5: 59a7b967b6ef5d63029b1712f8dcf661 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libxml2 >=2.13.8,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 43987020 + timestamp: 1752141980723 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.0-hecd9e04_0.conda + sha256: d190f1bf322149321890908a534441ca2213a9a96c59819da6cabf2c5b474115 + md5: 9ad637a7ac380c442be142dfb0b1b955 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libxml2 >=2.13.8,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 44363060 + timestamp: 1756291822911 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda + sha256: 91bb4f5be1601b40b4995911d785e29387970f0b3c80f33f7f9028f95335399f + md5: 1a2708a460884d6861425b7f9a7bef99 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -16014,77 +19366,144 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 44320825 - timestamp: 1764711528746 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 - md5: 1a580f7796c7bf6393fddb8bbbde58dc + size: 44333366 + timestamp: 1765959132513 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda + sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb + md5: c7c83eecbb72d88b940c249af56c8b17 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 constrains: - - xz 5.8.1.* + - xz 5.8.2.* license: 0BSD - size: 112894 - timestamp: 1749230047870 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - sha256: 7e22fd1bdb8bf4c2be93de2d4e718db5c548aa082af47a7430eb23192de6bb36 - md5: 8468beea04b9065b9807fc8b9cdc5894 + size: 113207 + timestamp: 1768752626120 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.2-h11316ed_0.conda + sha256: 7ab3c98abd3b5d5ec72faa8d9f5d4b50dcee4970ed05339bc381861199dabb41 + md5: 688a0c3d57fa118b9c97bf7e471ab46c depends: - __osx >=10.13 constrains: - - xz 5.8.1.* + - xz 5.8.2.* license: 0BSD - size: 104826 - timestamp: 1749230155443 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - sha256: 0cb92a9e026e7bd4842f410a5c5c665c89b2eb97794ffddba519a626b8ce7285 - md5: d6df911d4564d77c4374b02552cb17d1 + size: 105482 + timestamp: 1768753411348 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.conda + sha256: 7bfc7ffb2d6a9629357a70d4eadeadb6f88fa26ebc28f606b1c1e5e5ed99dc7e + md5: 009f0d956d7bfb00de86901d16e486c7 depends: - __osx >=11.0 constrains: - - xz 5.8.1.* + - xz 5.8.2.* license: 0BSD - size: 92286 - timestamp: 1749230283517 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - sha256: 55764956eb9179b98de7cc0e55696f2eff8f7b83fc3ebff5e696ca358bca28cc - md5: c15148b2e18da456f5108ccb5e411446 + size: 92242 + timestamp: 1768752982486 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.2-hfd05255_0.conda + sha256: f25bf293f550c8ed2e0c7145eb404324611cfccff37660869d97abf526eb957c + md5: ba0bfd4c3cf73f299ffe46ff0eaeb8e3 depends: - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 constrains: - - xz 5.8.1.* + - xz 5.8.2.* license: 0BSD - size: 104935 - timestamp: 1749230611612 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda - sha256: 329e66330a8f9cbb6a8d5995005478188eb4ba8a6b6391affa849744f4968492 - md5: f61edadbb301530bd65a32646bd81552 + size: 106169 + timestamp: 1768752763559 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.2-hb03c661_0.conda + sha256: dd246f80c9c1c27b87e586c33cf36db9340fb8078e9b805429063c2af54d34a4 + md5: de60549ba9d8921dff3afa4b179e2a4b depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.8.1 hb9d3cd8_2 + - libgcc >=14 + - liblzma 5.8.2 hb03c661_0 license: 0BSD - size: 439868 - timestamp: 1749230061968 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_h11f7409_103.conda - sha256: e9a8668212719a91a6b0348db05188dfc59de5a21888db13ff8510918a67b258 - md5: 3ccff1066c05a1e6c221356eecc40581 + size: 465085 + timestamp: 1768752643506 +- 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 + - 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 + - libgcc >=14 + - libstdcxx >=14 + - 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 + - zlib + - zstd >=1.5.7,<1.6.0a0 + license: MIT + license_family: MIT + 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 + - 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.5,<2.0a0 + - libcurl >=8.18.0,<9.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libxml2 + - libxml2-16 >=2.14.6 + - libzip >=1.11.2,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: MIT + license_family: MIT + 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.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.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: MIT + license_family: MIT + 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 depends: - - __glibc >=2.17,<3.0.a0 - - attr >=2.5.2,<2.6.0a0 + - __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 - - libgcc >=14 - - libstdcxx >=14 - - libxml2 - - libxml2-16 >=2.14.6 + - libcxx >=19 + - 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 @@ -16092,13 +19511,13 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: MIT license_family: MIT - size: 871447 - timestamp: 1757977084313 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.3-nompi_habf9e57_103.conda - sha256: 6e8bd953ce27e10d0c029badbe3a60510f6724b59ed63d79dd8fdd1a795719ea - md5: 0c48ab0a8d7c3af9f592d33c3d99f7d6 + size: 726938 + timestamp: 1757402395207 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.3-nompi_h6808abe_102.conda + sha256: 0e4f48524bec74e53e97fb2149c4db33fc8b69d3db7668b7eec799d0b4c656f0 + md5: 50be32bb3251f3e24cf7568786640e84 depends: - - __osx >=10.13 + - __osx >=11.0 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - hdf4 >=4.2.15,<4.2.16.0a0 @@ -16106,8 +19525,7 @@ packages: - libaec >=1.1.4,<2.0a0 - libcurl >=8.14.1,<9.0a0 - libcxx >=19 - - 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 @@ -16115,41 +19533,40 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: MIT license_family: MIT - size: 728471 - timestamp: 1757977549393 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.3-nompi_h80c4520_103.conda - sha256: 60b5eff8d2347b20d7c435ba9b8e724bafb3ea9cc21da99b4339c6458dc48328 - md5: 926f5ea75a8e4ad5e8c026c07eab75ba + size: 684477 + timestamp: 1757402380009 +- 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 @@ -16157,12 +19574,33 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 + - zstd >=1.5.7,<1.6.0a0 + license: MIT + license_family: MIT + 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 + 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 + - libxml2 >=2.13.8,<2.14.0a0 + - libzip >=1.11.2,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - 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: 677496 + timestamp: 1757402219395 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda sha256: a4a7dab8db4dc81c736e9a9b42bdfd97b087816e029e221380511960ac46c690 md5: b499ce4b026493a13774bcf0f4c33849 @@ -16272,9 +19710,9 @@ packages: license_family: BSD size: 6268795 timestamp: 1763117623665 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_3.conda - sha256: dcc626c7103503d1dfc0371687ad553cb948b8ed0249c2a721147bdeb8db4a73 - md5: a18a7f471c517062ee71b843ef95eb8a +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_4.conda + sha256: ebbbc089b70bcde87c4121a083c724330f02a690fb9d7c6cd18c30f1b12504fa + md5: a6f6d3a31bb29e48d37ce65de54e2df0 depends: - __osx >=11.0 - libgfortran @@ -16284,8 +19722,8 @@ packages: - openblas >=0.3.30,<0.3.31.0a0 license: BSD-3-Clause license_family: BSD - size: 4285762 - timestamp: 1761749506256 + size: 4284132 + timestamp: 1768547079205 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda sha256: 215086c108d80349e96051ad14131b751d17af3ed2cb5a34edd62fa89bfe8ead md5: 7df50d44d4a14d6c31a2c54f2cd92157 @@ -16373,47 +19811,81 @@ packages: license_family: APACHE size: 363213 timestamp: 1751782889359 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-22.0.0-h7376487_6_cpu.conda - build_number: 6 - sha256: c6cc2a73091e5c460c3cbd606927d5ed85d3706e19459073e1ea023d1e754d13 - md5: 83fd8f55f38ac972947c9eca12dc4657 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-21.0.0-h790f06f_8_cpu.conda + build_number: 8 + sha256: 221bf7e71ad787ecffcd79db294552077daa8aa760fa20831cae0c095b9d3166 + md5: 80344ce1bdd57e68bd70e742430a408c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 22.0.0 hb6ed5f4_6_cpu + - libarrow 21.0.0 h56a6dad_8_cpu - libgcc >=14 - libstdcxx >=14 - libthrift >=0.22.0,<0.22.1.0a0 - openssl >=3.5.4,<4.0a0 license: Apache-2.0 license_family: APACHE - size: 1350396 - timestamp: 1765381452093 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-22.0.0-habb56ca_6_cpu.conda - build_number: 6 - sha256: 33042e728fe5072a3dc8d3f53c3bf7ccbcb4e31134539799ee9375bff4a52105 - md5: 886dc122316a8511edba3a3c53588916 + size: 1318386 + timestamp: 1759482004172 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.0-h7376487_2_cpu.conda + build_number: 2 + sha256: f8a747df762d1197196d6113a1fb56b9c6d396c1b37727f2caeef2887d3e0733 + md5: 64c8c3132e92b2d02e6b0bcdf7125090 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.0 h40b5c2d_2_cpu + - libgcc >=14 + - libstdcxx >=14 + - libthrift >=0.22.0,<0.22.1.0a0 + - openssl >=3.5.5,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 1393478 + timestamp: 1770434939323 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-21.0.0-ha67a804_8_cpu.conda + build_number: 8 + sha256: da4b38051288fc06c577bce4b397f53e0ff1309b6e2e83af7a4496791724c682 + md5: 4bc9d24acd24d125176a85554f517ed1 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 22.0.0 h563529e_6_cpu + - libarrow 21.0.0 h3202d62_8_cpu - libcxx >=19 - 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 license: Apache-2.0 - size: 1079312 - timestamp: 1765852540125 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-22.0.0-h0ac143b_6_cpu.conda - build_number: 6 - sha256: 329c6cd1fbeef6e91f8bc7a2e8bd28c50b72bc42e0a028d990e2281966f57ef5 - md5: 4939c8e3ca5f98f229be9f318df740e2 + license_family: APACHE + size: 1061306 + timestamp: 1759483989578 +- 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 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.5,<4.0a0 + license: Apache-2.0 + 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 + md5: 1225311b8705c89c676a382da38865e4 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 22.0.0 he6e817a_6_cpu + - libarrow 21.0.0 hd43feaf_8_cpu - libcxx >=19 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 @@ -16421,23 +19893,56 @@ packages: - openssl >=3.5.4,<4.0a0 license: Apache-2.0 license_family: APACHE - size: 1048992 - timestamp: 1765382997871 -- conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-22.0.0-h7051d1f_6_cpu.conda - build_number: 6 - sha256: c30839adc47e3ccd6f717c33632d9b482e83f7e087a24211416246f8f05e9a54 - md5: d840a2b45e737bb768ec4e0d5bf36c90 - depends: - - libarrow 22.0.0 h89d7da9_6_cpu + size: 1021610 + timestamp: 1759482399167 +- 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 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.5,<4.0a0 + license: Apache-2.0 + 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 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_1_cpu.conda + build_number: 1 + sha256: b11ba78018ab05cdd0ea5d367b73a1ac7ed729ccf0f8c217df7c54db46e53ea3 + md5: 656e0c56fa56543177430af7d0da7f80 + depends: + - libarrow 23.0.1 haed0678_1_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 license_family: APACHE - size: 927228 - timestamp: 1765382245972 + size: 945912 + timestamp: 1771551653695 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda sha256: 0bd91de9b447a2991e666f284ae8c722ffb1d84acb594dbd0c031bd656fa32b2 md5: 70e3400cbbfa03e96dcde7fc13e38c7b @@ -16448,48 +19953,48 @@ packages: license_family: MIT size: 28424 timestamp: 1749901812541 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.53-h421ea60_0.conda - sha256: 8acdeb9a7e3d2630176ba8e947caf6bf4985a5148dec69b801e5eb797856688b - md5: 00d4e66b1f746cb14944cad23fffb405 +- 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: 317748 - timestamp: 1764981060755 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.53-h380d223_0.conda - sha256: 62a861e407bf0d0a2a983d0b0167ed263ae035cae7061976e9994f9963e6c68d - md5: 0cdbbd56f660997cfe5d33e516afac2f + 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: 298397 - timestamp: 1764981064303 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.53-hfab5511_0.conda - sha256: 6793e7284e175c515fc6453be45c7c0febdea853657d246d8136fbda791dd0ad - md5: 62b6111feeffe607c3ecc8ca5bd1514b + 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: 288210 - timestamp: 1764981075326 -- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.53-h7351971_0.conda - sha256: e5d061e7bdb2b97227b6955d1aa700a58a5703b5150ab0467cc37de609f277b6 - md5: fb6f43f6f08ca100cb24cff125ab0d9e + 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: 383702 - timestamp: 1764981078732 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.1-h5c52fec_2.conda - sha256: bbab2c3e6f650f2bd1bc84d88e6a20fefa6a401fa445bb4b97c509c1b3a89fa8 - md5: a8ac9a6342569d1714ae1b53ae2fcadb + size: 383155 + timestamp: 1770691504832 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.7-h5c52fec_1.conda + sha256: 06a8ace6cc5ee47b85a5e64fad621e5912a12a0202398f54f302eb4e8b9db1fd + md5: a4769024afeab4b32ac8167c2f92c7ac depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 @@ -16498,48 +20003,61 @@ packages: - openldap >=2.6.10,<2.7.0a0 - openssl >=3.5.4,<4.0a0 license: PostgreSQL - size: 2711480 - timestamp: 1764345810429 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libpq-18.1-h1e038c5_2.conda - sha256: abaf961d69039e1a8f377e02c1f0e48173c347c3bb0d2d99508a1efdba9430c2 - md5: 5084757a93eb76dd26cbc85a4f38b0a3 + size: 2649881 + timestamp: 1763565297202 +- 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.2,<79.0a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=14 + - openldap >=2.6.10,<2.7.0a0 + - openssl >=3.5.5,<4.0a0 + license: PostgreSQL + size: 2809023 + timestamp: 1770915404394 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpq-18.2-hb73b81d_0.conda + sha256: 87e278568e4097bd01050f956712a20b32bab18fc676b075db876f474bfffbd7 + md5: 658f7ca7c772526d3063633953be3e59 depends: - __osx >=10.13 - - icu >=75.1,<76.0a0 + - icu >=78.2,<79.0a0 - krb5 >=1.21.3,<1.22.0a0 - openldap >=2.6.10,<2.7.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: PostgreSQL - size: 2703473 - timestamp: 1764346703796 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-18.1-h944245b_2.conda - sha256: 69373dee28ad3a5baeaf96ad1d62ea3580e54405d6aca07409f1f9fa18bb6885 - md5: 0ec602b45be7781667d92fb8e5373494 + size: 2753450 + timestamp: 1770915965086 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-18.2-h6caddbb_0.conda + sha256: c5df229177c964cce817739b4b59e1e1ceec315d4e6a30c70cb4994cf27390aa + md5: 41ae8b0d426096e1d11bd83d8ca949f5 depends: - __osx >=11.0 - - icu >=75.1,<76.0a0 + - icu >=78.2,<79.0a0 - krb5 >=1.21.3,<1.22.0a0 - openldap >=2.6.10,<2.7.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: PostgreSQL - size: 2706308 - timestamp: 1764346615183 -- conda: https://conda.anaconda.org/conda-forge/win-64/libpq-18.1-h7c87ebf_2.conda - sha256: 655e7d31f9e8c852afa70a58c6a11ba41b5bc0fdc708f9b960b8f39164d4f03d - md5: 9201300ff092ed40762d44d5695b0bad + size: 2643395 + timestamp: 1770916690384 +- conda: https://conda.anaconda.org/conda-forge/win-64/libpq-18.2-h9e1d4a5_0.conda + sha256: ec3a62412260792e1df2fab4af6231a2a348221b7d0d00945ea29532d0ec1a03 + md5: 54e4aafaa37b0f4db9832ed01a0f936a depends: - - icu >=75.1,<76.0a0 + - icu >=78.2,<79.0a0 - krb5 >=1.21.3,<1.22.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: PostgreSQL - size: 4094980 - timestamp: 1764345918394 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_2.conda - sha256: 1679f16c593d769f3dab219adb1117cbaaddb019080c5a59f79393dc9f45b84f - md5: 94cb88daa0892171457d9fdc69f43eca + size: 4104287 + timestamp: 1770915779227 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda + sha256: 0ef142ac31e6fd59b4af89ac800acb6deb3fbd9cc4ccf070c03cc2c784dc7296 + md5: 07479fc04ba3ddd5d9f760ef1635cfa7 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -16549,11 +20067,11 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 4645876 - timestamp: 1760550892361 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-h03562ea_2.conda - sha256: 40a32a77cdb7f7b49187a4c9faf5c7812d95233288ab96b06e0dd9978ecd8e6d - md5: 39b7711c03a0d0533e832e734641e56e + size: 4372578 + timestamp: 1766316228461 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-hcc66ac3_4.conda + sha256: 2058eb9748a6e29a1821fea8aeea48e87d73c83be47b0504ac03914fee944d0e + md5: f22705f9ebb3f79832d635c4c2919b15 depends: - __osx >=11.0 - libabseil * cxx17* @@ -16562,11 +20080,11 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 3550823 - timestamp: 1760550860606 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h658db43_2.conda - sha256: a01c3829eb0e3c1354ee7d61c5cde9a79dcebe6ccc7114c2feadf30aecbc7425 - md5: 155d3d17eaaf49ddddfe6c73842bc671 + size: 3079808 + timestamp: 1766315644973 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h98f38fd_4.conda + sha256: 505d62fb2a487aff594a30f6c419f8e861fb3a47e25e407dae2779ac4a585b18 + md5: 8a6b4281c176f1695ae0015f420e6aa9 depends: - __osx >=11.0 - libabseil * cxx17* @@ -16575,11 +20093,11 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2982875 - timestamp: 1760550241203 -- conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-6.31.1-hdcda5b4_2.conda - sha256: bb28909aef3777c5e950b769b30fe4bf02e0a7fb5322e583042a5cdc76bb15d0 - md5: 0e44c704760bbe4b696d981c3313f665 + size: 3131502 + timestamp: 1766315339805 +- conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-6.31.1-hdcda5b4_4.conda + sha256: a0f78f254f5833c8ec3ac38caf5dd7d826b5d7496df5aebc4b11baabd741e041 + md5: 2031f591ca8c1289838a4f85ea1c7e74 depends: - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 @@ -16589,8 +20107,22 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 7787239 - timestamp: 1760550955606 + 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 @@ -16634,6 +20166,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 @@ -16649,52 +20196,101 @@ packages: license_family: BSD size: 263996 timestamp: 1762397947932 -- 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.58.4-he92a37e_3.conda + sha256: a45ef03e6e700cc6ac6c375e27904531cf8ade27eb3857e080537ff283fb0507 + md5: d27665b20bc4d074b86e628b3ba5ab8b + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - freetype >=2.13.3,<3.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - harfbuzz >=11.0.0,<12.0a0 + - libgcc >=13 + - libglib >=2.84.0,<3.0a0 + - libpng >=1.6.47,<1.7.0a0 + - libxml2 >=2.13.7,<2.14.0a0 + - pango >=1.56.3,<2.0a0 + constrains: + - __glibc >=2.17 + license: LGPL-2.1-or-later + size: 6543651 + timestamp: 1743368725313 +- 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 -- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.60.0-h2da6fc3_0.conda - sha256: 9ac53c255af84a3913015796797785f6a94e12ea991e1c36735c5aefaf70ebca - md5: 0e5609c0f8e5421e43301bcc3c5e1985 + size: 4011590 + timestamp: 1771399906142 +- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda + sha256: 87432fca28ddfaaf82b3cd12ce4e31fcd963428d1f2c5e2a3aef35dd30e56b71 + md5: 213dcdb373bf108d1beb18d33075f51d depends: - __osx >=10.13 - cairo >=1.18.4,<2.0a0 - - gdk-pixbuf >=2.44.3,<3.0a0 - - libglib >=2.86.0,<3.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - libglib >=2.84.0,<3.0a0 + - libxml2 >=2.13.7,<2.14.0a0 + - pango >=1.56.3,<2.0a0 + constrains: + - __osx >=10.13 + license: LGPL-2.1-or-later + size: 4946543 + timestamp: 1743368938616 +- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.60.0-h99749c4_1.conda + sha256: 007872d3fac8aa95323b5bc8b704eb92d1ac03b7c62c882f7f917b9b8c35492b + md5: 6477841b81291fb8573d0244816bde19 + depends: + - __osx >=11.0 + - cairo >=1.18.4,<2.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 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.60.0-h5c55ec3_0.conda - sha256: ca5a2de5d3f68e8d6443ea1bf193c1596a278e6f86018017c0ccd4928eaf8971 - md5: 05ad1d6b6fb3b384f7a07128025725cb + size: 2384779 + timestamp: 1771302537173 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda + sha256: 0ec066d7f22bcd9acb6ca48b2e6a15e9be4f94e67cb55b0a2c05a37ac13f9315 + md5: 95d6ad8fb7a2542679c08ce52fafbb6c + depends: + - __osx >=11.0 + - cairo >=1.18.4,<2.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - libglib >=2.84.0,<3.0a0 + - libxml2 >=2.13.7,<2.14.0a0 + - pango >=1.56.3,<2.0a0 + constrains: + - __osx >=11.0 + license: LGPL-2.1-or-later + size: 4607782 + timestamp: 1743369546790 +- 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 @@ -16707,6 +20303,18 @@ packages: license_family: GPL size: 231670 timestamp: 1761670395043 +- conda: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-hd718a1a_18.conda + sha256: 394cf4356e0e26c4c95c9681e01e4def77049374ac78b737193e38c1861e8042 + md5: 4f40dea96ff9935e7bd48893c24891b9 + depends: + - __glibc >=2.17,<3.0.a0 + - geos >=3.13.1,<3.13.2.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: GPL-2.0-or-later + license_family: GPL + size: 232698 + timestamp: 1741167016983 - conda: https://conda.anaconda.org/conda-forge/osx-64/librttopo-1.1.0-h16cd5d8_20.conda sha256: e3613fabe6ce2fa1329f98a0be49df4529553f5632706c90fd3b56209a5a739f md5: 32837d365266ad66fcf849b7a92fb5fa @@ -16718,6 +20326,28 @@ packages: license_family: GPL size: 215501 timestamp: 1761670645302 +- conda: https://conda.anaconda.org/conda-forge/osx-64/librttopo-1.1.0-hd2ea1e3_18.conda + sha256: 7a927ca3c12d103f2c5829b2c33409cd651c3f3c648cdf53592fa848c9e72118 + md5: 425adac1dfc1169beb97753b5167fc5f + depends: + - __osx >=10.13 + - geos >=3.13.1,<3.13.2.0a0 + - libcxx >=18 + license: GPL-2.0-or-later + license_family: GPL + size: 214379 + timestamp: 1741167133138 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librttopo-1.1.0-h26cc057_18.conda + sha256: d44060c2980e45e6392a045b55bfdde440819346251daa2400b527007fd727e2 + md5: d324443cad810cf90608d8b2330fcc59 + depends: + - __osx >=11.0 + - geos >=3.13.1,<3.13.2.0a0 + - libcxx >=18 + license: GPL-2.0-or-later + license_family: GPL + size: 192154 + timestamp: 1741167142737 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librttopo-1.1.0-ha909e78_20.conda sha256: 2b28c777889b1b638244f65d5bef4a8ba4624bdb740cecf26c845876653552c2 md5: d07359797436cfc891b38e203cf0caac @@ -16741,6 +20371,18 @@ packages: license_family: GPL size: 403088 timestamp: 1761671197546 +- conda: https://conda.anaconda.org/conda-forge/win-64/librttopo-1.1.0-hbfc9ebc_18.conda + sha256: 10aa38ae0b2e590368db0cadd8457890f62e23aa10d7f34c0d60f9cc4251ad53 + md5: 42a234d3a722c3fb3a332a3f67d6916b + depends: + - geos >=3.13.1,<3.13.2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: GPL-2.0-or-later + license_family: GPL + size: 404655 + timestamp: 1741167186009 - conda: https://conda.anaconda.org/conda-forge/linux-64/libscotch-7.0.4-h2fe6a88_5.conda sha256: 218ddc7a3d5f55f78edf0b78262c0988e70ee9a630c35f45098dae37591c558b md5: dd1e1c54432494476d66c679014c675c @@ -16755,34 +20397,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 @@ -16840,6 +20480,27 @@ packages: license_family: MOZILLA size: 4097449 timestamp: 1761681679109 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-he17ca71_14.conda + sha256: 82f7f5f4498a561edf84146bfcff3197e8b2d8796731d354446fc4fd6d058e94 + md5: d010b5907ed39fdb93eb6180ab925115 + depends: + - __glibc >=2.17,<3.0.a0 + - freexl >=2 + - freexl >=2.0.0,<3.0a0 + - geos >=3.13.1,<3.13.2.0a0 + - libgcc >=13 + - librttopo >=1.1.0,<1.2.0a0 + - libsqlite >=3.49.1,<4.0a0 + - libstdcxx >=13 + - libxml2 >=2.13.6,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - proj >=9.6.0,<9.7.0a0 + - sqlite + - zlib + license: MPL-1.1 + license_family: MOZILLA + size: 4047775 + timestamp: 1742308519433 - conda: https://conda.anaconda.org/conda-forge/osx-64/libspatialite-5.1.0-gpl_hb921464_119.conda sha256: 4f4a08255e92e4c320252a7693cc27ba27e731a48f8fd5e41a76c1a671bb82e3 md5: 14067124e9dd23b72cd78d68d78fac03 @@ -16863,6 +20524,27 @@ packages: license_family: MOZILLA size: 3164968 timestamp: 1761682127133 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libspatialite-5.1.0-hf0eb338_14.conda + sha256: 427fdb65b2d40c9bbe029e5728a5e4db4af07d2b23899e62982d55e765546118 + md5: 11031c4dfd7426bd0ed67ce4b5f59ffc + depends: + - __osx >=10.13 + - freexl >=2 + - freexl >=2.0.0,<3.0a0 + - geos >=3.13.1,<3.13.2.0a0 + - libcxx >=18 + - libiconv >=1.18,<2.0a0 + - librttopo >=1.1.0,<1.2.0a0 + - libsqlite >=3.49.1,<4.0a0 + - libxml2 >=2.13.6,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - proj >=9.6.0,<9.7.0a0 + - sqlite + - zlib + license: MPL-1.1 + license_family: MOZILLA + size: 3144268 + timestamp: 1742308894421 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libspatialite-5.1.0-gpl_ha239c29_119.conda sha256: 631e1bca330abc13bcbb0a16aea47aec969ddd5a82f695bdc840497069fc1dec md5: babf54eb886241155434878f728ea099 @@ -16886,6 +20568,27 @@ packages: license_family: MOZILLA size: 2712485 timestamp: 1761681521138 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libspatialite-5.1.0-hea0a7cd_14.conda + sha256: f586ba7ffa445514bf97778c3f6720a83980e8e9a4aa8c95f060d5ecf3ea531a + md5: c2d44056e47c6985bb1dbe8c60788f64 + depends: + - __osx >=11.0 + - freexl >=2 + - freexl >=2.0.0,<3.0a0 + - geos >=3.13.1,<3.13.2.0a0 + - libcxx >=18 + - libiconv >=1.18,<2.0a0 + - librttopo >=1.1.0,<1.2.0a0 + - libsqlite >=3.49.1,<4.0a0 + - libxml2 >=2.13.6,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - proj >=9.6.0,<9.7.0a0 + - sqlite + - zlib + license: MPL-1.1 + license_family: MOZILLA + size: 2942231 + timestamp: 1742308744175 - conda: https://conda.anaconda.org/conda-forge/win-64/libspatialite-5.1.0-gpl_h0cd62ae_119.conda sha256: c34dd6238ac4723b83b2155b18e7a91ce70dc80b422a50b19c4c713c7c6a8d80 md5: c0eeff876d19f52efddccbd4887bb66f @@ -16909,6 +20612,27 @@ packages: license_family: MOZILLA size: 8671657 timestamp: 1761681604524 +- conda: https://conda.anaconda.org/conda-forge/win-64/libspatialite-5.1.0-h378fb81_14.conda + sha256: 2a32368acce3c70a26e5600be369d78223e75db21907adf0454cfa30b63029e3 + md5: 58904bcd0b61948946e4efff5e4e3bbd + depends: + - freexl >=2 + - freexl >=2.0.0,<3.0a0 + - geos >=3.13.1,<3.13.2.0a0 + - librttopo >=1.1.0,<1.2.0a0 + - libsqlite >=3.49.1,<4.0a0 + - libxml2 >=2.13.6,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - proj >=9.6.0,<9.7.0a0 + - sqlite + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zlib + license: MPL-1.1 + license_family: MOZILLA + size: 8277831 + timestamp: 1742308854436 - conda: https://conda.anaconda.org/conda-forge/linux-64/libspral-2025.05.20-hfabd9d1_1.conda sha256: c9faa24e14ecdcf666b79fab8961c93562d20626c473a5df108b5c17e8873ab2 md5: 9f54808199531c466b437215d8dd5c29 @@ -16929,45 +20653,65 @@ packages: license_family: BSD size: 360447 timestamp: 1756123740608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.1-h0c1763c_0.conda - sha256: 6f0e8a812e8e33a4d8b7a0e595efe28373080d27b78ee4828aa4f6649a088454 - md5: 2e1b84d273b01835256e53fd938de355 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-h0c1763c_0.conda + sha256: c1ff4589b48d32ca0a2628970d869fa9f7b2c2d00269a3761edc7e9e4c1ab7b8 + md5: f7d30045eccb83f2bb8053041f42db3c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + license: blessing + size: 939312 + timestamp: 1768147967568 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-hf4e2dac_0.conda + sha256: 04596fcee262a870e4b7c9807224680ff48d4d0cc0dac076a602503d3dc6d217 + md5: da5be73701eecd0e8454423fd6ffcf30 depends: - __glibc >=2.17,<3.0.a0 + - icu >=78.2,<79.0a0 - libgcc >=14 - libzlib >=1.3.1,<2.0a0 license: blessing - size: 938979 - timestamp: 1764359444435 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.1-h6cc646a_0.conda - sha256: 8460901daff15749354f0de143e766febf0682fe9201bf307ea84837707644d1 - md5: f71213ed0c51030cb17a77fc60a757f1 + size: 942808 + timestamp: 1768147973361 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.2-hb99441e_0.conda + sha256: 710a7ea27744199023c92e66ad005de7f8db9cf83f10d5a943d786f0dac53b7c + md5: d910105ce2b14dfb2b32e92ec7653420 depends: - __osx >=10.13 - - icu >=75.1,<76.0a0 - libzlib >=1.3.1,<2.0a0 license: blessing - size: 991350 - timestamp: 1764359781222 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h9a5124b_0.conda - sha256: a46b167447e2a9e38586320c30b29e3b68b6f7e6b873c18d6b1aa2efd2626917 - md5: 67e50e5bd4e5e2310d66b88c4da50096 + size: 987506 + timestamp: 1768148247615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.2-h1ae2325_0.conda + sha256: 6e9b9f269732cbc4698c7984aa5b9682c168e2a8d1e0406e1ff10091ca046167 + md5: 4b0bf313c53c3e89692f020fb55d5f2c + depends: + - __osx >=11.0 + - icu >=78.2,<79.0a0 + - libzlib >=1.3.1,<2.0a0 + license: blessing + size: 909777 + timestamp: 1768148320535 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.2-h1b79a29_0.conda + sha256: f942afee5568a0bfba020e52c3f22b788e14017a8dc302652d2ca500756a8a5a + md5: faedef456ba5004af365d450eb38217d depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: blessing - size: 906292 - timestamp: 1764359907797 -- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.1-hf5d6505_0.conda - sha256: a976c8b455d9023b83878609bd68c3b035b9839d592bd6c7be7552c523773b62 - md5: f92bef2f8e523bb0eabe60099683617a + size: 905482 + timestamp: 1768148270069 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.2-hf5d6505_0.conda + sha256: 756478128e3e104bd7e7c3ce6c1b0efad7e08c7320c69fdc726e039323c63fbb + md5: 903979414b47d777d548e5f0165e6cd8 depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: blessing - size: 1291059 - timestamp: 1764359545703 + size: 1291616 + timestamp: 1768148278261 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661 md5: eecce068c7e4eddeb169591baac20ac4 @@ -17014,27 +20758,27 @@ 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 @@ -17089,6 +20833,23 @@ packages: license_family: APACHE size: 636513 timestamp: 1753277481158 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h8261f1e_0.conda + sha256: ddda0d7ee67e71e904a452010c73e32da416806f5cb9145fb62c322f97e717fb + md5: 72b531694ebe4e8aa6f5745d1015c1b4 + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.24,<1.25.0a0 + - libgcc >=14 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libstdcxx >=14 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: HPND + size: 437211 + timestamp: 1758278398952 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0 md5: cd5a90476766d53e901500df9215e927 @@ -17122,22 +20883,70 @@ packages: license: HPND size: 404591 timestamp: 1762022511178 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-haa3b502_0.conda + sha256: 667bdfa1d2956952bca26adfb01a0848f716fea72afe29a684bd107ba8ec0a3c + md5: 9aeb6f2819a41937d670e73f15a12da5 + depends: + - __osx >=10.13 + - lerc >=4.0.0,<5.0a0 + - libcxx >=19 + - libdeflate >=1.24,<1.25.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: HPND + size: 404501 + timestamp: 1758278988445 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h4030677_1.conda sha256: e9248077b3fa63db94caca42c8dbc6949c6f32f94d1cafad127f9005d9b1507f md5: e2a72ab2fa54ecb6abab2b26cde93500 depends: - - __osx >=11.0 + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=19 + - libdeflate >=1.25,<1.26.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: HPND + size: 373892 + timestamp: 1762022345545 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h7dc4979_0.conda + sha256: 6bc1b601f0d3ee853acd23884a007ac0a0290f3609dabb05a47fc5a0295e2b53 + md5: 2bb9e04e2da869125e2dc334d665f00d + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=19 + - libdeflate >=1.24,<1.25.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: HPND + size: 373640 + timestamp: 1758278641520 +- conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.1-h550210a_0.conda + sha256: d6cac6596ded0d5bbbc4198d7eb4db88da8c00236ebf5e2c8ad333ccde8965e2 + md5: e23f29747d9d2aa2a39b594c114fac67 + depends: - lerc >=4.0.0,<5.0a0 - - libcxx >=19 - - libdeflate >=1.25,<1.26.0a0 + - libdeflate >=1.24,<1.25.0a0 - libjpeg-turbo >=3.1.0,<4.0a0 - liblzma >=5.8.1,<6.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 - zstd >=1.5.7,<1.6.0a0 license: HPND - size: 373892 - timestamp: 1762022345545 + size: 992060 + timestamp: 1758278535260 - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.1-h8f73337_1.conda sha256: f1b8cccaaeea38a28b9cd496694b2e3d372bb5be0e9377c9e3d14b330d1cba8a md5: 549845d5133100142452812feb9ba2e8 @@ -17154,55 +20963,55 @@ packages: license: HPND size: 993166 timestamp: 1762022118895 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.2-hfe17d71_0.conda - sha256: 98812901f52df746f89e1fda2a65494dd30de9e826f89b49ebad5d53e5fc424d - md5: 5641725dfad698909ec71dac80d16736 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda + sha256: ecbf4b7520296ed580498dc66a72508b8a79da5126e1d6dc650a7087171288f9 + md5: 1247168fe4a0b8912e3336bccdbf98a5 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 license: MIT license_family: MIT - size: 85985 - timestamp: 1764062044259 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.2-h7983711_0.conda - sha256: 83f2799e28643c7793730aa32e007832ffb520c5d77714d2097c227424f33ef1 - md5: e630b1baa02a5eeb0ef351c6125865c4 + size: 85969 + timestamp: 1768735071295 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.3-hc282952_0.conda + sha256: 626db214208e8da6aa9a904518a0442e5bff7b4602cc295dd5ce1f4a98844c1d + md5: 2c49b6f6ec9a510bbb75ecbd2a572697 depends: - __osx >=10.13 license: MIT license_family: MIT - size: 84943 - timestamp: 1764062312835 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.2-hd2415e0_0.conda - sha256: 5c7d4268a1bd02f3cbba6d8a8f9bd47829a46dbc81690a39b1c05e698c180570 - md5: 1ae98806b064c48f184d7c6e0ac506b6 + size: 84535 + timestamp: 1768735249136 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.3-h2431656_0.conda + sha256: ae1a82e62cd4e3c18e005ae7ff4358ed72b2bfbfe990d5a6a5587f81e9a100dc + md5: 2255add2f6ae77d0a96624a5cbde6d45 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 88014 - timestamp: 1764062565080 -- conda: https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.11.2-hb980946_0.conda - sha256: ff63a5e402fb5007174ea9796a210617da898a43d00b4e8a3192537cad0bd403 - md5: 405c392813b74f3df06276e99c0e2841 + size: 87916 + timestamp: 1768735311947 +- conda: https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.11.3-hb980946_0.conda + sha256: 5d82af0779eab283416240da792a0d2fe4f8213c447e9f04aeaab1801468a90c + md5: 5f34fcb6578ea9bdbfd53cc2cfb88200 depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - size: 89116 - timestamp: 1764062179403 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-h5347b49_1.conda - sha256: 030447cf827c471abd37092ab9714fde82b8222106f22fde94bc7a64e2704c40 - md5: 41f5c09a211985c3ce642d60721e7c3e + size: 89061 + timestamp: 1768735187639 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda + sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee + md5: db409b7c1720428638e7c0d509d3e1b5 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 license: BSD-3-Clause license_family: BSD - size: 40235 - timestamp: 1764790744114 + size: 40311 + timestamp: 1766271528534 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda sha256: c180f4124a889ac343fc59d15558e93667d894a966ec6fdb61da1604481be26b md5: 0f03292cc56bf91a077a134ea8747118 @@ -17231,37 +21040,34 @@ packages: license_family: MIT size: 421195 timestamp: 1753948426421 -- 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 @@ -17379,6 +21185,21 @@ packages: license: LGPL-2.1-or-later size: 100393 timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.11.0-he8b52b9_0.conda + sha256: 23f47e86cc1386e7f815fa9662ccedae151471862e971ea511c5c886aa723a54 + md5: 74e91c36d0eef3557915c68b6c2bef96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.8,<2.14.0a0 + - xkeyboard-config + - xorg-libxau >=1.0.12,<2.0a0 + license: MIT/X11 Derivative + license_family: MIT + size: 791328 + timestamp: 1754703902365 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.1-hca5e8e5_0.conda sha256: d2195b5fbcb0af1ff7b345efdf89290c279b8d1d74f325ae0ac98148c375863c md5: 2bca1fbb221d9c3c8e3a155784bbc2e9 @@ -17395,71 +21216,124 @@ packages: license_family: MIT size: 837922 timestamp: 1764794163823 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-h26afc86_0.conda - sha256: ec0735ae56c3549149eebd7dc22c0bed91fd50c02eaa77ff418613ddda190aa8 - md5: e512be7dc1f84966d50959e900ca121f +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.9-h04c0eec_0.conda + sha256: 5d12e993894cb8e9f209e2e6bef9c90fa2b7a339a1f2ab133014b71db81f5d88 + md5: 35eeb0a2add53b1e50218ed230fa6a02 depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 - libgcc >=14 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.1,<6.0a0 - - libxml2-16 2.15.1 ha9997c6_0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT - size: 45283 - timestamp: 1761015644057 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h7b7ecba_0.conda - sha256: ddf87bf05955d7870a41ca6f0e9fbd7b896b5a26ec1a98cd990883ac0b4f99bb - md5: e7ed73b34f9d43d80b7e80eba9bce9f3 + size: 697033 + timestamp: 1761766011241 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-he237659_1.conda + sha256: 047be059033c394bd32ae5de66ce389824352120b3a7c0eff980195f7ed80357 + md5: 417955234eccd8f252b86a265ccdab7f + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.1,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libxml2-16 2.15.1 hca6bf5a_1 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 45402 + timestamp: 1766327161688 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.9-he1bc88e_0.conda + sha256: 151e653e72b9de48bdeb54ae0664b490d679d724e618649997530a582a67a5fb + md5: af41ebf4621373c4eeeda69cc703f19c depends: - __osx >=10.13 - icu >=75.1,<76.0a0 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.1,<6.0a0 - - libxml2-16 2.15.1 ha1d9b0f_0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT - size: 39985 - timestamp: 1761015935429 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h9329255_0.conda - sha256: c409e384ddf5976a42959265100d6b2c652017d250171eb10bae47ef8166193f - md5: fb5ce61da27ee937751162f86beba6d1 + size: 609937 + timestamp: 1761766325697 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.1-h24ca049_1.conda + sha256: 24ecb3a3eed2b17cec150714210067cafc522dec111750cbc44f5921df1ffec3 + md5: c58fc83257ad06634b9c935099ef2680 + depends: + - __osx >=10.13 + - icu >=78.1,<79.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libxml2-16 2.15.1 he456531_1 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 40016 + timestamp: 1766327339623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.9-h4a9ca0c_0.conda + sha256: 7ab9b3033f29ac262cd3c846887e5b512f5916c3074d10f298627d67b7a32334 + md5: 763c7e76295bf142145d5821f251b884 depends: - __osx >=11.0 - icu >=75.1,<76.0a0 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.1,<6.0a0 - - libxml2-16 2.15.1 h0ff4647_0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 581379 + timestamp: 1761766437117 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h8d039ee_1.conda + sha256: 59f96fa27cce6a9a27414c5bb301eedda1a1b85cd0d8f5d68f77e46b86e7c95f + md5: fd804ee851e20faca4fecc7df0901d07 + depends: + - __osx >=11.0 + - icu >=78.1,<79.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libxml2-16 2.15.1 h5ef1a60_1 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT size: 40607 - timestamp: 1761016108361 -- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.1-ha29bfb0_0.conda - sha256: fb51b91a01eac9ee5e26c67f4e081f09f970c18a3da5231b8172919a1e1b3b6b - md5: 87116b9de9c1825c3fd4ef92c984877b + timestamp: 1766327501392 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.9-h741aa76_0.conda + sha256: 28ac5bbed11644b9e06241ba1dfdac7e3a99e74b69915d45f646717ad9645ca5 + md5: 333d21ab129d5fa5742225bf1d7557a5 depends: - - icu >=75.1,<76.0a0 + - libiconv >=1.18,<2.0a0 + - 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: 1521446 + timestamp: 1761766307746 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.1-h779ef1b_1.conda + sha256: 8b47d5fb00a6ccc0f495d16787ab5f37a434d51965584d6000966252efecf56d + md5: 68dc154b8d415176c07b6995bd3a65d9 + depends: + - 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 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-ha9997c6_0.conda - sha256: 71436e72a286ef8b57d6f4287626ff91991eb03c7bdbe835280521791efd1434 - md5: e7733bc6785ec009e47a224a71917e84 + 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 depends: - __glibc >=2.17,<3.0.a0 - - icu >=75.1,<76.0a0 + - icu >=78.1,<79.0a0 - libgcc >=14 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.1,<6.0a0 @@ -17468,14 +21342,14 @@ packages: - libxml2 2.15.1 license: MIT license_family: MIT - size: 556302 - timestamp: 1761015637262 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-ha1d9b0f_0.conda - sha256: e23c5ac1da7b9b65bd18bf32b68717cd9da0387941178cb4d8cc5513eb69a0a9 - md5: 453807a4b94005e7148f89f9327eb1b7 + size: 555747 + timestamp: 1766327145986 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.1-he456531_1.conda + sha256: eff0894cd82f2e055ea761773eb80bfaacdd13fbdd427a80fe0c5b00bf777762 + md5: 6cd21078a491bdf3fdb7482e1680ef63 depends: - __osx >=10.13 - - 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 @@ -17483,14 +21357,14 @@ packages: - libxml2 2.15.1 license: MIT license_family: MIT - size: 494318 - timestamp: 1761015899881 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h0ff4647_0.conda - sha256: ebe2dd9da94280ad43da936efa7127d329b559f510670772debc87602b49b06d - md5: 438c97d1e9648dd7342f86049dd44638 + size: 494450 + timestamp: 1766327317287 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h5ef1a60_1.conda + sha256: 2d5ab15113b0ba21f4656d387d26ab59e4fbaf3027f5e58a2a4fe370821eb106 + md5: 7eed1026708e26ee512f43a04d9d0027 depends: - __osx >=11.0 - - 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 @@ -17498,13 +21372,13 @@ packages: - libxml2 2.15.1 license: MIT license_family: MIT - size: 464952 - timestamp: 1761016087733 -- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h06f855e_0.conda - sha256: 3f65ea0f04c7738116e74ca87d6e40f8ba55b3df31ef42b8cb4d78dd96645e90 - md5: 4a5ea6ec2055ab0dfd09fd0c498f834a + size: 464886 + timestamp: 1766327479416 +- 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 @@ -17515,71 +21389,71 @@ packages: - libxml2 2.15.1 license: MIT license_family: MIT - size: 518616 - timestamp: 1761016240185 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.1-h26afc86_0.conda - sha256: 7a01dde0807d0283ef6babb661cb750f63d7842f489b6e40d0af0f16951edf3e - md5: 1b92b7d1b901bd832f8279ef18cac1f4 + 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 depends: - __glibc >=2.17,<3.0.a0 - - icu >=75.1,<76.0a0 + - icu >=78.1,<79.0a0 - libgcc >=14 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.1,<6.0a0 - - libxml2 2.15.1 h26afc86_0 - - libxml2-16 2.15.1 ha9997c6_0 + - libxml2 2.15.1 he237659_1 + - libxml2-16 2.15.1 hca6bf5a_1 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT - size: 79667 - timestamp: 1761015650428 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-devel-2.15.1-h7b7ecba_0.conda - sha256: e2f50cbcd5f8bc880decf3e734d87aac05f9cd97f48404a48a2bde528f205b69 - md5: d48da211fb9523b22a299bce824c1242 + size: 79680 + timestamp: 1766327176426 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-devel-2.15.1-h24ca049_1.conda + sha256: 5db52eae7357f89c16d08ab21ec89b35a7361e1d7be277716505e9764fe37eb8 + md5: cc1c67f0676478f972e26c5649ea68ac depends: - __osx >=10.13 - - 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 h7b7ecba_0 - - libxml2-16 2.15.1 ha1d9b0f_0 + - libxml2 2.15.1 h24ca049_1 + - libxml2-16 2.15.1 he456531_1 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT - size: 79819 - timestamp: 1761015961507 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-devel-2.15.1-h9329255_0.conda - sha256: a6b0ccafa8b2c22bc4850f6e0e58b3bd931571f62143b26650d7e3826a275580 - md5: 7d270ae441104772ef25a7adfb8f4e6e + size: 79886 + timestamp: 1766327359472 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-devel-2.15.1-h8d039ee_1.conda + sha256: a51ac5f66270b5f21b6669d705531208ab599a8744c7e60c1638229e22c8267d + md5: 8975a4d0277920627000f0126c3c2b48 depends: - __osx >=11.0 - - 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 h9329255_0 - - libxml2-16 2.15.1 h0ff4647_0 + - libxml2 2.15.1 h8d039ee_1 + - libxml2-16 2.15.1 h5ef1a60_1 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT - size: 79949 - timestamp: 1761016123864 -- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-devel-2.15.1-ha29bfb0_0.conda - sha256: ac4add7375c9ff75bfd036a05d51b272e0fb2317bc38ca81f550238d2c1bc146 - md5: 11767c61201ec4eaeb8555532355fe4f + size: 79725 + timestamp: 1766327519923 +- 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 @@ -17592,6 +21466,17 @@ packages: license_family: MIT size: 245434 timestamp: 1757963724977 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h7a3aeb2_0.conda + sha256: 35ddfc0335a18677dd70995fa99b8f594da3beb05c11289c87b6de5b930b47a3 + md5: 31059dc620fa57d787e3899ed0421e6d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libxml2 >=2.13.8,<2.14.0a0 + license: MIT + license_family: MIT + size: 244399 + timestamp: 1753273455036 - conda: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.43-h486b42e_1.conda sha256: 00d6b5e92fc1c5d86e095b9b6840f793d9fc4c9b4a7753fa0f8197ab11d5eb90 md5: 367b8029352f3899fb76cc20f4d144b9 @@ -17627,6 +21512,18 @@ packages: license_family: MIT size: 420223 timestamp: 1757963935611 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.43-h25c3957_0.conda + sha256: 20857f1adb91cc59826e146ee6cb1157c6abf2901a93d359b1106ba87c8e770b + md5: e84f36aa02735c140099d992d491968d + depends: + - libxml2 >=2.13.8,<2.14.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 416974 + timestamp: 1753273998632 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda sha256: 991e7348b0f650d495fb6d8aa9f8c727bdf52dabf5853c0cc671439b160dce48 md5: a7b27c075c9b7f459f1c022090697cba @@ -17725,9 +21622,9 @@ packages: license_family: Other size: 55476 timestamp: 1727963768015 -- conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.5.8-pyhd8ed1ab_0.conda - sha256: a6fafddfb577088b042689e4bdf709eeb1e2104d858c3ba143e3aa8a77265303 - md5: 2b6cde24a62b353a81664bb219674183 +- conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.5.7-pyhd8ed1ab_0.conda + sha256: 7f72acdc54cf9558bccfea6f72adc851e983e4b75b012665b746bba2b2705344 + md5: 1a3c574f48195d3f9cf069d87c4f28fc depends: - bottleneck - dask-core >=0.18.0 @@ -17744,46 +21641,69 @@ packages: - xarray >=2024.2.0 license: MIT license_family: MIT - size: 83414 - timestamp: 1761681492146 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.7-h472b3d1_0.conda - sha256: 5ae51ca08ac19ce5504b8201820ba6387365662033f20af2150ae7949f3f308a - md5: c9f0fc88c8f46637392b95bef78dc036 + size: 83528 + timestamp: 1757081816303 +- conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.4-pyhcf101f3_1.conda + sha256: 0ceae20f49f14c6ca9be930cc93d0d1f7cd2aab68bfa4280780a28021d1bf651 + md5: 6a084a7018cd5cb6d7a893e1f35ff506 + depends: + - python >=3.11 + - numpy + - scipy + - bottleneck + - toolz + - numexpr + - xarray >=2024.2.0 + - dask-core >=0.18.0 + - polars >=1.31.1 + - tqdm + - deprecation + - packaging + - google-cloud-storage + - requests + - python + license: MIT + license_family: MIT + size: 99786 + timestamp: 1771443687935 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.8-h472b3d1_0.conda + sha256: 2a41885f44cbc1546ff26369924b981efa37a29d20dc5445b64539ba240739e6 + md5: e2d811e9f464dd67398b4ce1f9c7c872 depends: - __osx >=10.13 constrains: - - openmp 21.1.7|21.1.7.* + - openmp 21.1.8|21.1.8.* - intel-openmp <0.0a0 license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 311027 - timestamp: 1764721464764 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.7-h4a912ad_0.conda - sha256: 002695e79b0e4c2d117a8bd190ffd62ef3d74a4cae002afa580bd1f98f9560a3 - md5: 05d475f50ddcc2173a6beece9960c6cb + size: 311405 + timestamp: 1765965194247 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.8-h4a912ad_0.conda + sha256: 56bcd20a0a44ddd143b6ce605700fdf876bcf5c509adc50bf27e76673407a070 + md5: 206ad2df1b5550526e386087bef543c7 depends: - __osx >=11.0 constrains: - - openmp 21.1.7|21.1.7.* + - openmp 21.1.8|21.1.8.* - intel-openmp <0.0a0 license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 286129 - timestamp: 1764721670250 -- conda: https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-21.1.7-h4fa8253_0.conda - sha256: 79121242419bf8b485c313fa28697c5c61ec207afa674eac997b3cb2fd1ff892 - md5: 5823741f7af732cd56036ae392396ec6 + size: 285974 + timestamp: 1765964756583 +- conda: https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-21.1.8-h4fa8253_0.conda + sha256: 145c4370abe870f10987efa9fc15a8383f1dab09abbc9ad4ff15a55d45658f7b + md5: 0d8b425ac862bcf17e4b28802c9351cb depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 constrains: - intel-openmp <0.0a0 - - openmp 21.1.7|21.1.7.* + - openmp 21.1.8|21.1.8.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 347969 - timestamp: 1764722187332 + size: 347566 + timestamp: 1765964942856 - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 sha256: 9afe0b5cfa418e8bdb30d8917c5a6cec10372b037924916f1f85b9f4899a67a6 md5: 91e27ef3d05cc772ce627e51cff111c4 @@ -17793,6 +21713,28 @@ packages: license_family: BSD size: 8250 timestamp: 1650660473123 +- 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-py312h63ddcf0_2.conda sha256: 60000e93b2d65072abe97a98c85f987ffd47fa1ee612eeafeb2ccd0f48f9c74c md5: a12c2fbcb3a5a7fa24e5fb8468368b1b @@ -18039,6 +21981,15 @@ packages: 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 @@ -18095,6 +22046,19 @@ packages: license_family: BSD size: 28388 timestamp: 1759055474173 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.7-py312h7900ff3_0.conda + sha256: a90b146dcaae011f97b85776dcd9751acf31db6206c9da7a867b2870a082c642 + md5: 71da16a72db3da61f5569da05fd1c750 + depends: + - matplotlib-base >=3.10.7,<3.10.8.0a0 + - pyside6 >=6.7.2 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + size: 17267 + timestamp: 1760560562908 - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.8-py312h7900ff3_0.conda sha256: 6d66175e1a4ffb91ed954e2c11066d2e03a05bce951a808275069836ddfc993e md5: 2a7663896e5aab10b60833a768c4c272 @@ -18108,6 +22072,18 @@ packages: license_family: PSF size: 17415 timestamp: 1763055550515 +- conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.7-py312hb401068_0.conda + sha256: c5fd2bf2e76616b55526ff7ec836d45527685b59fa198b848c03b28b8e4dc6ef + md5: 00721c0399429e5f7d7b293fa89c2625 + depends: + - matplotlib-base >=3.10.7,<3.10.8.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + size: 17339 + timestamp: 1760561530263 - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.8-py312hb401068_0.conda sha256: a42cff0706c6e4d43234b9dc366f9d9b99555cee5c259969978e8741faf335db md5: c2a15b38125fe68d31901e7fa63ca049 @@ -18120,6 +22096,18 @@ packages: license_family: PSF size: 17476 timestamp: 1763055659354 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.7-py312h1f38498_0.conda + sha256: 676e6eaf85b3482e39db1033e87c3c00b7dff32186b0574bf4aaf394554750f5 + md5: e31c510b04a9dd1071b1ee0a9c977f60 + depends: + - matplotlib-base >=3.10.7,<3.10.8.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + size: 17533 + timestamp: 1760561080633 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.8-py312h1f38498_0.conda sha256: e3e8448b10273807bf1aa9b1aa6a4ee3a686ccfd0c296560b51b1d1581bb42ae md5: 534ed7eb4471c088285fdb382805e6ef @@ -18132,6 +22120,19 @@ packages: license_family: PSF size: 17526 timestamp: 1763060540928 +- conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.7-py312h2e8e312_0.conda + sha256: 9b850c7aeaeae8c836b19e79497c2cf357cd9e0bb617df16c2c6b003936e6cce + md5: 7e0fd7fd2a87921eb3b2088b52c9abfe + depends: + - matplotlib-base >=3.10.7,<3.10.8.0a0 + - pyside6 >=6.7.2 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + size: 17869 + timestamp: 1760561135857 - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.8-py312h2e8e312_0.conda sha256: f3910f3dfe31cc01b5bc8b13f053b1c11a719fd0ec0727d3bb512e32602710d9 md5: f0302a2f16e674cf326cca5dc9cc47ee @@ -18145,6 +22146,34 @@ packages: license_family: PSF size: 17827 timestamp: 1763055680204 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.7-py312he3d6523_0.conda + sha256: a86bf43f40c8afa3dbe846c62e54dc7496493cc882acdf366b5197205e7709d8 + md5: 066291f807305cff71a8ec1683fc9958 + depends: + - __glibc >=2.17,<3.0.a0 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.22.0 + - freetype + - kiwisolver >=1.3.1 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libgcc >=14 + - libstdcxx >=14 + - numpy >=1.23 + - numpy >=1.23,<3 + - packaging >=20.0 + - pillow >=8 + - pyparsing >=2.3.1 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.7 + - python_abi 3.12.* *_cp312 + - qhull >=2020.2,<2020.3.0a0 + - tk >=8.6.13,<8.7.0a0 + license: PSF-2.0 + license_family: PSF + size: 8536303 + timestamp: 1760560544102 - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.8-py312he3d6523_0.conda sha256: 70cf0e7bfd50ef50eb712a6ca1eef0ef0d63b7884292acc81353327b434b548c md5: b8dc157bbbb69c1407478feede8b7b42 @@ -18173,6 +22202,32 @@ packages: license_family: PSF size: 8442149 timestamp: 1763055517581 +- conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.7-py312h7894933_0.conda + sha256: 890975012522122fb20a7914c11a02fd4973ed0ee470abc27bd3298ef6de37df + md5: 8993a6404a2bd1d1b4ccc169c611c826 + depends: + - __osx >=10.13 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.22.0 + - freetype + - kiwisolver >=1.3.1 + - libcxx >=19 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - numpy >=1.23 + - numpy >=1.23,<3 + - packaging >=20.0 + - pillow >=8 + - pyparsing >=2.3.1 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.7 + - python_abi 3.12.* *_cp312 + - qhull >=2020.2,<2020.3.0a0 + license: PSF-2.0 + license_family: PSF + size: 8137491 + timestamp: 1760561487488 - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.8-py312h7894933_0.conda sha256: 2ce31cad23d5d5fc16ca9d25f47dcfc52e93f2a0c6e1dc6db28e583c42f88bdc md5: 853618b60fdd11a6c3dbaadaa413407c @@ -18199,6 +22254,33 @@ packages: license_family: PSF size: 8295843 timestamp: 1763055621386 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.7-py312h605b88b_0.conda + sha256: 83e4f0e36cdeb610568f074afc12440cb95b84645f0f63a8f45dd51410fb98c8 + md5: f4c14d3f89a1a892cab55771c798c6b2 + depends: + - __osx >=11.0 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.22.0 + - freetype + - kiwisolver >=1.3.1 + - libcxx >=19 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - numpy >=1.23 + - numpy >=1.23,<3 + - packaging >=20.0 + - pillow >=8 + - pyparsing >=2.3.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.7 + - python_abi 3.12.* *_cp312 + - qhull >=2020.2,<2020.3.0a0 + license: PSF-2.0 + license_family: PSF + size: 8007810 + timestamp: 1760561036534 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.8-py312h605b88b_0.conda sha256: 3c96c85dd723a4c16fce4446d1f0dc7d64e46b6ae4629c66d65984b8593ee999 md5: fbc4f90b3d63ea4e6c30f7733a0b5bfd @@ -18226,6 +22308,33 @@ packages: license_family: PSF size: 8243636 timestamp: 1763060482877 +- conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.7-py312h0ebf65c_0.conda + sha256: 7a48d0f7acf2c6f659d4110c51fd6349eea59cf094736c0487d146b279ffc8a5 + md5: 79230f2289ae81063289d3e726150912 + depends: + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.22.0 + - freetype + - kiwisolver >=1.3.1 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - numpy >=1.23 + - numpy >=1.23,<3 + - packaging >=20.0 + - pillow >=8 + - pyparsing >=2.3.1 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.7 + - python_abi 3.12.* *_cp312 + - qhull >=2020.2,<2020.3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: PSF-2.0 + license_family: PSF + size: 8046406 + timestamp: 1760561093532 - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.8-py312h0ebf65c_0.conda sha256: a0b6f97f562ec803483b8c222788a4364aafd47c4023e8529ebbb4f017477a86 md5: 46f73e68304eb61df083379b044e9eb9 @@ -18395,34 +22504,34 @@ packages: license_family: Other size: 86618 timestamp: 1746450788037 -- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda - sha256: 609ea628ace5c6cdbdce772704e6cb159ead26969bb2f386ca1757632b0f74c6 - md5: f5a4d548d1d3bdd517260409fc21e205 +- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda + sha256: d3fb4beb5e0a52b6cc33852c558e077e1bfe44df1159eb98332d69a264b14bae + md5: b11e360fc4de2b0035fc8aaa74f17fd6 depends: - python >=3.10 - typing_extensions - python license: BSD-3-Clause license_family: BSD - size: 72996 - timestamp: 1756495311698 -- conda: https://conda.anaconda.org/conda-forge/win-64/mkl-include-2025.3.0-h57928b3_454.conda - sha256: 76576dd314735de99ccc9443c7f7c900c85783f797d2102617498fbbfc404041 - md5: 763d029dbaa14187a29ca55433221003 + size: 74250 + timestamp: 1766504456031 +- conda: https://conda.anaconda.org/conda-forge/win-64/mkl-include-2025.3.0-h57928b3_455.conda + sha256: d9e8b095fabbdacf375c389dd74455d10fff9d957c43de04a16868159cf6fc4d + md5: 60a88e17a01bb4afbaa103e7cf0b7f72 license: LicenseRef-IntelSimplifiedSoftwareOct2022 license_family: Proprietary - size: 700532 - timestamp: 1761668942468 -- conda: https://conda.anaconda.org/conda-forge/win-64/mkl-static-2025.3.0-hbcdf7a0_454.conda - sha256: 681040dd02b73b5145219fadafd6a097cef215cbdcf88afc71ef1612b6a70281 - md5: 7f8252abee6a24c11b08e86bf51d7d77 + size: 965435 + timestamp: 1767634789522 +- conda: https://conda.anaconda.org/conda-forge/win-64/mkl-static-2025.3.0-hfdbc840_455.conda + sha256: 2437ea7bc37e0272e83a2c099fcccb9496a4dc2b5c18e81c00c60e1627ca501f + md5: af78d25729eaf1e74308ede48c3739c3 depends: - - mkl-include 2025.3.0 h57928b3_454 + - mkl-include 2025.3.0 h57928b3_455 - tbb 2022.* license: LicenseRef-IntelSimplifiedSoftwareOct2022 license_family: Proprietary - size: 110454181 - timestamp: 1761669682917 + size: 110616763 + timestamp: 1771561743058 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 md5: 2eeb50cab6652538eee8fc0bc3340c81 @@ -18584,18 +22693,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 @@ -18612,62 +22721,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 @@ -18677,6 +22783,50 @@ packages: license_family: Apache size: 15851 timestamp: 1749895533014 +- conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.5-h5888daf_0.conda + sha256: 320dfc59a94cb9e3635bda71b9e62278b34aa2fdaea0caa6832ddb9b37e9ccd5 + md5: ab3e3db511033340e75e7002e80ce8c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 203174 + timestamp: 1747116762269 +- conda: https://conda.anaconda.org/conda-forge/osx-64/muparser-2.3.5-hb996559_0.conda + sha256: e5de9f34d6b99e2888ed03fc2e9385a04186d9dcd750a94526cc93f130861f11 + md5: d3aa5571d7b5182dcfbf8beb92c434a1 + depends: + - __osx >=10.13 + - libcxx >=18 + - llvm-openmp >=18.1.8 + license: MIT + license_family: MIT + size: 160748 + timestamp: 1747116869077 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/muparser-2.3.5-h11e0b38_0.conda + sha256: 5533e7e3d4b0819b4426f8a1b3f680e6b9c922cdae2b7fabcd0e8c59df22772a + md5: 1cdbe54881794ee356d3cba7e3ed6668 + depends: + - __osx >=11.0 + - libcxx >=18 + - llvm-openmp >=18.1.8 + license: MIT + license_family: MIT + size: 154087 + timestamp: 1747117056226 +- conda: https://conda.anaconda.org/conda-forge/win-64/muparser-2.3.5-he0c23c2_0.conda + sha256: 57f78d8cd9a282d03cd7a7ffb1f42d570e1bbfb42d606e99de5c16e089067185 + md5: 013aabb169d59009bdf7d70319360e9b + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 148557 + timestamp: 1747117340968 - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.19.1-py312h4c3975b_0.conda sha256: d0e0765e5ec08141b10da9e03ef620d2e3e571d81cc2bc14025c52a48bb01856 md5: c3ad8cc29400fe5ca1b6a6e5ae46538e @@ -18769,19 +22919,29 @@ packages: license_family: MIT size: 73074 timestamp: 1739381945342 -- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.13.0-pyhcf101f3_0.conda - sha256: 03220ba0560de1d81b8b122e8ff6313238dbb1ed621db39f4b81f767904ed475 - md5: 0129bb97a81c2ca0f57031673424387a +- 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: 268700 - timestamp: 1764604454148 -- conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - sha256: a20cff739d66c2f89f413e4ba4c6f6b59c50d5c30b5f0d840c13e8c9c2df9135 - md5: 6bb0d77277061742744176ab555b723c + 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: 39262 + timestamp: 1770905275632 +- conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda + sha256: 1b66960ee06874ddceeebe375d5f17fb5f393d025a09e15b830ad0c4fffb585b + md5: 00f5b8dafa842e0c27c1cd7296aa4875 depends: - jupyter_client >=6.1.12 - jupyter_core >=4.12,!=5.0.* @@ -18790,11 +22950,11 @@ packages: - traitlets >=5.4 license: BSD-3-Clause license_family: BSD - size: 28045 - timestamp: 1734628936013 -- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda - sha256: 8f575e5c042b17f4677179a6ba474bdbe76573936d3d3e2aeb42b511b9cb1f3f - md5: cfc86ccc3b1de35d36ccaae4c50391f5 + size: 28473 + timestamp: 1766485646962 +- 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 @@ -18815,11 +22975,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 @@ -18885,6 +23045,27 @@ packages: license_family: MIT size: 1109790 timestamp: 1760540565753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.4-nompi_py312h25f8dc5_102.conda + sha256: eecbf3489560510d2c7d8d73ae812b1d0d1241f667e250afdd3faad244fb3a52 + md5: 99217b58c029977345b72bb36a1f6596 + depends: + - python + - certifi + - cftime + - numpy + - hdf5 + - libnetcdf + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.1,<2.0a0 + - numpy >=1.23,<3 + - libnetcdf >=4.9.3,<4.9.4.0a0 + - hdf5 >=1.14.6,<1.14.7.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 1151979 + timestamp: 1768552448951 - conda: https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.7.3-nompi_py312hab8b850_100.conda sha256: 2dc8395f680496a6a172b539bfe3301823b6c901f3eb5df3c87c17f5e67d2f92 md5: 4849016a03b3be1eecb407197b063723 @@ -18902,6 +23083,26 @@ packages: license_family: MIT size: 1018544 timestamp: 1760540965041 +- conda: https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.7.4-nompi_py312h6ec3a75_102.conda + sha256: daae3d13c2695cf5294c297f336d61d128000ba2b5b269097ad16203a9683425 + md5: 155692cb0f353637a9be03e3d185bfa5 + depends: + - python + - certifi + - cftime + - numpy + - hdf5 + - libnetcdf + - __osx >=10.13 + - numpy >=1.23,<3 + - python_abi 3.12.* *_cp312 + - libzlib >=1.3.1,<2.0a0 + - libnetcdf >=4.9.3,<4.9.4.0a0 + - hdf5 >=1.14.6,<1.14.7.0a0 + license: MIT + license_family: MIT + size: 1073738 + timestamp: 1768552459359 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/netcdf4-1.7.3-nompi_py312h947358d_100.conda sha256: 0af13b708a7f540fe2eaf5155ca254530112d64eb8dd93c6b74846b30c37ee14 md5: 4d0a4809609db6402315d591d0fdc90a @@ -18920,6 +23121,27 @@ packages: license_family: MIT size: 1004901 timestamp: 1760541856800 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/netcdf4-1.7.4-nompi_py312h5d59a02_102.conda + sha256: be6a5b9dc7c3dd790a0bcc33fbbc9888e5fa8e64c8429d910a118f5880d0b71a + md5: d5d848de57b716a036e71ab3fcca7b32 + depends: + - python + - certifi + - cftime + - numpy + - hdf5 + - libnetcdf + - __osx >=11.0 + - python 3.12.* *_cpython + - python_abi 3.12.* *_cp312 + - libnetcdf >=4.9.3,<4.9.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - hdf5 >=1.14.6,<1.14.7.0a0 + - numpy >=1.23,<3 + license: MIT + license_family: MIT + size: 1053448 + timestamp: 1768552836346 - conda: https://conda.anaconda.org/conda-forge/win-64/netcdf4-1.7.3-nompi_py312h79d12a2_100.conda sha256: 880d34f210aeddc023ed17014b0b4ab032a74e1018bf84965185b9e5a9e84368 md5: b599bb301b740b9bb1089190c1b1a912 @@ -18939,6 +23161,28 @@ packages: license_family: MIT size: 977728 timestamp: 1760541025877 +- conda: https://conda.anaconda.org/conda-forge/win-64/netcdf4-1.7.4-nompi_py312h8fa77f8_102.conda + sha256: be4aaa3c8e18cbf68ac8214716444aebe86e37370dd1c72da881eed86b6b4755 + md5: ee21ff61b382ba17e980d83bf2e3d20e + depends: + - python + - certifi + - cftime + - numpy + - hdf5 + - libnetcdf + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - hdf5 >=1.14.6,<1.14.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - numpy >=1.23,<3 + - python_abi 3.12.* *_cp312 + - libnetcdf >=4.9.3,<4.9.4.0a0 + license: MIT + license_family: MIT + size: 1032408 + timestamp: 1768552481606 - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda sha256: f6a82172afc50e54741f6f84527ef10424326611503c64e359e25a19a8e4c1c6 md5: a2c1eeadae7a309daed9d62c96012a2b @@ -18963,34 +23207,34 @@ packages: license_family: MIT size: 136216 timestamp: 1758194284857 -- conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h53ec75d_1.conda - sha256: 186edb5fe84bddf12b5593377a527542f6ba42486ca5f49cd9dfeda378fb0fbe - md5: 5e9bee5fa11d91e1621e477c3cb9b9ba +- conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h06076ce_1.conda + sha256: 8e1b8ac88e07da2910c72466a94d1fc77aa13c722f8ddbc7ae3beb7c19b41fc7 + md5: 97d7a1cda5546cb0bbdefa3777cb9897 constrains: - nlohmann_json-abi ==3.12.0 license: MIT license_family: MIT - size: 136667 - timestamp: 1758194361656 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h248ca61_1.conda - sha256: f6aa432b073778c3970d3115d291267f32ae85adfa99d80ff1abdf0b806aa249 - md5: 3ba9d0c21af2150cb92b2ab8bdad3090 + size: 137081 + timestamp: 1768670842725 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h784d473_1.conda + sha256: 1945fd5b64b74ef3d57926156fb0bfe88ee637c49f3273067f7231b224f1d26d + md5: 755cfa6c08ed7b7acbee20ccbf15a47c constrains: - nlohmann_json-abi ==3.12.0 license: MIT license_family: MIT - size: 136912 - timestamp: 1758194464430 -- conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - sha256: 3636eec0e60466a00069b47ce94b6d88b01419b6577d8e393da44bb5bc8d3468 - md5: 7ba3f09fceae6a120d664217e58fe686 + size: 137595 + timestamp: 1768670878127 +- conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + sha256: 4fa40e3e13fc6ea0a93f67dfc76c96190afd7ea4ffc1bac2612d954b42cdc3ee + md5: eb52d14a901e23c39e9e7b4a1a5c015f depends: - - python >=3.9 + - python >=3.10 - setuptools license: BSD-3-Clause license_family: BSD - size: 34574 - timestamp: 1734112236147 + size: 40866 + timestamp: 1766261270149 - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 sha256: d38542a151a90417065c1a234866f97fd1ea82a81de75ecb725955ab78f88b4b md5: 9a66894dfd07c4510beb6b3f9672ccc0 @@ -19000,13 +23244,13 @@ packages: license_family: BSD size: 3843 timestamp: 1582593857545 -- conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.0-pyhcf101f3_0.conda - sha256: 87b420456c294076d8414043d05ebd743e2ed42526889590b667aa6a99b34d54 - md5: 3cf7402eb77b6434e830b6863a0e6118 +- conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda + sha256: 014cf291843861b20cf84a89e8450f0dd13ad1e6d2ab30c56ae43b81f2dca233 + md5: 94a5f0cee51b6b0ffdcad0af6db0af18 depends: - importlib_resources >=5.0 - jupyter_server >=2.4.0,<3 - - jupyterlab >=4.5.0,<4.6 + - jupyterlab >=4.5.3,<4.6 - jupyterlab_server >=2.28.0,<3 - notebook-shim >=0.2,<0.3 - python >=3.10 @@ -19014,8 +23258,8 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 10033763 - timestamp: 1763560248739 + size: 10047711 + timestamp: 1769434091366 - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 md5: e7f89ea5f7ea9401642758ff50a2d9c1 @@ -19238,20 +23482,38 @@ packages: license_family: BSD size: 102059 timestamp: 1750415349440 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjdk-25.0.1-h5755bd7_0.conda - sha256: 19b2268bf2d1fc4b4f48a68b9bfac620370c1b7f539671279053b0d3bcc348f1 - md5: a40ce38da029d1d272bfd9bd7510f901 +- 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 depends: - __glibc >=2.17,<3.0.a0 - alsa-lib >=1.2.14,<1.3.0a0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - giflib >=5.2.2,<5.3.0a0 - - harfbuzz >=12.1.0 + - harfbuzz >=11.4.5 - lcms2 >=2.17,<3.0a0 - libcups >=2.3.3,<2.4.0a0 - - libfreetype >=2.14.1 - - libfreetype6 >=2.14.1 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 - libgcc >=14 - libjpeg-turbo >=3.1.0,<4.0a0 - libpng >=1.6.50,<1.7.0a0 @@ -19266,36 +23528,40 @@ packages: - xorg-libxtst >=1.2.5,<2.0a0 license: GPL-2.0-or-later WITH Classpath-exception-2.0 license_family: GPL - size: 117033638 - timestamp: 1762057253080 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openjdk-25.0.1-h2014cc5_0.conda - sha256: 66370d3804a3580be74cf04c5137f927368180aced228432b1334905aad68633 - md5: dc31b52f802094dc4bf4bc5c45b1b40d + size: 116404142 + timestamp: 1757258102756 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openjdk-25.0.2-h48c29e7_0.conda + sha256: 6d75a78b11aa1100d8dda8b860ebd2943c0ba137cf87c205351ee2c02434cb23 + md5: 7039d4add86c40fed1ff9371d405391f depends: + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: GPL-2.0-or-later WITH Classpath-exception-2.0 license_family: GPL - size: 195316806 - timestamp: 1762054272032 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjdk-25.0.1-hde7fb7b_0.conda - sha256: 1ed6cc66741f3072443b672a7d9f7264a8addaa633f0febac0dd717ef92e490f - md5: 1ef116a339b4e49eb54659db80a7cebd + size: 201289992 + timestamp: 1771443806108 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjdk-25.0.2-h258754b_0.conda + sha256: f6f06243c1a35b6590f06be386bd5cefc5b1773b985a61b7917b93dab4cf18ec + md5: a4024e03865a7411c1028eac83d1956c depends: + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: GPL-2.0-or-later WITH Classpath-exception-2.0 license_family: GPL - size: 193198695 - timestamp: 1762054336869 -- conda: https://conda.anaconda.org/conda-forge/win-64/openjdk-25.0.1-hda6743d_0.conda - sha256: 2eba52d8bf181f32287f383bb67918c99e33da3afab0c634cf86078ffb3cc7e7 - md5: 1d0f849284a59851b7e9a1bb083dce37 + size: 199165105 + timestamp: 1771443790144 +- conda: https://conda.anaconda.org/conda-forge/win-64/openjdk-25.0.2-he453025_1.conda + sha256: ebf65d5dd7c6a16e1ea44edfeb501900524ff1780db0902997326c56755986dd + md5: 9151f91b148e6d892041da89c63ebb46 depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 - symlink-exe-runtime >=1.0,<2.0a0 - - vc14_runtime license: GPL-2.0-or-later WITH Classpath-exception-2.0 license_family: GPL - size: 194865283 - timestamp: 1762054342371 + size: 199761803 + timestamp: 1771445473325 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda sha256: 3900f9f2dbbf4129cf3ad6acf4e4b6f7101390b53843591c53b00f034343bc4d md5: 11b3379b191f63139e29c0d19dee24cd @@ -19390,9 +23656,9 @@ packages: license_family: BSD size: 843597 timestamp: 1748010484231 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h7f6eeab_2.conda - sha256: 74bd0f89708ec337da7e04cce234e520979a2023aff4c3903043f85412fe8545 - md5: 868d486c51b475998e3b5ea814591ccc +- conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h7f6eeab_3.conda + sha256: 04839d313708a6b8c185bc9fcc56ccef985ed91520420c665b5e67b55fd8b5fb + md5: 04ab345ef65b88bcbb8ac3d083427bfc depends: - et_xmlfile - libgcc >=14 @@ -19400,22 +23666,22 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 675350 - timestamp: 1757332164471 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312hc14bf67_2.conda - sha256: 1b146278e098743dc934201279c2954e224f715165284184f9483e18e96cca99 - md5: 05835b2dc6f44ee0ac4ef22a1bd18c88 + size: 476128 + timestamp: 1769122092500 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h35dbd26_3.conda + sha256: dc50d2ba1c8d5ece38310f4a58ea7c65ab5630c0f302ec4699d80d58ce200550 + md5: b7de45fd799b2ca486296df849b8a57b depends: - et_xmlfile - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 649220 - timestamp: 1757332255322 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312h4fb2c50_2.conda - sha256: e992eebe7ef46e3960166114bd543d13c3ba7e1572ff51da9a397311fb4b5513 - md5: 18d76107ec470834b95f4b264b085161 + size: 476736 + timestamp: 1769122437049 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312h2a925e6_3.conda + sha256: 53e786fc1095e5e009958acf7e75c3bb9518e6e6373ed82cddf2b59110712d8d + md5: 81e1c2e42e0bed7dc7d412dbb1b53a46 depends: - et_xmlfile - python >=3.12,<3.13.0a0 @@ -19423,11 +23689,11 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 643458 - timestamp: 1757332597641 -- conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312h83acffa_2.conda - sha256: d73c0aa720e7a0c1df1925de83df5b96ca738acd31cc4604ac099ed04eb5bb63 - md5: 25daa3044097c89c15b7ec7ca74434d8 + size: 477997 + timestamp: 1769122700108 +- conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312h83acffa_3.conda + sha256: 824eeb546a08c990eb461706280d3064c0437f67eb320018986fa439f468e43a + md5: ff342a314798173eaaf2753a22f044fa depends: - et_xmlfile - python >=3.12,<3.13.0a0 @@ -19437,42 +23703,42 @@ packages: - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - size: 614004 - timestamp: 1757332411201 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda - sha256: a47271202f4518a484956968335b2521409c8173e123ab381e775c358c67fe6d - md5: 9ee58d5c534af06558933af3c845a780 + size: 475979 + timestamp: 1769122144585 +- 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 @@ -19480,8 +23746,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 @@ -19499,6 +23765,23 @@ packages: license_family: Apache size: 1316445 timestamp: 1759424644934 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-h19cb568_0.conda + sha256: 84cfe4e11d3186c0c369f111700e978c849fb9e4ab7ed031acbe3663daacd141 + md5: a98b8d7cfdd20004f1bdd1a51cb22c58 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.2,<1.3.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + size: 1317120 + timestamp: 1768247825733 - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.2.1-hd1b02dc_0.conda sha256: a00d48750d2140ea97d92b32c171480b76b2632dbb9d19d1ae423999efcc825f md5: b4646b6ddcbcb3b10e9879900c66ed48 @@ -19515,6 +23798,22 @@ packages: license_family: Apache size: 521463 timestamp: 1759424838652 +- conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.2.2-h3073fbf_0.conda + sha256: 6c7048ba82eea4c92c1dc8bdf0a6989609367ffef9ff719cf86066bab046e0d0 + md5: 7323bc020618321c05afaf23f78460c0 + depends: + - __osx >=11.0 + - libcxx >=19 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.2,<1.3.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + size: 522041 + timestamp: 1768248087348 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.2.1-h4fd0076_0.conda sha256: f0a31625a647cb8d55a7016950c11f8fabc394df5054d630e9c9b526bf573210 md5: b5dea50c77ab3cc18df48bdc9994ac44 @@ -19531,9 +23830,42 @@ packages: license_family: Apache size: 487298 timestamp: 1759424875005 -- conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.2.1-h7414dfc_0.conda - sha256: f28f8f2d743c2091f76161b8d59f82c4ba4970d03cb9900c52fb908fe5e8a7c4 - md5: a9b6ebf475194b0e5ad43168e9b936a7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.2.2-hac85105_0.conda + sha256: 9de7956c90c513e5e3ae4a637bf67ea1a09235151bad6fa266a3c24311d7fe1c + md5: 1c52effb297c8287cc79c383428e43c4 + depends: + - __osx >=11.0 + - libcxx >=19 + - libprotobuf >=6.31.1,<6.31.2.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.2,<1.3.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Apache-2.0 + 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 depends: - libprotobuf >=6.31.1,<6.31.2.0a0 - libzlib >=1.3.1,<2.0a0 @@ -19546,8 +23878,8 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1064397 - timestamp: 1759424869069 + size: 1164012 + timestamp: 1768247969345 - conda: https://conda.anaconda.org/conda-forge/noarch/orderedmultidict-1.0.1-pyhd8ed1ab_2.conda sha256: 5b531c89ed6fa678fbdce61d870570ef655c37e52d2fe5af3ef8c15d152c90f5 md5: d6d0b0e2258fc15e7ef30cc85211d21f @@ -19577,6 +23909,16 @@ packages: license_family: APACHE size: 62477 timestamp: 1745345660407 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda + sha256: c1fc0f953048f743385d31c468b4a678b3ad20caffdeaa94bed85ba63049fd58 + md5: b76541e68fea4d511b1ac46a28dcd2c6 + depends: + - python >=3.8 + - python + license: Apache-2.0 + license_family: APACHE + size: 72010 + timestamp: 1769093650580 - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py312hf79963d_1.conda sha256: f633d5f9b28e4a8f66a6ec9c89ef1b6743b880b0511330184b4ab9b7e2dda247 md5: e597b3e812d9613f659b7d87ad252d18 @@ -19627,6 +23969,61 @@ packages: license_family: BSD size: 15099922 timestamp: 1759266031115 +- 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 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - numpy >=1.23,<3 + - python_abi 3.12.* *_cp312 + constrains: + - adbc-driver-postgresql >=1.2.0 + - adbc-driver-sqlite >=1.2.0 + - beautifulsoup4 >=4.12.3 + - blosc >=1.21.3 + - bottleneck >=1.4.2 + - fastparquet >=2024.11.0 + - fsspec >=2024.10.0 + - gcsfs >=2024.10.0 + - html5lib >=1.1 + - hypothesis >=6.116.0 + - jinja2 >=3.1.5 + - lxml >=5.3.0 + - matplotlib >=3.9.3 + - numba >=0.60.0 + - numexpr >=2.10.2 + - odfpy >=1.4.1 + - openpyxl >=3.1.5 + - psycopg2 >=2.9.10 + - pyarrow >=13.0.0 + - pyiceberg >=0.8.1 + - pymysql >=1.1.1 + - pyqt5 >=5.15.9 + - pyreadstat >=1.2.8 + - pytables >=3.10.1 + - pytest >=8.3.4 + - pytest-xdist >=3.6.1 + - python-calamine >=0.3.0 + - pytz >=2024.2 + - pyxlsb >=1.0.10 + - qtpy >=2.4.2 + - scipy >=1.14.1 + - s3fs >=2024.10.0 + - sqlalchemy >=2.0.36 + - tabulate >=0.9.0 + - xarray >=2024.10.0 + - xlrd >=2.0.1 + - xlsxwriter >=3.2.0 + - zstandard >=0.23.0 + license: BSD-3-Clause + license_family: BSD + size: 14840286 + timestamp: 1771408991625 - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.3-py312h86abcb1_2.conda sha256: 112273ffd9572a4733c98b9d80a243f38db4d0fce5d34befaf9eb6f64ed39ba3 md5: d7dfad2b9a142319cec4736fe88d8023 @@ -19676,6 +24073,60 @@ packages: license_family: BSD size: 14008759 timestamp: 1764615365220 +- 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 + - libcxx >=19 + - __osx >=11.0 + - numpy >=1.23,<3 + - python_abi 3.12.* *_cp312 + constrains: + - adbc-driver-postgresql >=1.2.0 + - adbc-driver-sqlite >=1.2.0 + - beautifulsoup4 >=4.12.3 + - blosc >=1.21.3 + - bottleneck >=1.4.2 + - fastparquet >=2024.11.0 + - fsspec >=2024.10.0 + - gcsfs >=2024.10.0 + - html5lib >=1.1 + - hypothesis >=6.116.0 + - jinja2 >=3.1.5 + - lxml >=5.3.0 + - matplotlib >=3.9.3 + - numba >=0.60.0 + - numexpr >=2.10.2 + - odfpy >=1.4.1 + - openpyxl >=3.1.5 + - psycopg2 >=2.9.10 + - pyarrow >=13.0.0 + - pyiceberg >=0.8.1 + - pymysql >=1.1.1 + - pyqt5 >=5.15.9 + - pyreadstat >=1.2.8 + - pytables >=3.10.1 + - pytest >=8.3.4 + - pytest-xdist >=3.6.1 + - python-calamine >=0.3.0 + - pytz >=2024.2 + - pyxlsb >=1.0.10 + - qtpy >=2.4.2 + - scipy >=1.14.1 + - s3fs >=2024.10.0 + - sqlalchemy >=2.0.36 + - tabulate >=0.9.0 + - xarray >=2024.10.0 + - xlrd >=2.0.1 + - xlsxwriter >=3.2.0 + - zstandard >=0.23.0 + license: BSD-3-Clause + license_family: BSD + size: 14144098 + timestamp: 1771409084592 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py312h5978115_2.conda sha256: 93aa5b02e2394080a32fee9fb151da3384d317a42472586850abb37b28f314db md5: fcbba82205afa4956c39136c68929385 @@ -19726,6 +24177,61 @@ packages: license_family: BSD size: 13893993 timestamp: 1764615503244 +- 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 + - python-dateutil >=2.8.2 + - __osx >=11.0 + - python 3.12.* *_cpython + - libcxx >=19 + - python_abi 3.12.* *_cp312 + - numpy >=1.23,<3 + constrains: + - adbc-driver-postgresql >=1.2.0 + - adbc-driver-sqlite >=1.2.0 + - beautifulsoup4 >=4.12.3 + - blosc >=1.21.3 + - bottleneck >=1.4.2 + - fastparquet >=2024.11.0 + - fsspec >=2024.10.0 + - gcsfs >=2024.10.0 + - html5lib >=1.1 + - hypothesis >=6.116.0 + - jinja2 >=3.1.5 + - lxml >=5.3.0 + - matplotlib >=3.9.3 + - numba >=0.60.0 + - numexpr >=2.10.2 + - odfpy >=1.4.1 + - openpyxl >=3.1.5 + - psycopg2 >=2.9.10 + - pyarrow >=13.0.0 + - pyiceberg >=0.8.1 + - pymysql >=1.1.1 + - pyqt5 >=5.15.9 + - pyreadstat >=1.2.8 + - pytables >=3.10.1 + - pytest >=8.3.4 + - pytest-xdist >=3.6.1 + - python-calamine >=0.3.0 + - pytz >=2024.2 + - pyxlsb >=1.0.10 + - qtpy >=2.4.2 + - scipy >=1.14.1 + - s3fs >=2024.10.0 + - sqlalchemy >=2.0.36 + - tabulate >=0.9.0 + - xarray >=2024.10.0 + - xlrd >=2.0.1 + - xlsxwriter >=3.2.0 + - zstandard >=0.23.0 + license: BSD-3-Clause + license_family: BSD + size: 13895708 + timestamp: 1771409075692 - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py312hc128f0a_2.conda sha256: 7f37f3ccea378f491f68979c7afd7f2dbc8ee83c3461dfab3cce15d436298f44 md5: 57d80e87a8b3161bcf26472deceaa556 @@ -19776,20 +24282,76 @@ packages: license_family: BSD size: 13779090 timestamp: 1764615170494 -- conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda - sha256: 3fb0cb6f35acd669d77b83a789f9eb6ea1b7ecc4fc512f88fa2d132021ff48e4 - md5: 3236ebaa938b455d086f747f3541b57a +- 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 + - python-dateutil >=2.8.2 + - python-tzdata + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - numpy >=1.23,<3 + - python_abi 3.12.* *_cp312 + constrains: + - adbc-driver-postgresql >=1.2.0 + - adbc-driver-sqlite >=1.2.0 + - beautifulsoup4 >=4.12.3 + - blosc >=1.21.3 + - bottleneck >=1.4.2 + - fastparquet >=2024.11.0 + - fsspec >=2024.10.0 + - gcsfs >=2024.10.0 + - html5lib >=1.1 + - hypothesis >=6.116.0 + - jinja2 >=3.1.5 + - lxml >=5.3.0 + - matplotlib >=3.9.3 + - numba >=0.60.0 + - numexpr >=2.10.2 + - odfpy >=1.4.1 + - openpyxl >=3.1.5 + - psycopg2 >=2.9.10 + - pyarrow >=13.0.0 + - pyiceberg >=0.8.1 + - pymysql >=1.1.1 + - pyqt5 >=5.15.9 + - pyreadstat >=1.2.8 + - pytables >=3.10.1 + - pytest >=8.3.4 + - pytest-xdist >=3.6.1 + - python-calamine >=0.3.0 + - pytz >=2024.2 + - pyxlsb >=1.0.10 + - qtpy >=2.4.2 + - scipy >=1.14.1 + - s3fs >=2024.10.0 + - sqlalchemy >=2.0.36 + - tabulate >=0.9.0 + - xarray >=2024.10.0 + - xlrd >=2.0.1 + - xlsxwriter >=3.2.0 + - zstandard >=0.23.0 + license: BSD-3-Clause + license_family: BSD + 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 @@ -19798,8 +24360,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 @@ -19888,16 +24450,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 @@ -19921,15 +24483,15 @@ packages: license_family: BSD size: 388265 timestamp: 1733838886459 -- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.3-pyhd8ed1ab_0.conda - sha256: 9b046bd271421cec66650f770b66f29692bcbfc4cfe40b24487eae396d2bcf26 - md5: 0485a8731a6d82f181e0e073a2e39a39 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda + sha256: 29ea20d0faf20374fcd61c25f6d32fb8e9a2c786a7f1473a0c3ead359470fbe1 + md5: 2908273ac396d2cd210a8127f5f1c0d6 depends: - python >=3.10 license: MPL-2.0 license_family: MOZILLA - size: 53364 - timestamp: 1767999155326 + size: 53739 + timestamp: 1769677743677 - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda sha256: 9678f4745e6b82b36fab9657a19665081862268cb079cf9acf878ab2c4fadee9 md5: 8678577a52161cc4e1c93fcc18e8a646 @@ -19940,6 +24502,18 @@ packages: license: BSD-2-Clause AND PSF-2.0 size: 193450 timestamp: 1760998269054 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda + sha256: 27c4014f616326240dcce17b5f3baca3953b6bc5f245ceb49c3fa1e6320571eb + md5: b90bece58b4c2bf25969b70f3be42d25 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1197308 + timestamp: 1745955064657 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff md5: 7a3bff861a6583f1889021facefc08b1 @@ -19952,6 +24526,17 @@ packages: license_family: BSD size: 1222481 timestamp: 1763655398280 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda + sha256: 5b2c93ee8714c17682cd926127f1e712efef00441a79732635a80b24f5adc212 + md5: d9f1976154f2f45588251dcfc48bcdda + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1086588 + timestamp: 1745955211398 - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.47-h13923f0_0.conda sha256: 8d64a9d36073346542e5ea042ef8207a45a0069a2e65ce3323ee3146db78134c md5: 08f970fb2b75f5be27678e077ebedd46 @@ -19963,6 +24548,17 @@ packages: license_family: BSD size: 1106584 timestamp: 1763655837207 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda + sha256: e9ecb706b58b5a2047c077b3a1470e8554f3aad02e9c3c00cfa35d537420fea3 + md5: a52385b93558d8e6bbaeec5d61a21cd7 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 837826 + timestamp: 1745955207242 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda sha256: 5e2e443f796f2fd92adf7978286a525fb768c34e12b1ee9ded4000a41b2894ba md5: 9b4190c4055435ca3502070186eba53a @@ -19974,19 +24570,19 @@ packages: license_family: BSD size: 850231 timestamp: 1763655726735 -- 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.45-h99c9b8b_0.conda + sha256: 165d6f76e7849615cfa5fe5f0209b90103102db17a7b4632f933fa9c0e8d8bfe + md5: f4c483274001678e129f5cbaf3a8d765 depends: - bzip2 >=1.0.8,<2.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD - size: 1034703 - timestamp: 1756743085974 + size: 1040584 + timestamp: 1745955875845 - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda sha256: 3e9e02174edf02cb4bcdd75668ad7b74b8061791a3bc8bdb8a52ae336761ba3e md5: 77eaf2336f3ae749e712f63e36b0f0a1 @@ -20000,72 +24596,81 @@ packages: license_family: BSD size: 995992 timestamp: 1763655708300 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pendulum-3.1.0-py312h12e396e_0.conda - sha256: 8b827b8c57eeb1c7efaec9e20215350308d0e5feff1cc3802f60f04660495724 - md5: 5ca8b76bb043f5df6a95134118c9af06 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pendulum-3.2.0-py312h868fb18_2.conda + sha256: 8f7b9b6d22385db7500f63be0ecec476ce7fa32ea8c474b77b27bbfa4409ab0d + md5: a712475d05ecdd145b2ed2cad662ce2e depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - python - python-dateutil >=2.6 - - python_abi 3.12.* *_cp312 - - time-machine >=2.6.0 - tzdata >=2020.1 + - time-machine >=2.6.0,<3.0.0 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 license: MIT license_family: MIT - size: 405751 - timestamp: 1745083011918 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pendulum-3.1.0-py312h0d0de52_0.conda - sha256: 00ac23943630ebeefdcaf1a1aed563caac41271d85447cc5ff8085e4840b26dc - md5: 168898d5e636d8c71d693e92e1535e1d + size: 440128 + timestamp: 1769867216533 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pendulum-3.2.0-py312h933127a_2.conda + sha256: 568fac1c03d777d1fe637ca1cff41a366c56e228a9537ce83e35895c39d2eca0 + md5: 625b8d8db87cac2c5bc51ef776e3d821 depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 + - python - python-dateutil >=2.6 - - python_abi 3.12.* *_cp312 - - time-machine >=2.6.0 - tzdata >=2020.1 + - time-machine >=2.6.0,<3.0.0 + - __osx >=10.13 + - python_abi 3.12.* *_cp312 constrains: - __osx >=10.13 license: MIT license_family: MIT - size: 390375 - timestamp: 1745083144573 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pendulum-3.1.0-py312hcd83bfe_0.conda - sha256: de41928a5b0ae98b578d326bc1ccf6db6f86b620192a0dde5fda363c7123b390 - md5: 1e7f57ccbfe286ac64dd5477c15384a1 + size: 432354 + timestamp: 1769867234463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pendulum-3.2.0-py312hb9d4441_2.conda + sha256: b21ddbc8bbd17fb6055ad349c1297be999e3e7ba04fdca6538512d06a652d70e + md5: e562a18103d3c3c14bece2620fad584e depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - python - python-dateutil >=2.6 - - python_abi 3.12.* *_cp312 - - time-machine >=2.6.0 - tzdata >=2020.1 + - time-machine >=2.6.0,<3.0.0 + - python 3.12.* *_cpython + - __osx >=11.0 + - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 license: MIT license_family: MIT - size: 380305 - timestamp: 1745083199779 -- conda: https://conda.anaconda.org/conda-forge/win-64/pendulum-3.1.0-py312h2615798_0.conda - sha256: c334e48005e9fbfaee5791b0d056fe32a696f06a74aea5418641aee7ac48ccb1 - md5: 871a017884c1d4f6a4058433de9684f2 + size: 423188 + timestamp: 1769867314128 +- conda: https://conda.anaconda.org/conda-forge/win-64/pendulum-3.2.0-py312hdabe01f_2.conda + sha256: ee900055d26d112d80c96f32ddc2762d200d5b67709e5fcf6269d955f86b9d8c + md5: 9f346bea53b67e376d6959d263508dcc + depends: + - python + - python-dateutil >=2.6 + - tzdata >=2020.1 + - time-machine >=2.6.0,<3.0.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: 351856 + timestamp: 1769867250015 +- conda: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda + sha256: d339c53c4aa812fc53078e885740ee6c1b7e8c80165744810bbc2b48057114ee + md5: 4c2498dcda0d58cf25466e82f7287b32 depends: - - python >=3.12,<3.13.0a0 - - python-dateutil >=2.6 - - python_abi 3.12.* *_cp312 - - time-machine >=2.6.0 - - tzdata >=2020.1 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - python >=3.6 license: MIT license_family: MIT - size: 323812 - timestamp: 1745083374125 + size: 315640 + timestamp: 1752233037144 - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda sha256: 202af1de83b585d36445dc1fda94266697341994d1a3328fabde4989e1b3d07a md5: d0d408b1f18883a944376da5cf8101ea @@ -20084,90 +24689,90 @@ packages: license_family: Apache size: 1465076 timestamp: 1739627774493 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.0.0-py312h50c33e8_2.conda - sha256: 58c4589d7dc2d2bf66fc57fc21abd43ca85b23d14b24466d8e8bef60ca51185b - md5: f2aef8ecea68f4d35330f0c48949bff2 +- 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 - - openjpeg >=2.5.4,<3.0a0 - - lcms2 >=2.17,<3.0a0 + - __glibc >=2.17,<3.0.a0 - libjpeg-turbo >=3.1.2,<4.0a0 - - libwebp-base >=1.6.0,<2.0a0 - - libtiff >=4.7.1,<4.8.0a0 - - python_abi 3.12.* *_cp312 + - 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 - - zlib-ng >=2.3.1,<2.4.0a0 + - lcms2 >=2.18,<3.0a0 + - python_abi 3.12.* *_cp312 + - zlib-ng >=2.3.3,<2.4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - openjpeg >=2.5.4,<3.0a0 license: HPND - size: 1028596 - timestamp: 1764330106863 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.0.0-py312hea0c9db_2.conda - sha256: 8c2fc5ff5d9b6d9e285ef217e78d90820d507c98b961256dd410f48307360754 - md5: 1d9e77d994f7593d52f6f42ec2712b4d + size: 1029755 + timestamp: 1770794002406 +- 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 - tk >=8.6.13,<8.7.0a0 - - lcms2 >=2.17,<3.0a0 - - python_abi 3.12.* *_cp312 - - libjpeg-turbo >=3.1.2,<4.0a0 - - libxcb >=1.17.0,<2.0a0 - - openjpeg >=2.5.4,<3.0a0 - - zlib-ng >=2.3.1,<2.4.0a0 - libwebp-base >=1.6.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 - libfreetype >=2.14.1 - libfreetype6 >=2.14.1 + - libjpeg-turbo >=3.1.2,<4.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: 961639 - timestamp: 1764330318999 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.0.0-py312h95c711c_2.conda - sha256: b720df83d27af31466c77554b95a78fa03e458810537570fb05850a119667c07 - md5: 817cd66153338f403cf05d8a09d93fad + size: 964529 + timestamp: 1770794115028 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py312h4e908a4_0.conda + sha256: 4729476631c025dfce555a5fd97f1b0b97e765e7c01aee5b7e59b880d8335006 + md5: 537e6079e50e219252d016254b0d2573 depends: - python - - python 3.12.* *_cpython - __osx >=11.0 - - libjpeg-turbo >=3.1.2,<4.0a0 - - libxcb >=1.17.0,<2.0a0 - - libfreetype >=2.14.1 - - libfreetype6 >=2.14.1 - - zlib-ng >=2.3.1,<2.4.0a0 - - libtiff >=4.7.1,<4.8.0a0 + - python 3.12.* *_cpython - libwebp-base >=1.6.0,<2.0a0 - - tk >=8.6.13,<8.7.0a0 - - lcms2 >=2.17,<3.0a0 - openjpeg >=2.5.4,<3.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: 950740 - timestamp: 1764330196015 -- conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.0.0-py312h31f0997_2.conda - sha256: f790f3ea6ae82d8ee3490d62cc2400311f0ca130eaf73292c599019e0b3ccae4 - md5: 4155ddcc60faad07fb2a5b3b988b3741 + size: 954096 + timestamp: 1770794152238 +- 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 - - libfreetype >=2.14.1 - - libfreetype6 >=2.14.1 - - libjpeg-turbo >=3.1.2,<4.0a0 - - zlib-ng >=2.3.1,<2.4.0a0 + - openjpeg >=2.5.4,<3.0a0 + - python_abi 3.12.* *_cp312 + - lcms2 >=2.18,<3.0a0 - libxcb >=1.17.0,<2.0a0 + - libwebp-base >=1.6.0,<2.0a0 - tk >=8.6.13,<8.7.0a0 - - python_abi 3.12.* *_cp312 - - openjpeg >=2.5.4,<3.0a0 - - lcms2 >=2.17,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 - libtiff >=4.7.1,<4.8.0a0 - - libwebp-base >=1.6.0,<2.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 license: HPND - size: 931818 - timestamp: 1764330112081 + size: 933926 + timestamp: 1770794018420 - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.2-pyhcf101f3_0.conda sha256: 9fbaf42c68eeecd36e578cd39c16a9f8d4f2ecb6bf80d087bd08c88e48ccab4d md5: e8d84977b2cab87277e1ac38173fe69c @@ -20230,19 +24835,19 @@ 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 -- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.0-pyhd8ed1ab_0.conda - sha256: 13b06d2380fc46c299d2ae3465f90f156929b7f98597fc22b0e7ac0cfd40c20d - md5: 6d4c79b604d50c1140c32164f7eca72a + size: 25643 + timestamp: 1771233827084 +- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda + sha256: 48d2caf66b8209bfb3fa160f5bc7cbd625deaa4826e8aa1bad706b2dd22bbb86 + md5: 7702bcd70891dd0154d765a69e1afa94 depends: - narwhals >=1.15.1 - packaging @@ -20251,8 +24856,8 @@ packages: - ipywidgets >=7.6 license: MIT license_family: MIT - size: 5179039 - timestamp: 1763430425844 + size: 4924275 + timestamp: 1768442503807 - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda sha256: e14aafa63efa0528ca99ba568eaf506eb55a0371d12e6250aaaa61718d2eb62e md5: d7585b6550ad04c8c5e21097ada2888e @@ -20272,11 +24877,11 @@ packages: license_family: BSD size: 49052 timestamp: 1733239818090 -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.36.1-pyh6a1acc5_0.conda - sha256: 8a6bcee3c0a0dc00a880082dbcb18f2ca619f9a7ac1a10e91126a06b2e413efb - md5: 160b41862a43936cbe509d1879d67f54 +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + sha256: 66b1fcb302268a21a0dc818cf550d615b6e93e3d693bec612c7948231bb30489 + md5: b20de145c676cbae6138ac478cdb137b depends: - - polars-runtime-32 ==1.36.1 + - polars-runtime-32 ==1.38.1 - python >=3.10 - python constrains: @@ -20290,66 +24895,66 @@ packages: - pyiceberg >=0.7.1 - altair >=5.4.0 - great_tables >=0.8.0 - - polars-runtime-32 ==1.36.1 - - polars-runtime-64 ==1.36.1 - - polars-runtime-compat ==1.36.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: 522848 - timestamp: 1765344520067 -- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.36.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: 53f3cbe0ce39f7e21e64b9a1f61abf6353c679f575a47fe72715d0cf02319e54 - md5: af35229f34c80dcfab5a40414440df23 + 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: 35250145 - timestamp: 1765344520066 -- conda: https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.36.1-py310hfb6bc98_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: 3ab320a6175732165f9e14c447ab766e221322bb0c74c78b4eab8b60246c7032 - md5: a466731fdecd70299823349a913731c2 + 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: 34227518 - timestamp: 1765344423449 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.36.1-py310h34bb384_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: e9ab1c2833fc368bcbc27c214cbc5123f16cb243dfcb07aaf0bc060638a17ea0 - md5: 4cc0693aae853723df55150875a2d602 + 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: 31508688 - timestamp: 1765344479373 -- conda: https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.36.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: 8def44d2158c55bb3bd604f7744d18aef21242e487aececabb2bd14aa3b57716 - md5: 1938c5ab40c1343a779973871b2ee04d + sha256: e3d66b5053af2fa908272ed9f14d7f0add401391ff4fc7bd6fa9854ae9068e21 + md5: b5cb5bc8ed2f9df48909637e7fca0aba depends: - python - vc >=14.3,<15 @@ -20359,8 +24964,8 @@ packages: - cpython >=3.10 license: MIT license_family: MIT - size: 38501800 - timestamp: 1765344443861 + size: 39451459 + timestamp: 1770417363447 - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.7.1-pyhd8ed1ab_0.conda sha256: a20c139c372c911b9252f99297a07f2a4cdf336884754a006a09498593556ce0 md5: 153f1b172beb7f5df84a78b2bde02f24 @@ -20387,9 +24992,35 @@ packages: license_family: GPL size: 676989 timestamp: 1738446720491 -- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.0-pyha770c72_0.conda - sha256: 8481f4939b1f81cf0db12456819368b41e3f998e4463e41611de4b13752b2c08 - md5: af8d4882203bccefec6f1aeed70030c6 +- conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda + sha256: f833d2a36115aa6fd3815394c876bee0bdd0ea850b843a0caeb2b153c37080e4 + md5: 3770774486c8b9e822c6bf996da18a25 + depends: + - country_converter + - deprecation + - entsoe-py >=0.3.1 + - geopy + - matplotlib-base + - networkx >=1.10 + - numpy + - openpyxl + - pandas >=0.24.0,<3 + - pycountry + - python >=3.10 + - pyyaml >=5.1.0 + - requests + - scipy + - seaborn + - tqdm + - unidecode + - xlrd + license: MIT + license_family: MIT + size: 670655 + timestamp: 1770848138584 +- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda + sha256: 5b81b7516d4baf43d0c185896b245fa7384b25dc5615e7baa504b7fa4e07b706 + md5: 7f3ac694319c7eaf81a0325d6405e974 depends: - cfgv >=2.0.0 - identify >=1.0.0 @@ -20399,8 +25030,8 @@ packages: - virtualenv >=20.10.0 license: MIT license_family: MIT - size: 201265 - timestamp: 1764067809524 + size: 200827 + timestamp: 1765937577534 - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda sha256: 9c9f851688f1463c0c6a667dc34a8bce9a7ee2f630b0346ece448e77938f7d5b md5: e557abf678a0bf100fe7cf9d2b4f4a72 @@ -20411,26 +25042,45 @@ packages: license_family: BSD size: 54711 timestamp: 1734172966353 -- conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-h99ae125_0.conda - sha256: 551cd2b779902ff88cb945cd69af9978561347a17023403b64f476a5a82b70c5 - md5: 8bbc19a6e87fbe8b97796e9a42a47a30 +- conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.6.2-h18fbb6c_2.conda + sha256: c1c9e38646a2d07007844625c8dea82404c8785320f8a6326b9338f8870875d0 + md5: 1aeede769ec2fa0f474f8b73a7ac057f depends: - __glibc >=2.17,<3.0.a0 - - libcurl >=8.17.0,<9.0a0 + - libcurl >=8.14.1,<9.0a0 - libgcc >=14 - - libsqlite >=3.51.1,<4.0a0 + - libsqlite >=3.50.4,<4.0a0 - libstdcxx >=14 - - libtiff >=4.7.1,<4.8.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - sqlite + constrains: + - proj4 ==999999999999 + license: MIT + license_family: MIT + size: 3240415 + timestamp: 1754927975218 +- 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 + - libgcc >=14 + - libstdcxx >=14 + - libtiff >=4.7.1,<4.8.0a0 + - libcurl >=8.18.0,<9.0a0 + - libsqlite >=3.51.2,<4.0a0 constrains: - proj4 ==999999999999 license: MIT license_family: MIT - size: 3247369 - timestamp: 1764624592955 -- conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.7.0-h3124640_0.conda - sha256: f8d45ec8e2a6ea58181a399a58f5e2f6ab6d25f772ba63ac08091e887498ab83 - md5: c952a9e5ecd52f6dfdb1b4e43e033893 + size: 3593669 + timestamp: 1770890751115 +- conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.6.2-h8462e38_2.conda + sha256: d3bad35930d6ddaef85881c0bc88a5cd5122a6efa4a8f6b645d4642053f172f7 + md5: 00a64f7f9888ad6a05ff9766058c33cc depends: - __osx >=10.13 - libcurl >=8.14.1,<9.0a0 @@ -20442,31 +25092,67 @@ packages: - proj4 ==999999999999 license: MIT license_family: MIT - size: 2918228 - timestamp: 1757930204492 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.7.1-h46dec42_0.conda - sha256: 68afb147fabc53aa6fec307e58bbfde4cf3ee1043fd89f7587527553e1cb6976 - md5: 428720dc6e9451b0ec8a60f66ba8f04f + size: 2914595 + timestamp: 1754928086110 +- conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.7.1-h4aacef1_3.conda + sha256: 848b0393f363ab49169d9a7d4dccef15cb4b34cbdbc6365240dd7e70bd602173 + md5: 86a72148f2ace31569279a41c903f1be depends: - - __osx >=11.0 - - libcurl >=8.17.0,<9.0a0 + - sqlite + - libtiff + - libcurl - libcxx >=19 - - libsqlite >=3.51.1,<4.0a0 + - __osx >=10.13 + - 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: 3235372 + timestamp: 1770890768263 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.6.2-hdbeaa80_2.conda + sha256: 75e4bfa1a2d2b46b7aa11e2293abfe664f5775f21785fb7e3d41226489687501 + md5: e68d0d91e188ab134cb25675de82b479 + depends: + - __osx >=11.0 + - libcurl >=8.14.1,<9.0a0 + - libcxx >=19 + - libsqlite >=3.50.4,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 - sqlite constrains: - proj4 ==999999999999 license: MIT license_family: MIT - size: 2791202 - timestamp: 1764625088749 -- conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.7.1-h7b1ce8f_0.conda - sha256: c582fd23ceaabe435f4fc78f4cb1f0f4ca46964e19d3b56dc3813dd83a25b115 - md5: 9839364b9ca98be1917a72046e5880fd + size: 2787374 + timestamp: 1754927844772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.7.1-hfb14a63_3.conda + sha256: 14484430a32a13cb9c03ebf3084a4ffb1feb417aa4c23907844fba219924058f + md5: 8f33a4a2b856de0e8f006c489beca62a depends: - - libcurl >=8.17.0,<9.0a0 - - libsqlite >=3.51.1,<4.0a0 + - sqlite + - libtiff + - libcurl + - __osx >=11.0 + - libcxx >=19 + - 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: 3098262 + timestamp: 1770890778843 +- conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.6.2-h7990399_2.conda + sha256: e798e9bd658f6c00cfac0d8573c7fe97d9ebad5966c96c23e0702f44e51905bb + md5: 6e0e8fcc3eb2c1418d663005bf040d8d + depends: + - libcurl >=8.14.1,<9.0a0 + - libsqlite >=3.50.4,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 - sqlite - ucrt >=10.0.20348.0 - vc >=14.3,<15 @@ -20475,8 +25161,27 @@ packages: - proj4 ==999999999999 license: MIT license_family: MIT - size: 2817020 - timestamp: 1764624798704 + size: 2788230 + timestamp: 1754928361098 +- conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.7.1-hd30e2cd_3.conda + sha256: 8ff06eae963bdc7580ccb246df911614e9a5a23683b26326df76b1b6f3258e94 + md5: f2b0478a02d35bac5b872d4d63b96be3 + depends: + - sqlite + - libtiff + - libcurl + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - 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: 3084268 + timestamp: 1770890802564 - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc md5: a83f6a2fdc079e643237887a37460668 @@ -20517,15 +25222,15 @@ packages: license_family: MIT size: 173220 timestamp: 1730769371051 -- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.23.1-pyhd8ed1ab_0.conda - sha256: 13dc67de68db151ff909f2c1d2486fa7e2d51355b25cee08d26ede1b62d48d40 - md5: a1e91db2d17fd258c64921cb38e6745a +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda + sha256: 75b2589159d04b3fb92db16d9970b396b9124652c784ab05b66f584edc97f283 + md5: 7526d20621b53440b0aae45d4797847e depends: - python >=3.10 license: Apache-2.0 license_family: Apache - size: 54592 - timestamp: 1758278323953 + size: 56634 + timestamp: 1768476602855 - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda sha256: 4817651a276016f3838957bfdf963386438c70761e9faec7749d411635979bae md5: edb16f14d920fb3faf17f5ce582942d6 @@ -20595,16 +25300,16 @@ packages: license_family: APACHE size: 50573 timestamp: 1744525241304 -- conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-pyhd8ed1ab_0.conda - sha256: 88217ba299be4a56c0534ccdef676390b76ca10b07ac26d16940d9a944d6212c - md5: 6fcfcf4432cd80d05ee9c6e20830bd36 +- 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.9 + - python >=3.10 license: Apache-2.0 license_family: APACHE - size: 42466 - timestamp: 1741676252602 + size: 43555 + timestamp: 1770104240191 - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.31.1-py312hb8af0ac_2.conda sha256: 9c1dffa6371b5ae5a7659f08fa075a1a9d7b32fd11d5eaa1e7192eba4cae1207 md5: 2aaf8d6c729beb30d1b41964e7fb2cd6 @@ -20674,9 +25379,25 @@ packages: license_family: BSD size: 480805 timestamp: 1760394064571 -- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.1.3-py312h5253ce2_0.conda - sha256: 1b679202ebccf47be64509a4fc2a438a66229403257630621651b2886b882597 - md5: 82ce56c5a4a55165aed95e04923ab363 +- 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 - libgcc >=14 @@ -20684,22 +25405,22 @@ packages: - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 495011 - timestamp: 1762092914381 -- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.1.3-py312h01f6755_0.conda - sha256: 053018613cabc02e87252104a597fc469ebf6af210ae1d24e9855fa5ac419205 - md5: 9587fcc6d21e10f59b708690399c5a66 + size: 225545 + timestamp: 1769678155334 +- 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: 505701 - timestamp: 1762093032445 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.1.3-py312h37e1c23_0.conda - sha256: cd831dfe655fdb581e1c2c71fa072d2fce38538474a36cbde3ae2dd910a2ae76 - md5: d0b2f83de57eafaa6d7700b589c66096 + size: 236338 + timestamp: 1769678402626 +- 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 @@ -20707,79 +25428,76 @@ packages: - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 508014 - timestamp: 1762093047823 -- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.1.3-py312he5662c2_0.conda - sha256: 993629ec946988e047a4024f1f9c82cdf93e19e0a6f5d5fe908171d918fdbc8f - md5: f6d128e33550e9e8e3864a48c8f24230 + size: 239031 + timestamp: 1769678393511 +- 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 - 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: BSD-3-Clause license_family: BSD - size: 513061 - timestamp: 1762092905129 -- conda: https://conda.anaconda.org/conda-forge/noarch/psycopg-3.3.2-pyh848bd53_0.conda - sha256: f46613ccbdaeb3ebc871be79d47a8e5f47a184352f70c595651dd6036ad45372 - md5: 94032a33be83684c513d16865fe1cb13 + size: 242769 + timestamp: 1769678170631 +- conda: https://conda.anaconda.org/conda-forge/noarch/psycopg-3.3.3-pyh848bd53_0.conda + sha256: 7048838d518c2dad46f07d57b9a03f0fa1a9b6ce734ecc8e127e6c23dfefa54e + md5: 17e4acfeab4c3a4ce6c74a3455cdc9e9 depends: - libpq - - psycopg-c >=3.3.2,<3.3.3.0a0 + - psycopg-c >=3.3.3,<3.3.4.0a0 - python >=3.10 - typing-extensions >=4.6 license: LGPL-3.0-only license_family: LGPL - size: 145343 - timestamp: 1765052944989 -- conda: https://conda.anaconda.org/conda-forge/linux-64/psycopg-c-3.3.2-py312hc3ef785_0.conda - sha256: a020b1943b2805de01658e08da7864310fce77382c8ca03d177dccac25e532c0 - md5: 793513287e8d39c0b9c270176bd7a701 + size: 145858 + timestamp: 1771456301047 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psycopg-c-3.3.3-py312hc3ef785_0.conda + sha256: 05dee9c6d87cd6633617defff254582a0b1019ceb887d69e1bc0496482f0b300 + md5: f3a65c2565e76bc239240ff93abaa499 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - libpq >=18.1,<19.0a0 + - libpq >=18.2,<19.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: LGPL-3.0-only license_family: LGPL - size: 686584 - timestamp: 1765052903191 -- conda: https://conda.anaconda.org/conda-forge/osx-64/psycopg-c-3.3.2-py312ha23389c_0.conda - sha256: a744d334aee6fc430d5c69e2a75ecf1410fc04bb7af203326b2ba970ac32b06f - md5: 1972325d2ec9ec4d130e1bac1ed73b22 + size: 693248 + timestamp: 1771456359224 +- conda: https://conda.anaconda.org/conda-forge/osx-64/psycopg-c-3.3.3-py312h87b31b3_0.conda + sha256: 722e13ff3f27c20f0a7b88c16b4446d9613716d868165364b911d03cee56710b + md5: 93d287b5fe97bf37cf8edbac690b5365 depends: - - __osx >=10.13 - - libpq >=18.1,<19.0a0 + - __osx >=11.0 + - libpq >=18.2,<19.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: LGPL-3.0-only license_family: LGPL - size: 635310 - timestamp: 1765053209149 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psycopg-c-3.3.2-py312h7aab862_0.conda - sha256: 5cfe21415842a623bc46ec3593f02b0e98cf3484c818466792fd1467cb45847a - md5: 6e66d5ea548a7e8932e0c194def3e3dd + size: 642705 + timestamp: 1771456419042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psycopg-c-3.3.3-py312hf1f24e4_0.conda + sha256: 92d4650f5f325818c34fc8dfd888f2b79918e6a97da13d92df81f77945355996 + md5: 5c4c3b8a27fbe3d161ef4d1fc8039881 depends: - __osx >=11.0 - - libpq >=18.1,<19.0a0 + - libpq >=18.2,<19.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: LGPL-3.0-only license_family: LGPL - size: 625594 - timestamp: 1765053219623 -- conda: https://conda.anaconda.org/conda-forge/win-64/psycopg-c-3.3.2-py312hfd315ce_0.conda - sha256: bf59dfdf7631ac5e7567abf70755f753b61b0b3960f20a4c58f5499766e412bc - md5: edf980df4078a1a3066032ea4fe1dc10 + size: 632836 + timestamp: 1771456843883 +- conda: https://conda.anaconda.org/conda-forge/win-64/psycopg-c-3.3.3-py312hfd315ce_0.conda + sha256: b383cd84c1f98a55d6e7cd9928097806f9597b27cf27ff9ac7e0bc5729a6417d + md5: 5a0f10d12c0fcc09654de0072d1ac471 depends: - - libpq >=18.1,<19.0a0 + - libpq >=18.2,<19.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 @@ -20787,8 +25505,8 @@ packages: - vc14_runtime >=14.44.35208 license: LGPL-3.0-only license_family: LGPL - size: 603563 - timestamp: 1765053031896 + size: 608545 + timestamp: 1771456154185 - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e @@ -20925,128 +25643,247 @@ packages: license_family: APACHE size: 84956 timestamp: 1763068811210 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-22.0.0-py312h7900ff3_0.conda - sha256: 282a72c54d4df010bf0e2e6b6beb84cdaea55afa497ad93dbe96e2798810747c - md5: f135d6fe1a8065e6a59cab7512237524 +- 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 *_3_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 33391 + timestamp: 1770649947337 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-23.0.0-py312h7900ff3_0.conda + sha256: a188741519a763aeb2ca3da6cc6ef1ec80915a2f1ea51402369dd4f06279968f + md5: 37143c8f2ee5efeae94e09654d284350 + 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 + license_family: APACHE + size: 27287 + timestamp: 1769291578069 +- 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 *_3_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 33389 + timestamp: 1770650434937 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-23.0.0-py312hb401068_0.conda + sha256: 5a86def13d0b89b649f3c9bc07f175b88aa44e84c50468e416b8b83681a5d1b1 + md5: 4e75d068299eb2fcd0ecc448d99a6880 + 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 + license_family: APACHE + size: 27204 + timestamp: 1769291581498 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-21.0.0-py312h1f38498_3.conda + sha256: a357a6646043c7ebc51d233ab7b46a69874f5ce5aa6ee8412ac734f9abe5c0ea + md5: e86d99f7ece7a3c34dad3e3e3c357500 depends: - - libarrow-acero 22.0.0.* - - libarrow-dataset 22.0.0.* - - libarrow-substrait 22.0.0.* - - libparquet 22.0.0.* - - pyarrow-core 22.0.0 *_0_* + - libarrow-acero 21.0.0.* + - libarrow-dataset 21.0.0.* + - libarrow-substrait 21.0.0.* + - libparquet 21.0.0.* + - 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: 26218 - timestamp: 1761648647497 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-22.0.0-py312hb401068_0.conda - sha256: 2aa3268e84e3fa92c70d172cc5e0dcdeacf571a58eb40544910a1eab5eaaef67 - md5: 4f99ad72cb5935960c38b11f6c923446 + size: 33429 + timestamp: 1770650291141 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-23.0.0-py312h1f38498_0.conda + sha256: 980d0c5e8c5828ec35d9e99bde1301c73e73c0bdd50a65709972496525d58302 + md5: 5a94239761dac0bef912f3fa75e00e53 depends: - - libarrow-acero 22.0.0.* - - libarrow-dataset 22.0.0.* - - libarrow-substrait 22.0.0.* - - libparquet 22.0.0.* - - pyarrow-core 22.0.0 *_0_* + - 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 license_family: APACHE - size: 26228 - timestamp: 1761649158373 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-22.0.0-py312h1f38498_0.conda - sha256: 633f7d84e5233238e4a6e400915ff63d5c5473919ab25888d02c548e10aa1546 - md5: e9f07253879e83716fc0aca0ca21648a + size: 27315 + timestamp: 1769291405922 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-23.0.0-py312h2e8e312_0.conda + sha256: c77b31c6adad7b1919c2e7f4b9e6257a1effc8613b17a540237f9fac0d5c2dfc + md5: e1519e126722ddb9406bb63a9393b59c depends: - - libarrow-acero 22.0.0.* - - libarrow-dataset 22.0.0.* - - libarrow-substrait 22.0.0.* - - libparquet 22.0.0.* - - pyarrow-core 22.0.0 *_0_* + - 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 license_family: APACHE - size: 26313 - timestamp: 1761649008376 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-22.0.0-py312h2e8e312_0.conda - sha256: 454c90e1c341335aa08fae2152d4f2b410406dcda76db21cd2f1c2720dac67b1 - md5: 1e2ead2c5717977fb85b9c6809b0896e + size: 27620 + timestamp: 1769291986767 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-23.0.1-py312h2e8e312_0.conda + sha256: a38a2c1478e0f2e557449dfe04e431609378b9cb1caeb509dbdc36ca7239ca46 + md5: 35a0bf970ae94226283f081608aa300b depends: - - libarrow-acero 22.0.0.* - - libarrow-dataset 22.0.0.* - - libarrow-substrait 22.0.0.* - - libparquet 22.0.0.* - - pyarrow-core 22.0.0 *_0_* + - 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: 26662 - timestamp: 1761648571813 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-22.0.0-py312hc195796_0_cpu.conda - sha256: 094776e624af92c774919b9cc57e0092aacd12a44ed02e5c664cdbed7b186d17 - md5: 7fe5934d9aa025b4e5c8708718c4dafb + 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 22.0.0.* *cpu - - libarrow-compute 22.0.0.* *cpu + - libarrow 21.0.0.* *cpu + - libarrow-compute 21.0.0.* *cpu - libgcc >=14 - libstdcxx >=14 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - 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: 5331970 - timestamp: 1761648505164 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-22.0.0-py312hefc66a4_0_cpu.conda - sha256: 868a3a4a44f8eb77d701c635d4618782a1774a8a6f2d7b4162162ad7b72035f1 - md5: 8f850be5abc40c5d57562024b140db43 + size: 4708748 + timestamp: 1770649937127 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.0-py312h2054cf2_0_cpu.conda + sha256: b8280cfa171e136952e6e8d64788b552ec69576ddb44d6c3b13e7bcdaa347cca + md5: b1d1c92d8d625d5e969adfd9d19168d8 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.0.* *cpu + - libarrow-compute 23.0.0.* *cpu + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc * cpu + - numpy >=1.23,<3 + license: Apache-2.0 + license_family: APACHE + size: 5310314 + timestamp: 1770672654158 +- 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 22.0.0.* *cpu - - libarrow-compute 22.0.0.* *cpu + - libarrow 21.0.0.* *cpu + - libarrow-compute 21.0.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - 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: 4343661 + timestamp: 1770650313474 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.0-py312hfcd758a_0_cpu.conda + sha256: 3b8c0bf5f134d3b9724fe9710919ecc6335ccd9fcb89ffceaed30348a63d2248 + md5: 56f385be8045a613bae647a4b7e1b666 + depends: + - __osx >=10.13 + - libarrow 23.0.0.* *cpu + - libarrow-compute 23.0.0.* *cpu + - libcxx >=21 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc * cpu + - numpy >=1.23,<3 license: Apache-2.0 license_family: APACHE - size: 4029697 - timestamp: 1761648927880 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-22.0.0-py312hea229ce_0_cpu.conda - sha256: f7fc857072310fe86cc77e7c350b8431a0667dd910dcd87471f06211104ff96c - md5: 9b8e724a37788b846f67a93d1d2c9fa7 + size: 4430641 + timestamp: 1770672748743 +- 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 22.0.0.* *cpu - - libarrow-compute 22.0.0.* *cpu + - libarrow 21.0.0.* *cpu + - libarrow-compute 21.0.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - 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: 3884425 - timestamp: 1761648934782 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-22.0.0-py312h85419b5_0_cpu.conda - sha256: de96d67311385a7f3a23cdc4b49408e65c70e42af9a08bbd8ee6085ae8a26104 - md5: 18679999d9e40f043228de1e00847136 + size: 4207799 + timestamp: 1770650247020 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.0-py312h21b41d0_0_cpu.conda + sha256: c6594cf563823540b771cc7bd83681dd3f7f8068e04be06ed629ae3f918ef631 + md5: 724800000ee5b687c836cc33cdd83b26 depends: - - libarrow 22.0.0.* *cpu - - libarrow-compute 22.0.0.* *cpu + - __osx >=11.0 + - libarrow 23.0.0.* *cpu + - libarrow-compute 23.0.0.* *cpu + - libcxx >=21 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc * cpu + - numpy >=1.23,<3 + license: Apache-2.0 + license_family: APACHE + size: 4237514 + timestamp: 1770673451923 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-23.0.0-py312h85419b5_0_cpu.conda + sha256: 2cc38a12d517c57204a3af60ca72ed9cb98250e4b98dec4feb8fe5076ac9fb60 + md5: f72dc289f49117c9bf697dffd7174286 + 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 @@ -21058,17 +25895,37 @@ packages: - apache-arrow-proc * cpu license: Apache-2.0 license_family: APACHE - size: 3504560 - timestamp: 1761648524205 -- conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda - sha256: d06051df66e9ab753683d7423fcef873d78bb0c33bd112c3d5be66d529eddf06 - md5: 09bb17ed307ad6ab2fd78d32372fdd4e + size: 3557733 + timestamp: 1769291505775 +- 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.1.* *cpu + - libarrow-compute 23.0.1.* *cpu + - libzlib >=1.3.1,<2.0a0 + - 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 + license: Apache-2.0 + 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 depends: - - python >=3.9 + - python >=3.10 license: BSD-2-Clause license_family: BSD - size: 62230 - timestamp: 1733217699113 + size: 63471 + timestamp: 1769186345593 - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda sha256: 5495061f5d3d6b82b74d400273c586e7c1f1700183de1d2d1688e900071687cb md5: c689b62552f6b63f32f3322e463f3805 @@ -21201,27 +26058,28 @@ packages: license_family: MIT size: 1970249 timestamp: 1762989032818 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhd8ed1ab_0.conda - sha256: e984052b8922b8996add05d595b68430e4f28b7d93846693b2729dc1e0504685 - md5: b74145c95d910d3dd4195cf7d7567c35 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhcf101f3_1.conda + sha256: 6a25f3b7a92833534eb9d09e3b4ba00195fbf459ec608d15dc9e31f81b67e972 + md5: 83984e3edee8f7312c0aa860682ee145 depends: - - pydantic >=2.5.2 - python >=3.10 + - pydantic >=2.5.2 + - python constrains: - - python-ulid >=1,<3 - phonenumbers >=8,<9 - - pytz >=2024.1 - pycountry >=23 - - tzdata >=2024a - - pendulum >=3.0.0,<4.0.0 - semver >=3.0.2,<4 + - python-ulid >=1,<4 + - pendulum >=3.0.0,<4.0.0 + - pytz >=2024.1 + - tzdata >=2024a license: MIT license_family: MIT - size: 64099 - timestamp: 1767221123687 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.12.0-pyh3cfb1c2_0.conda - sha256: 17d552dd19501909d626ff50cd23753d56e03ab670ce9096f1c4068e1eb90f2a - md5: 0a3042ce18b785982c64a8567cc3e512 + size: 68665 + timestamp: 1770023146886 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.13.1-pyhd8ed1ab_0.conda + sha256: 343988d65c08477a87268d4fbeba59d0295514143965d2755ac4519b73155479 + md5: cc0da73801948100ae97383b8da12993 depends: - pydantic >=2.7.0 - python >=3.10 @@ -21229,8 +26087,8 @@ packages: - typing-inspection >=0.4.0 license: MIT license_family: MIT - size: 43752 - timestamp: 1762786342653 + size: 49319 + timestamp: 1771527313149 - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda sha256: 5ec877142ded763061e114e787a4e201c2fb3f0b1db2f04ace610a1187bb34ae md5: c7c50dd5192caa58a05e6a4248a27acb @@ -21247,21 +26105,7 @@ packages: license: BSD-3-Clause license_family: BSD size: 1393462 - timestamp: 1719344980505 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.8.0-pyhd8ed1ab_0.tar.bz2 - sha256: 67e57fcf187775a8376e554df885faa6c00d0713afc533d12c3d7ea61ed8b99e - md5: 176b16002a5423169bf0f4b4c0ebecaf - depends: - - ipykernel - - ipywidgets - - jinja2 - - numpy >=1.23.4,<2.0a0 - - python >=3.7 - - traitlets - license: Apache-2.0 - license_family: Apache - size: 4041893 - timestamp: 1667589618826 + timestamp: 1719344980505 - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda sha256: 0e715646b7e2a5b76d56f22c7bc4dedfb60332a96ec00449b7ec028d324fb572 md5: 4b13d1d2d5cba37be9fa3c0922bbf995 @@ -21277,55 +26121,38 @@ packages: license_family: Apache size: 4796214 timestamp: 1738346682233 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydot-4.0.1-py312h7900ff3_1.conda - sha256: 976a9a4da0a6822e712cd1e283713d736108647665166263fd0c09c6fa93a869 - md5: 978768d48e850a22e6e52f865c2a8b26 - depends: - - graphviz >=2.38.0 - - pyparsing >=3.0.9 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 83063 - timestamp: 1756812465781 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pydot-4.0.1-py312hb401068_1.conda - sha256: 134a614c0a43407ad79a2e66981a84e6270cd6f49bbf64de85b563957da8ed1f - md5: 4c66483ee6c9b9612dc139deb36bd578 - depends: - - graphviz >=2.38.0 - - pyparsing >=3.0.9 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 83525 - timestamp: 1756812459528 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydot-4.0.1-py312h81bd7bf_1.conda - sha256: 50d2a9be7fa74dd52f3a0133dd3de49c86b5c54c8808e7fbecb2df262ed1a759 - md5: 8b766a2f2e9f83ebacce71dc8be472da +- conda: https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda + sha256: 2bc013e9116af7f8bc76f57a0f37c02680c6c12003bc15d99735d78937061f5c + md5: 02e7ccf24972a1637c0de86e08a169b3 depends: - - graphviz >=2.38.0 - - pyparsing >=3.0.9 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - 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: 84245 - timestamp: 1756812591299 -- conda: https://conda.anaconda.org/conda-forge/win-64/pydot-4.0.1-py312h2e8e312_1.conda - sha256: e36339670a6f01daf5fa3511c2bf6a9c02260e02d57b03498c2358e295cf7c9d - md5: 19039d06cce338e520ad8efbd605c93a + size: 46177 + timestamp: 1770991277604 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda + sha256: af7213a8ca077895e7e10c8f33d5de3436b8a26828422e8a113cc59c9277a3e2 + md5: 15f6d0866b0997c5302fc230a566bc72 depends: - graphviz >=2.38.0 - - pyparsing >=3.0.9 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - pyparsing >=3.1.0 + - python >=3.10 + - python license: MIT license_family: MIT - size: 84136 - timestamp: 1756812428678 + size: 150656 + timestamp: 1766345630713 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a md5: 6b6ece66ebcae2d5f326c77ef2c5a066 @@ -21335,17 +26162,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 @@ -21434,6 +26261,22 @@ packages: license_family: MIT size: 665062 timestamp: 1746734790035 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py312h053e1f3_0.conda + sha256: 2b0a366d9066e3d9f495369b95cdb1b9d3dba2f59577e4560b7d1086e1fe3d70 + md5: f8e7e5ddfbdca16b65335b0b6615eb4c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgdal-core >=3.12.0,<3.13.0a0 + - libstdcxx >=14 + - numpy + - packaging + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 661347 + timestamp: 1764402531050 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyogrio-0.11.0-py312h4bcfd6b_0.conda sha256: 4446fb33d948eae324c378cf3762d64b1d464a4aeff0c6cf55e09869cf2828b4 md5: 9c4e1cab59f2b45a86e354bc25eeb0ac @@ -21449,6 +26292,21 @@ packages: license_family: MIT size: 599006 timestamp: 1746735008528 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyogrio-0.12.1-py312h17ccd7d_0.conda + sha256: d22ac3e5a554878d739bd06dd412c47adfd5552c2f002eea3fcb6bde2c68bcf9 + md5: e6452e30b697d485a9929bd1eebcd7a2 + depends: + - __osx >=10.13 + - libcxx >=19 + - libgdal-core >=3.12.0,<3.13.0a0 + - numpy + - packaging + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 601808 + timestamp: 1764402817339 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyogrio-0.11.0-py312hfd5e53c_0.conda sha256: 194a0e283634a1640a262e77bb33b3f0c7a4acf2a799f747d5c5f11f03533d79 md5: e1b8ae9311eadbefed27cb87ff752596 @@ -21465,6 +26323,22 @@ packages: license_family: MIT size: 597009 timestamp: 1746734900747 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyogrio-0.12.1-py312h07dd7c3_0.conda + sha256: 4f2fa1d32919b07ad91efefbe5f35ab8ab0f48c9d03351c35321f73b1cab9fa9 + md5: 41000dd333aabfc38a70ff8635cf1d6e + depends: + - __osx >=11.0 + - libcxx >=19 + - libgdal-core >=3.12.0,<3.13.0a0 + - numpy + - packaging + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 589304 + timestamp: 1764402908352 - conda: https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.11.0-py312h6e88f47_0.conda sha256: 05bdd65b1eb49161841a6dc22031ac1026874665d4f4b3a87cdf5e34751f86a0 md5: d2d9db06ba554156ba333c450607043c @@ -21481,6 +26355,22 @@ packages: license_family: MIT size: 832234 timestamp: 1746735147143 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.12.1-py312h3f2e00f_0.conda + sha256: ce75abd4eecdffac3160c3230119e9fc6f77875ca90deb04b84986832ec91b1f + md5: d63733f2a0893b5d42fc4e005d5dc265 + depends: + - libgdal-core >=3.12.0,<3.13.0a0 + - numpy + - packaging + - 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 + license: MIT + license_family: MIT + size: 880946 + timestamp: 1764402680849 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyomo-6.9.5-py312h1289d80_0.conda sha256: cd9fe50d0ca53d8ee4f11450879a535aff75dffe37536d886f395a5c8732ed39 md5: 14653b1832d3fe7f51942e60ff2a5b00 @@ -21552,16 +26442,40 @@ packages: license_family: Apache size: 126393 timestamp: 1760304658366 -- conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - sha256: 6814b61b94e95ffc45ec539a6424d8447895fef75b0fec7e1be31f5beee883fb - md5: 6c8979be6d7a17692793114fa26916e8 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda + sha256: 417fba4783e528ee732afa82999300859b065dc59927344b4859c64aae7182de + md5: 3687cc0b82a8b4c17e1f0eb7e47163d5 depends: - python >=3.10 - python license: MIT license_family: MIT - size: 104044 - timestamp: 1758436411254 + 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 + depends: + - __glibc >=2.17,<3.0.a0 + - certifi + - libgcc >=14 + - proj >=9.6.2,<9.7.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 525395 + timestamp: 1756536636377 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py312h9b6a7d9_2.conda sha256: 0364da87626b20edcf0bb074c274cc484b8088adddc05f90ffb73e52789fc3ce md5: 573b9a879a3a42990f9c51d7376dce6b @@ -21576,6 +26490,19 @@ packages: license_family: MIT size: 525995 timestamp: 1757954904679 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.7.2-py312hb613793_1.conda + sha256: 31e729d0b0f55628d56260f6d79a7010e33732e3a7e32ad5b417b1c23b43fefc + md5: d64162d9eda9f2eb57fa777de83f53d4 + depends: + - __osx >=10.13 + - certifi + - proj >=9.6.2,<9.7.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 478378 + timestamp: 1756536813423 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.7.2-py312hfea2d77_2.conda sha256: 78af5475fc9cfa80e50c8a9cdfb71792175cb5bdc73dcf627254bd5a5593ad01 md5: 21ad98450ce826128e7ff9bfeadd57d9 @@ -21603,6 +26530,35 @@ packages: license_family: MIT size: 477153 timestamp: 1757955093014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyproj-3.7.2-py312hf0774e8_1.conda + sha256: 246f7a846ee5dd879d1b17a985fe664babea5926bb8829f8c08fd7f64c1eb7a7 + md5: b9e4527503d3c4982afe0f056857263e + depends: + - __osx >=11.0 + - certifi + - proj >=9.6.2,<9.7.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 478428 + timestamp: 1756537003593 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyproj-3.7.2-py312h235ce7f_1.conda + sha256: d42df50959884f920ee966085679e48b51ffcb84881efc1d905b329def918da5 + md5: b3bf616f4ffd81c8cca38f3a2e972e1c + depends: + - certifi + - proj >=9.6.2,<9.7.0a0 + - 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 + license: MIT + license_family: MIT + size: 725829 + timestamp: 1756536774510 - conda: https://conda.anaconda.org/conda-forge/win-64/pyproj-3.7.2-py312habbd053_2.conda sha256: b101dab0e1c137117ce3d5a96db9ff9f22931545a35fb0f37d97cf0178a5733b md5: fcfcaa37b6c4efdff5279e4d8ce4ee5b @@ -21618,15 +26574,15 @@ packages: license_family: MIT size: 726982 timestamp: 1757955091798 -- conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.5-pyhd8ed1ab_0.conda - sha256: 3e5d90539995541e2467db5470ea5762675ad264e1db9515e77dd1e9c52fb0cb - md5: d173e05a6d64cfc0e99b2d4cbafd1997 +- conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.3-pyhd8ed1ab_0.conda + sha256: 3f46db5d5fb96f8241cef82745acb28ce22b4b5faac9eded2973eb98ee725586 + md5: bbf9a8bce1e55d2c01e16459a066280c depends: - deprecation - geopandas >=0.9 - highspy - levenshtein >=0.27.1 - - linopy >=0.5.5 + - linopy >=0.5.5,<=0.5.7 - matplotlib-base - netcdf4 - networkx >=2 @@ -21638,13 +26594,40 @@ packages: - python >=3.11 - scipy - seaborn + - shapely <2.1 + - validators + - xarray <=2025.9.0 + license: MIT + 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 + depends: + - deprecation + - geopandas >=0.9 + - highspy + - levenshtein >=0.27.1 + - linopy >=0.5.5 + - matplotlib-base + - netcdf4 !=1.7.4 + - networkx >=2 + - numpy + - pandas >=0.24 + - plotly + - pydeck >=0.6 + - pytables + - python >=3.11 + - scipy + - seaborn - shapely - validators - xarray license: MIT license_family: MIT - size: 221778 - timestamp: 1764847023051 + size: 222295 + timestamp: 1768392650051 - conda: https://conda.anaconda.org/conda-forge/win-64/pyreadline3-3.5.4-py312h2e8e312_2.conda sha256: 34dc1bd52ea27ddb9ee3dbdf5edbfe0ec8fce613b7328b983c11893ef7d7cd7b md5: 13c17a25c72912ca7f86ea48f964ddac @@ -21655,65 +26638,69 @@ packages: license_family: BSD size: 170065 timestamp: 1756887907023 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyscipopt-5.6.0-py312h1289d80_1.conda - sha256: ba454b012ac0644882b0f913b881d4258f46c2859550d0910bdcd43fae606ef8 - md5: 35befeaba0fb8867f562d570252f92f0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyscipopt-6.1.0-np2py312h0f77346_0.conda + sha256: 346bdad04eb0bb96e2a657c5bde6aa4ddf176b2ed8693801101d3f1986e48893 + md5: 6496f5b11bccb85a7061898eef330760 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 + - python - numpy >=1.16.0 - - python >=3.12,<3.13.0a0 + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - numpy >=1.23,<3 + - scip >=10.0.0,<11.0a0 - python_abi 3.12.* *_cp312 - - scip >=9.2.3,<10.0a0 license: MIT license_family: MIT - size: 941940 - timestamp: 1756568632201 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyscipopt-5.6.0-py312h462f358_1.conda - sha256: 92312bdcb427f9a227fc048d78e382002e884a568c322ff68898c90bda845687 - md5: 2e195ad729d6ad1e51b53feab833be7b + size: 1077832 + timestamp: 1770303720486 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyscipopt-6.1.0-np2py312h834d234_0.conda + sha256: c754d3f878422c8d593ef1bbe05fbc14ed0257f0097ef70cf055a6518380f86e + md5: 368a89eec990699cfefc15a6f3cc9b12 depends: + - python + - numpy >=1.16.0 - __osx >=10.13 - libcxx >=19 - - numpy >=1.16.0 - - python >=3.12,<3.13.0a0 + - numpy >=1.23,<3 - python_abi 3.12.* *_cp312 - - scip >=9.2.3,<10.0a0 + - scip >=10.0.0,<11.0a0 license: MIT license_family: MIT - size: 796538 - timestamp: 1756568676820 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyscipopt-5.6.0-py312h6b01ec3_1.conda - sha256: 2760002b8062b31b46ee114c30ef9943836bd16656c4f2b185000e9a24f5f0eb - md5: 731defb2c17189e2568ab8c013972488 + size: 939189 + timestamp: 1770303715263 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyscipopt-6.1.0-np2py312h60fbb24_0.conda + sha256: e76154fbfdaf872546ef8613f12433d9fed3ff7d627fd9bb80940bfd6ea7bcc0 + md5: 472fe65c768923238f4aab56e0989155 depends: - - __osx >=11.0 - - libcxx >=19 + - python - numpy >=1.16.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - libcxx >=19 + - python 3.12.* *_cpython + - __osx >=11.0 - python_abi 3.12.* *_cp312 - - scip >=9.2.3,<10.0a0 + - numpy >=1.23,<3 + - scip >=10.0.0,<11.0a0 license: MIT license_family: MIT - size: 754762 - timestamp: 1756568863351 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyscipopt-5.6.0-py312hbb81ca0_1.conda - sha256: c6205b34c1edc1b177e650983e1186bcf2432005c0e83f726f43890ebdbe5fc9 - md5: 97157f5b96fb01f4a48c0bc1881121f6 + size: 880212 + timestamp: 1770303726261 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyscipopt-6.1.0-np2py312ha76dc74_0.conda + sha256: de02f63fcc03a1d99aa681358fc370aded6b583422ee6b39ce23811e5c99dfd9 + md5: d9b2236e363b7b4f536d428c089fc4e0 depends: + - python - numpy >=1.16.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - 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 + - scip >=10.0.0,<11.0a0 + - numpy >=1.23,<3 + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 697433 - timestamp: 1756568928536 + size: 843999 + timestamp: 1770303769934 - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda sha256: d9a0be08f14d5d513611f9902affb49ca3ed72e05509d15d3cdf1970a84b9233 md5: c138c7aaa6a10b5762dcd92247864aff @@ -21723,47 +26710,88 @@ packages: license_family: MIT size: 454408 timestamp: 1764355333136 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.1-py312h9da60e5_0.conda - sha256: dccbc2674aaae31711933942fd16d87b127e6335556d5701cb760f27986f0375 - md5: dda0a61b6186fc914cf6c1581f64229d +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.2-py312h9da60e5_0.conda + sha256: 5e00f3e0a273e18b4ec0ae7f4fff507333a354dd5ecc31dd9f3b02ab1ee77163 + md5: 52412f1ae11e89b721784f2118188902 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.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - - 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 - size: 11606305 - timestamp: 1765811838817 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.10.1-py312h0c8bdd4_0.conda - sha256: 7041cca95f5486b56e8b5e433b1ed2ca8c597caf86c2047c0cabc89e48417da2 - md5: 23882de6dbb761a28bc4dd50c0fc0452 + license_family: LGPL + size: 11679474 + timestamp: 1770081343622 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.9.2-py312h5654102_1.conda + sha256: 51e77f7701d535d2dbbc4ad8fd878a3e34d5d7acda2aa4c2f9fc45b9759eca02 + md5: f081a3bd12e609dce6ebe7eed98e6783 depends: - - libclang13 >=21.1.7 - - libvulkan-loader >=1.4.328.1,<2.0a0 + - __glibc >=2.17,<3.0.a0 + - libclang13 >=21.1.0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=14 + - libgl >=1.7.0,<2.0a0 + - libopengl >=1.7.0,<2.0a0 + - libstdcxx >=14 + - libxml2 >=2.13.8,<2.14.0a0 + - libxslt >=1.1.43,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - qt6-main 6.9.2.* + - qt6-main >=6.9.2,<6.10.0a0 + license: LGPL-3.0-only + license_family: LGPL + size: 10127456 + timestamp: 1756673992677 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.10.2-py312h0c8bdd4_0.conda + sha256: 22e9eca8e9c3de90311373978390a54f63ad7675f686c6c9387221eeac3b8580 + md5: dff6f60fe91a31de90bd14c2ea9c8ac4 + depends: + - 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.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - - 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: 9860796 + timestamp: 1770081725895 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.9.2-py312h0ba07f7_1.conda + sha256: 3592fa488f9b267818ecd056a1d7cf9960fc34424eaea7ae8d72360f0c2ac364 + md5: 67d1a60b275352d228940a8414cc515a + depends: + - libclang13 >=21.1.0 + - libxml2 >=2.13.8,<2.14.0a0 + - libxslt >=1.1.43,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - qt6-main 6.9.2.* + - qt6-main >=6.9.2,<6.10.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: LGPL-3.0-only - size: 9032850 - timestamp: 1765812277050 + license_family: LGPL + size: 8893370 + timestamp: 1756674282774 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda sha256: d016e04b0e12063fbee4a2d5fbb9b39a8d191b5a0042f0b8459188aedeabb0ca md5: e2fd202833c4a981ce8a65974fe4abd1 @@ -21785,24 +26813,24 @@ packages: license_family: BSD size: 21085 timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.1-pyhd8ed1ab_0.conda - sha256: 90e642a4344a19e502b5921711cb7fc765bed3f0f877cd297dab92f9ac0273d4 - md5: 434061aaa26dafd0e21a6184f6fb52bf +- conda: https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda + sha256: 2d39f4eb1c926792229131897fbddde112d7595727c1db824d48574ab10a5a01 + md5: 77ae41598d63b453bb3c9052f4a14c4b depends: - python >=3.10 - python-dateutil >=2.7.0 license: Apache-2.0 license_family: APACHE - size: 138187 - timestamp: 1758218144764 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py312hefc0c3f_10.conda - sha256: 0c544c185a7e8d0d0df99f3c64626d160ce94b8342e44852ea1297a382799043 - md5: e5bb2b09278f18b76ace60e809d8057c + size: 138711 + timestamp: 1768070185564 +- 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 @@ -21817,16 +26845,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/osx-64/pytables-3.10.2-py312he4c742b_10.conda - sha256: 27791441e265ee4e91d8133d6b583dd635e578950d36b2b2b48f61cc7c3c65f7 - md5: 6698fa5a79d807f18c68a9423ed62960 + size: 1632767 + timestamp: 1770023698503 +- 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 @@ -21840,8 +26868,8 @@ packages: - typing-extensions >=4.4.0 license: BSD-3-Clause license_family: BSD - size: 1535521 - timestamp: 1761751780558 + size: 1523751 + timestamp: 1770024044849 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytables-3.10.2-py312hc3f5fac_10.conda sha256: 5ae31c65543dede25ed312744935ac16dec54097717e3fd6088f5108a7ad5466 md5: 744477c442aa4a1cbc442edf440f68cd @@ -21866,13 +26894,13 @@ packages: license_family: BSD size: 1737873 timestamp: 1761751925893 -- conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py312h20cef2e_10.conda - sha256: f24fcf87e20fa0404004cabfc4d71444f2c1ffdf3744732191ee7848b6af6c35 - md5: 9b6ea0c099abd05ba2e0015a8e80c508 +- 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 @@ -21888,8 +26916,8 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 1493739 - timestamp: 1761751672623 + size: 1492106 + timestamp: 1770023883075 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda sha256: 9e749fb465a8bedf0184d8b8996992a38de351f7c64e967031944978de03a520 md5: 2b694bad8a50dc2f712f5368de866480 @@ -21909,17 +26937,43 @@ packages: license_family: MIT size: 299581 timestamp: 1765062031645 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.12-hd63d673_1_cpython.conda - build_number: 1 - sha256: 39898d24769a848c057ab861052e50bdc266310a7509efa3514b840e85a2ae98 - md5: 5c00c8cea14ee8d02941cab9121dce41 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.12-hd63d673_2_cpython.conda + build_number: 2 + sha256: 6621befd6570a216ba94bc34ec4618e4f3777de55ad0adc15fc23c28fadd4d1a + md5: c4540d3de3fa228d9fa95e31f8e97f89 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.7.1,<3.0a0 + - libexpat >=2.7.3,<3.0a0 - libffi >=3.5.2,<3.6.0a0 - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libuuid >=2.41.3,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.4,<4.0a0 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 31457785 + timestamp: 1769472855343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.12-hfe2f287_0_cpython.conda + sha256: 5386d8c8230b6478ae165ff34f57d498891ac160e871629cbb4d4256e69cc542 + md5: ceada987beec823b3c702710ee073fba + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.7.1,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=14 - liblzma >=5.8.1,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - libsqlite >=3.50.4,<4.0a0 @@ -21934,17 +26988,16 @@ packages: constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31537229 - timestamp: 1761176876216 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.12-h74c2667_1_cpython.conda - build_number: 1 - sha256: 7d711e7a5085c05d186e1dbc86b8f10fb3d88fb3ce3034944ededef39173ff32 - md5: 902046b662c35d8d644514df0d9c7109 + size: 31547362 + timestamp: 1760367376467 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.12-h3999593_0_cpython.conda + sha256: dfeee761021f0a84ade2c38d60fe8506771e49f992063377094fba11002d15ef + md5: 50be3ddc448ca63b24d145ebf9954877 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.1,<3.0a0 - - libffi >=3.5.2,<3.6.0a0 + - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - libsqlite >=3.50.4,<4.0a0 - libzlib >=1.3.1,<2.0a0 @@ -21956,17 +27009,60 @@ packages: constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13779792 - timestamp: 1761176993883 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-h18782d2_1_cpython.conda - build_number: 1 - sha256: 626da9bb78459ce541407327d1e22ee673fd74e9103f1a0e0f4e3967ad0a23a7 - md5: 0322f2ddca2cafbf34ef3ddbea100f73 + size: 13685943 + timestamp: 1760368419157 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.12-h74c2667_2_cpython.conda + build_number: 2 + sha256: a0dc682959d43789313346549370579604020617718f9ff09f8dc99fe4fb1faa + md5: 64f6c57fd1d23500084194c740da395e + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.4,<4.0a0 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 13739394 + timestamp: 1769473128970 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-h18782d2_2_cpython.conda + build_number: 2 + sha256: 765e5d0f92dabc8c468d078a4409490e08181a6f9be6f5d5802a4e3131b9a69c + md5: e198b8f74b12292d138eb4eceb004fa3 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.7.1,<3.0a0 + - libexpat >=2.7.3,<3.0a0 - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.4,<4.0a0 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 12953358 + timestamp: 1769472376612 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-hec0b533_0_cpython.conda + sha256: 63d5362621bbf3b0d90424f5fc36983d7be2434f6d0b2a8e431ac78a69a1c01d + md5: 5a732c06cbf90455a95dc6f6b1dd7061 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.1,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - libsqlite >=3.50.4,<4.0a0 - libzlib >=1.3.1,<2.0a0 @@ -21978,16 +27074,37 @@ packages: constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12062421 - timestamp: 1761176476561 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.12-h0159041_1_cpython.conda - build_number: 1 - sha256: 9b163b0426c92eee1881d5c838e230a750a3fa372092db494772886ab91c2548 - md5: 42ae551e4c15837a582bea63412dc0b4 + size: 12905286 + timestamp: 1760367318303 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.12-h0159041_2_cpython.conda + build_number: 2 + sha256: 5937ab50dfeb979f7405132f73e836a29690f21162308b95b240b8037aa99975 + md5: 068897f82240d69580c2d93f93b56ff5 depends: - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.7.1,<3.0a0 + - libexpat >=2.7.3,<3.0a0 - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.4,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 15829087 + timestamp: 1769470991307 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.12-h30ce641_0_cpython.conda + sha256: 9e9d6fa3b4ef231fcabf00364319f4ffacb1fb683e6c61c2438bafe3c61a7e2e + md5: e672c6dc92e6f1fcac0f9fed61b2b922 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.1,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - libsqlite >=3.50.4,<4.0a0 - libzlib >=1.3.1,<2.0a0 @@ -22000,8 +27117,8 @@ packages: constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 15883484 - timestamp: 1761175152489 + size: 15741664 + timestamp: 1760365715600 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 md5: 5b8d21249ff20967101ffa321cab24e8 @@ -22023,74 +27140,74 @@ packages: license_family: BSD size: 26922 timestamp: 1761503229008 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2.44.0-py312h4f23490_1.conda - sha256: ac359870fd4bca456ac327c687fc598360c6766f3ff28a9924ed1f520a8a6ebf - md5: eea306a68c483e1305381130b35a09ff +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2.45.0-np2py312hfb8c2c5_1.conda + sha256: 978c82ebe79bc4e171fbf8ada6394b9f3f98e63d68ca703b4db60b1867c28267 + md5: 66f8d5e7005b9d38b4c1cd00068881ae depends: - - __glibc >=2.17,<3.0.a0 + - python - attrs - cffi - - eccodes >=2.44.0 - findlibs + - eccodes >=2.45.0 - libgcc >=14 - - numpy >=1.23,<3 - - python >=3.12,<3.13.0a0 + - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 + - numpy >=1.23,<3 license: Apache-2.0 - license_family: Apache - size: 201997 - timestamp: 1760521527073 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-eccodes-2.44.0-py312h391ab28_1.conda - sha256: e1e9f31182e791de6d07cac2ecca86ae75377d27d490a7a8c5e48e46488e37c2 - md5: e77e671dc2e1e14204e333e8aacca0e8 + license_family: APACHE + size: 230630 + timestamp: 1768999352171 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-eccodes-2.45.0-np2py312hdc59d4f_1.conda + sha256: 3604c5780c361c980053ab3257c633bc5566ddc4fe18a37e58da1c2f71864b31 + md5: bd1f02e8177a93d84ec4379ca487bde8 depends: - - __osx >=10.13 + - python - attrs - cffi - - eccodes >=2.44.0 - findlibs + - eccodes >=2.45.0 + - __osx >=10.13 - numpy >=1.23,<3 - - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: Apache - size: 204954 - timestamp: 1760521708957 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-eccodes-2.44.0-py312ha11c99a_1.conda - sha256: ed58e6e3f2a788ff28a529d9764aeb65abd5a00cf6fad5187a749f923d547148 - md5: c9d9d5e292a04188f6dc7eda3b67a6da + license_family: APACHE + size: 235751 + timestamp: 1768999404079 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-eccodes-2.45.0-np2py312h877c910_1.conda + sha256: fd870346ee01a9863100db246afcc7aaa506d6fee78482b1d84a31c97521a461 + md5: b762c662b7124f206ccb1269992a6df2 depends: - - __osx >=11.0 + - python - attrs - cffi - - eccodes >=2.44.0 - findlibs + - eccodes >=2.45.0 + - __osx >=11.0 + - python 3.12.* *_cpython - numpy >=1.23,<3 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: Apache - size: 205975 - timestamp: 1760521856464 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-eccodes-2.44.0-py312h196c9fc_1.conda - sha256: c3a1ff017aeb74a07a5a4d3659e983394bcfd5911df006825c4402d5e27d8ef3 - md5: 2ecef5e3705cde5eeddfb5ca60775d08 + license_family: APACHE + size: 239766 + timestamp: 1768999522906 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-eccodes-2.45.0-np2py312h226b611_1.conda + sha256: 1544d9f8c2da144dd0bc55c252f0d04ace6a9906995aa19c72d154c28a23d3e5 + md5: 6c3258d37cafe2e28f1229ca9b9a6182 depends: + - python - attrs - cffi - - eccodes >=2.44.0 - findlibs - - numpy >=1.23,<3 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 + - eccodes >=2.45.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - numpy >=1.23,<3 + - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: Apache - size: 176822 - timestamp: 1760521564148 + license_family: APACHE + size: 200378 + timestamp: 1768999389734 - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda sha256: df9aa74e9e28e8d1309274648aac08ec447a92512c33f61a8de0afa9ce32ebe8 md5: 23029aae904a2ba587daba708208012f @@ -22101,15 +27218,15 @@ 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 + size: 46618 + timestamp: 1769471082980 - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca md5: a61bf9ec79426938ff785eb69dbb1960 @@ -22119,41 +27236,44 @@ packages: license_family: BSD size: 13383 timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.7.8-py312h5253ce2_0.conda - sha256: 298855695c689a6ae7d54c388e6cb6997d132968b45bd9c3281d368aea0a7681 - md5: 926423c802af834af4043a7091729db2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.8.1-py312h5253ce2_0.conda + sha256: 41a3f2541952ee521c867ada76da02a43a919beeb46da8fee99284d161273a50 + md5: e2cc29a3786c42455a70263a8bf6813e depends: - python - __glibc >=2.17,<3.0.a0 - libgcc >=14 - python_abi 3.12.* *_cp312 license: MIT - size: 65121 - timestamp: 1768406894381 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.7.8-py312hf7082af_0.conda - sha256: c8ded3da9c116b827d97b2e8b490d0ee8b09f15e0fd992921aa5ff4962ec034a - md5: d3d4bbdedeb4dd57260be15f00dc4e6e + license_family: MIT + size: 77475 + timestamp: 1771423012370 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.8.1-py312hba6025d_0.conda + sha256: 84c03816c897e293e07da488f434aa8458553da9e2658756882d4ceda68c2270 + md5: 7496bfe5a3930dade1b3e40e6f9e0f31 depends: - python - - __osx >=10.13 + - __osx >=11.0 - python_abi 3.12.* *_cp312 license: MIT - size: 57598 - timestamp: 1768406940688 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.7.8-py312hb3ab3e3_0.conda - sha256: 4730d8d2d00017c643a414940670db10c25442d7d6c34fdde5e62f087356282d - md5: 28f3924cb9edec4e808692a8b81254fa + license_family: MIT + size: 69168 + timestamp: 1771423096964 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.8.1-py312hb3ab3e3_0.conda + sha256: ab3baf903f255a50206de01ccbc4daec409563e409348022f805afcce5aee59a + md5: 54327820d1bf2d856220a51ac8d197ff depends: - python - __osx >=11.0 - python 3.12.* *_cpython - python_abi 3.12.* *_cp312 license: MIT - size: 65402 - timestamp: 1768406921586 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-librt-0.7.8-py312he5662c2_0.conda - sha256: 9b5e36d772f7a67500fc8e2c5032a40c9357ec70841340bc60333076818d97aa - md5: 3a3250fcfbd996af883aff4e86b846ba + license_family: MIT + size: 72629 + timestamp: 1771423101785 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-librt-0.8.1-py312he5662c2_0.conda + sha256: 64150afcc53a9e81c4250bc2709edb16a8febaa28f58a0e9525e28438bbfc318 + md5: b1bf9befd13a95e6235772d0194d242a depends: - python - vc >=14.3,<15 @@ -22161,18 +27281,33 @@ packages: - ucrt >=10.0.20348.0 - python_abi 3.12.* *_cp312 license: MIT - size: 49468 - timestamp: 1768406937403 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.21-pyhcf101f3_1.conda - sha256: 6f71512c986b163b0e78d15527d3a74c861ab6b404789c8a733c7309c177ed42 - md5: 6881f5cd0aae736cc1ab21354c83ec49 + license_family: MIT + size: 53153 + timestamp: 1771423055629 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda + sha256: 8275c88b0f138dbd602c53bae9a11789126c6a2c97f7e89f679d3e7ccbb121ba + md5: 5a2610edf297cbd1cbc0e2c17bc47efc depends: - python >=3.10 - python license: Apache-2.0 license_family: APACHE - size: 30275 - timestamp: 1767725812296 + size: 30342 + timestamp: 1769356329419 +- 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 @@ -22260,9 +27395,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 @@ -22271,11 +27406,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/osx-64/pyyaml-6.0.3-py312hacf3034_0.conda - sha256: 28814df783a5581758d197262d773c92a72c8cedbec3ccadac90adf22daecd25 - md5: dbc6cfbec3095d84d9f3baab0c6a5c24 + size: 198293 + timestamp: 1770223620706 +- 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 @@ -22283,11 +27418,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-arm64/pyyaml-6.0.3-py312h5748b74_0.conda - sha256: 690943c979a5bf014348933a68cd39e3bb9114d94371c4c5d846d2daaa82c7d9 - md5: 6a2d7f8a026223c2fa1027c96c615752 + size: 190417 + timestamp: 1770223755226 +- 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 @@ -22296,11 +27431,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/win-64/pyyaml-6.0.3-py312h05f76fc_0.conda - sha256: 54d04e61d17edffeba1e5cad45f10f272a016b6feec1fa8fa6af364d84a7b4fc - md5: 4a68f80fbf85499f093101cc17ffbab7 + size: 187278 + timestamp: 1770223990452 +- 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 @@ -22310,43 +27445,41 @@ packages: - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT - size: 180635 - timestamp: 1758891847871 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hfb55c3c_0.conda + size: 179738 + timestamp: 1770223468771 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hda471dd_1.conda noarch: python - sha256: a00a41b66c12d9c60e66b391e9a4832b7e28743348cf4b48b410b91927cd7819 - md5: 3399d43f564c905250c1aea268ebb935 + sha256: 3ffc42be62a67def6a8521c7ef2ae4547ace3d3c253b470107b274b94ac849f2 + md5: ae8647787fcb4dcc6967095211dda391 depends: - python - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - libgcc >=14 + - zeromq >=4.3.5,<4.4.0a0 - _python_abi3_support 1.* - cpython >=3.12 - - zeromq >=4.3.5,<4.4.0a0 license: BSD-3-Clause - license_family: BSD - size: 212218 - timestamp: 1757387023399 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py312hb7d603e_0.conda + size: 211564 + timestamp: 1771606453428 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py312h2ac7433_1.conda noarch: python - sha256: 4e052fa3c4ed319e7bcc441fca09dee4ee4006ac6eb3d036a8d683fceda9304b - md5: 81511d0be03be793c622c408c909d6f9 + sha256: 357a605802fcc882d1e979aefc8a39f652cf5cb3d11a9bbfe2df260e37d6ff25 + md5: 77a8524e82aa453cf62e5544fd6528e6 depends: - python - - __osx >=10.13 + - __osx >=11.0 - libcxx >=19 - _python_abi3_support 1.* - cpython >=3.12 - zeromq >=4.3.5,<4.4.0a0 license: BSD-3-Clause - license_family: BSD - size: 191697 - timestamp: 1757387104297 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.1.0-py312hd65ceae_0.conda + size: 192948 + timestamp: 1771606539387 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.1.0-py312h022ad19_1.conda noarch: python - sha256: ef33812c71eccf62ea171906c3e7fc1c8921f31e9cc1fbc3f079f3f074702061 - md5: bbd22b0f0454a5972f68a5f200643050 + sha256: 065edbfaa5368f166b9b933e2dbadac377dc47978a4630ac2fe172bc7df7a719 + md5: da3181b06e52fc0124c083356ee986e1 depends: - python - __osx >=11.0 @@ -22355,28 +27488,23 @@ packages: - cpython >=3.12 - zeromq >=4.3.5,<4.4.0a0 license: BSD-3-Clause - license_family: BSD - size: 191115 - timestamp: 1757387128258 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.1.0-py312hbb5da91_0.conda + size: 191634 + timestamp: 1771606535854 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.1.0-py312h343a6d4_1.conda noarch: python - sha256: fd46b30e6a1e4c129045e3174446de3ca90da917a595037d28595532ab915c5d - md5: 808d263ec97bbd93b41ca01552b5fbd4 + sha256: 008b540f47e874a1df70720a7e504401b1c1c3a590dcff284727d1ec4906bf25 + md5: 878fd168c196cc65ab1079fb52ff25bb 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 - zeromq >=4.3.5,<4.3.6.0a0 - _python_abi3_support 1.* - cpython >=3.12 license: BSD-3-Clause - license_family: BSD - size: 185711 - timestamp: 1757387025899 + size: 183216 + timestamp: 1771606416926 - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda sha256: 776363493bad83308ba30bcb88c2552632581b143e8ee25b1982c8c743e73abc md5: 353823361b1d27eb3960efb076dfcaf6 @@ -22415,21 +27543,21 @@ packages: license: LicenseRef-Qhull size: 1377020 timestamp: 1720814433486 -- conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.10.1-h6f76662_2.conda - sha256: d89aa34f9c05944664c277f2a06f751b9559028d6228a2be5ff6130f19ce0e41 - md5: cb26b00c816d80d73c8f6f00064fa123 +- 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.14,<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 >=75.1,<76.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 @@ -22439,10 +27567,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 @@ -22452,7 +27580,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 @@ -22467,75 +27595,135 @@ 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.7,<2.0a0 + - xorg-libxrandr >=1.5.5,<2.0a0 + - xorg-libxtst >=1.2.5,<2.0a0 + - xorg-libxxf86vm >=1.1.7,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - qt 6.10.2 + license: LGPL-3.0-only + license_family: LGPL + 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 + depends: + - __glibc >=2.17,<3.0.a0 + - alsa-lib >=1.2.14,<1.3.0a0 + - dbus >=1.16.2,<2.0a0 + - double-conversion >=3.3.1,<3.4.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - harfbuzz >=11.4.3 + - icu >=75.1,<76.0a0 + - krb5 >=1.21.3,<1.22.0a0 + - libclang-cpp20.1 >=20.1.8,<20.2.0a0 + - libclang13 >=20.1.8 + - libcups >=2.3.3,<2.4.0a0 + - libdrm >=2.4.125,<2.5.0a0 + - libegl >=1.7.0,<2.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libgcc >=14 + - libgl >=1.7.0,<2.0a0 + - libglib >=2.84.3,<3.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - libllvm20 >=20.1.8,<20.2.0a0 + - libpng >=1.6.50,<1.7.0a0 + - libpq >=17.6,<18.0a0 + - libsqlite >=3.50.4,<4.0a0 + - libstdcxx >=14 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libxkbcommon >=1.11.0,<2.0a0 + - libxml2 >=2.13.8,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.2,<4.0a0 + - pcre2 >=10.45,<10.46.0a0 + - wayland >=1.24.0,<2.0a0 + - xcb-util >=0.4.1,<0.5.0a0 + - xcb-util-cursor >=0.1.5,<0.2.0a0 + - xcb-util-image >=0.4.0,<0.5.0a0 + - xcb-util-keysyms >=0.4.1,<0.5.0a0 + - xcb-util-renderutil >=0.3.10,<0.4.0a0 + - xcb-util-wm >=0.4.2,<0.5.0a0 + - xorg-libice >=1.1.2,<2.0a0 + - xorg-libsm >=1.2.6,<2.0a0 + - xorg-libx11 >=1.8.12,<2.0a0 + - 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-libxtst >=1.2.5,<2.0a0 - xorg-libxxf86vm >=1.1.6,<2.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - qt 6.10.1 + - qt 6.9.2 license: LGPL-3.0-only license_family: LGPL - size: 57037651 - timestamp: 1765675961370 -- conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.10.1-h7502b6c_0.conda - sha256: 95afcdc5dcae3b8c4d7187e41f28c9a367faf3afa9eec279cff493bdcc72000f - md5: 455618c3cf822705d569fe83beafe8da + size: 52566799 + timestamp: 1756296889250 +- 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 -- conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.10.1-hf1bda90_2.conda - sha256: 84bfc19776eabcbbd61d41374d6226f70f0db4c4614e74ee97f2102637b51b22 - md5: dc9bc92f277724475b513307074ee284 + 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 depends: - - double-conversion >=3.4.0,<3.5.0a0 - - harfbuzz >=12.2.0 + - double-conversion >=3.3.1,<3.4.0a0 + - harfbuzz >=11.4.3 - icu >=75.1,<76.0a0 - krb5 >=1.21.3,<1.22.0a0 - - libclang13 >=21.1.7 - - libglib >=2.86.3,<3.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 - - libpng >=1.6.53,<1.7.0a0 - - libsqlite >=3.51.1,<4.0a0 - - libtiff >=4.7.1,<4.8.0a0 - - libvulkan-loader >=1.4.328.1,<2.0a0 + - libclang13 >=20.1.8 + - libglib >=2.84.3,<3.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - libpng >=1.6.50,<1.7.0a0 + - libsqlite >=3.50.4,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.6.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 - - pcre2 >=10.47,<10.48.0a0 + - openssl >=3.5.2,<4.0a0 + - pcre2 >=10.45,<10.46.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.9.2 license: LGPL-3.0-only license_family: LGPL - size: 85816824 - timestamp: 1765683798296 + size: 94567291 + timestamp: 1756296858553 - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidfuzz-3.14.3-py312h1289d80_1.conda sha256: fa7c42b56294b600c1023279ce685a70aacef27a6b3d56e8fbe5a43f90cc3d18 md5: bce14345fd01c051c51884878cfd053d @@ -22591,9 +27779,9 @@ packages: license_family: MIT size: 1018498 timestamp: 1762523349960 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.4.4-py312h762fea3_0.conda - sha256: 23ffbe589064e224b3ac69d05454062836971f57c4c734261c58dfb7b9d14f37 - md5: df884dc5a76b2e2b2d13901f0d5d1668 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.4.3-py312h1df8778_2.conda + sha256: 59d5a8797f48a06b2ebbc71002093843b652dea5ad35c8ebc6ab7383ea8a9b70 + md5: a130de9fec7b062ce793dca872fcb622 depends: - __glibc >=2.17,<3.0.a0 - affine @@ -22607,6 +27795,30 @@ packages: - libgdal-core >=3.10.3,<3.11.0a0 - libstdcxx >=14 - numpy >=1.23,<3 + - proj >=9.6.2,<9.7.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools >=0.9.8 + - snuggs >=1.4.1 + license: BSD-3-Clause + license_family: BSD + size: 8069040 + timestamp: 1758129682893 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.5.0-py312hcedc861_0.conda + sha256: c7a9a69149a15262e14c32232459d45e3ef58aee65e46ed60b270a6ded54a573 + md5: f0d110978a87b200a06412b56b26407c + depends: + - __glibc >=2.17,<3.0.a0 + - affine + - attrs + - certifi + - click >=4,!=8.2.* + - click-plugins + - cligj >=0.5 + - libgcc >=14 + - libgdal-core >=3.12.1,<3.13.0a0 + - libstdcxx >=14 + - numpy >=1.23,<3 - proj >=9.7.1,<9.8.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -22614,11 +27826,11 @@ packages: - snuggs >=1.4.1 license: BSD-3-Clause license_family: BSD - size: 7835544 - timestamp: 1765553234963 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rasterio-1.4.4-py312hd11fb3f_0.conda - sha256: 821156a2130f4c9fd7645e5c6db24f66b15861c0b2885c0ef336d1aa2fd833f5 - md5: d46bf722bc78e861ddbbb9dbc93437ab + size: 8133020 + timestamp: 1767632791843 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rasterio-1.4.3-py312h2efda69_2.conda + sha256: cd5fbb78481cbbf2311c4cb2282bea0b3f644e5e9338ff8c3941f655a6a26bb0 + md5: 795c8ef855dd871ab3b445fddf8863ba depends: - __osx >=10.13 - affine @@ -22631,6 +27843,29 @@ packages: - libgdal-core <3.11 - libgdal-core >=3.10.3,<3.11.0a0 - numpy >=1.23,<3 + - proj >=9.6.2,<9.7.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools >=0.9.8 + - snuggs >=1.4.1 + license: BSD-3-Clause + license_family: BSD + size: 7726315 + timestamp: 1758130130600 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rasterio-1.5.0-py312h6f80297_0.conda + sha256: 4ae3a6f392786e7bf89e36e5eb4ec41495c1a9325ebac2e959c2bbbf5e06b536 + md5: 9954d4dba5eb83661bc1cbc2b5c245ea + depends: + - __osx >=10.13 + - affine + - attrs + - certifi + - click >=4,!=8.2.* + - click-plugins + - cligj >=0.5 + - libcxx >=19 + - libgdal-core >=3.12.1,<3.13.0a0 + - numpy >=1.23,<3 - proj >=9.7.0,<9.8.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -22638,11 +27873,11 @@ packages: - snuggs >=1.4.1 license: BSD-3-Clause license_family: BSD - size: 7750023 - timestamp: 1765553799785 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rasterio-1.4.4-py312h129b95a_0.conda - sha256: 0bf61b1352bd725c216518b8bda91de9ff2a243947c8c53dfb5cb6cc6329f81d - md5: 9c1d979d60998575c931c0661872663c + size: 7943183 + timestamp: 1767632853525 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rasterio-1.4.3-py312h460a678_2.conda + sha256: 9d0db170b7081ac47b448f4f927362eb3789ee2cea4e56dd02fc4d348db3b52a + md5: f7acc1f2764e75eb7b58fcd353c8c7f0 depends: - __osx >=11.0 - affine @@ -22655,6 +27890,30 @@ packages: - libgdal-core <3.11 - libgdal-core >=3.10.3,<3.11.0a0 - numpy >=1.23,<3 + - proj >=9.6.2,<9.7.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools >=0.9.8 + - snuggs >=1.4.1 + license: BSD-3-Clause + license_family: BSD + size: 7702855 + timestamp: 1758130147609 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rasterio-1.5.0-py312h8fc80b0_0.conda + sha256: 6f27e6bb995a3ae36f946788470c520b320bd2b7f328ba1ab496a748615e0af4 + md5: bfdb10beb992ce47e89062dcedcb22b9 + depends: + - __osx >=11.0 + - affine + - attrs + - certifi + - click >=4,!=8.2.* + - click-plugins + - cligj >=0.5 + - libcxx >=19 + - libgdal-core >=3.12.1,<3.13.0a0 + - numpy >=1.23,<3 - proj >=9.7.1,<9.8.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython @@ -22663,11 +27922,11 @@ packages: - snuggs >=1.4.1 license: BSD-3-Clause license_family: BSD - size: 7998962 - timestamp: 1765553703577 -- conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.4.4-py312h11f88aa_0.conda - sha256: 7b43d8da99cd41a82ba4de34e13d066b7a499d6892fb7c14ff1a29791bebeaaa - md5: 9c89b672e43b09ba705beb3d3da237d9 + size: 8067586 + timestamp: 1767633117046 +- conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.4.3-py312h9aeec68_2.conda + sha256: 1c0cd6f1d7deb42cfb672dd9ab911e28b5c3598ea215fc5f30c0b9fd1909cfc2 + md5: 12c2a20993f3aa36f18382aa5d91e614 depends: - affine - attrs @@ -22678,6 +27937,30 @@ packages: - libgdal-core <3.11 - libgdal-core >=3.10.3,<3.11.0a0 - numpy >=1.23,<3 + - proj >=9.6.2,<9.7.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools >=0.9.8 + - snuggs >=1.4.1 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-3-Clause + license_family: BSD + size: 7097517 + timestamp: 1758132119961 +- conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.5.0-py312h064b072_0.conda + sha256: 634c8463f17a8f1bebd4e755962aae1db520c254c54d9f43e29d9f9234c758e6 + md5: 16b23ed5a34d9358725d862be3f387f5 + depends: + - affine + - attrs + - certifi + - click >=4,!=8.2.* + - click-plugins + - cligj >=0.5 + - libgdal-core >=3.12.1,<3.13.0a0 + - numpy >=1.23,<3 - proj >=9.7.1,<9.8.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -22688,8 +27971,34 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 7169231 - timestamp: 1765553431999 + size: 8508908 + timestamp: 1767633001059 +- 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 @@ -22726,6 +28035,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 @@ -22734,6 +28052,7 @@ packages: - libgcc >=14 - ncurses >=6.5,<7.0a0 license: GPL-3.0-only + license_family: GPL size: 345073 timestamp: 1765813471974 - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda @@ -22743,6 +28062,7 @@ packages: - __osx >=10.13 - ncurses >=6.5,<7.0a0 license: GPL-3.0-only + license_family: GPL size: 317819 timestamp: 1765813692798 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda @@ -22752,6 +28072,7 @@ packages: - __osx >=11.0 - ncurses >=6.5,<7.0a0 license: GPL-3.0-only + license_family: GPL size: 313930 timestamp: 1765813902568 - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda @@ -22767,21 +28088,50 @@ packages: license_family: MIT size: 51788 timestamp: 1760379115194 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhd8ed1ab_0.conda - sha256: 8dc54e94721e9ab545d7234aa5192b74102263d3e704e6d0c8aa7008f2da2a7b - md5: db0c6b99149880c8ba515cf4abe93ee4 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + sha256: 7813c38b79ae549504b2c57b3f33394cea4f2ad083f0994d2045c2e24cb538c5 + md5: c65df89a0b2e321045a9e01d1337b182 depends: + - python >=3.10 - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.9 - urllib3 >=1.21.1,<3 + - python constrains: - chardet >=3.0.2,<6 license: Apache-2.0 license_family: APACHE - size: 59263 - timestamp: 1755614348400 + 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 @@ -22811,6 +28161,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 @@ -22831,9 +28190,9 @@ packages: license_family: MIT size: 22913 timestamp: 1752876729969 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.2.0-pyhcf101f3_0.conda - sha256: edfb44d0b6468a8dfced728534c755101f06f1a9870a7ad329ec51389f16b086 - md5: a247579d8a59931091b16a1e932bbed6 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + sha256: b06ce84d6a10c266811a7d3adbfa1c11f13393b91cc6f8a5b468277d90be9590 + md5: 7a6289c50631d620652f5045a63eb573 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 @@ -22842,11 +28201,11 @@ packages: - python license: MIT license_family: MIT - size: 200840 - timestamp: 1760026188268 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.17.1-pyhcf101f3_0.conda - sha256: 95d4361bf603164b6782932340daa23192c26314eb7cbcac56fe85a63f14510e - md5: 94ef593007f79f05af94219888147f50 + size: 208472 + timestamp: 1771572730357 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.4-pyhcf101f3_0.conda + sha256: 0edab1aab1fba55f44e83dce4440d3506af8e06e0fd9509a4a62b727478e3253 + md5: 0011605b057af14c5d86fe26ec6f7d3d depends: - python >=3.10 - rich >=13.7.1 @@ -22855,8 +28214,8 @@ packages: - python license: MIT license_family: MIT - size: 31034 - timestamp: 1765985144059 + size: 32478 + timestamp: 1770904484792 - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_0.conda sha256: fa2fa8745ff8dce18d3243370b31726435b7f9448cdd214896f730291dc6aa55 md5: 27583d44e139c520d9fdc1fd7aedd58d @@ -22872,14 +28231,23 @@ packages: license_family: Apache size: 53405 timestamp: 1761337252983 -- conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - sha256: 0116a9ca9bf3487e18979b58b2f280116dba55cb53475af7a6d835f7aa133db8 - md5: 5f0f24f8032c2c1bb33f59b75974f5fc +- conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-4.1.0-pyhd8ed1ab_0.conda + sha256: 30f3c04fcfb64c44d821d392a4a0b8915650dbd900c8befc20ade8fde8ec6aa2 + md5: 0dc48b4b570931adc8641e55c6c17fe4 depends: - - python >=3.9 + - python >=3.10 + license: 0BSD OR CC0-1.0 + size: 13814 + timestamp: 1766003022813 +- conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda + sha256: ce21b50a412b87b388db9e8dfbf8eb16fc436c23750b29bf612ee1a74dd0beb2 + md5: 28687768633154993d521aecfa4a56ac + depends: + - python >=3.10 + - roman-numerals 4.1.0 license: 0BSD OR CC0-1.0 - size: 13348 - timestamp: 1740240332327 + size: 11074 + timestamp: 1766025162370 - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py312h868fb18_0.conda sha256: 62f46e85caaba30b459da7dfcf3e5488ca24fd11675c33ce4367163ab191a42c md5: 3ffc5a3572db8751c2f15bacf6a0e937 @@ -23003,55 +28371,70 @@ packages: license_family: MIT size: 105961 timestamp: 1766159551536 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.9-h4196e79_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.2-h40fa522_0.conda noarch: python - sha256: 42b7677835c0523b42597d0fb30d6b4df9232e684d9be64ba8d0bce67239c2a5 - md5: 5a1454dc98818b9a6106ce483a14173f + sha256: e0403324ac0de06f51c76ae2a4671255d48551a813d1f1dc03bd4db7364604f0 + md5: 8dec25bd8a94496202f6f3c9085f2ad3 depends: - python - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 constrains: - __glibc >=2.17 license: MIT - size: 11388861 - timestamp: 1765805193349 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.14.9-h6e677d3_1.conda + license_family: MIT + size: 9284016 + timestamp: 1771570005837 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.15.2-h8ee721d_0.conda noarch: python - sha256: 529c635aaba7d73174522b336b7df7b363f4db9a3233da5e8ff7c05c02f66bc9 - md5: 7438cc8b04062bb2e7bcb97422b29a2a + sha256: c304d1f678afaea00717bc052ecd17df415aefcfe6b9f6d08ca530ce8051e104 + md5: a94639422d80dfa08221193f95edc49a depends: - python - - __osx >=10.13 + - __osx >=11.0 constrains: - __osx >=10.13 license: MIT - size: 11294253 - timestamp: 1765805317733 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.9-h48e45a7_1.conda + license_family: MIT + size: 9218376 + timestamp: 1771570119654 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.2-h279115b_0.conda noarch: python - sha256: 08c16d5f7951b8eb86d463e72ec35a5f2c02f34f139a500ebea745a57da4829a - md5: 9cb0705d378d88b57fa4f54a2ae820dc + sha256: 80f93811d26e58bf5a635d1034cba8497223c2bf9efa2a67776a18903e40944a + md5: a52cf978daa5290b1414d3bba6b6ea0b depends: - python - __osx >=11.0 constrains: - __osx >=11.0 license: MIT - size: 10389221 - timestamp: 1765805329662 -- conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.9-h37e10c4_1.conda + license_family: MIT + size: 8415205 + timestamp: 1771570140500 +- conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.15.2-h213852a_0.conda noarch: python - sha256: 421b7482b12a2b0257e9576d070074eaf8c11972a25a3606c95d0c34c97349d3 - md5: 7790b2427c401a2f5197ee0627bade9f + sha256: 985a1bd98bdaaccb36391016380cd81c037090d3084a34ef7df3ce6ec770ea34 + md5: 9428dc4da3d5a84eb3b1a2d8c06e3d3c depends: - python - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 license: MIT - size: 11817784 - timestamp: 1765805183400 + license_family: MIT + size: 9699892 + timestamp: 1771570027913 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.26-h5ac9029_0.conda + sha256: 14acdf5685f457988dba0053b9d29f1861b1c8fff6da13ec863d6a2b6ac75bff + md5: 0cfd80e699ae130623c0f42c6c6cf798 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - openssl >=3.5.2,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 390887 + timestamp: 1758013933691 - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.2-he8a4886_1.conda sha256: dec76e9faa3173579d34d226dbc91892417a80784911daf8e3f0eb9bad19d7a6 md5: bade189a194e66b93c03021bd36c337b @@ -23073,6 +28456,25 @@ packages: license_family: Apache size: 66717 timestamp: 1764589830083 +- conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.7.2-py312h4f0b9e3_0.conda + sha256: 27e2f65075556804a7524dc6bcc34829602f986621728100c0ef07b404168aa8 + md5: ee36c7b06c5d7c0ae750147ed9faee8a + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - joblib >=1.2.0 + - libgcc >=14 + - libstdcxx >=14 + - numpy >=1.22.0 + - numpy >=1.23,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - scipy >=1.8.0 + - threadpoolctl >=3.1.0 + license: BSD-3-Clause + license_family: BSD + size: 9694630 + timestamp: 1757406448831 - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.8.0-np2py312h3226591_1.conda sha256: 23c643c37fafa14ba3f2b7a407126ea5e732a3655ea8157cf9f977098f863448 md5: 38decbeae260892040709cafc0514162 @@ -23089,28 +28491,67 @@ packages: - numpy >=1.23,<3 - python_abi 3.12.* *_cp312 license: BSD-3-Clause + license_family: BSD size: 9726193 timestamp: 1765801245538 -- conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.8.0-np2py312hc921ccd_1.conda - sha256: 46af92a133ca30018b09cd6417a9d830769a9611257fe5665b6d1e32e2feec02 - md5: 10d570b3cc0d2b0ad363f781bbcefeb2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.7.2-py312hfee4f84_0.conda + sha256: 6c492d58e51107b7f3944526bb7f8b4af4cb6ebcba648c4a08277fa7a4854762 + md5: 9cecc4b9d6cca528546f53a6c0120a04 + depends: + - __osx >=10.13 + - joblib >=1.2.0 + - libcxx >=19 + - llvm-openmp >=19.1.7 + - numpy >=1.22.0 + - numpy >=1.23,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - scipy >=1.8.0 + - threadpoolctl >=3.1.0 + license: BSD-3-Clause + license_family: BSD + size: 9042087 + timestamp: 1757407115271 +- conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.8.0-np2py312h47bbdc5_1.conda + sha256: 1a03f549462e9c700c93664c663c08a651f6c93c0979384417ac132549c44b98 + md5: 9c037f2050f55c721704013b87c9724e depends: - python - numpy >=1.24.1 - scipy >=1.10.0 - joblib >=1.3.0 - threadpoolctl >=3.2.0 - - libcxx >=19 - __osx >=10.13 - llvm-openmp >=19.1.7 + - libcxx >=19 - python_abi 3.12.* *_cp312 - numpy >=1.23,<3 license: BSD-3-Clause - size: 9289017 - timestamp: 1765801375049 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.8.0-np2py312he7bfc6a_1.conda - sha256: 7e58d791fadcba97d1bcc3208f8953128a38da9d614f6b6f2e410b3af0f36e5f - md5: c93be01f32810fb3b237f9e59fb13eb0 + license_family: BSD + size: 9288972 + timestamp: 1766550860454 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.7.2-py312h79e0ffc_0.conda + sha256: e46279d674d580dfeeb1c10dede94df65dbb25d951e35978893058e59e496bfa + md5: c3b31a2189b2a54272ab6831fe16106d + depends: + - __osx >=11.0 + - joblib >=1.2.0 + - libcxx >=19 + - llvm-openmp >=19.1.7 + - numpy >=1.22.0 + - numpy >=1.23,<3 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - scipy >=1.8.0 + - threadpoolctl >=3.1.0 + license: BSD-3-Clause + license_family: BSD + size: 8890616 + timestamp: 1757407517667 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.8.0-np2py312he5ca3e3_1.conda + sha256: 5f640a06e001666f9d4dca7cca992f1753e722e9f6e50899d7d250c02ddf7398 + md5: ed7887c51edfa304c69a424279cec675 depends: - python - numpy >=1.24.1 @@ -23118,14 +28559,33 @@ packages: - joblib >=1.3.0 - threadpoolctl >=3.2.0 - libcxx >=19 - - llvm-openmp >=19.1.7 - python 3.12.* *_cpython - __osx >=11.0 + - llvm-openmp >=19.1.7 + - numpy >=1.23,<3 - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 9124177 + timestamp: 1766550900752 +- conda: https://conda.anaconda.org/conda-forge/win-64/scikit-learn-1.7.2-py312h91ac024_0.conda + sha256: 22666360c1026cb5d197ca3f5b6e6e7902414cde266b0bb7e8b50f894254348e + md5: 640f74b19cfe413de754391df630a15a + depends: + - joblib >=1.2.0 + - numpy >=1.22.0 - numpy >=1.23,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - scipy >=1.8.0 + - threadpoolctl >=3.1.0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: BSD-3-Clause - size: 9124600 - timestamp: 1765801343261 + license_family: BSD + size: 8736451 + timestamp: 1757433576165 - conda: https://conda.anaconda.org/conda-forge/win-64/scikit-learn-1.8.0-np2py312hea30aaf_1.conda sha256: cc3057fd244a13afe94bdb5e3fb6ecbd7ece78559ebdb55a86ae40202ed813a0 md5: e5cd920b237e02178573ce47ffa87e8c @@ -23141,14 +28601,14 @@ packages: - python_abi 3.12.* *_cp312 - numpy >=1.23,<3 license: BSD-3-Clause + license_family: BSD size: 8884013 timestamp: 1765801252142 -- 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 @@ -23159,69 +28619,63 @@ 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 -- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.3-py312h7a1785b_1.conda - sha256: dcb7080ccb113d760c94a2f5dd32239452793fe9c9cff743ffec27fa128e4801 - md5: c6e0e1f1d9ac014a980574cfe8caa25f + 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 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -23231,18 +28685,18 @@ packages: - libgfortran5 >=14.3.0 - liblapack >=3.9.0,<4.0a0 - libstdcxx >=14 - - numpy <2.6 + - numpy <2.7 - numpy >=1.23,<3 - numpy >=1.25.2 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 16782787 - timestamp: 1763220711836 -- conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.16.3-py312he2acf2f_1.conda - sha256: e37dbb3881e422cd4979882f34f760c0f66ba7a90fcecd95cd55472d41e661d7 - md5: d84da8b0c914cd3071be89b458e2811e + size: 16903519 + timestamp: 1768801007666 +- conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.17.0-py312ha20b133_1.conda + sha256: 6cc34c00442e95199a41bd551a3003ec5f2cac43e8e71158e03462a0dc61b799 + md5: 9ab1af443bf4a42fd14a2baf21e394b9 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -23250,20 +28704,19 @@ packages: - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.2.0 - liblapack >=3.9.0,<4.0a0 - - numpy <2.6 + - numpy <2.7 - numpy >=1.23,<3 - numpy >=1.25.2 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 15248796 - timestamp: 1763221288506 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.16.3-py312ha6bbf71_1.conda - sha256: 39586c1ebc804d481e1062551f7c39a2cfe6f3e3a2c18a9e460388fb8bbd5302 - md5: d196eb3cfffef4a8ea51fbb55dbe8188 + size: 15064644 + timestamp: 1768800945420 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.17.0-py312h0f234b1_1.conda + sha256: a204b9b3a59a88a320d9da772eecda58242cfaaf785119927eb59c4bdc6fa66f + md5: 1f5a9253e1c3484a5c1df0b8145a9ce3 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -23271,9 +28724,8 @@ packages: - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.2.0 - liblapack >=3.9.0,<4.0a0 - - numpy <2.6 + - numpy <2.7 - numpy >=1.23,<3 - numpy >=1.25.2 - python >=3.12,<3.13.0a0 @@ -23281,16 +28733,16 @@ packages: - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 13777809 - timestamp: 1763221087258 -- conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.16.3-py312hd0164fe_1.conda - sha256: 898caf77968dd262b84568316af5a69a511d573b39addf10739124c6c2909ef8 - md5: a586f151952f8157e00365a564d08914 + size: 13802410 + timestamp: 1768801119235 +- conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.17.0-py312h9b3c559_1.conda + sha256: 0f90709b8b8ffa3f3f8a3e023154be77e3fe7dbeda3de3d62479c862111761f2 + md5: da72702707bdb757ad57637815f165b1 depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - liblapack >=3.9.0,<4.0a0 - - numpy <2.6 + - numpy <2.7 - numpy >=1.23,<3 - numpy >=1.25.2 - python >=3.12,<3.13.0a0 @@ -23300,8 +28752,8 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 14804382 - timestamp: 1763221169515 + size: 14843889 + timestamp: 1768801821822 - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda noarch: python sha256: ea29a69b14dd6be5cdeeaa551bf50d78cafeaf0351e271e358f9b820fcab4cb0 @@ -23328,56 +28780,60 @@ packages: license_family: BSD size: 227843 timestamp: 1733730112409 -- conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhd8ed1ab_0.conda - sha256: 7d3f5531269e15cb533b60009aa2a950f9844acf31f38c1b55c8000dbb316676 - md5: 982aa48accc06494cbd2b51af69e17c7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 21110 - timestamp: 1737841666447 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 - md5: 938c8de6b9de091997145b3bf25cdbf9 +- conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda + sha256: bea67173ed67c73cf16691ef72e58059492ac1ed1c880cfbeb6f1295c5add7d6 + md5: 8e7be844ccb9706a999a337e056606ab depends: - - __linux - - python >=3.9 + - python >=3.10 + - python license: BSD-3-Clause license_family: BSD - size: 22736 - timestamp: 1733322148326 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - sha256: 5282eb5b462502c38df8cb37cd1542c5bbe26af2453a18a0a0602d084ca39f53 - md5: e67b1b1fa7a79ff9e8e326d0caf55854 + size: 22532 + timestamp: 1767294175877 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda + sha256: 8fc024bf1a7b99fc833b131ceef4bef8c235ad61ecb95a71a6108be2ccda63e8 + md5: b70e2d44e6aa2beb69ba64206a16e4c6 depends: - __osx - pyobjc-framework-cocoa - - python >=3.9 + - python >=3.10 + - python license: BSD-3-Clause license_family: BSD - size: 23100 - timestamp: 1733322309409 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - sha256: ba8b93df52e0d625177907852340d735026c81118ac197f61f1f5baea19071ad - md5: e6a4e906051565caf5fdae5b0415b654 + 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 - - python >=3.9 - pywin32 + - python >=3.10 + - python license: BSD-3-Clause license_family: BSD - size: 23359 - timestamp: 1733322590167 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - sha256: 972560fcf9657058e3e1f97186cc94389144b46dbdf58c807ce62e83f977e863 - md5: 4de79c071274a53dcaf2a8c749d1499e + size: 22864 + timestamp: 1770937641143 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda + sha256: 59656f6b2db07229351dfb3a859c35e57cc8e8bcbc86d4e501bff881a6f771f1 + md5: 28eb91468df04f655a57bcfbb35fc5c5 depends: - - python >=3.9 + - __linux + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + 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: 748788 - timestamp: 1748804951958 + size: 637506 + timestamp: 1770634745653 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-9.2.2-pyhd8ed1ab_0.conda sha256: 2161ac35fc22770b248bab0be2cc3b5bd765f528a9e60e7f3be784fd8d0d605a md5: e2e4d7094d0580ccd62e2a41947444f3 @@ -23401,6 +28857,20 @@ packages: license_family: MIT size: 6653 timestamp: 1760965126461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.7-py312h21f5128_1.conda + sha256: 3132247fea369826a6ab0857693be7cb35ef690bb1f7f28ccaf20351432e4b2a + md5: 98d83a309c3f330793a7cc8d48c67f81 + depends: + - __glibc >=2.17,<3.0.a0 + - geos >=3.13.1,<3.13.2.0a0 + - libgcc >=13 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 572785 + timestamp: 1741167094882 - conda: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.2-py312h383787d_2.conda sha256: da100ac0210f52399faf814f701165058fa2e2f65f5c036cdf2bf99a40223373 md5: 69e400d3deca12ee7afd4b73a5596905 @@ -23415,6 +28885,19 @@ packages: license_family: BSD size: 631649 timestamp: 1762523699384 +- conda: https://conda.anaconda.org/conda-forge/osx-64/shapely-2.0.7-py312hbf10b29_1.conda + sha256: 6640b08d896186c5ef9998f24be188253646e1821c9959b9ec2362219f78571b + md5: 0fa791edab019354c27babf206aa22b7 + depends: + - __osx >=10.13 + - geos >=3.13.1,<3.13.2.0a0 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 541745 + timestamp: 1741167264444 - conda: https://conda.anaconda.org/conda-forge/osx-64/shapely-2.1.2-py312hd8edc82_2.conda sha256: 0ad376aee3a2fe149443af9345aadeb8ad82a95953bee74b59ca17997da03012 md5: eae9cbc6418de8f26e08f4fb255759e9 @@ -23428,6 +28911,20 @@ packages: license_family: BSD size: 603294 timestamp: 1762523892524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/shapely-2.0.7-py312hf733f26_1.conda + sha256: dc09fedd0ae7857571c1daf7ee1322f5535d486e4f939a4ce2ac4741ad85736d + md5: 5033b6bb0358d8a756ec2fbf7739ed36 + depends: + - __osx >=11.0 + - geos >=3.13.1,<3.13.2.0a0 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 536480 + timestamp: 1741167452069 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/shapely-2.1.2-py312h35cd81b_2.conda sha256: 81d4780a8a7d2f6b696fc8cd43f791ef058a420e35366fd4cd68bef9f139f3d5 md5: 624173184d65db80f267b6191c1ad26d @@ -23442,6 +28939,21 @@ packages: license_family: BSD size: 596152 timestamp: 1762524099944 +- conda: https://conda.anaconda.org/conda-forge/win-64/shapely-2.0.7-py312h3f81574_1.conda + sha256: f0b17b16c33e73e3ca499e743fe0661bc99e8f2e1c06d1f248d9f0f43095f9ef + md5: 5d4fdea14e643636725d68ac3c2306bf + depends: + - geos >=3.13.1,<3.13.2.0a0 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 537509 + timestamp: 1741167468116 - conda: https://conda.anaconda.org/conda-forge/win-64/shapely-2.1.2-py312h37f46ab_2.conda sha256: 06f2e00ea487689ad23de7a9f791378ad00d69d464cd809ccce1ad39486263a9 md5: 674ce7b99e43ac450b79d6c9c8a11705 @@ -23466,6 +28978,63 @@ packages: 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-py312h4c3975b_1.conda + sha256: 0b5e7ab14199d240c39093aa3bd5463bf43b729ee4f2b5c95cbc1c6836d93e38 + md5: 31e17e9462c0de4da6a1274153a85187 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 132740 + timestamp: 1762506988544 +- conda: https://conda.anaconda.org/conda-forge/osx-64/simplejson-3.20.2-py312h80b0991_1.conda + sha256: cbfcef088d8524643f1c016aeb2f38543149d73fa7d877172c669c35bfac2bf0 + md5: 388adf14d20c50104c7b9404847e09f2 + depends: + - __osx >=10.13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 131952 + timestamp: 1762507190112 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/simplejson-3.20.2-py312h4409184_1.conda + sha256: 6fd2048868fe3d7856613c8084c7d17becd4eb4c9996f18b5193555529bbd318 + md5: cab34b0373f18cffef3b18c8876a708d + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 131863 + timestamp: 1762507229621 +- conda: https://conda.anaconda.org/conda-forge/win-64/simplejson-3.20.2-py312he06e257_1.conda + sha256: 1fd9e6ff0f1d6667da7b24ae5b15e7802c950ac302f5c7fc0f689643adc4e6d7 + md5: 12fe454c2b19c16ae4f1e625fa8c4744 + depends: + - 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 + license: MIT + license_family: MIT + size: 130815 + timestamp: 1762507106594 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda sha256: 458227f759d5e3fcec5d9b7acce54e10c9e1f4f4b7ec978f3bfd54ce4ee9853d md5: 3339e3b65d58accf4ca4fb8748ab16b3 @@ -23507,32 +29076,32 @@ packages: license_family: MIT size: 13919 timestamp: 1710194099964 -- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.0.3-pyhdfd78af_0.conda - sha256: 70541017979b70b35e1824f8718a3bb335d4659da9a6f86a4df635fa1e425790 - md5: 3ea81e75226d692c31fa3d115bda027b +- 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 - python >=3.11.0,<4.0.0 - pyyaml - - snakemake-executor-plugin-slurm-jobstep >=0.3.0,<0.4.0 + - snakemake-executor-plugin-slurm-jobstep >=0.4.0,<0.5.0 - snakemake-interface-common >=1.21.0,<2.0.0 - snakemake-interface-executor-plugins >=9.3.9,<10.0.0 - throttler >=1.2.2,<2.0.0 license: MIT license_family: MIT - size: 33681 - timestamp: 1765476233502 -- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.3.0-pyhdfd78af_0.tar.bz2 - sha256: de9cc97d872147bfd5928f653c6d8dc1f0f1e47cb744672ffb743c4b2f8c919a - md5: 1e3d84ab0cd46fbf1dd4e5b290f7c7a5 + 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 depends: - python >=3.11.0,<4.0.0 - snakemake-interface-common >=1.13.0,<2.0.0 - snakemake-interface-executor-plugins >=9.0.0,<10.0.0 license: MIT - size: 12881 - timestamp: 1739611671448 + size: 14678 + timestamp: 1765807808315 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-common-1.22.0-pyhd4c3c12_0.conda sha256: d13802cb086c1b6be2c4e903e01f946fc973436e6100514169df82e537166bce md5: e9bb00d8c7d26a5cd220d3d73bee45fb @@ -23557,15 +29126,15 @@ packages: license_family: MIT size: 22946 timestamp: 1753822168221 -- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-2.0.0-pyhd4c3c12_0.conda - sha256: a6a0bf0393586974b278715df5131cc50e69fba515ecc5d0e974d1825ad0ea21 - md5: 98f75f2ca3a222992e2230d7afc54bb8 +- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1.2.4-pyhdfd78af_0.tar.bz2 + sha256: e582e4e11ced71185992240b07e8bc55aee667c55bc9107529183cebb167476e + md5: cbb15afc697a71cc9a0e9bfd75ae59cc depends: - python >=3.11.0,<4.0.0 - snakemake-interface-common >=1.17.4,<2.0.0 license: MIT - size: 18660 - timestamp: 1759090830197 + size: 16076 + timestamp: 1753366768027 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-report-plugins-1.3.0-pyhd4c3c12_0.conda sha256: 7b7be41b59f2d904acb014ee182561610c930bef5f607742011ee23befe73831 md5: e6fd8cfb23b294da699e395dbc968d11 @@ -23597,9 +29166,18 @@ packages: license_family: MIT size: 21574 timestamp: 1764856126551 -- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.14.4-pyhdfd78af_0.conda - sha256: 4299d8da49a8af28f8b151447af04c247c811f4daa3e6bf1b51397abf1b5389a - md5: 0496673a83b94e461296a112058c4b07 +- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda + sha256: 03571ed180ee205fbf74e3c5607f1f88cd161016d9ad86eb2036212bc5db7bdd + md5: 1a318ca1376d0cd58aa85e3857b08520 + depends: + - python >=3.11 + - snakemake-interface-logger-plugins >=1.2.0,<2 + license: MIT + size: 21016 + timestamp: 1767973148161 +- 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 @@ -23633,11 +29211,11 @@ packages: - yte >=1.5.5,<2.0 license: MIT license_family: MIT - size: 867761 - timestamp: 1765276136443 -- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.1.0-pyhdfd78af_0.conda - sha256: c51ed19c29b1acd2fcae120b16fa60bacc5ce2e3086c3175f7cf2fe50c1a5137 - md5: 17232431f65ce347f972f0fd95d2e97a + 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 @@ -23648,9 +29226,10 @@ packages: - snakemake-storage-plugin-http >=0.3,<1.dev0 - tqdm-loggable >=0.2,<1.dev0 - typing_extensions >=4.15,<5.dev0 + - zstandard >=0.25.0,<0.26.0 license: MIT - size: 19222 - timestamp: 1763479017081 + 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 @@ -23747,15 +29326,15 @@ packages: license_family: APACHE size: 28657 timestamp: 1738440459037 -- conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8-pyhd8ed1ab_0.conda - sha256: c978576cf9366ba576349b93be1cfd9311c00537622a2f9e14ba2b90c97cae9c - md5: 18c019ccf43769d211f2cf78e9ad46c2 +- conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda + sha256: 23b71ecf089967d2900126920e7f9ff18cdcef82dbff3e2f54ffa360243a17ac + md5: 18de09b20462742fe093ba39185d9bac depends: - python >=3.10 license: MIT license_family: MIT - size: 37803 - timestamp: 1756330614547 + size: 38187 + timestamp: 1769034509657 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda sha256: 995f58c662db0197d681fa345522fd9e7ac5f05330d3dff095ab2f102e260ab0 md5: f7af826063ed569bb13f7207d6f949b0 @@ -23794,6 +29373,30 @@ packages: license_family: BSD size: 255445 timestamp: 1740145414720 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-design-0.6.1-pyhd8ed1ab_2.conda + sha256: eb335aef48e49107b55299cedc197f86d05651f1eeff83ed8acf89df7cdc9765 + md5: 3e6c15d914b03f83fc96344f917e0838 + depends: + - python >=3.9 + - sphinx >=6,<9 + license: MIT + license_family: MIT + size: 911336 + timestamp: 1734614675610 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-jsonschema-1.19.2-pyhd8ed1ab_0.conda + sha256: 5f97f417c8434bc6ee9d6d9cd08cce352fc138a0ebb64c46442b7795755c978a + md5: be4647f771ba738721ce7175fb61ef37 + depends: + - docutils + - jsonpointer + - python >=3.10 + - pyyaml + - requests + - sphinx + license: GPL-3.0-only + license_family: GPL + size: 43579 + timestamp: 1764592626926 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda sha256: d7433a344a9ad32a680b881c81b0034bc61618d12c39dd6e3309abeffa9577ba md5: 16e3f039c0aa6446513e94ab18a8784b @@ -23868,62 +29471,62 @@ packages: license_family: BSD size: 28669 timestamp: 1733750596111 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.43-py312h4c3975b_1.conda - sha256: 0a235fad9c2be40cd32cbcb5481ece19c494647f66f55cff22a684ada7a2b802 - md5: 95d7654483188c67bd579374361473b8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.46-py312h5253ce2_1.conda + sha256: ed75056ce6cf1751ad1fbfd879b9f31a7e6308761fa6628800e04aead25bb434 + md5: 7f6c876c3c8918a46fb41e487fddbc8f depends: - - __glibc >=2.17,<3.0.a0 + - python - greenlet !=0.4.17 + - typing-extensions >=4.6.0 + - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0 license: MIT license_family: MIT - size: 3569644 - timestamp: 1759824837659 -- conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.43-py312h80b0991_1.conda - sha256: 2ece03df0dca3c5af83b33e8851653b70ab95695757fe155e83195d67308fda7 - md5: b72c183dd82bf6d6aa1a80e792767c19 + size: 3699847 + timestamp: 1769087054684 +- conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.46-py312hf7082af_1.conda + sha256: bfd5f7598d3f037446f3d3154495897afe8cf3a85da80cd0b3e5c360830b1dfa + md5: 8763772674ce6bb77693853bd50e684c depends: - - __osx >=10.13 + - python - greenlet !=0.4.17 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - typing-extensions >=4.6.0 + - __osx >=10.13 + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 3548500 - timestamp: 1759825099149 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.43-py312h4409184_1.conda - sha256: c36cbbc1b5593440d497bc00980d927182c6d6f6891a9650012879e0b0052bae - md5: 7c74fc5a6822303c86325d8ecba7a39b + size: 3689432 + timestamp: 1769087200782 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.46-py312hb3ab3e3_1.conda + sha256: 36c428ac2f9c7dbe61750b7968686bb3c90f76c3da9796d41218890263f7d2da + md5: 51aed2e7134e363f2047b8a57b82fd1b depends: - - __osx >=11.0 + - python - greenlet !=0.4.17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - typing-extensions >=4.6.0 + - python 3.12.* *_cpython + - __osx >=11.0 + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 3587269 - timestamp: 1759825270340 -- conda: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.43-py312he06e257_1.conda - sha256: f6051bff3119693120f13f21aacb1a94fc1b06f7d6a2254211fe48503cc98a99 - md5: 9e7c0976b93b87e843ff8cdd579ca3f2 + size: 3689903 + timestamp: 1769087087868 +- conda: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.46-py312he5662c2_1.conda + sha256: d5373c921d1107579a1817fd2095fa458352ac8b06e3c51fa9fb828f16fbacd5 + md5: 42192ef4b28d4e50f85f563053e17ad4 depends: + - python - greenlet !=0.4.17 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - typing-extensions >=4.6.0 - - 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: 3504692 - timestamp: 1759825064195 + size: 3659641 + timestamp: 1769087099772 - conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-0.42.1-hd8ed1ab_0.conda sha256: 50823aa7c832b17f3b3ca1ecf83d29bff5eb4e5c13e29bff88a07a8c1bb93e3d md5: 7ebabc64e71d12ab979c4e6dd326202f @@ -24054,77 +29657,105 @@ packages: license_family: BSD size: 7763 timestamp: 1765612935407 -- conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.43-pyhd8ed1ab_0.conda - sha256: 65c06c99ff62621baa20c575b991e9a0caff05975cba5366cb65287dc5fbf3e4 - md5: 5d78824ceaa6d18f0162b54c557af46a +- conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopg-2.0.46-pyh0a47959_1.conda + sha256: 37fe2b08584e4ff9ad103e8a760d3877ce543ce3d53274eae3d2c140c902bfc8 + md5: 97dd497a6a4fbd12b9d3d8928a75b6bf depends: + - python >=3.10 + - sqlalchemy >=2.0.46,<2.0.46.0.0.1.0a0 - psycopg >=3.0.7,!=3.1.15 - - python >=3.9 - - sqlalchemy >=2.0.43,<2.0.44.0a0 + - python license: MIT license_family: MIT - size: 8147 - timestamp: 1754984020103 -- conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.43-pyhd8ed1ab_0.conda - sha256: cfb6e79543a21ed08a6bd37c7b2611f6e29fb044bfaa3a76e998bb50720d22a3 - md5: 4e7ae7a6897b570a9794460b0eb6e6d5 + size: 8534 + timestamp: 1769087058533 +- conda: https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-with-postgresql-psycopgbinary-2.0.46-pyh0a47959_1.conda + sha256: b5d333386acd1abfbb558fc92f26c863c185b766e30363867c6e7f239cb107bc + md5: 9cf226cf8b019e1df88e0f6726917acc depends: - - python >=3.9 - - sqlalchemy >=2.0.43,<2.0.44.0a0 + - python >=3.10 + - sqlalchemy >=2.0.46,<2.0.46.0.0.1.0a0 - sqlalchemy-with-postgresql-psycopg + - python license: MIT license_family: MIT - size: 8189 - timestamp: 1754984076371 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.51.1-hbc0de68_0.conda - sha256: f74f6e1302086d84cb62b2bca74950763378054008c77b0a62ac637bcf25b3c1 - md5: 968f50847d17c74a428fc47a2c70fd6f + size: 8540 + timestamp: 1769087058533 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.51.2-h04a0ce9_0.conda + sha256: ccce47d8fe3a817eac5b95f34ca0fcb12423b0c7c5eee249ffb32ac8013e9692 + md5: bb88d9335d09e54c7e6b5529d1856917 depends: - __glibc >=2.17,<3.0.a0 + - icu >=78.2,<79.0a0 - libgcc >=14 - - libsqlite 3.51.1 h0c1763c_0 + - libsqlite 3.51.2 hf4e2dac_0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - readline >=8.2,<9.0a0 + - readline >=8.3,<9.0a0 + license: blessing + size: 183298 + timestamp: 1768147986603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.51.2-hbc0de68_0.conda + sha256: 65436099fd33e4471348d614c1de9235fdd4e5b7d86a5a12472922e6b6628951 + md5: a6adeaa8efb007e2e1ab3e45768ea987 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libsqlite 3.51.2 h0c1763c_0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - readline >=8.3,<9.0a0 license: blessing - size: 183775 - timestamp: 1764359463938 -- conda: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.51.1-h9e4bfbb_0.conda - sha256: e493fb82215a4f0a9cd8e62193d821b94ba64226860253295335bb59bdbd4d4e - md5: abe6e51b7529c047912848821ba2f872 + size: 183835 + timestamp: 1768147980363 +- conda: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.51.2-h5af3ad2_0.conda + sha256: 89fde12f2a5e58edb9bd1497558a77df9c090878971559bcf0c8513e0966795e + md5: 9eef7504045dd9eb1be950b2f934d542 depends: - __osx >=10.13 - - icu >=75.1,<76.0a0 - - libsqlite 3.51.1 h6cc646a_0 + - libsqlite 3.51.2 hb99441e_0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - readline >=8.2,<9.0a0 + - readline >=8.3,<9.0a0 license: blessing - size: 174016 - timestamp: 1764359811089 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.51.1-he8f07e4_0.conda - sha256: b984c1d08d5c85dfd56cffa43759d0ed3e4454bd63137dfbbdeb3829514d63d1 - md5: 8b3eb23ba0e58ecddf576b618561ba58 + size: 174119 + timestamp: 1768148271396 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.51.2-h77b7338_0.conda + sha256: a13c798ad921da0c84c441c390ace3b53e5c40fe6b11d00e07641d985021c4d1 + md5: 93796186d49d0b09243fb5a8f83e53b6 depends: - __osx >=11.0 - - libsqlite 3.51.1 h9a5124b_0 + - icu >=78.2,<79.0a0 + - libsqlite 3.51.2 h1ae2325_0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - readline >=8.2,<9.0a0 + - readline >=8.3,<9.0a0 + license: blessing + size: 165840 + timestamp: 1768148351309 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.51.2-h85ec8f2_0.conda + sha256: 63c2bbb58e5ca58232cbe61754b85d0a080e5360291cebd52653e000bb0ae8fd + md5: 7821b42fed75ef394d401f59f70e0732 + depends: + - __osx >=11.0 + - libsqlite 3.51.2 h1b79a29_0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - readline >=8.3,<9.0a0 license: blessing - size: 165732 - timestamp: 1764359945973 -- conda: https://conda.anaconda.org/conda-forge/win-64/sqlite-3.51.1-hdb435a2_0.conda - sha256: 87284f2f3c5da52fa00d694fea32656b9616fcdd425b970cef46c5de0ac636e8 - md5: 2a4cacda574f3377fb7e14630c9c0c73 + size: 165822 + timestamp: 1768148297178 +- conda: https://conda.anaconda.org/conda-forge/win-64/sqlite-3.51.2-hdb435a2_0.conda + sha256: 8194c1326f052852dd827f5277ba381228a968e841d410eb18c622cf851b11ba + md5: bc9265bd9f30f9ded263cb762a4fc847 depends: - - libsqlite 3.51.1 hf5d6505_0 + - libsqlite 3.51.2 hf5d6505_0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: blessing - size: 400644 - timestamp: 1764359585715 + size: 400812 + timestamp: 1768148302390 - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 md5: b1b505328da7a6b246787df4b5a49fbc @@ -24137,9 +29768,9 @@ packages: license_family: MIT size: 26988 timestamp: 1733569565672 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.50.0-pyhfdc7a7d_0.conda - sha256: ab9ab67faa3cf12f45f5ced316e2c50dc72b4046cd275612fae756fe9d4cf82c - md5: 68bcb398c375177cf117cf608c274f9d +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.52.1-pyhfdc7a7d_0.conda + sha256: ab0d09eaee2e35a969e7fca3b5b2fdba35c1f2abb8eb8c66245485155d41868e + md5: 7ee23ae71c6c1e2f2fe9ea7cf00f1a8e depends: - anyio >=3.6.2,<5 - python >=3.10 @@ -24147,8 +29778,8 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 64760 - timestamp: 1762016292582 + size: 64896 + timestamp: 1768919444896 - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py312h4f23490_0.conda sha256: 0c61eccf3f71b9812da8ced747b1f22bafd6f66f9a64abe06bbe147a03b7322e md5: 423b8676bd6eed60e97097b33f13ea3f @@ -24221,17 +29852,38 @@ packages: license_family: BSD size: 11419682 timestamp: 1764983650145 -- 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_2.conda + sha256: 25a7eaad98aabe1f4f137ecac53cb45de881cc88d399738f95278f0449f97c28 + md5: 2f96340000d8b3957ecb0978cfed0486 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: 13317 + timestamp: 1771438096132 +- 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 @@ -24320,40 +29972,40 @@ packages: license_family: APACHE size: 181262 timestamp: 1762509955687 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tbb-2022.3.0-hf0c99ee_1.conda - sha256: 56e32e8bd8f621ccd30574c2812f8f5bc42cc66a3fda8dd7e1b5e54d3f835faa - md5: 108a7d3b5f5b08ed346636ac5935a495 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tbb-2022.3.0-h06b67a2_2.conda + sha256: 2c6707f86d920416817010225774a09309a07aef0c173eecfcc7b403476f4a9e + md5: e048347a60763f60ada3c5fac23dfb60 depends: - __osx >=10.13 - libcxx >=19 - - libhwloc >=2.12.1,<2.12.2.0a0 + - libhwloc >=2.12.2,<2.12.3.0a0 license: Apache-2.0 license_family: APACHE - size: 160700 - timestamp: 1762510382168 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2022.3.0-h66ce52b_1.conda - sha256: 06de2fb5bdd4e51893d651165c3dc2679c4c84b056d962432f31cd9f2ccb1304 - md5: 6f026b94077bed22c27ad8365e024e18 + size: 160208 + timestamp: 1767886933381 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2022.3.0-h4ddebb9_2.conda + sha256: 54278e6bdf378b92cbec941d29e8f360796dabf72c9ad1f6e2a27ca91a9f804a + md5: 82395152e3ba2dea9ea6a3dc17553136 depends: - __osx >=11.0 - libcxx >=19 - - libhwloc >=2.12.1,<2.12.2.0a0 + - libhwloc >=2.12.2,<2.12.3.0a0 license: Apache-2.0 license_family: APACHE - size: 121436 - timestamp: 1762510628662 -- conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2022.3.0-hd094cb3_1.conda - sha256: c31cac57913a699745d124cdc016a63e31c5749f16f60b3202414d071fc50573 - md5: 17c38aaf14c640b85c4617ccb59c1146 + size: 120040 + timestamp: 1767887181945 +- conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2022.3.0-h3155e25_2.conda + sha256: abd9a489f059fba85c8ffa1abdaa4d515d6de6a3325238b8e81203b913cf65a9 + md5: 0f9817ffbe25f9e69ceba5ea70c52606 depends: - - libhwloc >=2.12.1,<2.12.2.0a0 + - libhwloc >=2.12.2,<2.12.3.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Apache-2.0 license_family: APACHE - size: 155714 - timestamp: 1762510341121 + size: 155869 + timestamp: 1767886839029 - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda sha256: 6b549360f687ee4d11bf85a6d6a276a30f9333df1857adb0fe785f0f8e9bcd60 md5: f88bb644823094f436792f80fba3207e @@ -24373,42 +30025,51 @@ packages: license_family: APACHE size: 25364 timestamp: 1743640859268 -- conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - sha256: b300557c0382478cf661ddb520263508e4b3b5871b471410450ef2846e8c352c - md5: efba281bbdae5f6b0a1d53c6d4a97c93 +- conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + sha256: 32e75900d6a094ffe4290a8c9f1fa15744d9da8ff617aba4acaa0f057a065c34 + md5: 043f0599dc8aa023369deacdb5ac24eb depends: - - __linux - - ptyprocess - - python >=3.8 + - 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 + depends: + - __win + - pywinpty >=1.1.0 + - python >=3.10 - tornado >=6.1.0 + - python license: BSD-2-Clause license_family: BSD - size: 22452 - timestamp: 1710262728753 -- conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - sha256: 4daae56fc8da17784578fbdd064f17e3b3076b394730a14119e571707568dc8a - md5: 00b54981b923f5aefcd5e8547de056d5 + size: 23665 + timestamp: 1766513806974 +- conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + sha256: 6b6727a13d1ca6a23de5e6686500d0669081a117736a87c8abf444d60c1e40eb + md5: 17b43cee5cc84969529d5d0b0309b2cb depends: - - __osx + - __unix - ptyprocess - - python >=3.8 + - python >=3.10 - tornado >=6.1.0 + - python license: BSD-2-Clause license_family: BSD - size: 22717 - timestamp: 1710265922593 -- conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - sha256: 8cb078291fd7882904e3de594d299c8de16dd3af7405787fce6919a385cfc238 - md5: 4abd500577430a942a995fd0d09b76a2 + size: 24749 + timestamp: 1766513766867 +- conda: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda + sha256: 4770807cc5a217638c9aea3f05ea55718a82c50f32462df196b5472aff02787f + md5: 23b4ba5619c4752976eb7ba1f5acb7e8 depends: - - __win - - python >=3.8 - - pywinpty >=1.1.0 - - tornado >=6.1.0 - license: BSD-2-Clause - license_family: BSD - size: 22883 - timestamp: 1710262943966 + - 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 @@ -24427,117 +30088,115 @@ packages: license_family: MIT size: 12341 timestamp: 1691135604942 -- conda: https://conda.anaconda.org/conda-forge/linux-64/time-machine-3.2.0-py312h5253ce2_0.conda - sha256: 3ac5b15e2c55af99ced4ff077fa00fcb52787b74da76e5fd8fc60115243a86b7 - md5: 8354c177dfff222179bdcb54874404f2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/time-machine-2.19.0-py312h5253ce2_2.conda + sha256: e60ef7d2a80c833749f2b017e4e8a11178b05da30de6966d35cd0a3bdbcc9f4e + md5: fd3e511a2910400b7f05e5174d103889 depends: - python - - libgcc >=14 + - python-dateutil - __glibc >=2.17,<3.0.a0 + - libgcc >=14 - python_abi 3.12.* *_cp312 - constrains: - - python-dateutil >=2.8.2 license: MIT license_family: MIT - size: 47310 - timestamp: 1766070671437 -- conda: https://conda.anaconda.org/conda-forge/osx-64/time-machine-3.2.0-py312h01f6755_0.conda - sha256: 63bddf1b90e5a5077735f222e47f57afa0c202ae40f48309a435a03f59487321 - md5: e31bd3ea167e60a3b67c23b877e777e1 + size: 45706 + timestamp: 1762519484465 +- conda: https://conda.anaconda.org/conda-forge/osx-64/time-machine-2.19.0-py312h01f6755_2.conda + sha256: ee90f0b3ad80318dd9080d04ab626d3c8ee0807a1324c6471c8b75a36c303e45 + md5: ac4a314863942e0044eba312026e7a46 depends: - python + - python-dateutil - __osx >=10.13 - python_abi 3.12.* *_cp312 - constrains: - - python-dateutil >=2.8.2 license: MIT license_family: MIT - size: 46474 - timestamp: 1766070847345 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/time-machine-3.2.0-py312h37e1c23_0.conda - sha256: 70966277ff8107c172ce3e0e6c0b6621674949e6271d01da50d58fca44ba209f - md5: abcaefcfa2971ab01151565afdec7113 + size: 44396 + timestamp: 1762519604295 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/time-machine-2.19.0-py312h37e1c23_2.conda + sha256: d5e713c5f6f0db6114a2be0441ca6c57925741c22c5229b81bf320a1e9a0fb90 + md5: 37452bdf455c18865b6e345e07600f50 depends: - python - - __osx >=11.0 + - python-dateutil - python 3.12.* *_cpython + - __osx >=11.0 - python_abi 3.12.* *_cp312 - constrains: - - python-dateutil >=2.8.2 license: MIT license_family: MIT - size: 49092 - timestamp: 1766070799747 -- conda: https://conda.anaconda.org/conda-forge/win-64/time-machine-3.2.0-py312he5662c2_0.conda - sha256: bf3cbe7ac2acac24e6294bf3f962e137b16e1696c4ba54e080cdef99bf27028c - md5: fe67bbeb2dd28d435bb89f4925649575 + size: 46982 + timestamp: 1762519783216 +- conda: https://conda.anaconda.org/conda-forge/win-64/time-machine-2.19.0-py312he5662c2_2.conda + sha256: 64dc02aa9ed8267dc7c028471e8eb5f9f70d91237b307e80b5a43569a6d59b9e + md5: dab3e0cf0213184d6d4c47a40f9cfe24 depends: - python + - python-dateutil + - 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 - constrains: - - python-dateutil >=2.8.2 license: MIT license_family: MIT - size: 39479 - timestamp: 1766070686208 -- conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda - sha256: 7c803480dbfb8b536b9bf6287fa2aa0a4f970f8c09075694174eb4550a4524cd - md5: c0d0b883e97906f7524e2aac94be0e0d + size: 38471 + timestamp: 1762519496080 +- 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/toml-0.10.2-pyhcf101f3_3.conda sha256: fd30e43699cb22ab32ff3134d3acf12d6010b5bbaa63293c37076b50009b91f8 md5: d0fc809fa4c4d85e959ce4ab6e1de800 @@ -24548,25 +30207,25 @@ packages: license_family: MIT size: 24017 timestamp: 1764486833072 -- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - sha256: cb77c660b646c00a48ef942a9e1721ee46e90230c7c570cdeb5a893b5cce9bff - md5: d2732eb636c264dc9aa4cbee404b1a53 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda + sha256: 62940c563de45790ba0f076b9f2085a842a65662268b02dd136a8e9b1eaf47a8 + md5: 72e780e9aa2d0a3295f59b1874e3768b depends: - python >=3.10 - python license: MIT license_family: MIT - size: 20973 - timestamp: 1760014679845 -- conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda - sha256: f8d3b49c084831a20923f66826f30ecfc55a4cd951e544b7213c692887343222 - md5: 146402bf0f11cbeb8f781fa4309a95d3 + size: 21453 + timestamp: 1768146676791 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda + sha256: b35082091c8efd084e51bc3a4a2d3b07897eff232aaf58cbc0f959b6291a6a93 + md5: 385dca77a8b0ec6fa9b92cb62d09b43b depends: - - python >=3.9 + - python >=3.10 license: MIT license_family: MIT - size: 38777 - timestamp: 1749127286558 + size: 39224 + timestamp: 1768476626454 - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda sha256: 4e379e1c18befb134247f56021fdf18e112fb35e64dd1691858b0a0f3bea9a45 md5: c07a6153f8306e45794774cf9b13bd32 @@ -24624,25 +30283,37 @@ packages: license_family: Apache size: 857173 timestamp: 1765836731961 -- 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 @@ -24668,58 +30339,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.1-pyhd8ed1ab_0.conda + sha256: 39d8ae33c43cdb8f771373e149b0b4fae5a08960ac58dcca95b2f1642bb17448 + md5: 260af1b0a94f719de76b4e14094e9a3b 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 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.21.1-pyhf8876ea_0.conda - sha256: 62b359b76ae700ef4a4f074a196bc8953f2188a2784222029d0b3d19cdea59f9 - md5: 7f66f45c1bb6eb774abf6d2f02ccae9d - depends: - - typer-slim-standard ==0.21.1 h378290b_0 - - python >=3.10 - - python - license: MIT - license_family: MIT - size: 82073 - timestamp: 1767711188310 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.21.1-pyhcf101f3_0.conda - sha256: 9ef3c1b5ea2b355904b94323fc3fc95a37584ef09c6c86aafe472da156aa4d70 - md5: 3f64f1c7f9a23bead591884648949622 - depends: - - python >=3.10 - - click >=8.0.0 - - typing_extensions >=3.7.4.3 - - python - constrains: - - typer 0.21.1.* - - rich >=10.11.0 - - shellingham >=1.3.0 - license: MIT - license_family: MIT - size: 48131 - timestamp: 1767711188309 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.21.1-h378290b_0.conda - sha256: 6a300a4e8d1e30b7926a966e805201ec08d4a5ab97c03a7d0f927996413249d7 - md5: f08a1f489c4d07cfd4a9983963073480 + size: 36838 + timestamp: 1771532971545 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda + sha256: d89149cbb4244e4a0aa0f836a4f75b1e4c26e8e33bcda041f91b67e193b40c68 + md5: bac7249fa4302ee17e1ae0aa17991732 depends: - - typer-slim ==0.21.1 pyhcf101f3_0 - - rich - - shellingham + - 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: 5322 - timestamp: 1767711188310 + size: 119515 + timestamp: 1770989162958 - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c md5: edd329d7d3a4ab45dcf905899a7a6115 @@ -24769,12 +30416,12 @@ packages: license_family: APACHE size: 15183 timestamp: 1733331395943 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda - sha256: 50fad5db6734d1bb73df1cf5db73215e326413d4b2137933f70708aa1840e25b - md5: 338201218b54cadff2e774ac27733990 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c + md5: ad659d0a2b3e47e38d829aa8cad2d610 license: LicenseRef-Public-Domain - size: 119204 - timestamp: 1765745742795 + size: 119135 + timestamp: 1767016325805 - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda sha256: 3005729dce6f3d3f5ec91dfc49fc75a0095f9cd23bab49efb899657297ac91a5 md5: 71b24316859acd00bdb8b38f5e2ce328 @@ -24784,9 +30431,64 @@ packages: license: LicenseRef-MicrosoftWindowsSDK10 size: 694692 timestamp: 1756385147981 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312hd9148b4_6.conda - sha256: e1ecdfe8b0df725436e1d307e8672010d92b9aa96148f21ddf9be9b9596c75b0 - md5: f30ece80e76f9cc96e30cc5c71d2818e +- conda: https://conda.anaconda.org/conda-forge/linux-64/ujson-5.11.0-py312h8285ef7_1.conda + sha256: 466761e04d5c4816d6d950684349bafdbcfb9820603cbf3f2e279212b0f21213 + md5: fa0c24d72a29999a904c4463e53095d1 + depends: + - python + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 59715 + timestamp: 1756674041246 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ujson-5.11.0-py312h2ac44ba_1.conda + sha256: af0c6a5002d053bc297a33fd5f9a100f5f474fdd4716048ca38a89121884eac7 + md5: 20b573a672a3ea3d481f9095f1bb4484 + depends: + - python + - libcxx >=19 + - __osx >=10.13 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 68397 + timestamp: 1756674106944 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ujson-5.11.0-py312he360a15_1.conda + sha256: bdd384f304d470d65e8e4a647845fd08b3c3868b5e6d71ae4edd373b0bb2035a + md5: 8d226a5811b0c5e311cad9bef423cc85 + depends: + - python + - libcxx >=19 + - __osx >=11.0 + - python 3.12.* *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 66005 + timestamp: 1756674109714 +- conda: https://conda.anaconda.org/conda-forge/win-64/ujson-5.11.0-py312ha1a9051_1.conda + sha256: 3530a13751bdab199b7925a07e84d4d5c5683c7ae3d58c48237446183a768384 + md5: 7fe9ccb19a96d6ae1c2296d6dd4b0dca + 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.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 51055 + timestamp: 1756674025458 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.conda + sha256: c975070ac28fe23a5bbb2b8aeca5976b06630eb2de2dc149782f74018bf07ae8 + md5: 55fd03988b1b1bc6faabbfb5b481ecd7 depends: - __glibc >=2.17,<3.0.a0 - cffi @@ -24796,11 +30498,11 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 14602 - timestamp: 1761594857801 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hedd4973_6.conda - sha256: 7e1362997611ec4971144253696ffeda05af78c5d79736a8a59b5eaa40ffcfe2 - md5: 60234a8062a92843ecf383a4c18b8037 + size: 14882 + timestamp: 1769438717830 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py312h0aa9c5c_0.conda + sha256: 833c7b0947be7ee67e561066e94ea284cdb235d57648e4538b2cf2062e8d919b + md5: a7692ba7ead6f7e3c910339851776c92 depends: - __osx >=10.13 - cffi @@ -24809,11 +30511,11 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 13967 - timestamp: 1761595128090 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312ha0dd364_6.conda - sha256: ba54fd3c178d30816fff864e5f6c7d05d4ec5f72a42ad15ec576a81fe28bea48 - md5: 678a837ca1469257c13895124d4055b8 + size: 14209 + timestamp: 1769438958547 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py312h766f71e_0.conda + sha256: 4d047b1d6e0f4bdd8c43e1b772665de9a10c0649a7f158df8193a3a6e7df714f + md5: e80504aa921f5ab11456f27bd9ef5d25 depends: - __osx >=11.0 - cffi @@ -24823,11 +30525,11 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 14510 - timestamp: 1761595134634 -- conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hf90b1b7_6.conda - sha256: 2b41d4e8243e31e8be51fa5cebc3f8017ecc7ed388af4e9498f97863459ec4e1 - md5: 7369aaa9123f029c7aee5f34381f7742 + size: 14733 + timestamp: 1769439379176 +- conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.1.0-py312hf90b1b7_0.conda + sha256: 109cff6bde0af580472e8ece93323c9cf11a53c983867e411d47e212cd8efd1e + md5: 46f58bf68d690efadc0b1eb17e9f763d depends: - cffi - python >=3.12,<3.13.0a0 @@ -24837,11 +30539,11 @@ packages: - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - size: 18206 - timestamp: 1761595067912 -- conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.0-py312h4c3975b_1.conda - sha256: 3c812c634e78cec74e224cc6adf33aed533d9fe1ee1eff7f692e1f338efb8c5b - md5: a0b8efbe73c90f810a171a6c746be087 + size: 18354 + timestamp: 1769438970742 +- 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 @@ -24849,22 +30551,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 @@ -24872,11 +30574,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 @@ -24885,8 +30587,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 @@ -24947,9 +30649,33 @@ packages: license_family: BSD size: 49181 timestamp: 1715010467661 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.2-pyhd8ed1ab_0.conda - sha256: f4302a80ee9b76279ad061df05003abc2a29cc89751ffab2fd2919b43455dac0 - md5: 4949ca7b83065cfe94ebe320aece8c72 +- 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 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 101735 + timestamp: 1750271478254 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda + sha256: af641ca7ab0c64525a96fd9ad3081b0f5bcf5d1cbb091afb3f6ed5a9eee6111a + md5: 9272daa869e03efe68833e3dc7a02130 depends: - backports.zstd >=1.0.0 - brotli-python >=1.2.0 @@ -24958,11 +30684,11 @@ packages: - python >=3.10 license: MIT license_family: MIT - size: 102842 - timestamp: 1765719817255 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.40.0-pyh6dadd2b_0.conda - sha256: 10a53144032ab6671c9a4f4f801448093cd2c4b73d40d13a00837a18824d602e - md5: 518f06ec23263844563845074bd619f3 + size: 103172 + timestamp: 1767817860341 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.41.0-pyh6dadd2b_0.conda + sha256: 87b0f8c30ea1ec00f6945e229a6ea6c4baf6f87b325a482897988565a02415a9 + md5: 817fb0fd3a60b626d322e6ce8957e2a4 depends: - __win - click >=7.0 @@ -24972,11 +30698,11 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 53657 - timestamp: 1766332935113 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.40.0-pyhc90fa1f_0.conda - sha256: 9cb6777bc67d43184807f8c57bdf8c917830240dd95e66fa9dbb7d65fa81f68e - md5: eb8fdfa0a193cfe804970d1a5470246d + size: 53771 + timestamp: 1771328186676 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.41.0-pyhc90fa1f_0.conda + sha256: 199731b8a86d18d89a9236225cf3e618aef467f628bc6f6bb2875a28f24f3dd4 + md5: 10d80692c8c9c05b7d4b0a1531208ad7 depends: - __unix - click >=7.0 @@ -24986,40 +30712,40 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 54972 - timestamp: 1766332899903 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.40.0-h4cd5af1_0.conda - sha256: 0476363e52d50f7c6075d06f309a54a9dc9b8828c00b4ed572b78d5f1374fccb - md5: 8c7fcf5c22f9342caf554be590f6fee9 + size: 54913 + timestamp: 1771328143244 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.41.0-he9f3e0c_0.conda + sha256: 034d62c37fadadafe8b5c923beaed2279d0f4ad8df731f3e86d12760fa33ccbc + md5: 2ada177289a251ffcfeae37e9f28dc3a depends: - __unix - - uvicorn ==0.40.0 pyhc90fa1f_0 + - uvicorn ==0.41.0 pyhc90fa1f_0 - websockets >=10.4 - httptools >=0.6.3 - - watchfiles >=0.13 + - watchfiles >=0.20 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvloop >=0.14.0,!=0.15.0,!=0.15.1 + - uvloop >=0.15.1 license: BSD-3-Clause license_family: BSD - size: 4119 - timestamp: 1766332899904 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.40.0-hcfb189c_0.conda - sha256: d4e1dfb669277498e4731502bfab1bbe2bb5a701a735b559723a60bfce0c5b4e - md5: db6123b8bd102ba091cc774d74a00bd2 + size: 4145 + timestamp: 1771328143246 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.41.0-hf7a0800_0.conda + sha256: 93a3e2436d37cd2cc6d7d49ba18917f1b1befd9d18e72daae5e546b5cb3160ed + md5: 9eb8eeeb3b6ef7ed981b2f04a7e089d8 depends: - __win - - uvicorn ==0.40.0 pyh6dadd2b_0 + - uvicorn ==0.41.0 pyh6dadd2b_0 - websockets >=10.4 - httptools >=0.6.3 - - watchfiles >=0.13 + - watchfiles >=0.20 - python-dotenv >=0.13 - pyyaml >=5.1 - colorama >=0.4 license: BSD-3-Clause license_family: BSD - size: 4175 - timestamp: 1766332935118 + size: 4201 + timestamp: 1771328186681 - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.22.1-py312h4c3975b_1.conda sha256: 15714d471fcba83c76930f49c4de0ebb5589f9b90d9eab52b1e7fc1478474891 md5: bdfc3f5345f9a16c63ba18e50c292e08 @@ -25064,62 +30790,64 @@ packages: license_family: MIT size: 40032 timestamp: 1746267229282 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_33.conda - sha256: 7036945b5fff304064108c22cbc1bb30e7536363782b0456681ee6cf209138bd - md5: 2d1c042360c09498891809a3765261be +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_34.conda + sha256: 9dc40c2610a6e6727d635c62cced5ef30b7b30123f5ef67d6139e23d21744b3a + md5: 1e610f2416b6acdd231c5f573d754a0f depends: - - vc14_runtime >=14.42.34433 + - vc14_runtime >=14.44.35208 track_features: - vc14 license: BSD-3-Clause license_family: BSD - size: 19070 - timestamp: 1765216452130 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_33.conda - sha256: 7e8f7da25d7ce975bbe7d7e6d6e899bf1f253e524a3427cc135a79f3a79c457c - md5: fb8e4914c5ad1c71b3c519621e1df7b8 + size: 19356 + timestamp: 1767320221521 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_34.conda + sha256: 02732f953292cce179de9b633e74928037fa3741eb5ef91c3f8bae4f761d32a5 + md5: 37eb311485d2d8b2c419449582046a42 depends: - ucrt >=10.0.20348.0 - - vcomp14 14.44.35208 h818238b_33 + - vcomp14 14.44.35208 h818238b_34 constrains: - - vs2015_runtime 14.44.35208.* *_33 + - vs2015_runtime 14.44.35208.* *_34 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary - size: 684323 - timestamp: 1765216366832 -- conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_33.conda - sha256: f79edd878094e86af2b2bc1455b0a81e02839a784fb093d5996ad4cf7b810101 - md5: 4cb6942b4bd846e51b4849f4a93c7e6d + size: 683233 + timestamp: 1767320219644 +- conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_34.conda + sha256: 878d5d10318b119bd98ed3ed874bd467acbe21996e1d81597a1dbf8030ea0ce6 + md5: 242d9f25d2ae60c76b38a5e42858e51d depends: - ucrt >=10.0.20348.0 constrains: - - vs2015_runtime 14.44.35208.* *_33 + - vs2015_runtime 14.44.35208.* *_34 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary - size: 115073 - timestamp: 1765216325898 -- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.35.4-pyhd8ed1ab_0.conda - sha256: 77193c99c6626c58446168d3700f9643d8c0dab1f6deb6b9dd039e6872781bfb - md5: cfccfd4e8d9de82ed75c8e2c91cab375 + size: 115235 + timestamp: 1767320173250 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.38.0-pyhcf101f3_0.conda + sha256: 5676ca6e53df7353955a716716e60359b5777b2216613420dd1b546224dd2648 + md5: eaf8f08a04ab2d8612e45aa4f4c33357 depends: + - python >=3.10 - distlib >=0.3.7,<1 - - filelock >=3.12.2,<4 - platformdirs >=3.9.1,<5 - - python >=3.10 - typing_extensions >=4.13.2 + - importlib-metadata >=6.6 + - filelock >=3.24.2,<4 + - python license: MIT license_family: MIT - size: 4401341 - timestamp: 1761726489722 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_33.conda - sha256: 93fc61d05770f4c6b66214ed3494f632bf6e0e6ee7fcb0fb0a847a4bed131953 - md5: 65e5a2127012cd4dbc9354579661b9fd + size: 4654186 + timestamp: 1771499727338 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_34.conda + sha256: 63ff4ec6e5833f768d402f5e95e03497ce211ded5b6f492e660e2bfc726ad24d + md5: f276d1de4553e8fca1dfb6988551ebb4 depends: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 19159 - timestamp: 1765216369037 + size: 19347 + timestamp: 1767320221943 - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.1-py312h0ccc70a_0.conda sha256: 5cc839dafe34e5f7b612e1d4d97bb11546eae8b1842e5b7870b3c6adbe9097e8 md5: d8ecac58c1cb180296a1dd7de058dbc5 @@ -25178,6 +30906,19 @@ packages: license_family: MIT size: 303368 timestamp: 1760457029394 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda + sha256: ba673427dcd480cfa9bbc262fd04a9b1ad2ed59a159bd8f7e750d4c52282f34c + md5: 0f2ca7906bf166247d1d760c3422cb8a + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 330474 + timestamp: 1751817998141 - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-hd6090a7_1.conda sha256: 3aa04ae8e9521d9b56b562376d944c3e52b69f9d2a0667f77b8953464822e125 md5: 035da2e4f5770f036ff704fa17aace24 @@ -25191,15 +30932,27 @@ packages: license_family: MIT size: 329779 timestamp: 1761174273487 -- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.14-pyhd8ed1ab_0.conda - sha256: e311b64e46c6739e2a35ab8582c20fa30eb608da130625ed379f4467219d4813 - md5: 7e1e5ff31239f9cd5855714df8a3783d +- 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 license_family: MIT - size: 33670 - timestamp: 1758622418893 + size: 71550 + timestamp: 1770634638503 - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda sha256: 21f6c8a20fe050d09bfda3fb0a9c3493936ce7d6e1b3b5f8b01319ee46d6c6f6 md5: 6639b6b0d8b5a284f027a2003669aa65 @@ -25275,15 +31028,25 @@ packages: license_family: BSD size: 414775 timestamp: 1768087427139 -- conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.15-pyhd8ed1ab_0.conda - sha256: 826af5e2c09e5e45361fa19168f46ff524e7a766022615678c3a670c45895d9a - md5: dc257b7e7cad9b79c1dfba194e92297b +- conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-3.6.10-pyhd8ed1ab_0.conda + sha256: 6aeb16d2aacdae68ba7afd980925264f5d0459dd165e3406f13f23949df346c1 + md5: 4d52bbdb661dc1b5a1c2aeb1afcd9a67 depends: - - python >=3.10 + - notebook >=4.4.1 + - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 889195 - timestamp: 1762040404362 + 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 @@ -25357,42 +31120,6 @@ packages: license_family: BSD size: 63012 timestamp: 1756852490793 -- conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.12.0-pyhcf101f3_0.conda - sha256: b35f6848f229d65dc6e6d58a232099a5e293405a5e3e369b15110ed255cf9872 - md5: efdb3ef0ff549959650ef070ba2c52d2 - depends: - - python >=3.11 - - numpy >=1.26 - - packaging >=24.1 - - pandas >=2.2 - - python - constrains: - - bottleneck >=1.4 - - cartopy >=0.23 - - cftime >=1.6 - - dask-core >=2024.6 - - distributed >=2024.6 - - flox >=0.9 - - h5netcdf >=1.3 - - h5py >=3.11 - - hdf5 >=1.14 - - iris >=3.9 - - matplotlib-base >=3.8 - - nc-time-axis >=1.4 - - netcdf4 >=1.6.0 - - numba >=0.60 - - numbagg >=0.8 - - pint >=0.24 - - pydap >=3.5.0 - - scipy >=1.13 - - seaborn-base >=0.13 - - sparse >=0.15 - - toolz >=0.12 - - zarr >=2.18 - license: Apache-2.0 - license_family: APACHE - size: 994025 - timestamp: 1764974555156 - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda sha256: e27b45ca791cfbcad37d64b8615d0672d94aafa00b014826fcbca2ce18bd1cc0 md5: 145c6f2ac90174d9ad1a2a51b9d7c1dd @@ -25426,6 +31153,39 @@ packages: license_family: APACHE size: 879913 timestamp: 1749743321359 +- conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.9.0-pyhd8ed1ab_0.conda + sha256: ae5a7db3b457caacc5da3e47650ea2dc597b769787669b29bd68cb9d1822046c + md5: ebd60e8b77a2fc77a8d86892705ea245 + depends: + - numpy >=1.26 + - packaging >=24.1 + - pandas >=2.2 + - python >=3.11 + constrains: + - iris >=3.9 + - numba >=0.60 + - nc-time-axis >=1.4 + - hdf5 >=1.14 + - zarr >=2.18 + - seaborn-base >=0.13 + - bottleneck >=1.4 + - cartopy >=0.23 + - cftime >=1.6 + - dask-core >=2024.6 + - toolz >=0.12 + - distributed >=2024.6 + - matplotlib-base >=3.8 + - netcdf4 >=1.6.0 + - flox >=0.9 + - h5netcdf >=1.3 + - pint >=0.24 + - scipy >=1.13 + - sparse >=0.15 + - h5py >=3.11 + license: Apache-2.0 + license_family: APACHE + size: 898587 + timestamp: 1756981236899 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda sha256: ad8cab7e07e2af268449c2ce855cbb51f43f4664936eff679b1f3862e6e4b01d md5: fdc27cb255a7a2cc73b7919a968b48f0 @@ -25492,9 +31252,9 @@ packages: license_family: MIT size: 51689 timestamp: 1718844051451 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-h988505b_0.conda - sha256: dbed30e56bea060c8b077773138f388144686c24793172ee3d39b69aa0628165 - md5: eeecd6ccca69409a39ac99721a72f387 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.5-h988505b_2.conda + sha256: 339ab0ff05170a295e59133cd0fa9a9c4ba32b6941c8a2a73484cc13f81e248a + md5: 9dda9667feba914e0e80b95b82f7402b depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 @@ -25503,41 +31263,87 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 1637176 - timestamp: 1728975948928 -- conda: https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.3.0-hd0321b6_0.conda - sha256: 8769f3f08e78f26fdf6f530efc84a48d05ce7d8dbde405bd81d87e5dc43cb2d9 - md5: 3ad24748832587b79c7a1f96ca874376 + size: 1648243 + timestamp: 1727733890754 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-hd9031aa_1.conda + sha256: 605980121ad3ee9393a9b53fb0996929c9732f8fc6b9f796d25244ca6fa23032 + md5: 66a1db55ecdb7377d2b91f54cd56eafa + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.1,<79.0a0 + - libgcc >=14 + - libnsl >=2.0.1,<2.1.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: Apache + size: 1660075 + timestamp: 1766327494699 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.2.5-h197e74d_2.conda + sha256: 6218762b3ecff8e365f2880bb6a762b195e350159510d3f2dba58fa53f90a1bf + md5: 559e2c3fb2fe4bfc985e8486bad8ecaa depends: - __osx >=10.13 - icu >=75.1,<76.0a0 - libcxx >=17 license: Apache-2.0 license_family: Apache - size: 1353665 - timestamp: 1728976213621 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.3.0-hd62221f_0.conda - sha256: 54e36cb8172675de7f8ce39b5914de602b860c1febb1770b758f0f220836f41e - md5: 619c817c693a09599ecb7e864d538f63 + size: 1352475 + timestamp: 1727734320281 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.3.0-ha8d0d41_1.conda + sha256: 214dc4f27f9160830bb5b82bdc53a943a052071b0f23b8d4771a2f4e469763c6 + md5: 21338f14e1226ca108452b770e770455 + depends: + - __osx >=10.13 + - icu >=78.1,<79.0a0 + - libcxx >=19 + license: Apache-2.0 + license_family: Apache + size: 1358256 + timestamp: 1766327914262 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.2.5-h92fc2f4_2.conda + sha256: 863a7c2a991a4399d362d42c285ebc20748a4ea417647ebd3a171e2220c7457d + md5: 50b7325437ef0901fe25dc5c9e743b88 depends: - __osx >=11.0 - icu >=75.1,<76.0a0 - libcxx >=17 license: Apache-2.0 license_family: Apache - size: 1277136 - timestamp: 1728976036185 -- conda: https://conda.anaconda.org/conda-forge/win-64/xerces-c-3.3.0-he0c23c2_0.conda - sha256: bba9bc42593fc8e1da32bc8f810c305ab3fd230689c41b59e6fe77ab79cbe7d7 - md5: 9c600d9aaba64595d0c3561f1b9d700b + size: 1277884 + timestamp: 1727733870250 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.3.0-h25f632f_1.conda + sha256: 89152175f45b5e84e0f1575848f607e305ffc122ab59d9704ea77ce699b1bd2b + md5: 0b886d06130b774f086d3b2ce0b7277a + depends: + - __osx >=11.0 + - icu >=78.1,<79.0a0 + - libcxx >=19 + license: Apache-2.0 + license_family: Apache + size: 1283088 + timestamp: 1766327630028 +- conda: https://conda.anaconda.org/conda-forge/win-64/xerces-c-3.2.5-he0c23c2_2.conda + sha256: 759ae22a0a221dc1c0ba39684b0dcf696aab4132478e17e56a0366ded519e54e + md5: 82b6eac3c198271e98b48d52d79726d8 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: Apache-2.0 license_family: Apache - size: 3560268 - timestamp: 1728976534703 + size: 3574017 + timestamp: 1727734520239 +- conda: https://conda.anaconda.org/conda-forge/win-64/xerces-c-3.3.0-hac47afa_1.conda + sha256: 9583a8fcf01c59b26a4285bc151b6315fd0bd504e1628f004519dc871eb17073 + md5: d1097e01041cfed41c81f1e3d1f52572 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: Apache + size: 3598939 + timestamp: 1766327729418 - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.46-hb03c661_0.conda sha256: aa03b49f402959751ccc6e21932d69db96a65a67343765672f7862332aa32834 md5: 71ae752a748962161b4740eaff510258 @@ -25558,6 +31364,15 @@ 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 @@ -25567,6 +31382,15 @@ packages: 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 @@ -25613,29 +31437,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 @@ -25675,18 +31499,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 @@ -25752,29 +31576,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 @@ -25799,46 +31623,46 @@ packages: license_family: MIT size: 47179 timestamp: 1727799254088 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda - sha256: 1b9141c027f9d84a9ee5eb642a0c19457c788182a5a73c5a9083860ac5c20a8c - md5: 5e2eb9bf77394fc2e5918beefec9f9ab +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda + sha256: 3a9da41aac6dca9d3ff1b53ee18b9d314de88add76bafad9ca2287a494abcd86 + md5: 93f5d4b5c17c8540479ad65f206fea51 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - xorg-libx11 >=1.8.10,<2.0a0 + - libgcc >=14 + - libstdcxx >=14 + - xorg-libx11 >=1.8.12,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 license: MIT license_family: MIT - size: 13891 - timestamp: 1727908521531 -- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda - sha256: a605b43b2622a4cae8df6edc148c02b527da4ea165ec67cabb5c9bc4f3f8ef13 - md5: e8b816fb37bc61aa3f1c08034331ef53 + size: 14818 + timestamp: 1769432261050 +- 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 @@ -25890,28 +31714,28 @@ packages: license_family: MIT size: 32808 timestamp: 1727964811275 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.6-hb9d3cd8_0.conda - sha256: 8a4e2ee642f884e6b78c20c0892b85dd9b2a6e64a6044e903297e616be6ca35b - md5: 5efa5fa6243a622445fdfd72aee15efa +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda + sha256: 64db17baaf36fa03ed8fae105e2e671a7383e22df4077486646f7dbf12842c9f + md5: 665d152b9c6e78da404086088077c844 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 license: MIT license_family: MIT - size: 17819 - timestamp: 1734214575628 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - sha256: 1316680be6edddee0156b86ec1102fc8286f51c1a5440366ed1db596a2dc3731 - md5: 7c21106b851ec72c037b162c216d8f05 + size: 18701 + timestamp: 1769434732453 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda + sha256: 7a8c64938428c2bfd016359f9cb3c44f94acc256c6167dbdade9f2a1f5ca7a36 + md5: aa8d21be4b461ce612d8f5fb791decae depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 license: MIT license_family: MIT - size: 565425 - timestamp: 1726846388217 + size: 570010 + timestamp: 1766154256151 - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda sha256: b194a1fbc38f29c563b102ece9d006f7a165bf9074cdfe50563d3bce8cae9f84 md5: 16933322051fa260285f1a44aae91dd6 @@ -25921,43 +31745,43 @@ packages: license_family: BSD size: 51128 timestamp: 1763813786075 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda - sha256: 802725371682ea06053971db5b4fb7fbbcaee9cb1804ec688f55e51d74660617 - md5: 68eae977d7d1196d32b636a026dc015d +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.2-ha02ee65_0.conda + sha256: 6d60b1870bdbbaf098bbc7d69e4f4eccb8a6b5e856c2d0aca3c62c0db97e0863 + md5: d34b831f6d6a9b014eb7cf65f6329bba depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.8.1 hb9d3cd8_2 - - liblzma-devel 5.8.1 hb9d3cd8_2 - - xz-gpl-tools 5.8.1 hbcc6ac9_2 - - xz-tools 5.8.1 hb9d3cd8_2 + - libgcc >=14 + - liblzma 5.8.2 hb03c661_0 + - liblzma-devel 5.8.2 hb03c661_0 + - xz-gpl-tools 5.8.2 ha02ee65_0 + - xz-tools 5.8.2 hb03c661_0 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23987 - timestamp: 1749230104359 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda - sha256: 840838dca829ec53f1160f3fca6dbfc43f2388b85f15d3e867e69109b168b87b - md5: bf627c16aa26231720af037a2709ab09 + size: 24101 + timestamp: 1768752698238 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.2-ha02ee65_0.conda + sha256: a4876e9fb124665315aedfe96b1a832e2c26312241061d5f990208aaf380da46 + md5: a159fe1e8200dd67fa88ddea9169d25a depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.8.1 hb9d3cd8_2 + - libgcc >=14 + - liblzma 5.8.2 hb03c661_0 constrains: - - xz 5.8.1.* + - xz 5.8.2.* license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33911 - timestamp: 1749230090353 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda - sha256: 58034f3fca491075c14e61568ad8b25de00cb3ae479de3e69be6d7ee5d3ace28 - md5: 1bad2995c8f1c8075c6c331bf96e46fb + size: 33774 + timestamp: 1768752679459 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.2-hb03c661_0.conda + sha256: 65c8a236b89a4ad24565a986b7c00b8cb2906af52fd9963730c44ea56a9fde9a + md5: dfd6129671f782988d665354e7aa269d depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.8.1 hb9d3cd8_2 + - libgcc >=14 + - liblzma 5.8.2 hb03c661_0 constrains: - - xz 5.8.1.* + - xz 5.8.2.* license: 0BSD AND LGPL-2.1-or-later - size: 96433 - timestamp: 1749230076687 + size: 96093 + timestamp: 1768752662020 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda sha256: 6d9ea2f731e284e9316d95fa61869fe7bbba33df7929f82693c121022810f4ad md5: a77f85f77be52ff59391544bfe73390a @@ -26207,44 +32031,111 @@ packages: license_family: Other size: 107439 timestamp: 1727963788936 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.2-h54a6638_0.conda - sha256: 0afb07f3511031c35202036e2cd819c90edaa0c6a39a7a865146d3cb066bec96 - md5: 0faadd01896315ceea58bcc3479b1d21 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda + sha256: ea4e50c465d70236408cb0bfe0115609fd14db1adcd8bd30d8918e0291f8a75f + md5: 2aadb0d17215603a82a2a6b0afd9a4cb depends: - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 - libstdcxx >=14 license: Zlib - size: 135032 - timestamp: 1764715875371 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.2-h53ec75d_0.conda - sha256: 9183b2ada178d83ca6f8a66ba2ddcfb5f2476c2e866a4609c1f84dd5f32d796e - md5: 1e979f90e823b82604ab1da7e76c75e5 + license_family: Other + 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 - size: 135199 - timestamp: 1764716055794 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.2-h248ca61_0.conda - sha256: 2fe2befe061a51c24fce7f5f071c47b45b43f8c8781c0c557edf7c733ab13b18 - md5: c2a30a3b30cf86ef97ec880d53a6571a + license_family: Other + 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: - - libcxx >=19 - __osx >=11.0 + - libcxx >=19 license: Zlib - size: 105035 - timestamp: 1764716000870 -- conda: https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.2-h5112557_0.conda - sha256: 331e63a801efc9aa47e0a7f7be5becc81d9c52c1163308182078108e003c12e5 - md5: 2b4f8712b09b5fd3182cda872ce8482c + license_family: Other + 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 - - ucrt >=10.0.20348.0 license: Zlib - size: 134848 - timestamp: 1764715928393 + license_family: Other + size: 124542 + timestamp: 1770167984883 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py312h5253ce2_1.conda + sha256: c2bcb8aa930d6ea3c9c7a64fc4fab58ad7bcac483a9a45de294f67d2f447f413 + md5: 02738ff9855946075cbd1b5274399a41 + depends: + - python + - cffi >=1.11 + - zstd >=1.5.7,<1.5.8.0a0 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 467133 + timestamp: 1762512686069 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.25.0-py312h01f6755_1.conda + sha256: 5360439241921c612a5df77e28ce0ae4912eef7de65dc42adba5499878a67e87 + md5: d9209ec6445f95fba0c3c64fa4a46216 + depends: + - python + - cffi >=1.11 + - zstd >=1.5.7,<1.5.8.0a0 + - __osx >=10.13 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 462661 + timestamp: 1762512711429 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.25.0-py312h37e1c23_1.conda + sha256: af843b0fe62d128a70f91dc954b2cb692f349a237b461788bd25dd928d0d1ef8 + md5: 9300889791d4decceea3728ad3b423ec + depends: + - python + - cffi >=1.11 + - zstd >=1.5.7,<1.5.8.0a0 + - python 3.12.* *_cpython + - __osx >=11.0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 390920 + timestamp: 1762512713481 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.25.0-py312he5662c2_1.conda + sha256: 49241574c373331ae63d9cb4978836db3b2571176a7db81fe48436c84ce38ff4 + md5: e9e25949b682e95535068bae33153ba6 + depends: + - python + - cffi >=1.11 + - zstd >=1.5.7,<1.5.8.0a0 + - 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 + - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 374949 + timestamp: 1762512770373 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 diff --git a/pixi.toml b/pixi.toml index d90f7237a..f5da876f3 100644 --- a/pixi.toml +++ b/pixi.toml @@ -7,7 +7,7 @@ authors = ["Contributors to PyPSA-Eur and PyPSA-DE"] channels = ["conda-forge", "bioconda", "gurobi"] name = "pypsa-de" platforms = ["win-64", "linux-64", "osx-64", "osx-arm64"] -version = "0.1.0" +version = "2025.07.0" [tasks] @@ -29,11 +29,12 @@ 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 """ +generate-config = "python -c 'from scripts.lib.validation.config import generate_config_defaults, generate_config_schema; generate_config_defaults(); generate_config_schema()'" + [dependencies] # Add additional packages only to pypsa-de specific section # All other packages should be identical to pypsa-eur (in best case the same, otherwise @@ -64,35 +65,37 @@ ipython = ">=9.7.0" jpype1 = ">=1.6.0" jupyter = ">=1.1.1" libgdal-netcdf = ">=3.10.3" -linopy = ">=0.4.4" +linopy = ">=0.6.1" lxml = ">=6.0.2" matplotlib = ">=3.10.7" memory_profiler = ">=0.61.0" -netcdf4 = ">=1.7.2" +netcdf4 = ">=1.7.2,!=1.7.4" networkx = ">=3.5" numpy = ">=1.26.4" openpyxl = ">=3.1.5" pandas = ">=2.1" plotly = ">=6.4.0" powerplantmatching = ">=0.5.15" +pydantic = ">=2" +python-dotenv = ">=1.0" pre-commit = ">=4.3.0" proj = ">=9.6.2" pylint = ">=4.0.2" pydeck = ">0.6" # pypsa fails to import with pydeck <0.6, lower bound was only added from pypsa 1.0.6 -pypsa = ">=0.35.2" +pypsa = "<1.1" pyscipopt = ">=5.6.0" pytables = ">=3.10.2" 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" scipy = ">=1.16.3" seaborn = ">=0.13.2" shapely = ">=2.0" snakemake-executor-plugin-cluster-generic = ">=1.0.9" -snakemake-executor-plugin-slurm = ">=1.9.2" snakemake-minimal = ">=9" snakemake-storage-plugin-http = ">=0.3" tenacity = ">=9.1.2" @@ -101,37 +104,47 @@ tsam = ">=2.3.1" xarray = ">=2024.3.0,<2025.7.0" xlrd = ">=2.0.2" yaml = ">=0.2.5" -snakemake-storage-plugin-cached-http = ">=0.1.0" +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.2.9" -cartopy = ">=0.25.0" -dask = ">=2025.10.0" -descartes = ">=1.1.0" -fiona = ">=1.10.1" -graphviz = ">=13.1.2" -matplotlib = ">3.5.1" -memory_profiler = ">=0.61.0" -myst-parser = ">=4.0.1" -powerplantmatching = ">=0.5.5" -pydot = ">=4.0.1,<5" -pypsa = ">=0.35.2" -pytables = ">=3.10.1" -python = ">=3.10.19" -pyyaml = ">=6.0.3" -requests = ">=2.32.5" -scikit-learn = ">=1.7.2" -seaborn = ">=0.13.2" -sphinx = ">=8.1.3" -sphinx-book-theme = ">=1.1.4" -sphinxcontrib-bibtex = ">=2.6.5" -tabula-py = ">=2.7.0" -tenacity = ">=9.1.2" -tsam = ">=2.3.1" +atlite = "==0.4.1" +cartopy = "==0.25.0" +dask = "==2025.11.0" +descartes = "==1.1.0" +fiona = "==1.10.1" +graphviz = "==13.1.2" +matplotlib = "==3.10.7" +memory_profiler = "==0.61.0" +myst-parser = "==4.0.1" +powerplantmatching = "==0.7.1" +pydot = "==4.0.1" +pypsa = "==1.0.3" +pytables = "==3.10.2" +python = "==3.12.12" +pyyaml = "==6.0.3" +requests = "==2.32.5" +scikit-learn = "==1.7.2" +seaborn = "==0.13.2" +sphinx = "==8.2.3" +sphinx-book-theme = "==1.1.4" +sphinx-design = "==0.6.1" +sphinx-jsonschema = "==1.19.2" +sphinxcontrib-bibtex = "==2.6.5" +tabula-py = "==2.7.0" +tenacity = "==9.1.2" +tsam = "==2.3.9" [feature.test.tasks] diff --git a/profiles/default/config.yaml b/profiles/default/config.yaml new file mode 100644 index 000000000..83e5b1c52 --- /dev/null +++ b/profiles/default/config.yaml @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +# See https://snakemake.readthedocs.io/en/stable/executing/cli.html#profiles + +logger: pypsa diff --git a/results/.gitkeep b/results/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/ruff.toml b/ruff.toml index 2d75d2025..5f45ec0ab 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 058c8c9b2..495423b03 100755 --- a/rules/build_electricity.smk +++ b/rules/build_electricity.smk @@ -4,13 +4,17 @@ rule build_electricity_demand: + message: + "Building electricity demand time series" params: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), countries=config_provider("countries"), load=config_provider("load"), input: - reported=ancient("data/electricity_demand_raw.csv"), + opsd=rules.retrieve_electricity_demand_opsd.output["csv"], + neso=rules.retrieve_electricity_demand_neso.output["csv"], + entsoe=rules.retrieve_electricity_demand_entsoe.output["csv"], synthetic=lambda w: ( ancient(rules.retrieve_synthetic_electricity_demand.output["csv"]) if config_provider("load", "supplement_synthetic")(w) @@ -25,10 +29,12 @@ rule build_electricity_demand: resources: mem_mb=5000, script: - "../scripts/build_electricity_demand.py" + scripts("build_electricity_demand.py") rule build_powerplants: + message: + "Building powerplant list for {wildcards.clusters} clusters" params: powerplants_filter=config_provider("electricity", "powerplants_filter"), custom_powerplants=config_provider("electricity", "custom_powerplants"), @@ -36,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: @@ -48,7 +56,7 @@ rule build_powerplants: resources: mem_mb=7000, script: - "../scripts/build_powerplants.py" + scripts("build_powerplants.py") def input_base_network(w): @@ -70,6 +78,8 @@ def input_base_network(w): rule base_network: + message: + "Building base network" params: countries=config_provider("countries"), snapshots=config_provider("snapshots"), @@ -98,10 +108,12 @@ rule base_network: resources: mem_mb=2000, script: - "../scripts/base_network.py" + scripts("base_network.py") rule build_osm_boundaries: + message: + "Building OSM boundaries for {wildcards.country}" input: json=f"{OSM_BOUNDARIES_DATASET['folder']}/{{country}}_adm1.json", eez=ancient(rules.retrieve_eez.output["gpkg"]), @@ -113,10 +125,12 @@ rule build_osm_boundaries: resources: mem_mb=1500, script: - "../scripts/build_osm_boundaries.py" + scripts("build_osm_boundaries.py") rule build_bidding_zones: + message: + "Building bidding zones" params: countries=config_provider("countries"), remove_islands=config_provider( @@ -126,8 +140,8 @@ rule build_bidding_zones: "clustering", "build_bidding_zones", "aggregate_to_tyndp" ), input: - bidding_zones_entsoepy="data/busshapes/bidding_zones_entsoepy.geojson", - bidding_zones_electricitymaps="data/busshapes/bidding_zones_electricitymaps.geojson", + bidding_zones_entsoepy=f"{BIDDING_ZONES_ENTSOEPY_DATASET['folder']}/bidding_zones_entsoepy.geojson", + bidding_zones_electricitymaps=f"{BIDDING_ZONES_ELECTRICITYMAPS_DATASET['folder']}/bidding_zones_electricitymaps.geojson", output: file=resources("bidding_zones.geojson"), log: @@ -136,10 +150,12 @@ rule build_bidding_zones: resources: mem_mb=1500, script: - "../scripts/build_bidding_zones.py" + scripts("build_bidding_zones.py") rule build_shapes: + message: + "Building geographical shapes" params: config_provider("clustering", "mode"), countries=config_provider("countries"), @@ -172,12 +188,14 @@ rule build_shapes: resources: mem_mb=1500, script: - "../scripts/build_shapes.py" + scripts("build_shapes.py") if CUTOUT_DATASET["source"] in ["build"]: rule build_cutout: + message: + "Building cutout data for {wildcards.cutout}" params: cutouts=config_provider("atlite", "cutouts"), output: @@ -190,10 +208,12 @@ if CUTOUT_DATASET["source"] in ["build"]: resources: mem_mb=config["atlite"].get("nprocesses", 4) * 1000, script: - "../scripts/build_cutout.py" + scripts("build_cutout.py") rule build_ship_raster: + message: + "Building ship density raster" input: ship_density=rules.retrieve_ship_raster.output["zip_file"], cutout=lambda w: input_cutout(w), @@ -206,16 +226,26 @@ rule build_ship_raster: benchmark: benchmarks("build_ship_raster") script: - "../scripts/build_ship_raster.py" + scripts("build_ship_raster.py") rule determine_availability_matrix_MD_UA: + message: + "Determining availability matrix for {wildcards.clusters} clusters and {wildcards.technology} technology" params: 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") @@ -248,7 +278,7 @@ rule determine_availability_matrix_MD_UA: resources: mem_mb=config["atlite"].get("nprocesses", 4) * 5000, script: - "../scripts/determine_availability_matrix_MD_UA.py" + scripts("determine_availability_matrix_MD_UA.py") # Optional input when having Ukraine (UA) or Moldova (MD) in the countries list @@ -264,17 +294,24 @@ def input_ua_md_availability_matrix(w): rule determine_availability_matrix: + message: + "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"]), natura=lambda w: ( - f"{NATURA_DATASET["folder"]}/natura.tiff" + f"{NATURA_DATASET['folder']}/natura.tiff" 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"] @@ -310,10 +347,12 @@ rule determine_availability_matrix: resources: mem_mb=config["atlite"].get("nprocesses", 4) * 5000, script: - "../scripts/determine_availability_matrix.py" + scripts("determine_availability_matrix.py") rule build_renewable_profiles: + message: + "Building renewable profiles for {wildcards.clusters} clusters and {wildcards.technology} technology" params: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), @@ -343,15 +382,37 @@ rule build_renewable_profiles: wildcard_constraints: technology="(?!hydro).*", # Any technology other than hydro script: - "../scripts/build_renewable_profiles.py" + scripts("build_renewable_profiles.py") + + +rule build_co2_prices: + message: + "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_monthly_prices: +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"), @@ -361,7 +422,7 @@ rule build_monthly_prices: resources: mem_mb=5000, script: - "../scripts/build_monthly_prices.py" + scripts("build_monthly_prices.py") if COUNTRY_RUNOFF_DATASET["source"] == "build": @@ -380,13 +441,13 @@ if COUNTRY_RUNOFF_DATASET["source"] == "build": logs("build_country_runoff.log"), benchmark: benchmarks("build_country_runoff") - conda: - "../envs/environment.yaml" script: - "../scripts/build_country_runoff.py" + scripts("build_country_runoff.py") rule build_hydro_profile: + message: + "Building hydropower profile" params: hydro=config_provider("renewable", "hydro"), countries=config_provider("countries"), @@ -396,7 +457,7 @@ rule build_hydro_profile: country_shapes=resources("country_shapes.geojson"), eia_hydro_generation="data/eia_hydro_annual_generation.csv", eia_hydro_capacity="data/eia_hydro_annual_capacity.csv", - era5_runoff=f"{COUNTRY_RUNOFF_DATASET["folder"]}/era5-runoff-per-country.csv", + era5_runoff=f"{COUNTRY_RUNOFF_DATASET['folder']}/era5-runoff-per-country.csv", cutout=lambda w: input_cutout( w, config_provider("renewable", "hydro", "cutout")(w) ), @@ -409,10 +470,12 @@ rule build_hydro_profile: resources: mem_mb=5000, script: - "../scripts/build_hydro_profile.py" + scripts("build_hydro_profile.py") rule build_line_rating: + message: + "Building dynamic line ratings" params: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), @@ -431,10 +494,12 @@ rule build_line_rating: resources: mem_mb=config["atlite"].get("nprocesses", 4) * 1000, script: - "../scripts/build_line_rating.py" + scripts("build_line_rating.py") rule build_transmission_projects: + message: + "Building transmission projects" params: transmission_projects=config_provider("transmission_projects"), line_factor=config_provider("lines", "length_factor"), @@ -464,10 +529,12 @@ rule build_transmission_projects: mem_mb=4000, threads: 1 script: - "../scripts/build_transmission_projects.py" + scripts("build_transmission_projects.py") rule add_transmission_projects_and_dlr: + message: + "Adding transmission projects and dynamic line ratings" params: transmission_projects=config_provider("transmission_projects"), dlr=config_provider("lines", "dynamic_line_rating"), @@ -500,7 +567,7 @@ rule add_transmission_projects_and_dlr: resources: mem_mb=4000, script: - "../scripts/add_transmission_projects_and_dlr.py" + scripts("add_transmission_projects_and_dlr.py") def input_class_regions(w): @@ -514,11 +581,17 @@ def input_class_regions(w): rule build_electricity_demand_base: + message: + "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: @@ -530,10 +603,12 @@ rule build_electricity_demand_base: resources: mem_mb=5000, script: - "../scripts/build_electricity_demand_base.py" + scripts("build_electricity_demand_base.py") rule build_hac_features: + message: + "Aggregate all rastered cutout data to base regions Voronoi cells." params: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), @@ -551,7 +626,7 @@ rule build_hac_features: resources: mem_mb=10000, script: - "../scripts/build_hac_features.py" + scripts("build_hac_features.py") rule process_cost_data: @@ -572,10 +647,12 @@ rule process_cost_data: resources: mem_mb=4000, script: - "../scripts/process_cost_data.py" + scripts("process_cost_data.py") rule simplify_network: + message: + "Simplifying network" params: countries=config_provider("countries"), mode=config_provider("clustering", "mode"), @@ -605,7 +682,7 @@ rule simplify_network: resources: mem_mb=24000, script: - "../scripts/simplify_network.py" + scripts("simplify_network.py") # Optional input when using custom busmaps - Needs to be tailored to selected base_network @@ -631,6 +708,8 @@ def input_custom_busmap(w): rule cluster_network: + message: + "Clustering network to {wildcards.clusters} clusters" params: countries=config_provider("countries"), mode=config_provider("clustering", "mode"), @@ -680,7 +759,7 @@ rule cluster_network: resources: mem_mb=10000, script: - "../scripts/cluster_network.py" + scripts("cluster_network.py") def input_profile_tech(w): @@ -709,6 +788,8 @@ def input_conventional(w): rule add_electricity: + message: + "Adding electricity to network with {wildcards.clusters} clusters" params: line_length_factor=config_provider("lines", "length_factor"), link_length_factor=config_provider("links", "length_factor"), @@ -754,10 +835,12 @@ rule add_electricity: resources: mem_mb=10000, script: - "../scripts/add_electricity.py" + scripts("add_electricity.py") rule prepare_network: + message: + "Preparing network for model with {wildcards.clusters} clusters and options {wildcards.opts}" params: time_resolution=config_provider("clustering", "temporal", "resolution_elec"), links=config_provider("links"), @@ -777,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: @@ -788,118 +875,126 @@ rule prepare_network: resources: mem_mb=4000, script: - "../scripts/prepare_network.py" + scripts("prepare_network.py") -if ( - config["electricity"]["base_network"] == "osm" - and config["data"]["osm"]["source"] == "build" -): - - rule clean_osm_data: - 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: - 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: - 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 2c32d2586..d4bf10a1f 100755 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -4,6 +4,8 @@ rule build_population_layouts: + message: + "Building population layout data (total, urban, rural) from NUTS3 shapes and World Bank statistics" input: nuts3_shapes=resources("nuts3_shapes.geojson"), urban_percent=rules.retrieve_worldbank_urban_population.output["csv"], @@ -20,10 +22,12 @@ rule build_population_layouts: benchmarks("build_population_layouts") threads: 8 script: - "../scripts/build_population_layouts.py" + scripts("build_population_layouts.py") rule build_clustered_population_layouts: + message: + "Clustering population layouts for {wildcards.clusters} clusters" input: pop_layout_total=resources("pop_layout_total.nc"), pop_layout_urban=resources("pop_layout_urban.nc"), @@ -39,10 +43,12 @@ rule build_clustered_population_layouts: benchmark: benchmarks("build_clustered_population_layouts/s_{clusters}") script: - "../scripts/build_clustered_population_layouts.py" + scripts("build_clustered_population_layouts.py") rule build_clustered_solar_rooftop_potentials: + message: + "Building solar rooftop potentials for {wildcards.clusters} clusters" input: pop_layout=resources("pop_layout_total.nc"), class_regions=resources("regions_by_class_{clusters}_solar.geojson"), @@ -56,10 +62,12 @@ rule build_clustered_solar_rooftop_potentials: benchmark: benchmarks("build_clustered_solar_rooftop_potentials/s_{clusters}") script: - "../scripts/build_clustered_solar_rooftop_potentials.py" + scripts("build_clustered_solar_rooftop_potentials.py") rule build_simplified_population_layouts: + message: + "Building simplified population layouts for base scenario" input: pop_layout_total=resources("pop_layout_total.nc"), pop_layout_urban=resources("pop_layout_urban.nc"), @@ -75,10 +83,12 @@ rule build_simplified_population_layouts: benchmark: benchmarks("build_simplified_population_layouts/s") script: - "../scripts/build_clustered_population_layouts.py" + scripts("build_clustered_population_layouts.py") rule build_gas_network: + message: + "Building cleaned gas network from SciGRID-Gas data" input: gas_network=rules.retrieve_gas_infrastructure_data.output["gas_network"], output: @@ -90,10 +100,12 @@ rule build_gas_network: benchmark: benchmarks("build_gas_network") script: - "../scripts/build_gas_network.py" + scripts("build_gas_network.py") rule build_gas_input_locations: + message: + "Building gas input locations for {wildcards.clusters} clusters" input: gem="data/gem/Europe-Gas-Tracker-2024-05.xlsx", entry=rules.retrieve_gas_infrastructure_data.output["entry"], @@ -112,10 +124,12 @@ rule build_gas_input_locations: benchmark: benchmarks("build_gas_input_locations/s_{clusters}") script: - "../scripts/build_gas_input_locations.py" + scripts("build_gas_input_locations.py") rule cluster_gas_network: + message: + "Clustering gas network for {wildcards.clusters} clusters" input: cleaned_gas_network=resources("gas_network.csv"), regions_onshore=resources("regions_onshore_base_s_{clusters}.geojson"), @@ -129,10 +143,12 @@ rule cluster_gas_network: benchmark: benchmarks("cluster_gas_network/s_{clusters}") script: - "../scripts/cluster_gas_network.py" + scripts("cluster_gas_network.py") rule build_daily_heat_demand: + message: + "Building daily heat demand profiles for {wildcards.clusters} clusters" params: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), @@ -152,10 +168,12 @@ rule build_daily_heat_demand: benchmark: benchmarks("build_daily_heat_demand/total_s_{clusters}") script: - "../scripts/build_daily_heat_demand.py" + scripts("build_daily_heat_demand.py") rule build_hourly_heat_demand: + message: + "Building hourly heat demand profiles from daily demand for {wildcards.clusters} clusters" params: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), @@ -176,10 +194,12 @@ rule build_hourly_heat_demand: benchmark: benchmarks("build_hourly_heat_demand/total_s_{clusters}") script: - "../scripts/build_hourly_heat_demand.py" + scripts("build_hourly_heat_demand.py") rule build_temperature_profiles: + message: + "Building temperature profiles for {wildcards.clusters} clusters" params: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), @@ -204,10 +224,12 @@ rule build_temperature_profiles: benchmark: benchmarks("build_temperature_profiles/total_{clusters}") script: - "../scripts/build_temperature_profiles.py" + scripts("build_temperature_profiles.py") rule build_central_heating_temperature_profiles: + message: + "Building central heating temperature profiles for {wildcards.clusters} clusters and {wildcards.planning_horizons} planning horizon" params: max_forward_temperature_central_heating_baseyear=config_provider( "sector", @@ -279,7 +301,7 @@ rule build_central_heating_temperature_profiles: "build_central_heating_temperature_profiles/s_{clusters}_{planning_horizons}" ) script: - "../scripts/build_central_heating_temperature_profiles/run.py" + scripts("build_central_heating_temperature_profiles/run.py") rule build_dh_areas: @@ -300,10 +322,12 @@ rule build_dh_areas: benchmark: benchmarks("build_dh_areas_s/s_{clusters}") script: - "../scripts/build_dh_areas.py" + scripts("build_dh_areas.py") rule build_geothermal_heat_potential: + message: + "Building geothermal heat potential estimates for {wildcards.clusters} clusters" params: drop_leap_day=config_provider("enable", "drop_leap_day"), countries=config_provider("countries"), @@ -342,10 +366,12 @@ rule build_geothermal_heat_potential: benchmark: benchmarks("build_heat_source_potentials/geothermal_s_{clusters}") script: - "../scripts/build_geothermal_heat_potential.py" + scripts("build_geothermal_heat_potential.py") rule build_ates_potentials: + message: + "Building aquifer thermal energy storage (ATES) potentials for {wildcards.clusters} clusters and {wildcards.planning_horizons} planning horizon" params: max_top_temperature=config_provider( "sector", @@ -417,7 +443,7 @@ rule build_ates_potentials: benchmark: benchmarks("build_ates_potentials_geothermal_s_{clusters}_{planning_horizons}") script: - "../scripts/build_ates_potentials.py" + scripts("build_ates_potentials.py") def input_hera_data(w) -> dict[str, str]: @@ -493,7 +519,9 @@ rule build_river_heat_potential: benchmarks("build_river_water_heat_potential_base_s_{clusters}") threads: 1 script: - "../scripts/build_surface_water_heat_potentials/build_river_water_heat_potential.py" + scripts( + "build_surface_water_heat_potentials/build_river_water_heat_potential.py" + ) def input_heat_source_temperature( @@ -620,10 +648,12 @@ rule build_sea_heat_potential: benchmarks("build_sea_water_heat_potential_base_s_{clusters}") threads: config["atlite"].get("nprocesses", 4) script: - "../scripts/build_surface_water_heat_potentials/build_sea_water_heat_potential.py" + scripts("build_surface_water_heat_potentials/build_sea_water_heat_potential.py") rule build_cop_profiles: + message: + "Building coefficient of performance (COP) profiles for {wildcards.clusters} clusters and {wildcards.planning_horizons} planning horizon" params: heat_pump_sink_T_decentral_heating=config_provider( "sector", "heat_pump_sink_T_individual_heating" @@ -661,10 +691,12 @@ rule build_cop_profiles: benchmark: benchmarks("build_cop_profiles/s_{clusters}_{planning_horizons}") script: - "../scripts/build_cop_profiles/run.py" + scripts("build_cop_profiles/run.py") rule build_ptes_operations: + message: + "Building thermal energy storage operations profiles for {wildcards.clusters} clusters and {wildcards.planning_horizons} planning horizon" params: max_ptes_top_temperature=config_provider( "sector", @@ -704,10 +736,12 @@ rule build_ptes_operations: benchmark: benchmarks("build_ptes_operations_s_{clusters}_{planning_horizons}") script: - "../scripts/build_ptes_operations/run.py" + scripts("build_ptes_operations/run.py") rule build_direct_heat_source_utilisation_profiles: + message: + "Building direct heat source utilization profiles for industrial applications for {wildcards.clusters} clusters and {wildcards.planning_horizons} planning horizon" params: direct_utilisation_heat_sources=config_provider( "sector", "district_heating", "direct_utilisation_heat_sources" @@ -735,10 +769,12 @@ rule build_direct_heat_source_utilisation_profiles: "build_direct_heat_source_utilisation_profiles/s_{clusters}_{planning_horizons}" ) script: - "../scripts/build_direct_heat_source_utilisation_profiles.py" + scripts("build_direct_heat_source_utilisation_profiles.py") rule build_solar_thermal_profiles: + message: + "Building solar thermal generation profiles for {wildcards.clusters} clusters" params: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), @@ -757,21 +793,59 @@ rule build_solar_thermal_profiles: benchmark: benchmarks("build_solar_thermal_profiles/total_{clusters}") script: - "../scripts/build_solar_thermal_profiles.py" + 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" params: countries=config_provider("countries"), energy=config_provider("energy"), 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"), @@ -788,7 +862,7 @@ rule build_energy_totals: benchmark: benchmarks("build_energy_totals") script: - "../scripts/build_energy_totals.py" + scripts("build_energy_totals.py") if (COUNTRY_HDD_DATASET := dataset_version("country_hdd"))["source"] in ["build"]: @@ -802,20 +876,20 @@ if (COUNTRY_HDD_DATASET := dataset_version("country_hdd"))["source"] in ["build" cutouts=["cutouts/europe-1940-2024-era5.nc"], country_shapes=resources("country_shapes.geojson"), output: - era5_hdd=f"{COUNTRY_HDD_DATASET["folder"]}/era5-HDD-per-country.csv", + era5_hdd=f"{COUNTRY_HDD_DATASET['folder']}/era5-HDD-per-country.csv", log: logs("build_country_hdd.log"), benchmark: benchmarks("build_country_hdd") - conda: - "../envs/environment.yaml" script: - "../scripts/build_country_hdd.py" + scripts("build_country_hdd.py") rule build_heat_totals: + message: + "Building heat totals" input: - hdd=f"{COUNTRY_HDD_DATASET["folder"]}/era5-HDD-per-country.csv", + hdd=f"{COUNTRY_HDD_DATASET['folder']}/era5-HDD-per-country.csv", energy_totals=resources("energy_totals.csv"), output: heat_totals=resources("heat_totals.csv"), @@ -827,15 +901,17 @@ rule build_heat_totals: benchmark: benchmarks("build_heat_totals") script: - "../scripts/build_heat_totals.py" + scripts("build_heat_totals.py") rule build_biomass_potentials: + message: + "Building biomass potential estimates for {wildcards.clusters} clusters and {wildcards.planning_horizons} planning horizon" params: 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"]), @@ -857,10 +933,12 @@ rule build_biomass_potentials: benchmark: benchmarks("build_biomass_potentials_s_{clusters}_{planning_horizons}") script: - "../scripts/build_biomass_potentials.py" + scripts("build_biomass_potentials.py") rule build_biomass_transport_costs: + message: + "Building biomass transport cost" input: sc1="data/biomass_transport_costs_supplychain1.csv", sc2="data/biomass_transport_costs_supplychain2.csv", @@ -874,10 +952,12 @@ rule build_biomass_transport_costs: benchmark: benchmarks("build_biomass_transport_costs") script: - "../scripts/build_biomass_transport_costs.py" + scripts("build_biomass_transport_costs.py") rule build_co2_sequestration_potentials: + message: + "Building CO2 sequestration potentials" input: storage_table=rules.retrieve_co2stop.output["storage_table"], storage_map=rules.retrieve_co2stop.output["storage_map"], @@ -895,10 +975,12 @@ rule build_co2_sequestration_potentials: benchmark: benchmarks("build_co2_sequestration_potentials") script: - "../scripts/build_co2_sequestration_potentials.py" + scripts("build_co2_sequestration_potentials.py") rule build_clustered_co2_sequestration_potentials: + message: + "Clustering CO2 sequestration potentials for {wildcards.clusters} clusters" params: sequestration_potential=config_provider( "sector", "regional_co2_sequestration_potential" @@ -919,10 +1001,12 @@ rule build_clustered_co2_sequestration_potentials: benchmark: benchmarks("build_clustered_co2_sequestration_potentials_{clusters}") script: - "../scripts/build_clustered_co2_sequestration_potentials.py" + scripts("build_clustered_co2_sequestration_potentials.py") rule build_salt_cavern_potentials: + message: + "Building salt cavern potential for hydrogen storage for {wildcards.clusters} clusters" input: salt_caverns=rules.retrieve_h2_salt_caverns.output["geojson"], regions_onshore=resources("regions_onshore_base_s_{clusters}.geojson"), @@ -937,10 +1021,12 @@ rule build_salt_cavern_potentials: benchmark: benchmarks("build_salt_cavern_potentials_s_{clusters}") script: - "../scripts/build_salt_cavern_potentials.py" + scripts("build_salt_cavern_potentials.py") rule build_ammonia_production: + message: + "Building ammonia production capacity and location data" input: usgs=rules.retrieve_nitrogen_statistics.output["xlsx"], output: @@ -953,10 +1039,12 @@ rule build_ammonia_production: benchmark: benchmarks("build_ammonia_production") script: - "../scripts/build_ammonia_production.py" + scripts("build_ammonia_production.py") rule build_industry_sector_ratios: + message: + "Building industry sector energy demand ratios" params: industry=config_provider("industry"), ammonia=config_provider("sector", "ammonia", default=False), @@ -973,10 +1061,12 @@ rule build_industry_sector_ratios: benchmark: benchmarks("build_industry_sector_ratios") script: - "../scripts/build_industry_sector_ratios.py" + scripts("build_industry_sector_ratios.py") rule build_industry_sector_ratios_intermediate: + message: + "Building intermediate industry sector ratios for {wildcards.planning_horizons} planning horizon" params: industry=config_provider("industry"), input: @@ -999,17 +1089,19 @@ rule build_industry_sector_ratios_intermediate: benchmark: benchmarks("build_industry_sector_ratios_{planning_horizons}") script: - "../scripts/build_industry_sector_ratios_intermediate.py" + scripts("build_industry_sector_ratios_intermediate.py") rule build_industrial_production_per_country: + message: + "Building industrial production statistics per country" params: industry=config_provider("industry"), countries=config_provider("countries"), 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( @@ -1023,10 +1115,12 @@ rule build_industrial_production_per_country: benchmark: benchmarks("build_industrial_production_per_country") script: - "../scripts/build_industrial_production_per_country.py" + scripts("build_industrial_production_per_country.py") rule build_industrial_production_per_country_tomorrow: + message: + "Building future industrial production projections for {wildcards.planning_horizons} planning horizon" params: industry=config_provider("industry"), input: @@ -1049,10 +1143,12 @@ rule build_industrial_production_per_country_tomorrow: ) ) script: - "../scripts/build_industrial_production_per_country_tomorrow.py" + scripts("build_industrial_production_per_country_tomorrow.py") rule build_industrial_distribution_key: + message: + "Building industrial activity distribution mapping key for {wildcards.clusters} clusters" params: hotmaps_locate_missing=config_provider( "industry", "hotmaps_locate_missing", default=False @@ -1063,8 +1159,8 @@ rule build_industrial_distribution_key: clustered_pop_layout=resources("pop_layout_base_s_{clusters}.csv"), hotmaps=rules.retrieve_hotmaps_industrial_sites.output["csv"], gem_gspt=rules.retrieve_gem_steel_plant_tracker.output["xlsx"], + gem_gcpt=rules.retrieve_gem_cement_concrete_tracker.output["xlsx"], ammonia="data/ammonia_plants.csv", - cement_supplement="data/cement-plants-noneu.csv", refineries_supplement="data/refineries-noneu.csv", output: industrial_distribution_key=resources( @@ -1078,10 +1174,12 @@ rule build_industrial_distribution_key: benchmark: benchmarks("build_industrial_distribution_key/s_{clusters}") script: - "../scripts/build_industrial_distribution_key.py" + scripts("build_industrial_distribution_key.py") rule build_industrial_production_per_node: + message: + "Distributing industrial production to network nodes for {wildcards.clusters} clusters and {wildcards.planning_horizons} planning horizon" input: industrial_distribution_key=resources( "industrial_distribution_key_base_s_{clusters}.csv" @@ -1105,10 +1203,12 @@ rule build_industrial_production_per_node: ) ) script: - "../scripts/build_industrial_production_per_node.py" + scripts("build_industrial_production_per_node.py") rule build_industrial_energy_demand_per_node: + message: + "Building industrial energy demand per network node for {wildcards.clusters} clusters and {wildcards.planning_horizons} planning horizon" input: industry_sector_ratios=resources( "industry_sector_ratios_{planning_horizons}.csv" @@ -1137,10 +1237,12 @@ rule build_industrial_energy_demand_per_node: ) ) script: - "../scripts/build_industrial_energy_demand_per_node.py" + scripts("build_industrial_energy_demand_per_node.py") rule build_industrial_energy_demand_per_country_today: + message: + "Building current industrial energy demand by country" params: countries=config_provider("countries"), industry=config_provider("industry"), @@ -1163,10 +1265,12 @@ rule build_industrial_energy_demand_per_country_today: benchmark: benchmarks("build_industrial_energy_demand_per_country_today") script: - "../scripts/build_industrial_energy_demand_per_country_today.py" + scripts("build_industrial_energy_demand_per_country_today.py") rule build_industrial_energy_demand_per_node_today: + message: + "Building current industrial energy demand per network node for {wildcards.clusters} clusters" input: industrial_distribution_key=resources( "industrial_distribution_key_base_s_{clusters}.csv" @@ -1186,10 +1290,12 @@ rule build_industrial_energy_demand_per_node_today: benchmark: benchmarks("build_industrial_energy_demand_per_node_today/s_{clusters}") script: - "../scripts/build_industrial_energy_demand_per_node_today.py" + scripts("build_industrial_energy_demand_per_node_today.py") rule build_retro_cost: + message: + "Building retrofitting cost estimates for building efficiency improvements for {wildcards.clusters} clusters" params: retrofitting=config_provider("sector", "retrofitting"), countries=config_provider("countries"), @@ -1214,10 +1320,12 @@ rule build_retro_cost: benchmark: benchmarks("build_retro_cost/s_{clusters}") script: - "../scripts/build_retro_cost.py" + scripts("build_retro_cost.py") rule build_population_weighted_energy_totals: + message: + "Building population-weighted energy demand totals for {wildcards.clusters} clusters" params: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), @@ -1234,10 +1342,12 @@ rule build_population_weighted_energy_totals: benchmark: benchmarks("build_population_weighted_{kind}_totals_{clusters}") script: - "../scripts/build_population_weighted_energy_totals.py" + scripts("build_population_weighted_energy_totals.py") rule build_shipping_demand: + message: + "Building shipping fuel demand projections for {wildcards.clusters} clusters" input: ports=rules.retrieve_attributed_ports.output["json"], scope=resources("europe_shape.geojson"), @@ -1255,7 +1365,7 @@ rule build_shipping_demand: benchmark: benchmarks("build_shipping_demand/s_{clusters}") script: - "../scripts/build_shipping_demand.py" + scripts("build_shipping_demand.py") if MOBILITY_PROFILES_DATASET["source"] in ["build"]: @@ -1282,13 +1392,13 @@ if MOBILITY_PROFILES_DATASET["source"] in ["build"]: logs("build_mobility_profiles.log"), benchmark: benchmarks("build_mobility_profiles") - conda: - "../envs/environment.yaml" script: - "../scripts/build_mobility_profiles.py" + scripts("build_mobility_profiles.py") rule build_transport_demand: + message: + "Building transport energy demand profiles for {wildcards.clusters} clusters" params: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), @@ -1301,8 +1411,8 @@ rule build_transport_demand: "pop_weighted_energy_totals_s_{clusters}.csv" ), transport_data=resources("transport_data.csv"), - traffic_data_KFZ=f"{MOBILITY_PROFILES_DATASET["folder"]}/kfz.csv", - traffic_data_Pkw=f"{MOBILITY_PROFILES_DATASET["folder"]}/pkw.csv", + traffic_data_KFZ=f"{MOBILITY_PROFILES_DATASET['folder']}/kfz.csv", + traffic_data_Pkw=f"{MOBILITY_PROFILES_DATASET['folder']}/pkw.csv", temp_air_total=resources("temp_air_total_base_s_{clusters}.nc"), output: transport_demand=resources("transport_demand_s_{clusters}.csv"), @@ -1317,10 +1427,12 @@ rule build_transport_demand: benchmark: benchmarks("build_transport_demand/s_{clusters}") script: - "../scripts/build_transport_demand.py" + scripts("build_transport_demand.py") rule build_district_heat_share: + message: + "Building district heating penetration share data for {wildcards.clusters} clusters and {wildcards.planning_horizons} planning horizon" params: sector=config_provider("sector"), energy_totals_year=config_provider("energy", "energy_totals_year"), @@ -1339,10 +1451,12 @@ rule build_district_heat_share: benchmark: benchmarks("build_district_heat_share_{clusters}_{planning_horizons}") script: - "../scripts/build_district_heat_share.py" + scripts("build_district_heat_share.py") rule build_existing_heating_distribution: + message: + "Building existing heating technology distribution data for {wildcards.clusters} clusters and {wildcards.planning_horizons} planning horizon" params: baseyear=config_provider("scenario", "planning_horizons", 0), sector=config_provider("sector"), @@ -1374,10 +1488,12 @@ rule build_existing_heating_distribution: "build_existing_heating_distribution/base_s_{clusters}_{planning_horizons}" ) script: - "../scripts/build_existing_heating_distribution.py" + scripts("build_existing_heating_distribution.py") rule time_aggregation: + message: + "Performing time series aggregation for temporal resolution reduction for {wildcards.clusters} clusters and {wildcards.opts} electric options and {wildcards.sector_opts} sector options" params: time_resolution=config_provider("clustering", "temporal"), drop_leap_day=config_provider("enable", "drop_leap_day"), @@ -1406,7 +1522,7 @@ rule time_aggregation: benchmark: benchmarks("time_aggregation_base_s_{clusters}_elec_{opts}_{sector_opts}") script: - "../scripts/time_aggregation.py" + scripts("time_aggregation.py") def input_profile_offwind(w): @@ -1418,6 +1534,8 @@ def input_profile_offwind(w): rule build_egs_potentials: + message: + "Building enhanced geothermal system (EGS) potential estimates for {wildcards.clusters} clusters" params: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), @@ -1443,7 +1561,7 @@ rule build_egs_potentials: benchmark: benchmarks("build_egs_potentials_{clusters}") script: - "../scripts/build_egs_potentials.py" + scripts("build_egs_potentials.py") def input_heat_source_power(w): @@ -1463,6 +1581,8 @@ def input_heat_source_power(w): rule prepare_sector_network: + message: + "Preparing integrated sector-coupled energy network for {wildcards.clusters} clusters, {wildcards.planning_horizons} planning horizon, {wildcards.opts} electric options and {wildcards.sector_opts} sector options" params: time_resolution=config_provider("clustering", "temporal", "resolution_sector"), co2_budget=config_provider("co2_budget"), @@ -1481,6 +1601,7 @@ rule prepare_sector_network: adjustments=config_provider("adjustments", "sector"), emissions_scope=config_provider("energy", "emissions"), emission_prices=config_provider("costs", "emission_prices"), + electricity=config_provider("electricity"), biomass=config_provider("biomass"), RDIR=RDIR, heat_pump_sources=config_provider("sector", "heat_pump_sources"), @@ -1527,7 +1648,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" ), @@ -1546,7 +1667,7 @@ rule prepare_sector_network: "biomass_potentials_s_{clusters}_{planning_horizons}.csv" ), costs=lambda w: ( - resources(f"costs_{config_provider("costs", "year")(w)}_processed.csv") + resources(f"costs_{config_provider('costs', 'year')(w)}_processed.csv") if config_provider("foresight")(w) == "overnight" else resources("costs_{planning_horizons}_processed.csv") ), @@ -1637,4 +1758,4 @@ rule prepare_sector_network: "prepare_sector_network/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}" ) script: - "../scripts/prepare_sector_network.py" + scripts("prepare_sector_network.py") diff --git a/rules/collect.smk b/rules/collect.smk index ee0f90f8a..dd805620c 100644 --- a/rules/collect.smk +++ b/rules/collect.smk @@ -31,6 +31,8 @@ rule process_costs: rule cluster_networks: + message: + "Collecting clustered network files" input: expand( resources("networks/base_s_{clusters}.nc"), @@ -40,6 +42,8 @@ rule cluster_networks: rule prepare_elec_networks: + message: + "Collecting prepared electricity network files" input: expand( resources("networks/base_s_{clusters}_elec_{opts}.nc"), @@ -49,6 +53,8 @@ rule prepare_elec_networks: rule prepare_sector_networks: + message: + "Collecting prepared sector-coupled network files" input: expand( resources( @@ -60,6 +66,8 @@ rule prepare_sector_networks: rule solve_elec_networks: + message: + "Collecting solved electricity network files" input: expand( RESULTS + "networks/base_s_{clusters}_elec_{opts}.nc", @@ -69,6 +77,8 @@ rule solve_elec_networks: rule solve_sector_networks: + message: + "Collecting solved sector-coupled network files" input: expand( RESULTS @@ -79,6 +89,8 @@ rule solve_sector_networks: rule solve_sector_networks_perfect: + message: + "Collecting solved sector-coupled network files with perfect foresight" input: expand( RESULTS @@ -105,6 +117,8 @@ def balance_map_paths(kind, w): rule plot_balance_maps: + message: + "Plotting energy balance maps" input: static=lambda w: balance_map_paths("static", w), interactive=lambda w: balance_map_paths("interactive", w), @@ -120,7 +134,9 @@ rule plot_balance_maps_interactive: lambda w: balance_map_paths("interactive", w), -rule plot_statistics: +rule plot_power_networks_clustered: + message: + "Plotting clustered power network topology" input: [ expand( diff --git a/rules/common.smk b/rules/common.smk index 49d494792..c985e39ff 100644 --- a/rules/common.smk +++ b/rules/common.smk @@ -90,10 +90,8 @@ def load_data_versions(file_path): comment="#", ) - # Turn 'tags' column from string representation of list to individual columns - data_versions["tags"] = data_versions["tags"].apply( - lambda x: json.loads(x.replace("'", '"')) - ) + # Turn space-separated tags into individual columns + data_versions["tags"] = data_versions["tags"].str.split() exploded = data_versions.explode("tags") dummies = pd.get_dummies(exploded["tags"], dtype=bool) tags_matrix = dummies.groupby(dummies.index).max() @@ -192,6 +190,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 fb977cf83..5bec30321 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 7fc483481..09d22344e 100644 --- a/rules/postprocess.smk +++ b/rules/postprocess.smk @@ -6,6 +6,8 @@ if config["foresight"] != "perfect": rule plot_base_network: + message: + "Plotting base power network" params: plotting=config_provider("plotting"), input: @@ -19,9 +21,11 @@ if config["foresight"] != "perfect": benchmark: benchmarks("plot_base_network/base") script: - "../scripts/plot_base_network.py" + scripts("plot_base_network.py") rule plot_power_network_clustered: + message: + "Plotting clustered power network for {wildcards.clusters} clusters" params: plotting=config_provider("plotting"), input: @@ -35,9 +39,11 @@ if config["foresight"] != "perfect": benchmark: benchmarks("plot_power_network_clustered/base_s_{clusters}") script: - "../scripts/plot_power_network_clustered.py" + scripts("plot_power_network_clustered.py") rule plot_power_network: + message: + "Plotting power network for {wildcards.clusters} clusters, {wildcards.opts} electric options, {wildcards.sector_opts} sector options and {wildcards.planning_horizons} planning horizons" params: plotting=config_provider("plotting"), transmission_limit=config_provider("electricity", "transmission_limit"), @@ -60,9 +66,11 @@ if config["foresight"] != "perfect": + "benchmarks/plot_power_network/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}" ) script: - "../scripts/plot_power_network.py" + scripts("plot_power_network.py") rule plot_hydrogen_network: + message: + "Plotting hydrogen network for {wildcards.clusters} clusters, {wildcards.opts} electric options, {wildcards.sector_opts} sector options and {wildcards.planning_horizons} planning horizons" params: plotting=config_provider("plotting"), foresight=config_provider("foresight"), @@ -85,9 +93,11 @@ if config["foresight"] != "perfect": + "benchmarks/plot_hydrogen_network/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}" ) script: - "../scripts/plot_hydrogen_network.py" + scripts("plot_hydrogen_network.py") rule plot_gas_network: + message: + "Plotting methane network for {wildcards.clusters} clusters, {wildcards.opts} electric options, {wildcards.sector_opts} sector options and {wildcards.planning_horizons} planning horizon" params: plotting=config_provider("plotting"), input: @@ -109,9 +119,11 @@ if config["foresight"] != "perfect": + "benchmarks/plot_gas_network/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}" ) script: - "../scripts/plot_gas_network.py" + scripts("plot_gas_network.py") rule plot_balance_map: + message: + "Plotting balance map for {wildcards.clusters} clusters, {wildcards.opts} electric options, {wildcards.sector_opts} sector options, {wildcards.planning_horizons} planning horizons and {wildcards.carrier} carrier" params: plotting=config_provider("plotting"), settings=lambda w: config_provider("plotting", "balance_map", w.carrier), @@ -134,7 +146,7 @@ if config["foresight"] != "perfect": + "benchmarks/plot_balance_map/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}_{carrier}" ) script: - "../scripts/plot_balance_map.py" + scripts("plot_balance_map.py") rule plot_balance_map_interactive: params: @@ -159,10 +171,8 @@ if config["foresight"] != "perfect": RESULTS + "benchmarks/plot_interactive_map/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}_{carrier}" ) - conda: - "../envs/environment.yaml" script: - "../scripts/plot_balance_map_interactive.py" + scripts("plot_balance_map_interactive.py") rule plot_heat_source_map: params: @@ -203,7 +213,7 @@ if config["foresight"] != "perfect": + "benchmarks/plot_heat_source_map/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}_{carrier}" ) script: - "../scripts/plot_heat_source_map.py" + scripts("plot_heat_source_map.py") if config["foresight"] == "perfect": @@ -217,6 +227,8 @@ if config["foresight"] == "perfect": } rule plot_power_network_perfect: + message: + "Plotting power network with perfect foresight for {wildcards.clusters} clusters, {wildcards.opts} electric options and {wildcards.sector_opts} sector options" params: plotting=config_provider("plotting"), input: @@ -229,10 +241,12 @@ if config["foresight"] == "perfect": resources: mem_mb=10000, script: - "../scripts/plot_power_network_perfect.py" + scripts("plot_power_network_perfect.py") rule make_summary: + message: + "Creating optimization results summary statistics" input: network=RESULTS + "networks/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}.nc", @@ -277,10 +291,12 @@ rule make_summary: + "benchmarks/make_summary_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}" ) script: - "../scripts/make_summary.py" + scripts("make_summary.py") rule make_global_summary: + message: + "Creating global summary of optimization results for all scenarios" params: scenario=config_provider("scenario"), RDIR=RDIR, @@ -392,10 +408,12 @@ rule make_global_summary: benchmark: RESULTS + "benchmarks/make_global_summary" script: - "../scripts/make_global_summary.py" + scripts("make_global_summary.py") rule make_cumulative_costs: + message: + "Calculating cumulative costs over time horizon" params: scenario=config_provider("scenario"), input: @@ -410,10 +428,12 @@ rule make_cumulative_costs: benchmark: RESULTS + "benchmarks/make_cumulative_costs" script: - "../scripts/make_cumulative_costs.py" + scripts("make_cumulative_costs.py") rule plot_summary: + message: + "Plotting summary statistics and results" params: countries=config_provider("countries"), planning_horizons=config_provider("scenario", "planning_horizons"), @@ -427,22 +447,24 @@ 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, log: RESULTS + "logs/plot_summary.log", script: - "../scripts/plot_summary.py" + scripts("plot_summary.py") rule plot_balance_timeseries: + message: + "Plotting energy balance time series for {wildcards.clusters} clusters, {wildcards.opts} electric options, {wildcards.sector_opts} sector options and {wildcards.planning_horizons} planning horizons" params: plotting=config_provider("plotting"), snapshots=config_provider("snapshots"), @@ -466,10 +488,12 @@ rule plot_balance_timeseries: + "graphics/balance_timeseries/s_{clusters}_{opts}_{sector_opts}_{planning_horizons}" ), script: - "../scripts/plot_balance_timeseries.py" + scripts("plot_balance_timeseries.py") rule plot_heatmap_timeseries: + message: + "Plotting heatmap time series visualization for {wildcards.clusters} clusters, {wildcards.opts} electric options, {wildcards.sector_opts} sector options and {wildcards.planning_horizons} planning horizons" params: plotting=config_provider("plotting"), snapshots=config_provider("snapshots"), @@ -493,7 +517,7 @@ rule plot_heatmap_timeseries: + "graphics/heatmap_timeseries/s_{clusters}_{opts}_{sector_opts}_{planning_horizons}" ), script: - "../scripts/plot_heatmap_timeseries.py" + scripts("plot_heatmap_timeseries.py") STATISTICS_BARPLOTS = [ @@ -605,6 +629,8 @@ rule plot_statistics_comparison: rule plot_base_statistics: + message: + "Plotting base scenario statistics for {wildcards.clusters} clusters and {wildcards.opts} electric options" params: plotting=config_provider("plotting"), barplots=STATISTICS_BARPLOTS, @@ -619,7 +645,7 @@ rule plot_base_statistics: barplots_touch=RESULTS + "figures/.statistics_plots_base_s_{clusters}_elec_{opts}", script: - "../scripts/plot_statistics.py" + scripts("plot_statistics.py") rule build_ambient_air_temperature_yearly_average: @@ -641,7 +667,7 @@ rule build_ambient_air_temperature_yearly_average: + "benchmarks/build_ambient_air_temperature_yearly_average/base_s_{clusters}" ) script: - "../scripts/build_ambient_air_temperature_yearly_average.py" + scripts("build_ambient_air_temperature_yearly_average.py") rule plot_cop_profiles: @@ -656,7 +682,7 @@ rule plot_cop_profiles: resources: mem_mb=10000, script: - "../scripts/plot_cop_profiles/plot_cop_profiles.py" + scripts("plot_cop_profiles/plot_cop_profiles.py") rule plot_interactive_bus_balance: @@ -685,4 +711,4 @@ rule plot_interactive_bus_balance: resources: mem_mb=20000, script: - "../scripts/plot_interactive_bus_balance.py" + scripts("plot_interactive_bus_balance.py") diff --git a/rules/retrieve.smk b/rules/retrieve.smk index 110a3f0b6..dbb9c8662 100755 --- a/rules/retrieve.smk +++ b/rules/retrieve.smk @@ -28,14 +28,14 @@ if (EUROSTAT_BALANCES_DATASET := dataset_version("eurostat_balances"))["source"] ]: rule retrieve_eurostat_balances: + 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 ( @@ -48,6 +48,8 @@ if ( ]: rule retrieve_eurostat_household_balances: + message: + "Retrieving Eurostat household balances data" input: csv=storage(EUROSTAT_HOUSEHOLD_BALANCES_DATASET["url"]), output: @@ -56,12 +58,32 @@ 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", ]: rule retrieve_nuts3_population: + message: + "Retrieving NUTS3 population data" input: gz=storage(NUTS3_POPULATION_DATASET["url"]), output: @@ -74,6 +96,8 @@ if (NUTS3_POPULATION_DATASET := dataset_version("nuts3_population"))["source"] i if (CORINE_DATASET := dataset_version("corine"))["source"] in ["archive"]: rule retrieve_corine: + message: + "Retrieving Corine land cover data" input: zip_file=storage(CORINE_DATASET["url"]), output: @@ -90,8 +114,10 @@ if (CORINE_DATASET := dataset_version("corine"))["source"] in ["archive"]: elif (CORINE_DATASET := dataset_version("corine"))["source"] in ["primary"]: rule retrieve_corine: + message: + "Retrieving Corine land cover data" params: - apikey=os.environ.get("CORINE_API_TOKEN", config["secrets"]["corine"]), + apikey=os.environ.get("CORINE_API_TOKEN", ""), output: zip=f"{CORINE_DATASET['folder']}/corine.zip", tif_file=f"{CORINE_DATASET['folder']}/corine.tif", @@ -101,7 +127,7 @@ elif (CORINE_DATASET := dataset_version("corine"))["source"] in ["primary"]: mem_mb=1000, retries: 2 script: - "../scripts/retrieve_corine_dataset_primary.py" + scripts("retrieve_corine_dataset_primary.py") if (H2_SALT_CAVERNS_DATASET := dataset_version("h2_salt_caverns"))["source"] in [ @@ -109,6 +135,8 @@ if (H2_SALT_CAVERNS_DATASET := dataset_version("h2_salt_caverns"))["source"] in ]: rule retrieve_h2_salt_caverns: + message: + "Retrieving H2 salt caverns data" input: geojson=storage(H2_SALT_CAVERNS_DATASET["url"]), output: @@ -123,6 +151,8 @@ if (GDP_PER_CAPITA_DATASET := dataset_version("gdp_per_capita"))["source"] in [ ]: rule retrieve_gdp_per_capita: + message: + "Retrieving GDP per capita data" input: gdp=storage(GDP_PER_CAPITA_DATASET["url"]), output: @@ -138,6 +168,8 @@ if (POPULATION_COUNT_DATASET := dataset_version("population_count"))["source"] i ]: rule retrieve_population_count: + message: + "Retrieving population count data" input: tif=storage(POPULATION_COUNT_DATASET["url"]), output: @@ -163,6 +195,8 @@ if (GHG_EMISSIONS_DATASET := dataset_version("ghg_emissions"))["source"] in [ ]: rule retrieve_ghg_emissions: + message: + "Retrieving GHG emissions data" input: ghg=storage(GHG_EMISSIONS_DATASET["url"]), output: @@ -190,6 +224,8 @@ if (GHG_EMISSIONS_DATASET := dataset_version("ghg_emissions"))["source"] in [ if (GEBCO_DATASET := dataset_version("gebco"))["source"] in ["archive", "primary"]: rule retrieve_gebco: + message: + "Retrieving GEBCO bathymetry data" input: storage(GEBCO_DATASET["url"]), output: @@ -223,6 +259,8 @@ if (ATTRIBUTED_PORTS_DATASET := dataset_version("attributed_ports"))["source"] i ]: rule retrieve_attributed_ports: + message: + "Retrieving attributed ports data" input: json=storage(ATTRIBUTED_PORTS_DATASET["url"]), output: @@ -238,6 +276,8 @@ if (JRC_IDEES_DATASET := dataset_version("jrc_idees"))["source"] in [ ]: rule retrieve_jrc_idees: + message: + "Retrieving JRC IDEES data" input: zip_file=storage(JRC_IDEES_DATASET["url"]), output: @@ -255,6 +295,8 @@ if (EU_NUTS2013_DATASET := dataset_version("eu_nuts2013"))["source"] in [ ]: rule retrieve_eu_nuts_2013: + message: + "Retrieving EU NUTS 2013 data" input: shapes=storage(EU_NUTS2013_DATASET["url"]), output: @@ -275,6 +317,8 @@ if (EU_NUTS2021_DATASET := dataset_version("eu_nuts2021"))["source"] in [ ]: rule retrieve_eu_nuts_2021: + message: + "Retrieving EU NUTS 2021 data" input: shapes=storage(EU_NUTS2021_DATASET["url"]), output: @@ -291,17 +335,62 @@ if (EU_NUTS2021_DATASET := dataset_version("eu_nuts2021"))["source"] in [ unpack_archive(output["zip_file"], Path(output.shapes_level_3).parent) -rule retrieve_bidding_zones: - output: - file_entsoepy="data/busshapes/bidding_zones_entsoepy.geojson", - file_electricitymaps="data/busshapes/bidding_zones_electricitymaps.geojson", - log: - "logs/retrieve_bidding_zones.log", - resources: - mem_mb=1000, - retries: 2 - script: - "../scripts/retrieve_bidding_zones.py" +if ( + BIDDING_ZONES_ELECTRICITYMAPS_DATASET := dataset_version( + "bidding_zones_electricitymaps" + ) +)["source"] in ["primary", "archive"]: + + rule retrieve_bidding_zones_electricitymaps: + input: + geojson=storage(BIDDING_ZONES_ELECTRICITYMAPS_DATASET["url"]), + output: + geojson=f"{BIDDING_ZONES_ELECTRICITYMAPS_DATASET['folder']}/bidding_zones_electricitymaps.geojson", + log: + "logs/retrieve_bidding_zones_electricitymaps.log", + resources: + mem_mb=1000, + retries: 2 + run: + copy2(input["geojson"], output["geojson"]) + + +if (BIDDING_ZONES_ENTSOEPY_DATASET := dataset_version("bidding_zones_entsoepy"))[ + "source" +] in ["primary", "archive"]: + + rule retrieve_bidding_zones_entsoepy: + output: + geojson=f"{BIDDING_ZONES_ENTSOEPY_DATASET['folder']}/bidding_zones_entsoepy.geojson", + log: + "logs/retrieve_bidding_zones_entsoepy.log", + resources: + mem_mb=1000, + retries: 2 + run: + import entsoe + import geopandas as gpd + from urllib.error import HTTPError, URLError + + logger.info("Downloading entsoe-py zones...") + gdfs: list[gpd.GeoDataFrame] = [] + url = f"{BIDDING_ZONES_ENTSOEPY_DATASET['url']}" + for area in entsoe.Area: + name = area.name + try: + file_url = f"{url}/{name}.geojson" + gdfs.append(gpd.read_file(file_url)) + except HTTPError as e: + logger.debug(f"Area file not available for {name}: {e}") + continue + except (URLError, TimeoutError) as e: + raise Exception(f"Network error retrieving {name}: {e}") + shapes = pd.concat(gdfs, ignore_index=True) # type: ignore + + logger.info("Downloading entsoe-py zones... Done") + + shapes.to_file(output.geojson) + if (CUTOUT_DATASET := dataset_version("cutout"))["source"] in [ @@ -309,8 +398,10 @@ if (CUTOUT_DATASET := dataset_version("cutout"))["source"] in [ ]: rule retrieve_cutout: + message: + "Retrieving cutout data for {wildcards.cutout}" input: - storage(CUTOUT_DATASET["url"] + "/files/{cutout}.nc"), + storage(CUTOUT_DATASET["url"] + "/{cutout}.nc"), output: CUTOUT_DATASET["folder"] + "/{cutout}.nc", log: @@ -327,10 +418,12 @@ if (COUNTRY_RUNOFF_DATASET := dataset_version("country_runoff"))["source"] in [ ]: rule retrieve_country_runoff: + message: + "Retrieving country runoff data" input: storage(COUNTRY_RUNOFF_DATASET["url"]), output: - era5_runoff=f"{COUNTRY_RUNOFF_DATASET["folder"]}/era5-runoff-per-country.csv", + era5_runoff=f"{COUNTRY_RUNOFF_DATASET['folder']}/era5-runoff-per-country.csv", run: copy2(input[0], output[0]) @@ -338,19 +431,24 @@ if (COUNTRY_RUNOFF_DATASET := dataset_version("country_runoff"))["source"] in [ if (COUNTRY_HDD_DATASET := dataset_version("country_hdd"))["source"] in ["archive"]: rule retrieve_country_hdd: + message: + "Retrieving country heating degree days data" input: storage(COUNTRY_HDD_DATASET["url"]), output: - era5_runoff=f"{COUNTRY_HDD_DATASET["folder"]}/era5-HDD-per-country.csv", + era5_runoff=f"{COUNTRY_HDD_DATASET['folder']}/era5-HDD-per-country.csv", run: copy2(input[0], output[0]) if (COSTS_DATASET := dataset_version("costs"))["source"] in [ "primary", + "archive", ]: rule retrieve_cost_data: + message: + "Retrieving cost data for {wildcards.planning_horizons}" input: costs=storage(COSTS_DATASET["url"] + "/costs_{planning_horizons}.csv"), output: @@ -361,9 +459,12 @@ if (COSTS_DATASET := dataset_version("costs"))["source"] in [ if (POWERPLANTS_DATASET := dataset_version("powerplants"))["source"] in [ "primary", + "archive", ]: rule retrieve_powerplants: + message: + "Retrieving powerplants data" input: powerplants=storage(POWERPLANTS_DATASET["url"]), output: @@ -378,6 +479,8 @@ if (SCIGRID_GAS_DATASET := dataset_version("scigrid_gas"))["source"] in [ ]: rule retrieve_gas_infrastructure_data: + message: + "Retrieving SciGRID gas infrastructure data" input: zip_file=storage(SCIGRID_GAS_DATASET["url"]), output: @@ -391,18 +494,169 @@ if (SCIGRID_GAS_DATASET := dataset_version("scigrid_gas"))["source"] in [ unpack_archive(output["zip_file"], output_folder) -rule retrieve_electricity_demand: - params: - versions=["2019-06-05", "2020-10-06"], - output: - "data/electricity_demand_raw.csv", - log: - "logs/retrieve_electricity_demand.log", - resources: - mem_mb=5000, - retries: 2 - script: - "../scripts/retrieve_electricity_demand.py" +if (OPSD_DEMAND_DATA := dataset_version("opsd_electricity_demand"))["source"] in [ + "build" +]: + + rule retrieve_electricity_demand_opsd: + message: + "Retrieving electricity demand data from OPSD from build source" + params: + versions=["2019-06-05", "2020-10-06"], + output: + csv=f"{OPSD_DEMAND_DATA['folder']}/electricity_demand_opsd_raw.csv", + log: + "logs/retrieve_electricity_demand_opsd.log", + resources: + mem_mb=5000, + retries: 2 + script: + scripts("retrieve_electricity_demand_opsd.py") + + +if (OPSD_DEMAND_DATA := dataset_version("opsd_electricity_demand"))["source"] in [ + "archive" +]: + + rule retrieve_electricity_demand_opsd: + message: + "Retrieving electricity demand data from OPSD from archive" + input: + csv=storage(OPSD_DEMAND_DATA["url"]), + output: + csv=f"{OPSD_DEMAND_DATA['folder']}/electricity_demand_opsd_raw.csv", + retries: 2 + run: + copy2(input["csv"], output["csv"]) + + +if (ENTSOE_DEMAND_DATA := dataset_version("entsoe_electricity_demand"))["source"] in [ + "build" +]: + + ENTSOE_COUNTRIES = [ + "AL", + "AT", + "BE", + "BA", + "BG", + "CH", + "CY", + "CZ", + "DE", + "DK", + "EE", + "ES", + "FI", + "FR", + "GB", + "GR", + "HR", + "HU", + "IE", + "IT", + "LT", + "LU", + "LV", + "MD", + "ME", + "MK", + "NL", + "NO", + "PL", + "PT", + "RO", + "RS", + "SE", + "SI", + "SK", + "UA", + "XK", + ] + + rule retrieve_electricity_demand_entsoe_country: + message: + "Retrieving electricity demand data from ENTSO-E for {wildcards.country}" + params: + entsoe_token=os.environ.get("ENTSOE_API_TOKEN", ""), + output: + csv=f"{ENTSOE_DEMAND_DATA['folder']}" + + "/electricity_demand_entsoe_raw_{country}.csv", + log: + "logs/retrieve_electricity_demand_entsoe_{country}.log", + resources: + mem_mb=2000, + retries: 2 + script: + scripts("retrieve_electricity_demand_entsoe.py") + + rule retrieve_electricity_demand_entsoe: + message: + "Retrieving electricity demand data from ENTSO-E from build source" + input: + csvs=expand( + f"{ENTSOE_DEMAND_DATA['folder']}" + + "/electricity_demand_entsoe_raw_{country}.csv", + country=ENTSOE_COUNTRIES, + ), + output: + csv=f"{ENTSOE_DEMAND_DATA['folder']}/electricity_demand_entsoe_raw.csv", + run: + import pandas as pd + + loads = [pd.read_csv(csv, index_col=0) for csv in input.csvs] + df = pd.concat(loads, axis=1, join="outer").sort_index() + df.to_csv(output.csv) + + +if (ENTSOE_DEMAND_DATA := dataset_version("entsoe_electricity_demand"))["source"] in [ + "archive" +]: + + rule retrieve_electricity_demand_entsoe: + message: + "Retrieving electricity demand data from ENTSO-E from archive" + input: + csv=storage(ENTSOE_DEMAND_DATA["url"]), + output: + csv=f"{ENTSOE_DEMAND_DATA['folder']}/electricity_demand_entsoe_raw.csv", + retries: 2 + run: + copy2(input["csv"], output["csv"]) + + +if (NESO_DEMAND_DATA := dataset_version("neso_electricity_demand"))["source"] in [ + "build" +]: + + rule retrieve_electricity_demand_neso: + message: + "Retrieving electricity demand data from NESO from build source" + output: + csv=f"{NESO_DEMAND_DATA['folder']}/electricity_demand_neso_raw.csv", + log: + "logs/retrieve_electricity_demand_neso.log", + resources: + mem_mb=5000, + retries: 2 + script: + scripts("retrieve_electricity_demand_neso.py") + + +if (NESO_DEMAND_DATA := dataset_version("neso_electricity_demand"))["source"] in [ + "archive" +]: + + rule retrieve_electricity_demand_neso: + message: + "Retrieving electricity demand data from NESO from archive" + input: + csv=storage(NESO_DEMAND_DATA["url"]), + output: + csv=f"{NESO_DEMAND_DATA['folder']}/electricity_demand_neso_raw.csv", + retries: 2 + run: + copy2(input["csv"], output["csv"]) if ( @@ -415,6 +669,8 @@ if ( ]: rule retrieve_synthetic_electricity_demand: + message: + "Retrieving synthetic electricity demand data" input: csv=storage(SYNTHETIC_ELECTRICITY_DEMAND_DATASET["url"]), output: @@ -424,12 +680,91 @@ 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", ]: rule retrieve_ship_raster: + message: + "Retrieving shipping raster data" input: zip_file=storage(SHIP_RASTER_DATASET["url"]), output: @@ -449,6 +784,8 @@ if (ENSPRESO_BIOMASS_DATASET := dataset_version("enspreso_biomass"))["source"] i ]: rule retrieve_enspreso_biomass: + message: + "Retrieving ENSPRESO biomass data" input: xlsx=storage(ENSPRESO_BIOMASS_DATASET["url"]), output: @@ -466,6 +803,8 @@ if (HOTMAPS_INDUSTRIAL_SITES := dataset_version("hotmaps_industrial_sites"))[ ]: rule retrieve_hotmaps_industrial_sites: + message: + "Retrieving Hotmaps industrial sites" input: csv=storage(HOTMAPS_INDUSTRIAL_SITES["url"]), output: @@ -483,6 +822,8 @@ if (NITROGEN_STATISTICS_DATASET := dataset_version("nitrogen_statistics"))[ ]: rule retrieve_nitrogen_statistics: + message: + "Retrieving nitrogen statistics data" input: xlsx=storage(NITROGEN_STATISTICS_DATASET["url"]), output: @@ -499,6 +840,8 @@ if (COPERNICUS_LAND_COVER_DATASET := dataset_version("copernicus_land_cover"))[ # Downloading Copernicus Global Land Cover for land cover and land use: # Website: https://land.copernicus.eu/global/products/lc rule download_copernicus_land_cover: + message: + "Retrieving Copernicus land cover data" input: tif=storage(COPERNICUS_LAND_COVER_DATASET["url"]), output: @@ -515,6 +858,8 @@ if (LUISA_LAND_COVER_DATASET := dataset_version("luisa_land_cover"))["source"] i # Downloading LUISA Base Map for land cover and land use: # Website: https://ec.europa.eu/jrc/en/luisa rule retrieve_luisa_land_cover: + message: + "Retrieving LUISA land cover data" input: tif=storage(LUISA_LAND_COVER_DATASET["url"]), output: @@ -526,6 +871,8 @@ if (LUISA_LAND_COVER_DATASET := dataset_version("luisa_land_cover"))["source"] i if (EEZ_DATASET := dataset_version("eez"))["source"] in ["primary"]: rule retrieve_eez: + message: + "Retrieving EEZ data" output: zip_file=f"{EEZ_DATASET['folder']}/World_EEZ_{EEZ_DATASET['version']}_LR.zip", gpkg=f"{EEZ_DATASET['folder']}/World_EEZ_{EEZ_DATASET['version']}_LR/eez_{EEZ_DATASET['version'].split('_')[0]}_lowres.gpkg", @@ -558,6 +905,8 @@ if (EEZ_DATASET := dataset_version("eez"))["source"] in ["primary"]: elif (EEZ_DATASET := dataset_version("eez"))["source"] in ["archive"]: rule retrieve_eez: + message: + "Retrieving EEZ data" input: zip_file=storage( EEZ_DATASET["url"], @@ -577,6 +926,8 @@ if (WB_URB_POP_DATASET := dataset_version("worldbank_urban_population"))["source ]: rule retrieve_worldbank_urban_population: + message: + "Retrieving World Bank urban population data" input: zip=storage(WB_URB_POP_DATASET["url"]), output: @@ -603,6 +954,8 @@ if (CO2STOP_DATASET := dataset_version("co2stop"))["source"] in [ ]: rule retrieve_co2stop: + message: + "Retrieving CO2STOP data" input: zip_file=storage(CO2STOP_DATASET["url"]), output: @@ -628,6 +981,8 @@ if (GEM_EUROPE_GAS_TRACKER_DATASET := dataset_version("gem_europe_gas_tracker")) ]: rule retrieve_gem_europe_gas_tracker: + message: + "Retrieving GEM Europe Gas Tracker data" input: xlsx=storage(GEM_EUROPE_GAS_TRACKER_DATASET["url"]), output: @@ -642,6 +997,8 @@ if (GEM_GSPT_DATASET := dataset_version("gem_gspt"))["source"] in [ ]: rule retrieve_gem_steel_plant_tracker: + message: + "Retrieving GEM Global Steel Plant Tracker data" input: xlsx=storage(GEM_GSPT_DATASET["url"]), output: @@ -650,6 +1007,20 @@ if (GEM_GSPT_DATASET := dataset_version("gem_gspt"))["source"] in [ copy2(input["xlsx"], output["xlsx"]) +if (GEM_GCCT_DATASET := dataset_version("gem_gcct"))["source"] in [ + "primary", + "archive", +]: + + rule retrieve_gem_cement_concrete_tracker: + input: + xlsx=storage(GEM_GCCT_DATASET["url"]), + output: + xlsx=f"{GEM_GCCT_DATASET['folder']}/Global-Cement-and-Concrete-Tracker.xlsx", + run: + copy2(input["xlsx"], output["xlsx"]) + + if (BFS_ROAD_VEHICLE_STOCK_DATASET := dataset_version("bfs_road_vehicle_stock"))[ "source" ] in [ @@ -658,6 +1029,8 @@ if (BFS_ROAD_VEHICLE_STOCK_DATASET := dataset_version("bfs_road_vehicle_stock")) ]: rule retrieve_bfs_road_vehicle_stock: + message: + "Retrieving BFS road vehicle stock data" input: csv=storage(BFS_ROAD_VEHICLE_STOCK_DATASET["url"]), output: @@ -674,6 +1047,8 @@ if (BFS_GDP_AND_POPULATION_DATASET := dataset_version("bfs_gdp_and_population")) ]: rule retrieve_bfs_gdp_and_population: + message: + "Retrieving BFS GDP and population data" input: xlsx=storage(BFS_GDP_AND_POPULATION_DATASET["url"]), output: @@ -729,6 +1104,8 @@ if (WDPA_DATASET := dataset_version("wdpa"))["source"] in [ # extract the main zip and then merge the contained 3 zipped shapefiles # Website: https://www.protectedplanet.net/en/thematic-areas/wdpa rule retrieve_wdpa: + message: + "Downloading protected area database from WDPA" input: zip_file=storage(get_wdpa_url(WDPA_DATASET)), output: @@ -739,6 +1116,12 @@ if (WDPA_DATASET := dataset_version("wdpa"))["source"] in [ copy2(input["zip_file"], output["zip_file"]) unpack_archive(output["zip_file"], output_folder) + # Extract {bYYYY} from the input file / URL + bYYYY = re.search( + r"WDPA_(\w{3}\d{4})_Public_shp.zip", + input["zip_file"], + ).group(1) + for i in range(3): # vsizip is special driver for directly working with zipped shapefiles in ogr2ogr layer_path = ( @@ -758,6 +1141,8 @@ if (WDPA_MARINE_DATASET := dataset_version("wdpa_marine"))["source"] in [ # Downloading Marine protected area database from WDPA # extract the main zip and then merge the contained 3 zipped shapefiles # Website: https://www.protectedplanet.net/en/thematic-areas/marine-protected-areas + message: + "Downloading Marine protected area database from WDPA" input: zip_file=storage(get_wdpa_url(WDPA_MARINE_DATASET)), output: @@ -768,6 +1153,12 @@ if (WDPA_MARINE_DATASET := dataset_version("wdpa_marine"))["source"] in [ copy2(input["zip_file"], output["zip_file"]) unpack_archive(output["zip_file"], output_folder) + # Extract {bYYYY} from the input file / URL + bYYYY = re.search( + r"WDPA_WDOECM_(\w{3}\d{4})_Public_marine_shp.zip", + input["zip_file"], + ).group(1) + for i in range(3): # vsizip is special driver for directly working with zipped shapefiles in ogr2ogr layer_path = f"/vsizip/{output_folder}/WDPA_WDOECM_{bYYYY}_Public_marine_shp_{i}.zip" @@ -776,41 +1167,57 @@ 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: - 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: - 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"]: rule retrieve_tyndp: + message: + "Retrieving TYNDP network topology data" input: line_data=storage(TYDNP_DATASET["url"] + "/Line-data.zip"), nodes=storage(TYDNP_DATASET["url"] + "/Nodes.zip"), @@ -836,22 +1243,69 @@ 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" input: **{ - file: storage(f"{OSM_DATASET['url']}/files/{file}") + file: storage(f"{OSM_DATASET['url']}/{file}") for file in OSM_ARCHIVE_FILES }, output: @@ -866,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", @@ -877,6 +1373,8 @@ elif OSM_DATASET["source"] == "build": ] rule retrieve_osm_data_raw: + message: + "Retrieving OSM electricity grid raw data for {wildcards.country}" params: overpass_api=config_provider("overpass_api"), output: @@ -890,7 +1388,7 @@ elif OSM_DATASET["source"] == "build": "logs/retrieve_osm_data_{country}.log", threads: 1 script: - "../scripts/retrieve_osm_data.py" + scripts("retrieve_osm_data.py") rule retrieve_osm_data_raw_all: input: @@ -904,10 +1402,12 @@ elif OSM_DATASET["source"] == "build": if (NATURA_DATASET := dataset_version("natura"))["source"] in ["archive"]: rule retrieve_natura: + message: + "Retrieving Natura 2000 raster data" input: storage(NATURA_DATASET["url"]), output: - f"{NATURA_DATASET["folder"]}/natura.tiff", + f"{NATURA_DATASET['folder']}/natura.tiff", log: "logs/retrieve_natura.log", run: @@ -916,19 +1416,21 @@ if (NATURA_DATASET := dataset_version("natura"))["source"] in ["archive"]: elif NATURA_DATASET["source"] == "build": rule build_natura_raster: + message: + "Building Natura 2000 raster data" input: online=storage(NATURA_DATASET["url"]), cutout=lambda w: input_cutout(w), output: - zip=f"{NATURA_DATASET["folder"]}/raw/natura.zip", - raw=directory(f"{NATURA_DATASET["folder"]}/raw"), - raster=f"{NATURA_DATASET["folder"]}/natura.tiff", + zip=f"{NATURA_DATASET['folder']}/raw/natura.zip", + raw=directory(f"{NATURA_DATASET['folder']}/raw"), + raster=f"{NATURA_DATASET['folder']}/natura.tiff", resources: mem_mb=5000, log: "logs/build_natura.log", script: - "../scripts/build_natura.py" + scripts("build_natura.py") if (OSM_BOUNDARIES_DATASET := dataset_version("osm_boundaries"))["source"] in [ @@ -936,19 +1438,23 @@ if (OSM_BOUNDARIES_DATASET := dataset_version("osm_boundaries"))["source"] in [ ]: rule retrieve_osm_boundaries: + message: + "Retrieving OSM admin boundaries for {wildcards.country}" output: - json=f"{OSM_BOUNDARIES_DATASET["folder"]}/{country}_adm1.json", + json=f"{OSM_BOUNDARIES_DATASET['folder']}/{country}_adm1.json", log: "logs/retrieve_osm_boundaries_{country}_adm1.log", threads: 1 script: - "../scripts/retrieve_osm_boundaries.py" + scripts("retrieve_osm_boundaries.py") elif (OSM_BOUNDARIES_DATASET := dataset_version("osm_boundaries"))["source"] in [ "archive" ]: rule retrieve_osm_boundaries: + message: + "Retrieving OSM admin boundaries data" input: storage( f"{OSM_BOUNDARIES_DATASET['url']}", @@ -972,6 +1478,8 @@ if ( )["source"] in ["primary", "archive"]: rule retrieve_geothermal_heat_utilisation_potentials: + message: + "Retrieving geothermal heat utilisation potentials" input: isi_heat_potentials=storage( GEOTHERMAL_HEAT_UTILISATION_POTENTIALS_DATASET["url"] @@ -992,6 +1500,8 @@ if (LAU_REGIONS_DATASET := dataset_version("lau_regions"))["source"] in [ ]: rule retrieve_lau_regions: + message: + "Retrieving Local Administrative Units and Administation Unit regions" input: lau_regions=storage(LAU_REGIONS_DATASET["url"]), output: @@ -1004,8 +1514,11 @@ if (LAU_REGIONS_DATASET := dataset_version("lau_regions"))["source"] in [ copy2(input["lau_regions"], output["zip"]) rule retrieve_seawater_temperature: + message: + "Retrieving seawater temperature data for {wildcards.year}" params: default_cutout=config_provider("atlite", "default_cutout"), + test_data_url=dataset_version("seawater_temperature")["url"], output: seawater_temperature="data/seawater_temperature_{year}.nc", log: @@ -1013,9 +1526,11 @@ if (LAU_REGIONS_DATASET := dataset_version("lau_regions"))["source"] in [ resources: mem_mb=10000, script: - "../scripts/retrieve_seawater_temperature.py" + scripts("retrieve_seawater_temperature.py") rule retrieve_hera_data_test_cutout: + message: + "Retrieving HERA test cutout data" input: hera_data_url=storage( f"https://zenodo.org/records/15828866/files/hera_be_2013-03-01_to_2013-03-08.zip" @@ -1034,6 +1549,8 @@ if (LAU_REGIONS_DATASET := dataset_version("lau_regions"))["source"] in [ unpack_archive(input[0], params.folder) rule retrieve_hera_data: + message: + "Retrieving HERA data for {wildcards.year}" input: river_discharge=storage( "https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/CEMS-EFAS/HERA/VER1-0/Data/NetCDF/river_discharge/dis.HERA{year}.nc" @@ -1061,6 +1578,8 @@ if (JRC_ARDECO_DATASET := dataset_version("jrc_ardeco"))["source"] in [ ]: rule retrieve_jrc_ardeco: + message: + "Retrieving JRC ARDECO data" input: ardeco_gdp=storage( f"{JRC_ARDECO_DATASET['url']}/SUVGDP?versions=2021&unit=EUR&format=csv-table" @@ -1079,6 +1598,8 @@ if (JRC_ARDECO_DATASET := dataset_version("jrc_ardeco"))["source"] in [ elif (JRC_ARDECO_DATASET := dataset_version("jrc_ardeco"))["source"] in ["archive"]: rule retrieve_jrc_ardeco: + message: + "Retrieving JRC ARDECO data" input: ardeco_gdp=storage( f"{JRC_ARDECO_DATASET['url']}/ARDECO-SUVGDP.2021.table.csv" @@ -1101,6 +1622,8 @@ if (AQUIFER_DATA_DATASET := dataset_version("aquifer_data"))["source"] in [ ]: rule retrieve_aquifer_data_bgr: + message: + "Retrieving BGR aquifer data" input: zip_file=storage(AQUIFER_DATA_DATASET["url"]), output: @@ -1131,6 +1654,8 @@ if (DH_AREAS_DATASET := dataset_version("dh_areas"))["source"] in [ ]: rule retrieve_dh_areas: + message: + "Retrieving District Heating areas" input: dh_areas=storage(DH_AREAS_DATASET["url"]), output: @@ -1146,12 +1671,14 @@ if (MOBILITY_PROFILES_DATASET := dataset_version("mobility_profiles"))["source"] ]: rule retrieve_mobility_profiles: + message: + "Retrieving mobility profiles data" input: kfz=storage(MOBILITY_PROFILES_DATASET["url"] + "/kfz.csv"), pkw=storage(MOBILITY_PROFILES_DATASET["url"] + "/pkw.csv"), output: - kfz=f"{MOBILITY_PROFILES_DATASET["folder"]}/kfz.csv", - pkw=f"{MOBILITY_PROFILES_DATASET["folder"]}/pkw.csv", + kfz=f"{MOBILITY_PROFILES_DATASET['folder']}/kfz.csv", + pkw=f"{MOBILITY_PROFILES_DATASET['folder']}/pkw.csv", threads: 1 resources: mem_mb=1000, diff --git a/rules/solve_electricity.smk b/rules/solve_electricity.smk index e94db1e90..125994310 100644 --- a/rules/solve_electricity.smk +++ b/rules/solve_electricity.smk @@ -4,6 +4,8 @@ rule solve_network: + message: + "Solving electricity network optimization for {wildcards.clusters} clusters and {wildcards.opts} electric options" params: solving=config_provider("solving"), foresight=config_provider("foresight"), @@ -16,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" @@ -31,10 +38,12 @@ rule solve_network: shadow: shadow_config script: - "../scripts/solve_network.py" + scripts("solve_network.py") rule solve_operations_network: + message: + "Solving electricity network operations optimization for {wildcards.clusters} clusters and {wildcards.opts} electric options" params: options=config_provider("solving", "options"), solving=config_provider("solving"), @@ -63,4 +72,4 @@ rule solve_operations_network: shadow: shadow_config script: - "../scripts/solve_operations_network.py" + scripts("solve_operations_network.py") diff --git a/rules/solve_myopic.smk b/rules/solve_myopic.smk index 0a3823f5d..dcffa5c4a 100644 --- a/rules/solve_myopic.smk +++ b/rules/solve_myopic.smk @@ -4,6 +4,8 @@ rule add_existing_baseyear: + message: + "Adding existing infrastructure for base year for {wildcards.clusters} clusters, {wildcards.planning_horizons} planning horizons, {wildcards.opts} electric options and {wildcards.sector_opts} sector options" params: baseyear=config_provider("scenario", "planning_horizons", 0), sector=config_provider("sector"), @@ -27,7 +29,7 @@ rule add_existing_baseyear: ), powerplants=resources("powerplants_s_{clusters}.csv"), costs=lambda w: resources( - f"costs_{config_provider("scenario", "planning_horizons",0)(w)}_processed.csv" + f"costs_{config_provider('scenario', 'planning_horizons',0)(w)}_processed.csv" ), cop_profiles=resources("cop_profiles_base_s_{clusters}_{planning_horizons}.nc"), existing_heating_distribution=lambda w: ( @@ -62,7 +64,7 @@ rule add_existing_baseyear: "add_existing_baseyear/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}" ) script: - "../scripts/add_existing_baseyear.py" + scripts("add_existing_baseyear.py") def input_profile_tech_brownfield(w): @@ -74,6 +76,8 @@ def input_profile_tech_brownfield(w): rule add_brownfield: + message: + "Adding brownfield constraints for existing infrastructure for {wildcards.clusters} clusters, {wildcards.planning_horizons} planning horizons, {wildcards.opts} electric options and {wildcards.sector_opts} sector options" params: H2_retrofit=config_provider("sector", "H2_retrofit"), H2_retrofit_capacity_per_CH4=config_provider( @@ -118,13 +122,15 @@ rule add_brownfield: "add_brownfield/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}" ) script: - "../scripts/add_brownfield.py" + scripts("add_brownfield.py") ruleorder: add_existing_baseyear > add_brownfield rule solve_sector_network_myopic: + message: + "Solving sector-coupled network with myopic foresight for {wildcards.clusters} clusters, {wildcards.planning_horizons} planning horizons, {wildcards.opts} electric options and {wildcards.sector_opts} sector options" params: solving=config_provider("solving"), foresight=config_provider("foresight"), @@ -144,6 +150,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: @@ -163,4 +175,4 @@ rule solve_sector_network_myopic: + "benchmarks/solve_sector_network/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}" ) script: - "../scripts/solve_network.py" + scripts("solve_network.py") diff --git a/rules/solve_overnight.smk b/rules/solve_overnight.smk index 8a4830e0c..a56dfb280 100644 --- a/rules/solve_overnight.smk +++ b/rules/solve_overnight.smk @@ -4,6 +4,8 @@ rule solve_sector_network: + message: + "Solving sector-coupled network with overnight investment optimization for {wildcards.clusters} clusters, {wildcards.planning_horizons} planning horizons, {wildcards.opts} electric options and {wildcards.sector_opts} sector options" params: solving=config_provider("solving"), foresight=config_provider("foresight"), @@ -20,6 +22,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: @@ -39,4 +47,4 @@ rule solve_sector_network: + "benchmarks/solve_sector_network/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}" ) script: - "../scripts/solve_network.py" + scripts("solve_network.py") diff --git a/rules/solve_perfect.smk b/rules/solve_perfect.smk index f0b7202aa..16d8203e9 100644 --- a/rules/solve_perfect.smk +++ b/rules/solve_perfect.smk @@ -2,6 +2,8 @@ # # SPDX-License-Identifier: MIT rule add_existing_baseyear: + message: + "Adding existing infrastructure for base year for {wildcards.clusters} clusters, {wildcards.planning_horizons} planning horizons, {wildcards.opts} electric options and {wildcards.sector_opts} sector options" params: baseyear=config_provider("scenario", "planning_horizons", 0), sector=config_provider("sector"), @@ -19,7 +21,7 @@ rule add_existing_baseyear: busmap=resources("busmap_base_s_{clusters}.csv"), clustered_pop_layout=resources("pop_layout_base_s_{clusters}.csv"), costs=lambda w: resources( - f"costs_{config_provider("scenario", "planning_horizons",0)(w)}_processed.csv" + f"costs_{config_provider('scenario', 'planning_horizons',0)(w)}_processed.csv" ), cop_profiles=resources("cop_profiles_base_s_{clusters}_{planning_horizons}.nc"), existing_heating_distribution=resources( @@ -47,7 +49,7 @@ rule add_existing_baseyear: "add_existing_baseyear/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}" ) script: - "../scripts/add_existing_baseyear.py" + scripts("add_existing_baseyear.py") def input_network_year(w): @@ -59,6 +61,8 @@ def input_network_year(w): rule prepare_perfect_foresight: + message: + "Preparing data for perfect foresight optimization for {wildcards.clusters} clusters, {wildcards.opts} electric options and {wildcards.sector_opts} sector options" params: costs=config_provider("costs"), time_resolution=config_provider("clustering", "temporal", "sector"), @@ -82,10 +86,12 @@ rule prepare_perfect_foresight: benchmark: benchmarks("prepare_perfect_foresight_{clusters}_{opts}_{sector_opts}") script: - "../scripts/prepare_perfect_foresight.py" + scripts("prepare_perfect_foresight.py") rule solve_sector_network_perfect: + message: + "Solving sector-coupled network with perfect foresight for {wildcards.clusters} clusters, {wildcards.opts} electric options and {wildcards.sector_opts} sector options" params: solving=config_provider("solving"), foresight=config_provider("foresight"), @@ -105,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"), @@ -123,7 +135,7 @@ rule solve_sector_network_perfect: + "benchmarks/solve_sector_network/base_s_{clusters}_{opts}_{sector_opts}_brownfield_all_years}" ) script: - "../scripts/solve_network.py" + scripts("solve_network.py") def input_networks_make_summary_perfect(w): @@ -137,6 +149,8 @@ def input_networks_make_summary_perfect(w): rule make_summary_perfect: + message: + "Creating summary for perfect foresight optimization results" input: unpack(input_networks_make_summary_perfect), costs=resources("costs_2020_processed.csv"), @@ -162,4 +176,4 @@ rule make_summary_perfect: benchmark: benchmarks("make_summary_perfect") script: - "../scripts/make_summary_perfect.py" + scripts("make_summary_perfect.py") diff --git a/scripts/_helpers.py b/scripts/_helpers.py index 61cfd7b08..7988c3386 100644 --- a/scripts/_helpers.py +++ b/scripts/_helpers.py @@ -161,6 +161,27 @@ def path_provider(dir, rdir, shared_resources, exclude_from_shared): ) +def script_path_provider(project_dir: Path) -> Callable[[str], Path]: + """ + Returns a function that provides the full path to a script given its name. + + Parameters + ---------- + project_dir : Path + The root directory of the project (where the script directory is located). + + Returns + ------- + Callable[[str], Path] + A function that takes a script name as input and returns the full path to the script. + """ + + def _get_script_path(script: str) -> Path: + return Path("file://") / project_dir / "scripts" / script + + return _get_script_path + + def get_shadow(run): """ Returns 'shallow' or None depending on the user setting. @@ -383,21 +404,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) @@ -515,13 +536,17 @@ def mock_snakemake( import os import snakemake as sm + from packaging import version from pypsa.definitions.structures import Dict + from snakemake import __version__ as sm_version from snakemake.api import Workflow from snakemake.common import SNAKEFILE_CHOICES + from snakemake.logging import LoggerManager from snakemake.script import Snakemake from snakemake.settings.types import ( ConfigSettings, DAGSettings, + OutputSettings, ResourceSettings, StorageSettings, WorkflowSettings, @@ -562,15 +587,25 @@ def mock_snakemake( workflow_settings = WorkflowSettings() storage_settings = StorageSettings() dag_settings = DAGSettings(rerun_triggers=[]) - workflow = Workflow( - config_settings, - resource_settings, - workflow_settings, - storage_settings, - dag_settings, + + workflow_kwargs = dict( + config_settings=config_settings, + resource_settings=resource_settings, + workflow_settings=workflow_settings, + storage_settings=storage_settings, + dag_settings=dag_settings, storage_provider_settings=dict(), overwrite_workdir=workdir, ) + + # Snakemake version-dependent logger handling + if version.parse(sm_version) >= version.parse("9.14.6"): + output_settings = OutputSettings() + workflow_kwargs["logger_manager"] = LoggerManager( + logger=logger, settings=output_settings + ) + + workflow = Workflow(**workflow_kwargs) workflow.include(snakefile) if configfiles: @@ -685,7 +720,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 369425611..800d00a85 100644 --- a/scripts/add_brownfield.py +++ b/scripts/add_brownfield.py @@ -60,49 +60,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( @@ -110,7 +119,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 1d35f136e..c3862319c 100755 --- a/scripts/add_electricity.py +++ b/scripts/add_electricity.py @@ -73,6 +73,56 @@ if PYPSA_V1: pypsa.options.params.add.return_names = True +STORE_LOOKUP = { + "battery": { + "store": "battery storage", + "bicharger": "battery inverter", + "roundtrip_correction": 0.5, + }, + "home battery": { + "store": "home battery storage", + "bicharger": "home battery inverter", + "roundtrip_correction": 0.5, + }, + "li-ion": { + "store": "battery storage", + "bicharger": "battery inverter", + "roundtrip_correction": 0.5, + }, + "lfp": { + "store": "Lithium-Ion-LFP-store", + "bicharger": "Lithium-Ion-LFP-bicharger", + }, + "vanadium": { + "store": "Vanadium-Redox-Flow-store", + "bicharger": "Vanadium-Redox-Flow-bicharger", + }, + "lair": { + "store": "Liquid-Air-store", + "charger": "Liquid-Air-charger", + "discharger": "Liquid-Air-discharger", + }, + "pair": { + "store": "Compressed-Air-Adiabatic-store", + "bicharger": "Compressed-Air-Adiabatic-bicharger", + }, + "iron-air": { + "store": "iron-air battery", + "charger": "iron-air battery charge", + "discharger": "iron-air battery discharge", + }, + "H2": { + "store": "hydrogen storage underground", + "charger": "electrolysis", + "discharger": "fuel cell", + }, + "H2 tank": { + "store": "hydrogen storage tank type 1 including compressor", + "charger": "electrolysis", + "discharger": "fuel cell", + }, +} + idx = pd.IndexSlice logger = logging.getLogger(__name__) @@ -172,9 +222,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 = ( @@ -220,7 +270,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: @@ -284,15 +334,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"] @@ -306,15 +362,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]) @@ -551,6 +613,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, @@ -571,6 +634,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 @@ -580,9 +645,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())) @@ -592,10 +660,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 = {} @@ -642,9 +713,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()} @@ -654,6 +731,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, @@ -824,7 +938,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: """ @@ -838,9 +952,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"} @@ -928,10 +1044,30 @@ def estimate_renewable_capacities( ) +def get_available_storage_carriers(carriers): + """ + Filter and register available storage carriers from a given list. + """ + implemented = set(STORE_LOOKUP.keys()) + input_carriers = set(carriers) + + not_implemented = input_carriers - implemented + if not_implemented: + logger.warning( + "The following carriers are not implemented as storage technologies in PyPSA-Eur and will be skipped:\n - " + + "\n - ".join(sorted(not_implemented)) + ) + + available_carriers = sorted(input_carriers & implemented) + + return available_carriers + + def attach_storageunits( n: pypsa.Network, costs: pd.DataFrame, - extendable_carriers: dict, + buses_i: list, + extendable_carriers: list, max_hours: dict, ): """ @@ -943,22 +1079,30 @@ def attach_storageunits( The PyPSA network to attach the storage units to. costs : pd.DataFrame DataFrame containing the cost data. - extendable_carriers : dict - Dictionary of extendable energy carriers. + buses_i : list + List of high voltage electricity buses. + extendable_carriers : list + List of extendable storage units carrier names. max_hours : dict Dictionary of maximum hours for storage units. """ - carriers = extendable_carriers["StorageUnit"] - - n.add("Carrier", carriers) + available_carriers = get_available_storage_carriers(extendable_carriers) + n.add("Carrier", available_carriers) - buses_i = n.buses.index + for carrier in available_carriers: + max_hour = max_hours.get(carrier) + if max_hour is None: + logger.warning(f"No max_hours defined for carrier '{carrier}'. Skipping.") + continue - lookup_store = {"H2": "electrolysis", "battery": "battery inverter"} - lookup_dispatch = {"H2": "fuel cell", "battery": "battery inverter"} + lookup = STORE_LOOKUP[carrier] + if "bicharger" in lookup: + lookup_charge = lookup_discharge = lookup["bicharger"] + else: + lookup_charge = lookup["charger"] + lookup_discharge = lookup["discharger"] - for carrier in carriers: - roundtrip_correction = 0.5 if carrier == "battery" else 1 + roundtrip_correction = lookup.get("roundtrip_correction", 1) n.add( "StorageUnit", @@ -970,19 +1114,26 @@ def attach_storageunits( capital_cost=costs.at[carrier, "capital_cost"], overnight_costs=costs.at[carrier, "investment"], marginal_cost=costs.at[carrier, "marginal_cost"], - efficiency_store=costs.at[lookup_store[carrier], "efficiency"] + efficiency_store=costs.at[lookup_charge, "efficiency"] ** roundtrip_correction, - efficiency_dispatch=costs.at[lookup_dispatch[carrier], "efficiency"] + efficiency_dispatch=costs.at[lookup_discharge, "efficiency"] ** roundtrip_correction, - max_hours=max_hours[carrier], + max_hours=max_hour, cyclic_state_of_charge=True, + lifetime=costs.at[carrier, "lifetime"], ) + logger.info( + "Add the following technologies as storage units:\n - " + + "\n - ".join(available_carriers) + ) + def attach_stores( n: pypsa.Network, costs: pd.DataFrame, - extendable_carriers: dict, + buses_i: list, + extendable_carriers: list, ): """ Attach stores to the network. @@ -993,108 +1144,93 @@ def attach_stores( The PyPSA network to attach the stores to. costs : pd.DataFrame DataFrame containing the cost data. - extendable_carriers : dict - Dictionary of extendable energy carriers. + buses_i : list + List of high voltage electricity buses. + extendable_carriers : list + List of extendable storage carrier names. """ - carriers = extendable_carriers["Store"] - - n.add("Carrier", carriers) - - buses_i = n.buses.index - - if "H2" in carriers: - h2_buses_i = n.add("Bus", buses_i + " H2", carrier="H2", location=buses_i) + available_carriers = get_available_storage_carriers(extendable_carriers) + n.add("Carrier", available_carriers) + + for carrier in available_carriers: + lookup = STORE_LOOKUP[carrier] + lookup_store = lookup["store"] + if "bicharger" in lookup: + lookup_charge = lookup_discharge = lookup["bicharger"] + else: + lookup_charge = lookup["charger"] + lookup_discharge = lookup["discharger"] - n.add( - "Store", - h2_buses_i, - bus=h2_buses_i, - carrier="H2", - e_nom_extendable=True, - e_cyclic=True, - capital_cost=costs.at["hydrogen storage underground", "capital_cost"], - overnight_cost=costs.at["hydrogen storage underground", "investment"], - ) + roundtrip_correction = lookup.get("roundtrip_correction", 1) - n.add( - "Link", - h2_buses_i + " Electrolysis", - bus0=buses_i, - bus1=h2_buses_i, - carrier="H2 electrolysis", - p_nom_extendable=True, - efficiency=costs.at["electrolysis", "efficiency"], - capital_cost=costs.at["electrolysis", "capital_cost"], - overnight_cost=costs.at["electrolysis", "investment"], - marginal_cost=costs.at["electrolysis", "marginal_cost"], + bus_names = buses_i + f" {carrier}" + charge_name = "Electrolysis" if lookup_charge == "electrolysis" else "charger" + discharge_name = ( + "Fuel Cell" if lookup_discharge == "fuel cell" else "discharger" ) n.add( - "Link", - h2_buses_i + " Fuel Cell", - bus0=h2_buses_i, - bus1=buses_i, - carrier="H2 fuel cell", - p_nom_extendable=True, - efficiency=costs.at["fuel cell", "efficiency"], - # NB: fixed cost is per MWel - capital_cost=costs.at["fuel cell", "capital_cost"] - * costs.at["fuel cell", "efficiency"], - overnight_cost=costs.at["fuel cell", "investment"] - * costs.at["fuel cell", "efficiency"], - marginal_cost=costs.at["fuel cell", "marginal_cost"], - ) - - if "battery" in carriers: - b_buses_i = n.add( - "Bus", buses_i + " battery", carrier="battery", location=buses_i + "Bus", + bus_names, + location=buses_i, + carrier=carrier, + x=n.buses.loc[list(buses_i)].x.values, + y=n.buses.loc[list(buses_i)].y.values, ) n.add( "Store", - b_buses_i, - bus=b_buses_i, - carrier="battery", + bus_names, + bus=bus_names, e_cyclic=True, e_nom_extendable=True, - capital_cost=costs.at["battery storage", "capital_cost"], - overnight_cost=costs.at["battery storage", "investment"], - marginal_cost=costs.at["battery", "marginal_cost"], + carrier=carrier, + capital_cost=costs.at[lookup_store, "capital_cost"], + overnight_cost=costs.at[lookup_store, "investment"], + lifetime=costs.at[lookup_store, "lifetime"], ) - n.add("Carrier", ["battery charger", "battery discharger"]) + n.add("Carrier", [f"{carrier} {charge_name}", f"{carrier} {discharge_name}"]) n.add( "Link", - b_buses_i + " charger", + bus_names, + suffix=f" {charge_name}", bus0=buses_i, - bus1=b_buses_i, - carrier="battery charger", - # the efficiencies are "round trip efficiencies" - efficiency=costs.at["battery inverter", "efficiency"] ** 0.5, - capital_cost=costs.at["battery inverter", "capital_cost"], - overnight_cost=costs.at["battery inverter", "investment"], + bus1=bus_names, + carrier=f"{carrier} {charge_name}", + efficiency=costs.at[lookup_charge, "efficiency"] ** roundtrip_correction, + capital_cost=costs.at[lookup_charge, "capital_cost"], + overnight_cost=costs.at[lookup_charge, "investment"], p_nom_extendable=True, - marginal_cost=costs.at["battery inverter", "marginal_cost"], + marginal_cost=costs.at[lookup_charge, "marginal_cost"], + lifetime=costs.at[lookup_charge, "lifetime"], ) n.add( "Link", - b_buses_i + " discharger", - bus0=b_buses_i, + bus_names, + suffix=f" {discharge_name}", + bus0=bus_names, bus1=buses_i, - carrier="battery discharger", - efficiency=costs.at["battery inverter", "efficiency"] ** 0.5, + carrier=f"{carrier} {discharge_name}", + efficiency=costs.at[lookup_discharge, "efficiency"] ** roundtrip_correction, p_nom_extendable=True, - marginal_cost=costs.at["battery inverter", "marginal_cost"], + marginal_cost=costs.at[lookup_discharge, "marginal_cost"], + lifetime=costs.at[lookup_discharge, "lifetime"], ) + logger.info( + "Add the following storage technologies as stores and links:\n - " + + "\n - ".join(available_carriers) + ) + if __name__ == "__main__": 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) @@ -1149,7 +1285,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: @@ -1161,8 +1297,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, ) @@ -1202,17 +1339,23 @@ 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) - attach_storageunits(n, costs, extendable_carriers, max_hours) - attach_stores(n, costs, extendable_carriers) + attach_storageunits( + n, costs, n.buses.index, extendable_carriers["StorageUnit"], max_hours + ) + 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: diff --git a/scripts/add_existing_baseyear.py b/scripts/add_existing_baseyear.py index e7037f825..13a32a0c0 100644 --- a/scripts/add_existing_baseyear.py +++ b/scripts/add_existing_baseyear.py @@ -51,21 +51,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( @@ -234,6 +238,8 @@ def add_power_capacities_installed_before_baseyear( "Waste", "Other", "CCGT, Thermal", + "Battery", + "Heat Storage", ] technology_to_drop = ["Pv", "Storage Technologies"] @@ -243,17 +249,21 @@ def add_power_capacities_installed_before_baseyear( df_agg = df_agg[~df_agg["Technology"].isin(technology_to_drop)] 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 == "solid biomass"].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) + ) # split biogas and solid biomass - biogas_i = biomass_i.intersection(df_agg.loc[df_agg.Capacity < 2].index) + biogas_i = df_agg.loc[ + (df_agg.Fueltype == "solid biomass") & (df_agg.Capacity < 2) + ].index df_agg.loc[biogas_i, "Fueltype"] = "biogas" # include renewables in df_agg @@ -294,9 +304,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) @@ -577,6 +591,20 @@ def add_chp_plants( # phase out date at the end of the year) chp.Fueltype = chp.Fueltype.map(rename_fuel) + # Fill missing DateIn, drop the remaining missing values afterwards + chp["DateIn"] = chp.groupby("Fueltype")["DateIn"].transform( + lambda x: x.fillna(x.mean() // 1) + ) + missing_datein = chp.index[chp["DateIn"].isna()] + if not missing_datein.empty: + logger.info(f"Dropping {len(missing_datein)} CHP plants with missing DateIn.") + if len(missing_datein) <= 20: # log individual plants if not too many + logger.info( + f"CHPs dropped due to missing DateIn: {missing_datein.to_list()}" + ) + + chp.dropna(subset="DateIn", inplace=True) + chp["grouping_year"] = np.take( grouping_years, np.digitize(chp.DateIn, grouping_years, right=True) ) diff --git a/scripts/base_network.py b/scripts/base_network.py index 30f0983d2..cef6fff08 100644 --- a/scripts/base_network.py +++ b/scripts/base_network.py @@ -263,7 +263,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 a5373d10a..796bd9e55 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 000000000..a8e564e7d --- /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 238839b3e..62987c400 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_electricity_demand.py b/scripts/build_electricity_demand.py index 09c2bc295..58699037d 100755 --- a/scripts/build_electricity_demand.py +++ b/scripts/build_electricity_demand.py @@ -19,10 +19,12 @@ logger = logging.getLogger(__name__) +OPSD_DATE_FORMAT = "%Y-%m-%dT%H:%M:%SZ" -def load_timeseries(fn, years, countries): + +def load_timeseries(fn, years, countries, date_format=None): """ - Read load data from OPSD time-series package version 2020-10-06. + Read and pre-filter load data. Parameters ---------- @@ -40,10 +42,9 @@ def load_timeseries(fn, years, countries): Load time-series with UTC timestamps x ISO-2 countries """ return ( - pd.read_csv(fn, index_col=0, parse_dates=[0], date_format="%Y-%m-%dT%H:%M:%SZ") + pd.read_csv(fn, index_col=0, parse_dates=[0], date_format=date_format) .tz_localize(None) .dropna(how="all", axis=0) - .rename(columns={"GB_UKM": "GB"}) .filter(items=countries) .loc[years] ) @@ -113,29 +114,7 @@ def copy_timeslice(load, cntry, start, stop, delta, fn_load=None): def manual_adjustment(load, fn_load, countries): """ - Adjust gaps manual for load data from OPSD time-series package. - - 1. For years later than 2015 for which the load data is mainly taken from the - ENTSOE power statistics - - Kosovo (KV) and Albania (AL) do not exist in the data set. Kosovo gets the - same load curve as Serbia and Albania the same as Macdedonia, both scaled - by the corresponding ratio of total energy consumptions reported by - IEA Data browser [0] for the year 2013. - - - 2. For years earlier than 2015 for which the load data is mainly taken from the - ENTSOE transparency platforms - - Albania (AL) and Macedonia (MK) do not exist in the data set. Both get the - same load curve as Montenegro, scaled by the corresponding ratio of total energy - consumptions reported by IEA Data browser [0] for the year 2016. - - [0] https://www.iea.org/data-and-statistics?country=WORLD&fuel=Electricity%20and%20heat&indicator=TotElecCons - - Bosnia and Herzegovina (BA) does not exist in the data set for 2019. It gets the - electricity consumption data from Croatia (HR) for the year 2019, scaled by the - factors derived from https://energy.at-site.be/eurostat-2021/ + Adjust gaps manual for load data. Parameters ---------- @@ -151,83 +130,95 @@ def manual_adjustment(load, fn_load, countries): timestamps x ISO-2 countries """ - if "AL" not in load and "AL" in countries: - if "ME" in load: - load["AL"] = load.ME * (5.7 / 2.9) - elif "MK" in load: - load["AL"] = load["MK"] * (4.1 / 7.4) - - if "MK" in countries and "MK" in countries: - if "MK" not in load or load.MK.isnull().sum() > len(load) / 2: - if "ME" in load: - load["MK"] = load.ME * (6.7 / 2.9) + copy_timeslice(load, "UA", "2010-01-01 00:00", "2010-01-01 01:00", Delta(days=-1)) + copy_timeslice(load, "XK", "2010-01-01 00:00", "2010-01-01 01:00", Delta(days=-1)) + copy_timeslice(load, "MD", "2010-01-01 00:00", "2010-01-01 01:00", Delta(days=-1)) + copy_timeslice(load, "BA", "2010-01-01 00:00", "2010-01-01 01:00", Delta(days=-1)) - if "BA" not in load and "BA" in countries: - if "ME" in load: - load["BA"] = load.HR * (11.0 / 16.2) - - if "XK" not in load and "XK" in countries: - if "RS" in load: - load["XK"] = load["RS"] * (4.8 / 27.0) - - copy_timeslice(load, "GR", "2015-08-11 21:00", "2015-08-15 20:00", Delta(weeks=1)) - copy_timeslice(load, "AT", "2018-12-31 22:00", "2019-01-01 22:00", Delta(days=2)) copy_timeslice(load, "CH", "2010-01-19 07:00", "2010-01-19 22:00", Delta(days=1)) copy_timeslice(load, "CH", "2010-03-28 00:00", "2010-03-28 21:00", Delta(days=1)) - # is a WE, so take WE before - copy_timeslice(load, "CH", "2010-10-08 13:00", "2010-10-10 21:00", Delta(weeks=1)) copy_timeslice(load, "CH", "2010-11-04 04:00", "2010-11-04 22:00", Delta(days=1)) + copy_timeslice(load, "CH", "2025-04-30 00:00", "2025-04-30 23:00", Delta(days=1)) + copy_timeslice(load, "CH", "2023-02-16 23:00", "2025-02-17 09:00", Delta(days=1)) copy_timeslice(load, "NO", "2010-12-09 11:00", "2010-12-09 18:00", Delta(days=1)) - # whole january missing - copy_timeslice( - load, - "GB", - "2010-01-01 00:00", - "2010-01-31 23:00", - Delta(days=-365), - fn_load, - ) - # 1.1. at midnight gets special treatment - copy_timeslice( - load, - "IE", - "2016-01-01 00:00", - "2016-01-01 01:00", - Delta(days=-366), - fn_load, - ) - copy_timeslice( - load, - "PT", - "2016-01-01 00:00", - "2016-01-01 01:00", - Delta(days=-366), - fn_load, - ) - copy_timeslice( - load, - "GB", - "2016-01-01 00:00", - "2016-01-01 01:00", - Delta(days=-366), - fn_load, - ) + copy_timeslice(load, "PL", "2014-12-08 00:00", "2014-12-08 23:00", Delta(days=1)) + copy_timeslice(load, "PL", "2025-04-28 00:00", "2025-04-28 23:00", Delta(days=1)) - copy_timeslice(load, "BG", "2018-10-27 21:00", "2018-10-28 22:00", Delta(weeks=1)) - copy_timeslice(load, "LU", "2019-01-02 11:00", "2019-01-05 05:00", Delta(weeks=-1)) - copy_timeslice(load, "LU", "2019-02-05 20:00", "2019-02-06 19:00", Delta(weeks=-1)) + copy_timeslice(load, "AT", "2015-11-29 00:00", "2015-11-29 23:00", Delta(days=-1)) + copy_timeslice(load, "AT", "2014-12-17 23:00", "2014-12-18 07:00", Delta(days=-1)) + copy_timeslice(load, "CH", "2023-12-05 00:00", "2025-12-05 23:00", Delta(days=-1)) + copy_timeslice(load, "SI", "2014-12-30 12:00", "2014-12-31 23:00", Delta(days=-2)) - if "UA" in countries: + copy_timeslice(load, "LU", "2018-12-07 00:00", "2018-12-09 23:00", Delta(days=-2)) + copy_timeslice(load, "LU", "2018-12-04 00:00", "2018-12-04 23:00", Delta(days=-1)) + copy_timeslice(load, "LU", "2018-11-15 00:00", "2018-11-15 23:00", Delta(days=-1)) + + copy_timeslice(load, "MK", "2019-09-01 00:00", "2019-09-02 23:00", Delta(weeks=-1)) + copy_timeslice(load, "MK", "2024-09-02 00:00", "2024-09-02 23:00", Delta(days=-1)) + + copy_timeslice(load, "GB", "2018-12-14 21:00", "2018-12-15 02:00", Delta(days=1)) + copy_timeslice(load, "IE", "2025-11-17 23:00", "2025-11-19 09:00", Delta(weeks=-1)) + + # is a WE, so take WE before + copy_timeslice(load, "CH", "2010-10-08 13:00", "2010-10-10 21:00", Delta(weeks=1)) + + # longer stretch + copy_timeslice(load, "NL", "2014-12-01 00:00", "2014-12-19 23:00", Delta(weeks=-3)) + + def _safe_where(df, col, pred): + if col in df.columns: + df[col] = df[col].where(pred(df[col]), np.nan) + + def _safe_setna(df, idx, col): + if col in df.columns: + df.loc[idx, col] = np.nan + + # remove erroneous peaks + _safe_where(load, "BA", lambda s: s < 2650) + _safe_where(load, "DK", lambda s: s < 6400) + _safe_where(load, "MK", lambda s: s < 2000) + _safe_where(load, "PT", lambda s: s < 11000) + + # remove erroneous drops + _safe_where(load, "EE", lambda s: s > 300) + _safe_where(load, "GB", lambda s: s > 10000) + _safe_where(load, "GR", lambda s: s > 2300) + _safe_where(load, "LT", lambda s: s > 600) + _safe_where(load, "LV", lambda s: s > 300) + _safe_where(load, "ME", lambda s: s > 90) + _safe_where(load, "NO", lambda s: s > 6000) + _safe_where(load, "SE", lambda s: s > 6000) + _safe_where(load, "SI", lambda s: s > 400) + _safe_where(load, "XK", lambda s: s > 200) + _safe_where(load, "PT", lambda s: s > 3000) + _safe_where(load, "AT", lambda s: s > 3000) + _safe_where(load, "BG", lambda s: s > 2000) + + _safe_setna(load, "2019-04-03 01:00", "BG") + _safe_setna(load, "2019-10-29 01:00", "BG") + _safe_setna(load, "2019-10-29 03:00", "BG") + _safe_setna(load, "2018-09-12 16:00", "GB") + _safe_setna(load, "2019-10-28 11:00", "SK") + + copy_timeslice(load, "MK", "2019-04-30 00:00", "2019-05-01 23:00", Delta(weeks=-1)) + for year in [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2024]: copy_timeslice( - load, "UA", "2013-01-25 14:00", "2013-01-28 21:00", Delta(weeks=1) + load, "BA", f"{year}-07-05 00:00", f"{year}-07-08 00:00", Delta(weeks=-1) ) copy_timeslice( - load, "UA", "2013-10-28 03:00", "2013-10-28 20:00", Delta(weeks=1) + load, "BA", f"{year}-11-22 19:00", f"{year}-11-22 21:00", Delta(days=-1) ) return load +def repeat_years(s: pd.Series, years: list) -> pd.Series: + s = s[~((s.index.month == 2) & (s.index.day == 29))] # drop leap day + return pd.concat( + [s.set_axis(s.index.map(lambda t: t.replace(year=y))) for y in years] + ) + + if __name__ == "__main__": if "snakemake" not in globals(): from scripts._helpers import mock_snakemake @@ -241,34 +232,66 @@ def manual_adjustment(load, fn_load, countries): snakemake.params.snapshots, snakemake.params.drop_leap_day ) - fixed_year = snakemake.params["load"].get("fixed_year", False) - years = ( - slice(str(fixed_year), str(fixed_year)) - if fixed_year - else slice(snapshots[0], snapshots[-1]) - ) + # supported year ranges + years = slice("2010", "2025") interpolate_limit = snakemake.params.load["fill_gaps"]["interpolate_limit"] countries = snakemake.params.countries time_shift = snakemake.params.load["fill_gaps"]["time_shift_for_large_gaps"] - load = load_timeseries(snakemake.input.reported, years, countries) + opsd = load_timeseries(snakemake.input.opsd, years, countries, OPSD_DATE_FORMAT) - load = load.reindex(index=snapshots) + entsoe = load_timeseries(snakemake.input.entsoe, years, countries) + + neso = load_timeseries(snakemake.input.neso, years, countries) + + load = entsoe.combine_first(opsd).combine_first(neso) + + # zero values are considered missing values + load.replace(0, np.nan, inplace=True) if "UA" in countries: - # attach load of UA (best data only for entsoe transparency) - load_ua = load_timeseries(snakemake.input.reported, "2018", ["UA"]) - snapshot_year = str(snapshots.year.unique().item()) - time_diff = pd.Timestamp("2018") - pd.Timestamp(snapshot_year) - # hack indices (currently, UA is manually set to 2018) - load_ua.index -= time_diff - load["UA"] = load_ua - # attach load of MD (no time-series available, use 2020-totals and distribute according to UA): - # https://www.iea.org/data-and-statistics/data-browser/?country=MOLDOVA&fuel=Energy%20consumption&indicator=TotElecCons - if "MD" in countries: - load["MD"] = 6.2e6 * (load_ua / load_ua.sum()) + # use 2021 as template for filling missing years + s = load.loc["2021", "UA"] + fill_values = repeat_years(s, range(2010, 2026)) + load["UA"] = load["UA"].combine_first(fill_values) + + if "MD" in countries: + # use 2022 as template for filling missing years + s = load.loc["2022", "MD"] + fill_values = repeat_years(s, range(2010, 2025)) + load["MD"] = load["MD"].combine_first(fill_values) + + if "AL" in countries: + # use 2024 as template for filling missing and erroneous years + s = load.loc["2024", "AL"] + fill_values = repeat_years(s, range(2010, 2026)) + load.loc[fill_values.index, "AL"] = fill_values + + if "BA" in countries: + # use 2024 as template for filling missing and erroneous years + s = load.loc["2024", "BA"] + fill_values = repeat_years(s, range(2010, 2026)) + load["BA"] = load["BA"].combine_first(fill_values) + + if "XK" in countries: + # use 2024 as template for filling missing and erroneous years + s = load.loc["2024", "XK"] + fill_values = repeat_years(s, range(2010, 2024)) + load["XK"] = load["XK"].combine_first(fill_values) + + if "MK" in countries: + # use 2024 as template for filling missing and erroneous years + s = load.loc["2024", "MK"] + fill_values = repeat_years(s, range(2025, 2026)) + load["MK"] = load["MK"].combine_first(fill_values) + + if "CY" in countries: + # use 2021 as template for filling missing years + s = load.loc["2021", "CY"] + fill_values = repeat_years(s, range(2010, 2026)) + load["CY"] = load["CY"].combine_first(fill_values) if snakemake.params.load["manual_adjustments"]: load = manual_adjustment(load, snakemake.input[0], countries) @@ -297,6 +320,15 @@ def manual_adjustment(load, fn_load, countries): "for implementing the needed load data modifications." ) + fixed_year = snakemake.params["load"].get("fixed_year", False) + years = ( + slice(str(fixed_year), str(fixed_year)) + if fixed_year + else slice(snapshots[0], snapshots[-1]) + ) + + load = load.loc[years].reindex(index=snapshots) + # need to reindex load time series to target year if fixed_year: load.index = load.index.map(lambda t: t.replace(year=snapshots.year[0])) diff --git a/scripts/build_electricity_demand_base.py b/scripts/build_electricity_demand_base.py index ba07b7bfa..4cd84b9fa 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 a5241e585..04f85693d 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 000000000..dac63dce7 --- /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_hydro_profile.py b/scripts/build_hydro_profile.py index fd360db42..7a4e2d946 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_distribution_key.py b/scripts/build_industrial_distribution_key.py index d79c496d6..3d850ceb2 100644 --- a/scripts/build_industrial_distribution_key.py +++ b/scripts/build_industrial_distribution_key.py @@ -38,7 +38,7 @@ cc = coco.CountryConverter() -def locate_missing_industrial_sites(df): +def locate_missing_industrial_sites(df: pd.DataFrame) -> pd.DataFrame: """ Locate industrial sites without valid locations based on city and countries. @@ -85,11 +85,11 @@ def locate_missing(s): return df -def prepare_hotmaps_database(regions): +def prepare_hotmaps_database(fn: str, regions: gpd.GeoDataFrame) -> gpd.GeoDataFrame: """ Load hotmaps database of industrial sites and map onto bus regions. """ - df = pd.read_csv(snakemake.input.hotmaps, sep=";", index_col=0) + df = pd.read_csv(fn, sep=";", index_col=0) df[["srid", "coordinates"]] = df.geom.str.split(";", expand=True) @@ -122,19 +122,29 @@ def prepare_hotmaps_database(regions): return gdf -def prepare_gem_database(regions): +def prepare_gem_steel_database(fn: str, regions: gpd.GeoDataFrame) -> gpd.GeoDataFrame: """ Load GEM database of steel plants and map onto bus regions. """ - df = pd.read_excel( - snakemake.input.gem_gspt, - sheet_name="Steel Plants", + df1 = pd.read_excel( + fn, + sheet_name="Plant data", + na_values=["N/A", "unknown", ">0"], + ) + + df2 = pd.read_excel( + fn, + sheet_name="Plant capacities and status", na_values=["N/A", "unknown", ">0"], - ).query("Region == 'Europe'") + ) + + df = df1.merge(df2, on="Plant ID", suffixes=(None, " 2")).query( + "Region == 'Europe'" + ) - df["Retired Date"] = pd.to_numeric( - df["Retired Date"].combine_first(df["Idled Date"]), errors="coerce" + df["Retired date"] = pd.to_numeric( + df["Retired date"].combine_first(df["Idled date"]), errors="coerce" ) df["Start date"] = pd.to_numeric( df["Start date"].str.split("-").str[0], errors="coerce" @@ -156,13 +166,26 @@ def prepare_gem_database(regions): return gdf -def prepare_ammonia_database(regions): +def prepare_gem_cement_database(fn: str, regions: gpd.GeoDataFrame) -> gpd.GeoDataFrame: """ - Load ammonia database of plants and map onto bus regions. + Load GEM database of cement plants and map onto bus regions. """ - df = pd.read_csv(snakemake.input.ammonia, index_col=0) - geometry = gpd.points_from_xy(df.Longitude, df.Latitude) + df = pd.read_excel( + fn, + sheet_name="Plant Data", + na_values=["N/A", "n/a", "unknown", ">0"], + ) + + df["Start date"] = pd.to_numeric(df["Start date"], errors="coerce") + + df = df.loc[df.Coordinates.str.contains(", ") & df.Coordinates.notna()] + latlon = ( + df["Coordinates"] + .str.split(", ", expand=True) + .rename(columns={0: "lat", 1: "lon"}) + ) + geometry = gpd.points_from_xy(latlon["lon"], latlon["lat"]) gdf = gpd.GeoDataFrame(df, geometry=geometry, crs="EPSG:4326") gdf = gpd.sjoin(gdf, regions, how="inner", predicate="within") @@ -173,13 +196,11 @@ def prepare_ammonia_database(regions): return gdf -def prepare_cement_supplement(regions): +def prepare_ammonia_database(fn: str, regions: gpd.GeoDataFrame) -> gpd.GeoDataFrame: """ - Load supplementary cement plants from non-EU-(NO-CH) and map onto bus - regions. + Load ammonia database of plants and map onto bus regions. """ - - df = pd.read_csv(snakemake.input.cement_supplement, index_col=0) + df = pd.read_csv(fn, index_col=0) geometry = gpd.points_from_xy(df.Longitude, df.Latitude) gdf = gpd.GeoDataFrame(df, geometry=geometry, crs="EPSG:4326") @@ -192,12 +213,14 @@ def prepare_cement_supplement(regions): return gdf -def prepare_refineries_supplement(regions): +def prepare_refineries_supplement( + fn: str, regions: gpd.GeoDataFrame +) -> gpd.GeoDataFrame: """ Load supplementary refineries from non-EU-(NO-CH) and map onto bus regions. """ - df = pd.read_csv(snakemake.input.refineries_supplement, index_col=0) + df = pd.read_csv(fn, index_col=0) geometry = gpd.points_from_xy(df.Longitude, df.Latitude) gdf = gpd.GeoDataFrame(df, geometry=geometry, crs="EPSG:4326") @@ -211,8 +234,14 @@ def prepare_refineries_supplement(regions): def build_nodal_distribution_key( - hotmaps, gem, ammonia, cement, refineries, regions, countries -): + hotmaps: gpd.GeoDataFrame, + steel: gpd.GeoDataFrame, + ammonia: gpd.GeoDataFrame, + cement: gpd.GeoDataFrame, + refineries: gpd.GeoDataFrame, + regions: gpd.GeoDataFrame, + countries: list[str], +) -> pd.DataFrame: """ Build nodal distribution keys for each sector. """ @@ -241,14 +270,6 @@ def build_nodal_distribution_key( emissions = emissions.fillna(emissions.quantile(0.2)) key = emissions / emissions.sum() key = key.groupby(facilities.bus).sum().reindex(regions_ct, fill_value=0.0) - elif sector == "Cement" and country in cement.country.unique(): - facilities = cement.query("country == @country") - production = facilities["Cement [kt/a]"] - if production.sum() == 0: - key = pd.Series(1 / len(facilities), facilities.index) - else: - key = production / production.sum() - key = key.groupby(facilities.bus).sum().reindex(regions_ct, fill_value=0.0) elif sector == "Refineries" and country in refineries.country.unique(): facilities = refineries.query("country == @country") production = facilities["Capacity [bbl/day]"] @@ -262,12 +283,64 @@ def build_nodal_distribution_key( keys.loc[regions_ct, sector] = key - # add specific steel subsectors + # add cement distribution from GEM + for country in countries: + regions_ct = regions.index[regions.index.str.contains(country)] + + status_list = ["operating", "operating pre-retirement", "construction"] + facilities = cement.query( + "country == @country and `Operating status` in @status_list" + ) + + clinker_col = "Clinker Capacity (millions metric tonnes per annum)" + cement_col = "Cement Capacity (millions metric tonnes per annum)" + clinker_cement_ratio = 0.737 # https://lowcarboneconomy.cembureau.eu/5-parallel-routes/resource-efficiency/clinker-substitution + + # clinker capacity + capacity_from_clinker = facilities[clinker_col] + + # approximated clinker capacity from cement capacity for integrated plants + capacity_from_integrated_cement = facilities.query( + "`Plant type` == 'integrated'" + )[cement_col].mul(clinker_cement_ratio) + + # for grinding plants, use 10% of cement capacity as proxy for energy use + capacity_from_grinding_cement = facilities.query("`Plant type` == 'grinding'")[ + cement_col + ].mul(0.1 * clinker_cement_ratio) + + # assume 1% quantile for missing values + missing_i = facilities.loc[ + facilities[clinker_col].isna() & facilities[cement_col].isna() + ].index + capacity_from_Q10 = pd.Series( + cement[cement_col].quantile(0.01) * clinker_cement_ratio, index=missing_i + ) + + capacities = ( + capacity_from_clinker.combine_first(capacity_from_integrated_cement) + .combine_first(capacity_from_grinding_cement) + .combine_first(capacity_from_Q10) + ) + + if not capacities.empty: + if capacities.sum() == 0: + key = pd.Series(1 / len(capacities), capacities.index) + else: + key = capacities / capacities.sum() + buses = facilities.loc[capacities.index, "bus"] + key = key.groupby(buses).sum().reindex(regions_ct, fill_value=0.0) + else: + key = keys.loc[regions_ct, "population"] + + keys.loc[regions_ct, "Cement"] = key + + # add specific steel subsectors from GEM steel_processes = ["EAF", "DRI + EAF", "Integrated steelworks"] for process, country in product(steel_processes, countries): regions_ct = regions.index[regions.index.str.contains(country)] - facilities = gem.query("country == @country") + facilities = steel.query("country == @country") if process == "EAF": status_list = [ @@ -277,10 +350,10 @@ def build_nodal_distribution_key( "retired", ] capacities = facilities.loc[ - facilities["Capacity operating status"].isin(status_list) + facilities["Status"].isin(status_list) & ( - facilities["Retired Date"].isna() - | facilities["Retired Date"].gt(2025) + facilities["Retired date"].isna() + | facilities["Retired date"].gt(2025) ), "Nominal EAF steel capacity (ttpa)", ].dropna() @@ -297,13 +370,12 @@ def build_nodal_distribution_key( "Nominal OHF steel capacity (ttpa)", "Nominal iron capacity (ttpa)", ] - status_filter = facilities["Capacity operating status"].isin(status_list) - retirement_filter = facilities["Retired Date"].isna() | facilities[ - "Retired Date" + status_filter = facilities["Status"].isin(status_list) + retirement_filter = facilities["Retired date"].isna() | facilities[ + "Retired date" ].gt(2030) start_filter = ( - facilities["Start date"].isna() - & ~facilities["Capacity operating status"].eq("announced") + facilities["Start date"].isna() & ~facilities["Status"].eq("announced") ) | facilities["Start date"].le(2030) capacities = ( facilities.loc[status_filter & retirement_filter & start_filter, sel] @@ -323,10 +395,10 @@ def build_nodal_distribution_key( ] capacities = ( facilities.loc[ - facilities["Capacity operating status"].isin(status_list) + facilities["Status"].isin(status_list) & ( - facilities["Retired Date"].isna() - | facilities["Retired Date"].gt(2025) + facilities["Retired date"].isna() + | facilities["Retired date"].gt(2025) ), sel, ] @@ -377,7 +449,7 @@ def build_nodal_distribution_key( snakemake = mock_snakemake( "build_industrial_distribution_key", - clusters=128, + clusters=256, ) configure_logging(snakemake) set_scenario_config(snakemake) @@ -386,18 +458,20 @@ def build_nodal_distribution_key( regions = gpd.read_file(snakemake.input.regions_onshore).set_index("name") - hotmaps = prepare_hotmaps_database(regions) + hotmaps = prepare_hotmaps_database(snakemake.input.hotmaps, regions) - gem = prepare_gem_database(regions) + steel = prepare_gem_steel_database(snakemake.input.gem_gspt, regions) - ammonia = prepare_ammonia_database(regions) + ammonia = prepare_ammonia_database(snakemake.input.ammonia, regions) - cement = prepare_cement_supplement(regions) + cement = prepare_gem_cement_database(snakemake.input.gem_gcpt, regions) - refineries = prepare_refineries_supplement(regions) + refineries = prepare_refineries_supplement( + snakemake.input.refineries_supplement, regions + ) keys = build_nodal_distribution_key( - hotmaps, gem, ammonia, cement, refineries, regions, countries + hotmaps, steel, ammonia, cement, refineries, regions, countries ) keys.to_csv(snakemake.output.industrial_distribution_key) diff --git a/scripts/build_industrial_energy_demand_per_country_today.py b/scripts/build_industrial_energy_demand_per_country_today.py index 7474ea9d2..9896a24d8 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 8282ca3a6..77f548237 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 3a767a306..e8704a798 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 @@ -91,9 +92,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 611dcfca0..43df084d6 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 bb8f58c2c..a4f152398 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 @@ -12,7 +13,7 @@ import pandas as pd import pypsa from pyproj import Transformer -from shapely import prepare +from shapely import get_point, prepare from shapely.algorithms.polylabel import polylabel from shapely.geometry import LineString, MultiLineString, Point from shapely.ops import linemerge, split @@ -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,29 +141,71 @@ 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'. """ - endpoints0 = lines[["voltage", "geometry"]].copy() - endpoints0["geometry"] = endpoints0["geometry"].apply(lambda x: x.boundary.geoms[0]) - endpoints1 = lines[["voltage", "geometry"]].copy() - endpoints1["geometry"] = endpoints1["geometry"].apply(lambda x: x.boundary.geoms[1]) + 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 + ) + endpoints1 = line_data.assign( + 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) - endpoints["bus_id"] = endpoints.index + add + 1 - endpoints["bus_id"] = "virtual" + "-" + endpoints["bus_id"].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) + ) - endpoints["contains"] = name + # 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() + ) + + # 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"]] @@ -266,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] ] @@ -300,7 +349,7 @@ def _create_merge_mapping(lines, buses, buses_polygon, geo_crs=GEO_CRS): - Identifies shared buses to remove using networkx. - Creates a network graph of lines to be merged using networkx - Identifies connected components in the graph and merges lines within each component. - - Note that only lines that unambigruosly can be merged are considered. + - Note that only lines that unambiguously can be merged are considered. Parameters ---------- @@ -527,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] @@ -635,33 +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.groupby("country").cumcount() + 1 - buses_to_rename["bus_id"] = buses_to_rename["country"] + buses_to_rename[ - "bus_id" - ].astype(str) - - # 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) @@ -729,7 +752,7 @@ def _merge_buses_to_stations( voltages = sorted( g_value["voltage"].unique(), reverse=True ) # Sort voltags in descending order - + not_virtual = ~g_value.bus_id.str.startswith("virtual_") if len(voltages) > 1: poi_x, poi_y = geo_to_dist.transform( g_value["poi"].values[0].x, g_value["poi"].values[0].y @@ -745,10 +768,11 @@ def _merge_buses_to_stations( poi_offset = Point(dist_to_geo.transform(poi_x_offset, poi_y_offset)) - # Update bus_name - g_value.loc[g_value["voltage"] == v, "bus_id"] = ( - g_name + "-" + str(int(v / 1000)) - ) + # Update bus_name if not virtual (in which case the voltage suffix is already present) + g_value.loc[ + (g_value["voltage"] == v) & not_virtual, + "bus_id", + ] = g_name + "-" + str(int(v / 1000)) # Update geometry g_value.loc[g_value["voltage"] == v, "geometry"] = poi_offset @@ -757,7 +781,9 @@ def _merge_buses_to_stations( buses_all.loc[g_value.index, "geometry"] = g_value["geometry"] else: v = voltages[0] - buses_all.loc[g_value.index, "bus_id"] = g_name + "-" + str(int(v / 1000)) + buses_all.loc[g_value.loc[not_virtual].index, "bus_id"] = ( + g_name + "-" + str(int(v / 1000)) + ) buses_all.loc[g_value.index, "geometry"] = g_value["poi"] return buses_all @@ -889,8 +915,9 @@ def _map_endpoints_to_buses( for coord in range(2): # Obtain endpoints endpoints = lines_all[["voltage", "geometry"]].copy() - endpoints["geometry"] = endpoints["geometry"].apply( - lambda x: x.boundary.geoms[coord] + # -1 * coord returns 0 for coord=0 and -1 for coord=1 + endpoints["geometry"] = get_point( + endpoints.geometry.apply(_remove_loops_from_multiline), -1 * coord ) if sjoin == "intersects": endpoints = gpd.sjoin( @@ -1168,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( @@ -1446,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. @@ -1462,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() @@ -1473,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 @@ -1487,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"} @@ -1509,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) @@ -1529,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"]) + 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) @@ -1553,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) @@ -1562,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 @@ -1576,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( @@ -1618,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 @@ -1635,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: @@ -1695,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 4a8009349..364b28635 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_swiss_energy_balances.py b/scripts/build_swiss_energy_balances.py new file mode 100644 index 000000000..51f7d62b7 --- /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 28623fb56..fce0ce52e 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/cluster_network.py b/scripts/cluster_network.py index d4abf9ba0..9eb9bd2fd 100644 --- a/scripts/cluster_network.py +++ b/scripts/cluster_network.py @@ -409,9 +409,9 @@ def clustering_for_n_clusters( if aggregation_strategies is None: aggregation_strategies = dict() - line_strategies = aggregation_strategies.get("lines", dict()) + line_strategies = dict(aggregation_strategies.get("lines", {})) - bus_strategies = aggregation_strategies.get("buses", dict()) + bus_strategies = dict(aggregation_strategies.get("buses", {})) bus_strategies.setdefault("substation_lv", lambda x: bool(x.sum())) bus_strategies.setdefault("substation_off", lambda x: bool(x.sum())) diff --git a/scripts/determine_availability_matrix.py b/scripts/determine_availability_matrix.py index b89de3f25..ea1e249fe 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) @@ -145,11 +148,11 @@ snakemake.input.gebco, codes=func, crs=4326, nodata=-1000, invert=True ) - if "min_shore_distance" in params: + if params.get("min_shore_distance") is not None: buffer = params["min_shore_distance"] excluder.add_geometry(snakemake.input.country_shapes, buffer=buffer) - if "max_shore_distance" in params: + if params.get("max_shore_distance") is not None: buffer = params["max_shore_distance"] excluder.add_geometry( snakemake.input.country_shapes, buffer=buffer, invert=True @@ -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 79b788e8f..27a091db6 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 000000000..3f0279ea2 --- /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 new file mode 100644 index 000000000..4257752a9 --- /dev/null +++ b/scripts/lib/validation/config/__init__.py @@ -0,0 +1,197 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Config validation for PyPSA-EUR. + +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 pydantic import ValidationError +from ruamel.yaml import YAML + +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.""" + 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 + + def convert_to_field_name(key: str) -> str: + """Convert dash-case to snake_case for field lookup.""" + return key.replace("-", "_") + + # 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 + config = validate_config({}) + defaults = config.model_dump(by_alias=True) + + # Create YAML instance with custom settings + yaml_writer = YAML() + yaml_writer.version = (1, 1) # Make sure to quote boolean-looking strings + yaml_writer.default_flow_style = False + yaml_writer.width = 4096 # Avoid line wrapping + yaml_writer.indent(mapping=2, sequence=2, offset=0) + + # Custom string representer for controlling quote style + def str_representer(dumper, data): + """Use block style for multiline, quotes for special chars, plain otherwise.""" + TAG = "tag:yaml.org,2002:str" + if "\n" in data: + return dumper.represent_scalar(TAG, data, style="|") + if data == "" or any(c in data for c in ":{}[]&*#?|-<>=!%@"): + return dumper.represent_scalar(TAG, data, style='"') + return dumper.represent_scalar(TAG, data, style="") + + yaml_writer.representer.add_representer(str, str_representer) + + # Create a CommentedMap to add comments + data = CommentedMap() + + # Add yaml-language-server comment at the very top (before first key) + data.yaml_set_start_comment( + f"yaml-language-server: $schema=./schema.{config._name}.json" + ) + + for key, value in defaults.items(): + data[key] = value + + field_name = convert_to_field_name(key) + docs_url = f"https://pypsa-eur.readthedocs.io/en/latest/configuration.html#{field_name}" + data.yaml_set_comment_before_after_key(key, before=f"\ndocs in {docs_url}") + + # Write to file + 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.{configname}.json") -> dict: + """Generate JSON schema file and return the schema dict.""" + import json + import math + + def resolve_refs(obj: dict, defs: dict) -> dict: + """Resolve nested schema references to show them nicely in the documentation.""" + if isinstance(obj, dict): + if "$ref" in obj: + ref_path = obj["$ref"] # "#/$defs/RunConfig + ref_name = ref_path.split("/")[-1] + if ref_name in defs: + resolved = resolve_refs(defs[ref_name].copy(), defs) + # Keep description from the reference + if "description" in obj and "description" not in resolved: + resolved["description"] = obj["description"] + return resolved + return {k: resolve_refs(v, defs) for k, v in obj.items()} + elif isinstance(obj, list): + return [resolve_refs(item, defs) for item in obj] + return obj + + def sanitize_for_json(obj): + """Replace infinity values with None for valid JSON.""" + if isinstance(obj, dict): + return {k: sanitize_for_json(v) for k, v in obj.items()} + elif isinstance(obj, list): + return [sanitize_for_json(v) for v in obj] + elif isinstance(obj, float) and math.isinf(obj): + return None + return obj + + def remove_nested_titles(obj, is_root=True): + """Remove nested titles (e.g. model class names).""" + if isinstance(obj, dict): + result = {} + for k, v in obj.items(): + if k == "title" and not is_root: + continue + result[k] = remove_nested_titles(v, is_root=False) + return result + elif isinstance(obj, list): + return [remove_nested_titles(item, is_root=False) for item in obj] + return obj + + def remove_object_type(obj, is_root=True): + """Remove 'type: object' from nested objects (redundant when properties exist).""" + if isinstance(obj, dict): + result = {} + for k, v in obj.items(): + if ( + k == "type" + and v == "object" + and not is_root + and "properties" in obj + ): + continue + result[k] = remove_object_type(v, is_root=False) + return result + elif isinstance(obj, list): + return [remove_object_type(item, is_root=False) for item in obj] + return obj + + def convert_rst_to_markdown(obj): + """Convert RST-style links in 'description' to Markdown in 'markdownDescription'.""" + + def rst_to_md(text): + """Convert RST link format `Link Text `_ to Markdown [Link Text](URL).""" + # Pattern matches: `Link Text `_ + pattern = r"`([^<>`]+)\s*<([^>]+)>`_" + return re.sub(pattern, r"[\1](\2)", text) + + if isinstance(obj, dict): + result = {} + for k, v in obj.items(): + if k == "description" and isinstance(v, str) and "`" in v and "<" in v: + result[k] = v + md_text = rst_to_md(v) + if md_text != v: + result["markdownDescription"] = md_text + else: + result[k] = convert_rst_to_markdown(v) + return result + elif isinstance(obj, list): + return [convert_rst_to_markdown(item) for item in obj] + return obj + + 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.format(configname=config._name), "w") as f: + json.dump(schema, f, indent=2) + f.write("\n") + return schema + + +__all__ = [ + "ConfigSchema", + "validate_config", + "generate_config_defaults", + "generate_config_schema", + "ValidationError", +] diff --git a/scripts/lib/validation/config/_base.py b/scripts/lib/validation/config/_base.py new file mode 100644 index 000000000..fcdad1520 --- /dev/null +++ b/scripts/lib/validation/config/_base.py @@ -0,0 +1,121 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +"""Base classes for config validation models.""" + +from abc import ABC, abstractmethod +from collections.abc import Iterator +from typing import TYPE_CHECKING, Any, TypeVar, overload + +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): + """Base model for all config classes with dict-like access for Snakemake compatibility.""" + + def __getitem__(self, key: str) -> Any: + """Enable: config['key'].""" + return getattr(self, key) + + def __contains__(self, key: str) -> bool: + """Enable: 'key' in config.""" + return hasattr(self, key) + + def get(self, key: str, default: Any = None) -> Any: + """Enable: config.get('key', default).""" + return getattr(self, key, default) + + def keys(self) -> Iterator[str]: + """Enable: config.keys().""" + return iter(self.model_fields.keys()) + + def values(self) -> Iterator[Any]: + """Enable: config.values().""" + return (getattr(self, k) for k in self.model_fields.keys()) + + 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 000000000..15e354342 --- /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/adjustments.py b/scripts/lib/validation/config/adjustments.py new file mode 100644 index 000000000..321a4375a --- /dev/null +++ b/scripts/lib/validation/config/adjustments.py @@ -0,0 +1,48 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Adjustments configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#adjustments +""" + +from pydantic import BaseModel, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _AdjustmentConfig(ConfigModel): + """Configuration for adjustment settings (factor/absolute)""" + + factor: bool | dict[str, dict[str, dict[str, float | dict[int, float]]]] = Field( + False, + description="Multiply original value with given factor", + ) + absolute: bool | dict[str, dict[str, dict[str, float | dict[int, float]]]] = Field( + False, + description="Set attribute to absolute value. Can be also a dictionary with planning horizons as keys.", + ) + + +class AdjustmentsConfig(BaseModel): + """Configuration for top-level adjustments key.""" + + electricity: bool | _AdjustmentConfig = Field( + False, + description="Parameter adjustments applied in `prepare_network`.", + ) + sector: bool | _AdjustmentConfig = Field( + default_factory=lambda: _AdjustmentConfig( + factor={ + "Link": { + "electricity distribution grid": { + "capital_cost": 1.0, + } + } + }, + absolute=False, + ), + description="Parameter adjustments applied in `prepare_sector_network`.", + ) diff --git a/scripts/lib/validation/config/atlite.py b/scripts/lib/validation/config/atlite.py new file mode 100644 index 000000000..61b101e12 --- /dev/null +++ b/scripts/lib/validation/config/atlite.py @@ -0,0 +1,146 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Atlite configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#atlite +""" + +from pydantic import BaseModel, Field, field_validator + +from scripts.lib.validation.config._base import ConfigModel + + +class _PrepareKwargsConfig(ConfigModel): + """Configuration for `atlite.cutouts.{name}.prepare_kwargs` settings.""" + + features: str | list[str] | None = Field( + None, + description="When freshly building a cutout, retrieve data only for those features. If not defined, it defaults to all available features.", + ) + sarah_dir: str | None = Field( + None, + description="Path to the location where SARAH-2 or SARAH-3 data is stored; SARAH data requires a manual separate download, see the `atlite documentation `_ for details. Required for building cutouts with SARAH, not required for ERA5 cutouts.", + ) + monthly_requests: bool | None = Field( + None, + description="Whether to use monthly requests for ERA5 data when building the cutout. Helpful to avoid running into request limits with large cutouts.", + ) + tmpdir: str | None = Field( + None, + description="Path to a temporary directory where intermediate files are stored when building the cutout. Helpful when building large cutouts.", + ) + + +class _ChunksConfig(ConfigModel): + """Configuration for `atlite.cutouts.{name}.chunks` settings.""" + + time: int | None = Field( + None, + description="Chunk size for time dimension when preparing cutout.", + ) + + +class _CutoutConfig(ConfigModel): + """Configuration for a single cutout in `atlite.cutouts`.""" + + module: str | list[str] | None = Field( + None, + description="Source of the reanalysis weather dataset (e.g. `ERA5 `_ or `SARAH-3 `_).", + ) + x: list[float] | None = Field( + None, + description="Range of longitudes [°] to download weather data for. Float interval within [-180, 180]. If not defined, it defaults to the spatial bounds of all bus shapes.", + ) + y: list[float] | None = Field( + None, + description="Range of latitudes [°] to download weather data for. Float interval within [-90, 90]. If not defined, it defaults to the spatial bounds of all bus shapes.", + ) + dx: float | None = Field( + None, + gt=0.25, + description="Grid resolution [°] for longitude. Must be larger than 0.25°.", + ) + dy: float | None = Field( + None, + gt=0.25, + description="Grid resolution [°] for latitude. Must be larger than 0.25°.", + ) + time: list[str] | None = Field( + None, + description="Time span to download weather data for. If not defined, it defaults to the time interval spanned by the snapshots.", + ) + chunks: _ChunksConfig | None = Field( + None, + description="Chunking configuration for cutout preparation.", + ) + prepare_kwargs: _PrepareKwargsConfig | None = Field( + None, + description="Dictionary of keyword arguments passed to ``atlite.Cutout.prepare()`` when building the cutout.", + ) + + @field_validator("x") + @classmethod + def validate_longitude(cls, v): + if v is not None: + if len(v) != 2: + raise ValueError("x must be a list of two floats [min, max]") + if not all(-180 <= val <= 180 for val in v): + raise ValueError("Longitude values must be within [-180, 180]") + if v[0] >= v[1]: + raise ValueError("x[0] must be less than x[1]") + return v + + @field_validator("y") + @classmethod + def validate_latitude(cls, v): + if v is not None: + if len(v) != 2: + raise ValueError("y must be a list of two floats [min, max]") + if not all(-90 <= val <= 90 for val in v): + raise ValueError("Latitude values must be within [-90, 90]") + if v[0] >= v[1]: + raise ValueError("y[0] must be less than y[1]") + return v + + +class AtliteConfig(BaseModel): + """Configuration for `atlite` settings.""" + + default_cutout: str | list[str] = Field( + "europe-2013-sarah3-era5", + description="Defines a default cutout. Can refer to a single cutout or a list of cutouts.", + ) + nprocesses: int = Field( + 16, + description="Number of parallel processes in cutout preparation.", + ) + show_progress: bool = Field( + 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( + module="era5", + x=[-12.0, 42.0], + y=[33.0, 72.0], + dx=0.3, + dy=0.3, + time=["2013", "2013"], + chunks=_ChunksConfig(time=500), + prepare_kwargs=_PrepareKwargsConfig( + features=["temperature", "height", "runoff"], + monthly_requests=True, + tmpdir="./cutouts_tmp/", + ), + ), + }, + description="Named cutout configurations.", + ) diff --git a/scripts/lib/validation/config/biomass.py b/scripts/lib/validation/config/biomass.py new file mode 100644 index 000000000..2d02af18d --- /dev/null +++ b/scripts/lib/validation/config/biomass.py @@ -0,0 +1,105 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Biomass configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#biomass +""" + +from typing import Literal + +from pydantic import BaseModel, ConfigDict, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _BiomassClassesConfig(ConfigModel): + """Configuration for `biomass.classes` settings.""" + + solid_biomass: list[str] = Field( + default_factory=lambda: [ + "Agricultural waste", + "Fuelwood residues", + "Secondary Forestry residues - woodchips", + "Sawdust", + "Residues from landscape care", + ], + alias="solid biomass", + description="The comodity that are included as solid biomass.", + ) + not_included: list[str] = Field( + default_factory=lambda: [ + "Sugar from sugar beet", + "Rape seed", + "Sunflower, soya seed ", + "Bioethanol barley, wheat, grain maize, oats, other cereals and rye", + "Miscanthus, switchgrass, RCG", + "Willow", + "Poplar", + "FuelwoodRW", + "C&P_RW", + ], + alias="not included", + description="The comodity that are not included as a biomass potential.", + ) + biogas: list[str] = Field( + default_factory=lambda: [ + "Manure solid, liquid", + "Sludge", + ], + description="The comodity that are included as biogas.", + ) + municipal_solid_waste: list[str] = Field( + default_factory=lambda: [ + "Municipal waste", + ], + alias="municipal solid waste", + description="The commodities that are included as municipal solid waste.", + ) + + model_config = ConfigDict(populate_by_name=True) + + +class BiomassConfig(BaseModel): + """Configuration for `biomass` settings.""" + + year: int = Field( + 2030, + ge=2010, + le=2050, + description="Year for which to retrieve biomass potential according to the assumptions of the `JRC ENSPRESO `_.", + ) + scenario: Literal["ENS_Low", "ENS_Med", "ENS_High"] = Field( + "ENS_Med", + description="Scenario for which to retrieve biomass potential. The scenario definition can be seen in `ENSPRESO_BIOMASS `_.", + ) + classes: _BiomassClassesConfig = Field( + default_factory=_BiomassClassesConfig, + description="Classification of biomass commodities.", + ) + share_unsustainable_use_retained: dict[int, float] = Field( + default_factory=lambda: { + 2020: 1, + 2025: 1, + 2030: 0.66, + 2035: 0.33, + 2040: 0, + 2045: 0, + 2050: 0, + }, + description="Share of unsustainable biomass use retained using primary production of Eurostat data as reference.", + ) + share_sustainable_potential_available: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0, + 2025: 0, + 2030: 0.33, + 2035: 0.66, + 2040: 1, + 2045: 1, + 2050: 1, + }, + description="Share determines phase-in of ENSPRESO biomass potentials.", + ) diff --git a/scripts/lib/validation/config/clustering.py b/scripts/lib/validation/config/clustering.py new file mode 100644 index 000000000..ccc412631 --- /dev/null +++ b/scripts/lib/validation/config/clustering.py @@ -0,0 +1,152 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Clustering configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#clustering +""" + +from typing import Literal + +from pydantic import BaseModel, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _AdministrativeConfig(ConfigModel): + """Configuration for `clustering.administrative` settings.""" + + level: Literal[0, 1, 2, 3, "bz"] = Field( + 1, + description="Level of administrative regions to cluster the network. 0: Country level, 1: NUTS1 level, 2: NUTS2 level, 3: NUTS3 level, 'bz': Bidding zones. Only applies when mode is set to `administrative`. Note that non-NUTS countries 'BA', 'MD', 'UA', and 'XK' can only be clustered to level 0 and 1.", + ) + countries: dict[str, int] = Field( + default_factory=dict, + description="Optionally include dictionary of individual country codes and their individual NUTS levels. Overwrites country-specific `level`. For example: `{'DE': 1, 'FR': 2}`. Only applies when mode is set to `administrative`.", + ) + + +class _BuildBiddingZonesConfig(BaseModel): + """Configuration for `clustering.build_bidding_zones` settings.""" + + remove_islands: bool = Field( + False, + description="Exclude from the shape file the Balearic Islands, Bornholm, the Canary Islands, the Orkney Islands, the Shetland Islands, the Azores Islands and Madeira.", + ) + aggregate_to_tyndp: bool = Field( + False, + description="Adjust the shape file to the TYNDP topology. Aggregate the Southern Norwegian bidding zones and extract Crete as a separate zone from the Greek shape.", + ) + + +class _SimplifyNetworkConfig(BaseModel): + """Configuration for `clustering.simplify_network` settings.""" + + to_substations: bool = Field( + False, + description="Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones.", + ) + remove_stubs: bool = Field( + True, + description="Controls whether radial parts of the network should be recursively aggregated. Defaults to true.", + ) + remove_stubs_across_borders: bool = Field( + False, + description="Controls whether radial parts of the network should be recursively aggregated across borders. Defaults to true.", + ) + + +class _ClusterNetworkConfig(BaseModel): + """Configuration for `clustering.cluster_network` settings.""" + + algorithm: Literal["kmeans", "hac"] = Field( + "kmeans", + description="Clustering algorithm to use.", + ) + hac_features: list[str] = Field( + default_factory=lambda: ["wnd100m", "influx_direct"], + description="List of meteorological variables contained in the weather data cutout that should be considered for hierarchical clustering.", + ) + + +class _AggregationStrategiesConfig(BaseModel): + """Configuration for `clustering.aggregation_strategies` settings.""" + + generators: dict[str, str] = Field( + default_factory=lambda: { + "committable": "any", + "ramp_limit_up": "max", + "ramp_limit_down": "max", + }, + description="Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new generator.", + ) + buses: dict[str, str] = Field( + default_factory=dict, + description="Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new bus.", + ) + + +class _TemporalConfig(BaseModel): + """Configuration for `clustering.temporal` settings.""" + + resolution_elec: bool | str = Field( + False, + description="Resample the time-resolution by averaging over every `n` snapshots in `prepare_network`. **Warning:** This option should currently only be used with electricity-only networks, not for sector-coupled networks.", + ) + resolution_sector: bool | str = Field( + False, + description="Resample the time-resolution by averaging over every `n` snapshots in `prepare_sector_network`.", + ) + + +class ClusteringConfig(BaseModel): + """Configuration for `clustering` settings.""" + + mode: Literal["busmap", "custom_busmap", "administrative", "custom_busshapes"] = ( + Field( + "busmap", + description="'busmap': Default. 'custom_busmap': Enable the use of custom busmaps in rule `cluster_network`. If activated the rule looks for provided busmaps at ``data/busmaps/base_s_{clusters}_{base_network}.csv`` which should have the same format as ``resources/busmap_base_s_{clusters}.csv``, i.e. the index should contain the buses of ``networks/base_s.nc``. {base_network} is the name of the selected base_network in electricity, e.g. ``gridkit``, ``osm-prebuilt``, or ``osm-raw``. 'administrative': Clusters and indexes the network based on the administrative regions of the countries based on ``nuts3_shapes.geojson`` (level: 1, 2, 3, bz). To activate this, additionally set the ``clusters`` wildcard in ``scenario`` to 'adm'. 'custom_busshapes': Enable the use of custom shapes in rule `cluster_network`. If activated the rule looks for provided busshapes at ``data/busshapes/base_s_{clusters}_{base_network}.geojson``.", + ) + ) + administrative: _AdministrativeConfig = Field( + default_factory=_AdministrativeConfig, + description="Administrative clustering settings.", + ) + focus_weights: bool | dict[str, float] = Field( + False, + description="Optionally specify the focus weights for the clustering of countries. For instance: `DE: 0.8` will distribute 80% of all nodes to Germany and 20% to the rest of the countries. Only applies when mode is set to `busmap`.", + ) + copperplate_regions: list[list[str]] = Field( + default_factory=list, + description="Optionally specify the regions to copperplate as a list of groups. Each group is a list of region codes that will be connected with infinite capacity lines.", + ) + build_bidding_zones: _BuildBiddingZonesConfig = Field( + default_factory=_BuildBiddingZonesConfig, + description="Build bidding zones configuration.", + ) + simplify_network: _SimplifyNetworkConfig = Field( + default_factory=_SimplifyNetworkConfig, + description="Network simplification settings.", + ) + cluster_network: _ClusterNetworkConfig = Field( + default_factory=_ClusterNetworkConfig, + description="Network clustering algorithm settings.", + ) + exclude_carriers: list[str] = Field( + default_factory=list, + description="List of carriers which will not be aggregated. If empty, all carriers will be aggregated.", + ) + consider_efficiency_classes: bool | list[float] = Field( + False, + 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, + description="Aggregation strategies for different components.", + ) + temporal: _TemporalConfig = Field( + default_factory=_TemporalConfig, + description="Options for temporal resolution.", + ) diff --git a/scripts/lib/validation/config/co2_budget.py b/scripts/lib/validation/config/co2_budget.py new file mode 100644 index 000000000..63922685c --- /dev/null +++ b/scripts/lib/validation/config/co2_budget.py @@ -0,0 +1,32 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +CO2 budget configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#co2-budget +""" + +from pydantic import Field, RootModel + + +class Co2BudgetConfig(RootModel[dict[int, float]]): + """Configuration for `co2_budget` settings.""" + + root: dict[int, float] = Field( + default_factory=lambda: { + # CO2 budget values as fraction of 1990 emissions per planning horizon year. + 2020: 0.720, # Average emissions of 2019-2021 relative to 1990, CO2 excl LULUCF + 2025: 0.648, # WAM projection from EEA Member States' GHG projections 2023 + 2030: 0.450, # 55% reduction by 2030 (Fit for 55) + 2035: 0.250, # Interpolated + 2040: 0.100, # 90% reduction target by 2040 + 2045: 0.050, # Interpolated + 2050: 0.000, # Climate-neutral by 2050 + # Sources: + # - EEA Annual European Union GHG inventory 1990-2021 (https://unfccc.int/documents/627830) + # - EEA Member States' GHG projections 2023 (https://www.eea.europa.eu/en/datahub/datahubitem-view/4b8d94a4-aed7-4e67-a54c-0623a50f48e8) + }, + description="CO2 budget as a fraction of 1990 emissions. Overwritten if `Co2Lx` or `cb` are set in `{sector_opts}` wildcard.", + ) diff --git a/scripts/lib/validation/config/conventional.py b/scripts/lib/validation/config/conventional.py new file mode 100644 index 000000000..7094aa8a9 --- /dev/null +++ b/scripts/lib/validation/config/conventional.py @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Conventional generators configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#conventional +""" + +from pydantic import ConfigDict, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class ConventionalConfig(ConfigModel): + """Configuration for `conventional` settings.""" + + model_config = ConfigDict(extra="allow") + + unit_commitment: bool = Field( + False, + description="Allow the overwrite of ramp_limit_up, ramp_limit_start_up, ramp_limit_shut_down, p_min_pu, min_up_time, min_down_time, and start_up_cost of conventional generators. Refer to the CSV file 'unit_commitment.csv'.", + ) + dynamic_fuel_price: bool = Field( + 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 new file mode 100644 index 000000000..68069fda8 --- /dev/null +++ b/scripts/lib/validation/config/costs.py @@ -0,0 +1,95 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Costs configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#costs +""" + +from pydantic import BaseModel, ConfigDict, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _EmissionPricesConfig(ConfigModel): + """Configuration for `costs.emission_prices` settings.""" + + enable: bool = Field( + False, + description="Add cost for a carbon-dioxide price configured in `costs: emission_prices: co2` to `marginal_cost` of generators. Config setting can also be enabled with the keyword `Ep` in the `{opts}` wildcard for electricity-only runs.", + ) + co2: float | dict[int, float] = Field( + 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.", + ) + dynamic: bool = Field( + False, + 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.", + ) + + +class _FillValuesConfig(BaseModel): + """Configuration for `costs.fill_values` settings.""" + + FOM: float = Field(0, description="Default fixed operation and maintenance cost.") + VOM: float = Field( + 0, description="Default variable operation and maintenance cost." + ) + efficiency: float = Field(1, description="Default efficiency.") + fuel: float = Field(0, description="Default fuel cost.") + investment: float = Field(0, description="Default investment cost.") + lifetime: int = Field(25, description="Default lifetime in years.") + CO2_intensity: float = Field( + 0, alias="CO2 intensity", description="Default CO2 intensity." + ) + discount_rate: float = Field( + 0.07, alias="discount rate", description="Default discount rate." + ) + standing_losses: float = Field( + 0, alias="standing losses", description="Default standing losses." + ) + + model_config = ConfigDict(populate_by_name=True) + + +class CostsConfig(BaseModel): + """Configuration for `costs` settings.""" + + year: int = Field( + 2050, + description="Year for which to retrieve cost assumptions of `data/costs/primary//costs_.csv`.", + ) + social_discountrate: float = Field( + 0.02, + description="Social discount rate to compare costs in different investment periods. 0.02 corresponds to a social discount rate of 2%.", + ) + fill_values: _FillValuesConfig = Field( + default_factory=_FillValuesConfig, + description="Default values if not specified for a technology in `resources/costs.csv`.", + ) + custom_cost_fn: str | None = Field( + "data/custom_costs.csv", + description="Path to the custom costs file. None if it should not be used. Default `data/custom_costs.csv` contains minor adjustments for stabilising the optimisation results.", + ) + overwrites: dict[str, dict[str, float]] = Field( + default_factory=dict, + description="For the given parameters and technologies, assumptions about their parameter are overwritten the corresponding value of the technology.", + ) + capital_cost: dict[str, float] = Field( + default_factory=dict, + description="For the given technologies, assumptions about their capital investment costs are set to the corresponding value. Optional; overwrites cost assumptions from `resources/costs.csv`.", + ) + marginal_cost: dict[str, float] = Field( + default_factory=dict, + description="For the given technologies, assumptions about their marginal operating costs are set to the corresponding value. Optional; overwrites cost assumptions from `resources/costs.csv`.", + ) + emission_prices: _EmissionPricesConfig = Field( + default_factory=_EmissionPricesConfig, + description="Specify exogenous prices for emission types listed in `network.carriers` to marginal costs.", + ) diff --git a/scripts/lib/validation/config/countries.py b/scripts/lib/validation/config/countries.py new file mode 100644 index 000000000..2e7fc046d --- /dev/null +++ b/scripts/lib/validation/config/countries.py @@ -0,0 +1,55 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Countries configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#countries +""" + +from pydantic import Field, RootModel + + +class CountriesConfig(RootModel[list[str]]): + """Configuration for `countries` settings.""" + + root: list[str] = Field( + default=[ + "AL", + "AT", + "BA", + "BE", + "BG", + "CH", + "CZ", + "DE", + "DK", + "EE", + "ES", + "FI", + "FR", + "GB", + "GR", + "HR", + "HU", + "IE", + "IT", + "LT", + "LU", + "LV", + "ME", + "MK", + "NL", + "NO", + "PL", + "PT", + "RO", + "RS", + "SE", + "SI", + "SK", + "XK", + ], + description="European countries defined by their `Two-letter country codes (ISO 3166-1) `_ which should be included in the energy system model.", + ) diff --git a/scripts/lib/validation/config/data.py b/scripts/lib/validation/config/data.py new file mode 100644 index 000000000..ae5665691 --- /dev/null +++ b/scripts/lib/validation/config/data.py @@ -0,0 +1,269 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Data source configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#data +""" + +from typing import Literal + +from pydantic import BaseModel, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _DataSourceConfig(ConfigModel): + """Configuration for a single data source.""" + + source: Literal["archive", "primary", "build"] = Field( + "archive", + description="Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + ) + version: str = Field( + "latest", + description="Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + ) + + +class DataConfig(BaseModel): + """Configuration for `data` settings.""" + + hotmaps_industrial_sites: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Hotmaps industrial sites data source configuration.", + ) + enspreso_biomass: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Enspreso biomass data source configuration.", + ) + osm: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="OSM data source configuration.", + ) + worldbank_urban_population: _DataSourceConfig = Field( + 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.", + ) + gem_gcct: _DataSourceConfig = Field( + 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.", + ) + nitrogen_statistics: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Nitrogen statistics data source configuration.", + ) + eu_nuts2013: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="EU NUTS 2013 data source configuration.", + ) + eu_nuts2021: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="EU NUTS 2021 data source configuration.", + ) + eurostat_balances: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Eurostat balances data source configuration.", + ) + eurostat_household_balances: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Eurostat household balances data source configuration.", + ) + wdpa: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="WDPA data source configuration.", + ) + wdpa_marine: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="WDPA Marine data source configuration.", + ) + luisa_land_cover: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="LUISA land cover data source configuration.", + ) + jrc_idees: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="JRC IDEES data source configuration.", + ) + scigrid_gas: _DataSourceConfig = Field( + default_factory=lambda: _DataSourceConfig(source="primary"), + description="SciGRID Gas data source configuration.", + ) + seawater_temperature: _DataSourceConfig = Field( + 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.", + ) + opsd_electricity_demand: _DataSourceConfig = Field( + default_factory=lambda: _DataSourceConfig(source="archive"), + description="OPSD electricity demand data source configuration.", + ) + entsoe_electricity_demand: _DataSourceConfig = Field( + default_factory=lambda: _DataSourceConfig(source="archive"), + description="ENTSO-E electricity demand data source configuration.", + ) + neso_electricity_demand: _DataSourceConfig = Field( + default_factory=lambda: _DataSourceConfig(source="archive"), + description="NESO electricity demand data source configuration.", + ) + copernicus_land_cover: _DataSourceConfig = Field( + default_factory=lambda: _DataSourceConfig(source="primary"), + description="Copernicus land cover data source configuration.", + ) + ship_raster: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Ship raster data source configuration.", + ) + eez: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="EEZ data source configuration.", + ) + nuts3_population: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="NUTS3 population data source configuration.", + ) + gdp_per_capita: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="GDP per capita data source configuration.", + ) + population_count: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Population count data source configuration.", + ) + ghg_emissions: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="GHG emissions data source configuration.", + ) + gebco: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="GEBCO data source configuration.", + ) + attributed_ports: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Attributed ports data source configuration.", + ) + corine: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="CORINE data source configuration.", + ) + emobility: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="E-mobility data source configuration.", + ) + h2_salt_caverns: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="H2 salt caverns data source configuration.", + ) + lau_regions: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="LAU regions data source configuration.", + ) + aquifer_data: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Aquifer data source configuration.", + ) + osm_boundaries: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="OSM boundaries data source configuration.", + ) + gem_gspt: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="GEM GSPT data source configuration.", + ) + tyndp: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="TYNDP data source configuration.", + ) + powerplants: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Powerplants data source configuration.", + ) + costs: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Costs data source configuration.", + ) + country_runoff: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Country runoff data source configuration.", + ) + country_hdd: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Country HDD data source configuration.", + ) + natura: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Natura data source configuration.", + ) + bfs_road_vehicle_stock: _DataSourceConfig = Field( + default_factory=lambda: _DataSourceConfig(source="primary"), + description="BFS road vehicle stock data source configuration.", + ) + bfs_gdp_and_population: _DataSourceConfig = Field( + default_factory=lambda: _DataSourceConfig(source="primary"), + description="BFS GDP and population data source configuration.", + ) + mobility_profiles: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Mobility profiles data source configuration.", + ) + cutout: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Cutout data source configuration.", + ) + dh_areas: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="District heating areas data source configuration.", + ) + geothermal_heat_utilisation_potentials: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Geothermal heat utilisation potentials data source configuration.", + ) + jrc_ardeco: _DataSourceConfig = Field( + 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.", + ) + bidding_zones_entsoepy: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="Entsoepy bidding zones data source configuration.", + ) diff --git a/scripts/lib/validation/config/electricity.py b/scripts/lib/validation/config/electricity.py new file mode 100644 index 000000000..d343cb06c --- /dev/null +++ b/scripts/lib/validation/config/electricity.py @@ -0,0 +1,265 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Electricity configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#electricity +""" + +from typing import Literal + +from pydantic import BaseModel, ConfigDict, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _OperationalReserveConfig(ConfigModel): + """Configuration for `electricity.operational_reserve` settings.""" + + activate: bool = Field( + False, + description="Whether to take operational reserve requirements into account during optimisation.", + ) + epsilon_load: float = Field( + 0.02, + description="share of total load.", + ) + epsilon_vres: float = Field( + 0.02, + description="share of total renewable supply.", + ) + contingency: float = Field( + 4000, + description="Fixed reserve capacity (MW).", + ) + + +class _MaxHoursConfig(BaseModel): + """Configuration for `electricity.max_hours` settings.""" + + battery: float = Field( + 6, + description="Maximum state of charge capacity of the battery in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + ) + li_ion: float = Field( + 6, + description="Maximum state of charge capacity of the lithium-ion storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + alias="li-ion", + ) + lfp: float = Field( + 6, + description="Maximum state of charge capacity of the lithium-ion-LFP storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + ) + vanadium: float = Field( + 10, + description="Maximum state of charge capacity of the vanadium-redox-flow storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + ) + lair: float = Field( + 12, + description="Maximum state of charge capacity of the liquid-air storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + ) + pair: float = Field( + 24, + description="Maximum state of charge capacity of the compressed-air-adiabatic storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + ) + iron_air: float = Field( + 100, + description="Maximum state of charge capacity of the iron-air storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + alias="iron-air", + ) + H2: float = Field( + 168, + description="Maximum state of charge capacity of the hydrogen storage in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + ) + + +class _ExtendableCarriersConfig(BaseModel): + """Configuration for `electricity.extendable_carriers` settings.""" + + Generator: list[str] = Field( + default_factory=lambda: [ + "solar", + "solar-hsat", + "onwind", + "offwind-ac", + "offwind-dc", + "offwind-float", + "OCGT", + "CCGT", + ], + description="Defines existing or non-existing conventional and renewable power plants to be extendable during the optimization. Conventional generators can only be built/expanded where already existent today. If a listed conventional carrier is not included in the `conventional_carriers` list, the lower limit of the capacity expansion is set to 0.", + ) + StorageUnit: list[str] = Field( + default_factory=list, + description="Adds extendable storage units at every node/bus after clustering without capacity limits and with zero initial capacity. Supported technologies include battery, H2, li-ion, vanadium, lfp, lair, pair, and iron-air.", + ) + Store: list[str] = Field( + default_factory=lambda: ["battery", "H2"], + description="Adds extendable storage units at every node/bus after clustering without capacity limits and with zero initial capacity. Supported technologies include battery, H2, li-ion, vanadium, lfp, lair, pair, and iron-air.", + ) + Link: list[str] = Field( + default_factory=list, + description="Adds extendable links (H2 pipelines only) at every connection where there are lines or HVDC links without capacity limits and with zero initial capacity. Hydrogen pipelines require hydrogen storage to be modelled as `Store`.", + ) + + +class _TechnologyMappingConfig(BaseModel): + """Configuration for `electricity.estimate_renewable_capacities.technology_mapping` settings.""" + + Offshore: str = Field( + "offwind-ac", + description="PyPSA-Eur carrier that is considered for existing offshore wind technology (IRENA, GEM).", + ) + Onshore: str = Field( + "onwind", + description="PyPSA-Eur carrier that is considered for existing onshore wind capacities (IRENA, GEM).", + ) + PV: str = Field( + "solar", + description="PyPSA-Eur carrier that is considered for existing solar PV capacities (IRENA, GEM).", + ) + + +class _EstimateRenewableCapacitiesConfig(BaseModel): + """Configuration for `electricity.estimate_renewable_capacities` settings.""" + + enable: bool = Field( + 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_powerplantmatching: bool = Field( + True, + 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( + 2024, + description="Renewable capacities are based on existing capacities reported by IRENA (IRENASTAT) for the specified year.", + ) + expansion_limit: float | bool = Field( + False, + description="Artificially limit maximum IRENA capacities to a factor. For example, an `expansion_limit: 1.1` means 110% of capacities. If false are chosen, the estimated renewable potentials determine by the workflow are used.", + ) + technology_mapping: _TechnologyMappingConfig = Field( + default_factory=_TechnologyMappingConfig, + description="Mapping between PyPSA-Eur and powerplantmatching technology names.", + ) + + +class _AutarkyConfig(BaseModel): + """Configuration for `electricity.autarky` settings.""" + + enable: bool = Field( + False, + description="Require each node to be autarkic by removing all lines and links.", + ) + by_country: bool = Field( + False, + description="Require each country to be autarkic by removing all cross-border lines and links. `electricity: autarky` must be enabled.", + ) + + +class ElectricityConfig(BaseModel): + """Configuration for `electricity` settings.""" + + voltages: list[float] = Field( + default_factory=lambda: [220.0, 300.0, 330.0, 380.0, 400.0, 500.0, 750.0], + description="Voltage levels to consider.", + ) + base_network: Literal["entsoegridkit", "osm", "tyndp"] = Field( + "osm", + description="Specify the underlying base network, i.e. GridKit (based on ENTSO-E web map extract), OpenStreetMap (OSM), or TYNDP.", + ) + gaslimit_enable: bool = Field( + False, + description="Add an overall absolute gas limit configured in `electricity: gaslimit`.", + ) + gaslimit: float | bool = Field( + False, + description="Global gas usage limit.", + ) + co2limit_enable: bool = Field( + False, + description="Add an overall absolute carbon-dioxide emissions limit configured in `electricity: co2limit` in `prepare_network`. **Warning:** This option should currently only be used with electricity-only networks, not for sector-coupled networks.", + ) + co2limit: float = Field( + 7.75e7, + description="Cap on total annual system carbon dioxide emissions.", + ) + co2base: float = Field( + 1.487e9, + description="Reference value of total annual system carbon dioxide emissions if relative emission reduction target is specified in `{opts}` wildcard.", + ) + operational_reserve: _OperationalReserveConfig = Field( + default_factory=_OperationalReserveConfig, + description="Settings for reserve requirements following `GenX `_.", + ) + max_hours: _MaxHoursConfig = Field( + default_factory=_MaxHoursConfig, + description="Maximum storage hours configuration.", + ) + extendable_carriers: _ExtendableCarriersConfig = Field( + default_factory=_ExtendableCarriersConfig, + description="Defines which carriers are extendable during optimization.", + ) + powerplants_filter: str | bool = Field( + "(DateOut > 2025 or DateOut != DateOut) and (DateIn < 2026 or DateIn != DateIn)", + description="Filter query for the default powerplant database.", + ) + custom_powerplants: str | bool = Field( + False, + description="Filter query for the custom powerplant database.", + ) + everywhere_powerplants: list[str] = Field( + default_factory=list, + description="List of conventional power plants to add to every node in the model with zero initial capacity. To be used in combination with `extendable_carriers` to allow for building conventional powerplants irrespective of existing locations.", + ) + conventional_carriers: list[str] = Field( + default_factory=lambda: [ + "nuclear", + "oil", + "OCGT", + "CCGT", + "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.", + ) + renewable_carriers: list[str] = Field( + default_factory=lambda: [ + "solar", + "solar-hsat", + "onwind", + "offwind-ac", + "offwind-dc", + "offwind-float", + "hydro", + ], + description="List of renewable generators to include in the model.", + ) + estimate_renewable_capacities: _EstimateRenewableCapacitiesConfig = Field( + 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.", + ) + transmission_limit: str = Field( + "vopt", + description="Limit on transmission expansion. The first part can be `v` (for setting a limit on line volume) or `c` (for setting a limit on line cost). The second part can be `opt` or a float bigger than one (e.g. 1.25). If `opt` is chosen line expansion is optimised according to its capital cost (where the choice `v` only considers overhead costs for HVDC transmission lines, while `c` uses more accurate costs distinguishing between overhead and underwater sections and including inverter pairs). The setting `v1.25` will limit the total volume of line expansion to 25% of currently installed capacities weighted by individual line lengths. The setting `c1.25` will allow to build a transmission network that costs no more than 25 % more than the current system.", + ) + + model_config = ConfigDict(populate_by_name=True) diff --git a/scripts/lib/validation/config/enable.py b/scripts/lib/validation/config/enable.py new file mode 100644 index 000000000..74b529854 --- /dev/null +++ b/scripts/lib/validation/config/enable.py @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Enable configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#enable +""" + +from pydantic import Field + +from scripts.lib.validation.config._base import ConfigModel + + +class EnableConfig(ConfigModel): + """Configuration for `enable` settings.""" + + drop_leap_day: bool = Field( + True, + description="Switch to drop February 29 from all time-dependent data in leap years.", + ) diff --git a/scripts/lib/validation/config/energy.py b/scripts/lib/validation/config/energy.py new file mode 100644 index 000000000..df3a184ae --- /dev/null +++ b/scripts/lib/validation/config/energy.py @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Energy configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#energy +""" + +from pydantic import Field + +from scripts.lib.validation.config._base import ConfigModel + + +class EnergyConfig(ConfigModel): + """Configuration for `energy` settings.""" + + energy_totals_year: int = Field( + 2023, + description="The year for the sector energy use. The year must be available in the Eurostat report.", + ) + base_emissions_year: int = Field( + 1990, + description="The base year for the sector emissions. See `European Environment Agency (EEA) `_.", + ) + emissions: str = Field( + "CO2", + description="Specify which sectoral emissions are taken into account. Data derived from EEA. Currently only CO2 is implemented.", + ) diff --git a/scripts/lib/validation/config/existing_capacities.py b/scripts/lib/validation/config/existing_capacities.py new file mode 100644 index 000000000..b98419ff3 --- /dev/null +++ b/scripts/lib/validation/config/existing_capacities.py @@ -0,0 +1,67 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Existing capacities configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#existing-capacities +""" + +from pydantic import Field + +from scripts.lib.validation.config._base import ConfigModel + + +class ExistingCapacitiesConfig(ConfigModel): + """Configuration for `existing_capacities` settings.""" + + grouping_years_power: list[int] = Field( + default_factory=lambda: [ + 1920, + 1950, + 1955, + 1960, + 1965, + 1970, + 1975, + 1980, + 1985, + 1990, + 1995, + 2000, + 2005, + 2010, + 2015, + 2020, + 2025, + 2030, + ], + description="Intervals to group existing capacities for power.", + ) + grouping_years_heat: list[int] = Field( + default_factory=lambda: [ + 1980, + 1985, + 1990, + 1995, + 2000, + 2005, + 2010, + 2015, + 2019, + ], + description="Intervals to group existing capacities for heat.", + ) + threshold_capacity: float = Field( + 10, + description="Capacities (MW) of generators and links below threshold are removed during add_existing_capacities.", + ) + default_heating_lifetime: int = Field( + 20, + description="Default lifetime for heating technologies (years).", + ) + conventional_carriers: list[str] = Field( + default_factory=lambda: ["lignite", "coal", "oil", "uranium"], + description="List of conventional power plants to include in the sectoral network.", + ) diff --git a/scripts/lib/validation/config/foresight.py b/scripts/lib/validation/config/foresight.py new file mode 100644 index 000000000..86d92c813 --- /dev/null +++ b/scripts/lib/validation/config/foresight.py @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Foresight configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#foresight +""" + +from typing import Literal + +from pydantic import Field, RootModel + + +class ForesightConfig(RootModel[Literal["overnight", "myopic", "perfect"]]): + """Configuration for `foresight` settings.""" + + root: Literal["overnight", "myopic", "perfect"] = Field( + "overnight", + description="See Foresight Options for detail explanations.", + ) diff --git a/scripts/lib/validation/config/industry.py b/scripts/lib/validation/config/industry.py new file mode 100644 index 000000000..89d337513 --- /dev/null +++ b/scripts/lib/validation/config/industry.py @@ -0,0 +1,210 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Industry configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry +""" + +from pydantic import Field + +from scripts.lib.validation.config._base import ConfigModel + + +class IndustryConfig(ConfigModel): + """Configuration for `industry` settings.""" + + St_primary_fraction: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0.6, + 2025: 0.55, + 2030: 0.5, + 2035: 0.45, + 2040: 0.4, + 2045: 0.35, + 2050: 0.3, + }, + description="The fraction of steel produced via primary route versus secondary route (scrap+EAF). Current fraction is 0.6.", + ) + DRI_fraction: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0, + 2025: 0, + 2030: 0.05, + 2035: 0.2, + 2040: 0.4, + 2045: 0.7, + 2050: 1, + }, + description="The fraction of the primary route DRI + EAF.", + ) + H2_DRI: float = Field( + 1.7, + description="The hydrogen consumption in Direct Reduced Iron (DRI) Mwh_H2 LHV/ton_Steel from 51kgH2/tSt in `Vogl et al (2018) `_.", + ) + elec_DRI: float = Field( + 0.322, + description="The electricity consumed in Direct Reduced Iron (DRI) shaft. From `HYBRIT brochure `_.", + ) + Al_primary_fraction: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0.4, + 2025: 0.375, + 2030: 0.35, + 2035: 0.325, + 2040: 0.3, + 2045: 0.25, + 2050: 0.2, + }, + description="The fraction of aluminium produced via the primary route versus scrap. Current fraction is 0.4.", + ) + MWh_NH3_per_tNH3: float = Field( + 5.166, + description="The energy amount per ton of ammonia (LHV).", + ) + MWh_CH4_per_tNH3_SMR: float = Field( + 10.8, + description="The energy amount of methane needed to produce a ton of ammonia using steam methane reforming (SMR). Value derived from 2012's demand from `Center for European Policy Studies (2008) `_.", + ) + MWh_elec_per_tNH3_SMR: float = Field( + 0.7, + description="The energy amount of electricity needed to produce a ton of ammonia using steam methane reforming (SMR). same source, assuming 94-6% split methane-elec of total energy demand 11.5 MWh/tNH3.", + ) + MWh_H2_per_tNH3_electrolysis: float = Field( + 5.93, + description="The energy amount of hydrogen needed to produce a ton of ammonia using Haber–Bosch process. From `Wang et al (2018) `_, Base value assumed around 0.197 tH2/tHN3 (>3/17 since some H2 lost and used for energy).", + ) + MWh_elec_per_tNH3_electrolysis: float = Field( + 0.2473, + description="The energy amount of electricity needed to produce a ton of ammonia using Haber–Bosch process. From `Wang et al (2018) `_, Table 13 (air separation and HB).", + ) + MWh_NH3_per_MWh_H2_cracker: float = Field( + 1.46, + description="The energy amount of amonia needed to produce an energy amount hydrogen using ammonia cracker.", + ) + NH3_process_emissions: float = Field( + 24.5, + description="The emission of ammonia production from steam methane reforming (SMR). From UNFCCC for 2015 for EU28.", + ) + petrochemical_process_emissions: float = Field( + 25.5, + description="The emission of petrochemical production. From UNFCCC for 2015 for EU28.", + ) + HVC_primary_fraction: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0.88, + 2025: 0.85, + 2030: 0.78, + 2035: 0.7, + 2040: 0.6, + 2045: 0.5, + 2050: 0.4, + }, + description="The fraction of high value chemicals (HVC) produced via primary route.", + ) + HVC_mechanical_recycling_fraction: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0.12, + 2025: 0.15, + 2030: 0.18, + 2035: 0.21, + 2040: 0.24, + 2045: 0.27, + 2050: 0.30, + }, + description="The fraction of high value chemicals (HVC) produced using mechanical recycling.", + ) + HVC_chemical_recycling_fraction: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0.0, + 2025: 0.0, + 2030: 0.04, + 2035: 0.08, + 2040: 0.12, + 2045: 0.16, + 2050: 0.20, + }, + description="The fraction of high value chemicals (HVC) produced using chemical recycling.", + ) + HVC_environment_sequestration_fraction: float | dict[int, float] = Field( + 0.0, + description="The fraction of high value chemicals (HVC) put into landfill resulting in additional carbon sequestration. The default value is 0.", + ) + waste_to_energy: bool = Field( + False, + description="Switch to enable expansion of waste to energy CHPs for conversion of plastics. Default is false.", + ) + waste_to_energy_cc: bool = Field( + False, + description="Switch to enable expansion of waste to energy CHPs for conversion of plastics with carbon capture. Default is false.", + ) + sector_ratios_fraction_future: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0.0, + 2025: 0.05, + 2030: 0.2, + 2035: 0.45, + 2040: 0.7, + 2045: 0.85, + 2050: 1.0, + }, + description="The fraction of total progress in fuel and process switching achieved in the industry sector.", + ) + basic_chemicals_without_NH3_production_today: float = Field( + 69.0, + description="The amount of basic chemicals produced without ammonia (= 86 Mtethylene-equiv - 17 MtNH3).", + ) + HVC_production_today: float = Field( + 52.0, + description="The amount of high value chemicals (HVC) produced. This includes ethylene, propylene and BTX. From `DECHEMA (2017) `_, Figure 16, page 107.", + ) + MWh_elec_per_tHVC_mechanical_recycling: float = Field( + 0.547, + description="The energy amount of electricity needed to produce a ton of high value chemical (HVC) using mechanical recycling. From SI of `Meys et al (2020) `_, Table S5, for HDPE, PP, PS, PET. LDPE would be 0.756.", + ) + MWh_elec_per_tHVC_chemical_recycling: float = Field( + 6.9, + description="The energy amount of electricity needed to produce a ton of high value chemical (HVC) using chemical recycling. The default value is based on pyrolysis and electric steam cracking. From `Material Economics (2019) `_, page 125.", + ) + chlorine_production_today: float = Field( + 9.58, + description="The amount of chlorine produced. From `DECHEMA (2017) `_, Table 7, page 43.", + ) + MWh_elec_per_tCl: float = Field( + 3.6, + description="The energy amount of electricity needed to produce a ton of chlorine. From `DECHEMA (2017) `_, Table 6 page 43.", + ) + MWh_H2_per_tCl: float = Field( + -0.9372, + description="The energy amount of hydrogen needed to produce a ton of chlorine. The value is negative since hydrogen produced in chloralkali process. From `DECHEMA (2017) `_, page 43.", + ) + methanol_production_today: float = Field( + 1.5, + description="The amount of methanol produced. From `DECHEMA (2017) `_, page 62.", + ) + MWh_elec_per_tMeOH: float = Field( + 0.167, + 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 fossil gas. From `DECHEMA (2017) `_, Table 14, page 65.", + ) + MWh_MeOH_per_tMeOH: float = Field( + 5.528, + description="The energy amount per ton of methanol (LHV). From `DECHEMA (2017) `_, page 74.", + ) + hotmaps_locate_missing: bool = Field( + False, + description="Locate industrial sites without valid locations based on city and countries.", + ) + reference_year: int = Field( + 2019, + description="The year used as the baseline for industrial energy demand and production. Data extracted from `JRC-IDEES 2015 `_.", + ) + oil_refining_emissions: float = Field( + 0.013, + description="The emissions from oil fuel processing (e.g. oil in petrochemical refinieries). The default value of 0.013 tCO2/MWh is based on DE statistics for 2019; the EU value is very similar.", + ) diff --git a/scripts/lib/validation/config/lines.py b/scripts/lib/validation/config/lines.py new file mode 100644 index 000000000..7ef71cc85 --- /dev/null +++ b/scripts/lib/validation/config/lines.py @@ -0,0 +1,91 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Lines configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#lines +""" + +from typing import Literal + +from pydantic import BaseModel, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _DynamicLineRatingConfig(ConfigModel): + """Configuration for `lines.dynamic_line_rating` settings.""" + + activate: bool = Field( + False, + description="Whether to take dynamic line rating into account.", + ) + cutout: str | list[str] = Field( + "default", + description="Specifies the weather data cutout file(s) to use.", + ) + correction_factor: float = Field( + 0.95, + description="Factor to compensate for overestimation of wind speeds in hourly averaged wind data.", + ) + max_voltage_difference: float | Literal[False] = Field( + False, + description="Maximum voltage angle difference in degrees or 'false' to disable.", + ) + max_line_rating: float | Literal[False] = Field( + False, + description="Maximum line rating relative to nominal capacity without DLR, e.g. 1.3 or 'false' to disable.", + ) + + +class LinesConfig(BaseModel): + """Configuration for `lines` settings.""" + + types: dict[float, str] = Field( + default_factory=lambda: { + 63.0: "94-AL1/15-ST1A 20.0", + 66.0: "94-AL1/15-ST1A 20.0", + 90.0: "184-AL1/30-ST1A 110.0", + 110.0: "184-AL1/30-ST1A 110.0", + 132.0: "243-AL1/39-ST1A 110.0", + 150.0: "243-AL1/39-ST1A 110.0", + 220.0: "Al/St 240/40 2-bundle 220.0", + 300.0: "Al/St 240/40 3-bundle 300.0", + 330.0: "Al/St 240/40 3-bundle 300.0", + 380.0: "Al/St 240/40 4-bundle 380.0", + 400.0: "Al/St 240/40 4-bundle 380.0", + 500.0: "Al/St 240/40 4-bundle 380.0", + 750.0: "Al/St 560/50 4-bundle 750.0", + }, + description="Specifies line types to assume for the different voltage levels of the ENTSO-E grid extraction. Should normally handle voltage levels 220, 300, and 380 kV.", + ) + s_max_pu: float = Field( + 0.7, + description="Correction factor for line capacities (`s_nom`) to approximate N-1 security and reserve capacity for reactive power flows.", + ) + s_nom_max: float = Field( + float("inf"), + description="Global upper limit for the maximum capacity of each extendable line (MW).", + ) + max_extension: float = Field( + 20000, + description="Upper limit for the extended capacity of each extendable line (MW).", + ) + length_factor: float = Field( + 1.25, + description="Correction factor to account for the fact that buses are *not* connected by lines through air-line distance.", + ) + reconnect_crimea: bool = Field( + True, + description="Whether to reconnect Crimea to the Ukrainian grid.", + ) + under_construction: Literal["zero", "remove", "keep"] = Field( + "keep", + description="Specifies how to handle lines which are currently under construction.", + ) + dynamic_line_rating: _DynamicLineRatingConfig = Field( + default_factory=_DynamicLineRatingConfig, + description="Configuration for dynamic line rating.", + ) diff --git a/scripts/lib/validation/config/links.py b/scripts/lib/validation/config/links.py new file mode 100644 index 000000000..a994c20af --- /dev/null +++ b/scripts/lib/validation/config/links.py @@ -0,0 +1,44 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Links configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#links +""" + +from typing import Literal + +from pydantic import Field + +from scripts.lib.validation.config._base import ConfigModel + + +class LinksConfig(ConfigModel): + """Configuration for `links` settings.""" + + p_max_pu: float = Field( + 1.0, + description="Correction factor for link capacities `p_nom`.", + ) + p_min_pu: float = Field( + -1.0, + description="Correction factor for link capacities `p_nom`.", + ) + p_nom_max: float = Field( + float("inf"), + description="Global upper limit for the maximum capacity of each extendable DC link (MW).", + ) + max_extension: float = Field( + 30000, + description="Upper limit for the extended capacity of each extendable DC link (MW).", + ) + length_factor: float = Field( + 1.25, + description="Correction factor to account for the fact that buses are *not* connected by links through air-line distance.", + ) + under_construction: Literal["zero", "remove", "keep"] = Field( + "keep", + description="Specifies how to handle lines which are currently under construction.", + ) diff --git a/scripts/lib/validation/config/load.py b/scripts/lib/validation/config/load.py new file mode 100644 index 000000000..f4819a1e7 --- /dev/null +++ b/scripts/lib/validation/config/load.py @@ -0,0 +1,76 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Load configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#load +""" + +from pydantic import BaseModel, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _FillGapsConfig(ConfigModel): + """Configuration for `load.fill_gaps` settings.""" + + enable: bool = Field( + True, + description="Whether to fill gaps using interpolation for small gaps and time shift for large gaps.", + ) + interpolate_limit: int = Field( + 6, + description="Maximum gap size (consecutive nans) which interpolated linearly.", + ) + time_shift_for_large_gaps: str = Field( + "1w", + description="Periods which are used for copying time-slices in order to fill large gaps of nans. Have to be valid `pandas` period strings.", + ) + + +class _DistributionKeyConfig(BaseModel): + """Configuration for `load.distribution_key` settings.""" + + gdp: float = Field( + 0.6, + description="Weighting factor for the GDP data in the distribution key.", + ) + population: float = Field( + 0.4, + description="Weighting factor for the population data in the distribution key.", + ) + + +class LoadConfig(BaseModel): + """Configuration for `load` settings.""" + + fill_gaps: _FillGapsConfig = Field( + default_factory=_FillGapsConfig, + description="Gaps filling strategy used.", + ) + manual_adjustments: bool = Field( + True, + description="Whether to adjust the load data manually according to the function in `manual_adjustment`.", + ) + scaling_factor: float = Field( + 1.0, + description="Global correction factor for the load time series.", + ) + fixed_year: int | bool = Field( + False, + description="To specify a fixed year for the load time series that deviates from the snapshots' year.", + ) + supplement_synthetic: bool = Field( + 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/overpass_api.py b/scripts/lib/validation/config/overpass_api.py new file mode 100644 index 000000000..5ab095fc2 --- /dev/null +++ b/scripts/lib/validation/config/overpass_api.py @@ -0,0 +1,49 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Overpass API configuration. +""" + +from pydantic import BaseModel, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _UserAgentConfig(ConfigModel): + """Configuration for `overpass_api.user_agent` settings.""" + + project_name: str = Field( + "PyPSA-Eur", + description="Project name used to identify the user agent of the Overpass API requests.", + ) + email: str = Field( + "contact@pypsa.org", + description="Contact email address for the project using the Overpass API.", + ) + website: str = Field( + "https://github.com/PyPSA/pypsa-eur", + description="Website URL for the project using the Overpass API.", + ) + + +class OverpassApiConfig(BaseModel): + """Configuration for `overpass_api` settings.""" + + url: str = Field( + "https://overpass-api.de/api/interpreter", + description="Overpass API endpoint URL. See `Overpass API Wiki `_ for available public instances.", + ) + max_tries: int = Field( + 5, + description="Maximum retry attempts for Overpass API requests. Please be respectful to the Overpass API fair use policy of the individual instances.", + ) + timeout: int = Field( + 600, + description="Timeout in seconds for Overpass API requests.", + ) + user_agent: _UserAgentConfig = Field( + default_factory=_UserAgentConfig, + description="Please provide your own user agent details when using the Overpass API,so the instance operators can contact you if needed.", + ) diff --git a/scripts/lib/validation/config/pypsa_eur.py b/scripts/lib/validation/config/pypsa_eur.py new file mode 100644 index 000000000..2ffbf0b57 --- /dev/null +++ b/scripts/lib/validation/config/pypsa_eur.py @@ -0,0 +1,49 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +PyPSA-Eur component configuration. + +Regulates what components with which carriers are kept from PyPSA-Eur. +Some technologies are removed because they are implemented differently +(e.g. battery or H2 storage) or have different year-dependent costs. +""" + +from pydantic import Field + +from scripts.lib.validation.config._base import ConfigModel + + +class PypsaEurConfig(ConfigModel): + """Configuration for `pypsa_eur` settings.""" + + Bus: list[str] = Field( + default_factory=lambda: ["AC"], + description="Bus carriers to keep from PyPSA-Eur.", + ) + Link: list[str] = Field( + default_factory=lambda: ["DC"], + description="Link carriers to keep from PyPSA-Eur.", + ) + Generator: list[str] = Field( + default_factory=lambda: [ + "onwind", + "offwind-ac", + "offwind-dc", + "offwind-float", + "solar-hsat", + "solar", + "ror", + "nuclear", + ], + description="Generator carriers to keep from PyPSA-Eur.", + ) + StorageUnit: list[str] = Field( + default_factory=lambda: ["PHS", "hydro"], + description="StorageUnit carriers to keep from PyPSA-Eur.", + ) + Store: list[str] = Field( + default_factory=list, + description="Store carriers to keep from PyPSA-Eur.", + ) diff --git a/scripts/lib/validation/config/renewable.py b/scripts/lib/validation/config/renewable.py new file mode 100644 index 000000000..ec3b5d9c3 --- /dev/null +++ b/scripts/lib/validation/config/renewable.py @@ -0,0 +1,357 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Renewable energy configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#renewable +""" + +from pydantic import BaseModel, ConfigDict, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _WindResourceConfig(ConfigModel): + """Configuration for wind resource settings.""" + + method: str = Field("wind", description="A superordinate technology type.") + turbine: str | dict[int, str] | dict[int, dict] = Field( + ..., + description="Specifies the turbine type and its characteristic power curve. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available.", + ) + smooth: bool = Field( + False, + description="Switch to apply a gaussian kernel density smoothing to the power curve.", + ) + add_cutout_windspeed: bool = Field( + True, + description="Whether to add cutout windspeed data.", + ) + + +class _SolarResourceConfig(BaseModel): + """Configuration for solar resource settings.""" + + method: str = Field("pv", description="A superordinate technology type.") + panel: str | dict[int, str] = Field( + "CSi", + description="Specifies the solar panel technology and its characteristic attributes. Can be a string or a dictionary with years as keys which denote the year another panel model becomes available.", + ) + orientation: dict[str, float] = Field( + default_factory=lambda: {"slope": 35.0, "azimuth": 180.0}, + description="Panel orientation with slope and azimuth.", + ) + tracking: str | None = Field( + None, + description="Tracking type (e.g., 'horizontal').", + ) + + +class _CorineConfig(BaseModel): + """Configuration for CORINE land cover settings.""" + + grid_codes: list[int] = Field( + ..., + description="Specifies areas according to CORINE Land Cover codes which are generally eligible for wind turbine placement.", + ) + distance: float = Field( + 1000, + description="Distance in meters to keep from areas specified in `distance_grid_codes`.", + ) + distance_grid_codes: list[int] = Field( + default_factory=list, + description="Specifies areas according to CORINE Land Cover codes to which wind turbines must maintain a distance specified in the setting `distance`.", + ) + + +class _OnwindConfig(BaseModel): + """Configuration for onshore wind.""" + + cutout: str | list[str] = Field( + "default", description="Specifies the weather data cutout file(s) to use." + ) + resource: _WindResourceConfig = Field( + default_factory=lambda: _WindResourceConfig(turbine="Vestas_V112_3MW"), + description="Wind resource configuration.", + ) + resource_classes: int = Field( + 1, description="Number of resource classes per clustered region." + ) + capacity_per_sqkm: float = Field( + 3, description="Allowable density of wind turbine placement." + ) + correction_factor: float = Field( + 1.0, description="Correction factor for capacity factor time series." + ) + corine: bool | _CorineConfig = Field( + default_factory=lambda: _CorineConfig( + grid_codes=[ + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 31, + 32, + ], + distance=1000, + distance_grid_codes=[1, 2, 3, 4, 5, 6], + ), + description="CORINE land cover configuration.", + ) + luisa: bool | dict = Field(False, description="LUISA land cover configuration.") + natura: bool = Field( + True, + description="Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + ) + excluder_resolution: float = Field( + 100, + description="Resolution in meters on which to perform geographical eligibility analysis.", + ) + clip_p_max_pu: float = Field( + 0.01, + description="To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + ) + + +class _OffwindConfig(BaseModel): + """Configuration for offshore wind.""" + + cutout: str | list[str] = Field( + "default", description="Specifies the weather data cutout file(s) to use." + ) + resource: _WindResourceConfig = Field( + default_factory=lambda: _WindResourceConfig( + turbine="NREL_ReferenceTurbine_2020ATB_5.5MW" + ), + description="Wind resource configuration.", + ) + resource_classes: int = Field( + 1, description="Number of resource classes per clustered region." + ) + capacity_per_sqkm: float = Field( + 2, description="Allowable density of wind turbine placement." + ) + correction_factor: float = Field( + 0.8855, description="Correction factor for capacity factor time series." + ) + corine: bool | list[int] = Field( + 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( + False, + description="Specifies areas according to the LUISA Base Map codes which are generally eligible for AC-connected offshore wind turbine placement.", + ) + natura: bool = Field( + True, + description="Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + ) + ship_threshold: float = Field( + 400, description="Ship density threshold from which areas are excluded." + ) + max_depth: float | None = Field( + None, + description="Maximum sea water depth in meters at which wind turbines can be built. Maritime areas with deeper waters are excluded in the process of calculating the AC-connected offshore wind potential.", + ) + min_depth: float | None = Field(None, description="Minimum water depth in meters.") + max_shore_distance: float | None = Field( + None, + description="Maximum distance to the shore in meters above which wind turbines cannot be built. Such areas are excluded in the process of calculating the AC-connected offshore wind potential.", + ) + min_shore_distance: float | None = Field( + None, + description="Minimum distance to the shore in meters below which wind turbines cannot be built. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential.", + ) + excluder_resolution: float = Field( + 200, + description="Resolution in meters on which to perform geographical eligibility analysis.", + ) + clip_p_max_pu: float = Field( + 0.01, + description="To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + ) + landfall_length: float | str = Field( + 20, + description="Fixed length of the cable connection that is onshorelandfall in km. If 'centroid', the length is calculated as the distance to centroid of the onshore bus.", + ) + + +class _SolarConfig(BaseModel): + """Configuration for solar PV.""" + + cutout: str | list[str] = Field( + "default", description="Specifies the weather data cutout file(s) to use." + ) + resource: _SolarResourceConfig = Field( + default_factory=_SolarResourceConfig, + description="Solar resource configuration.", + ) + resource_classes: int = Field( + 1, description="Number of resource classes per clustered region." + ) + capacity_per_sqkm: float = Field( + 5.1, description="Allowable density of solar panel placement." + ) + correction_factor: float = Field( + 1.0, + description="A correction factor for the capacity factor (availability) time series.", + ) + corine: bool | list[int] = Field( + default_factory=lambda: [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 26, + 31, + 32, + ], + description="Specifies areas according to CORINE Land Cover codes which are generally eligible for solar panel placement.", + ) + luisa: bool | list[int] = Field( + False, + description="Specifies areas according to the LUISA Base Map codes which are generally eligible for solar panel placement.", + ) + natura: bool = Field( + True, + description="Switch to exclude `Natura 2000 `_ natural protection areas. Area is excluded if `true`.", + ) + excluder_resolution: float = Field( + 100, + description="Resolution in meters on which to perform geographical eligibility analysis.", + ) + clip_p_max_pu: float = Field( + 0.01, + description="To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + ) + + +class _HydroConfig(BaseModel): + """Configuration for hydropower.""" + + cutout: str | list[str] = Field( + "default", description="Specifies the weather data cutout file(s) to use." + ) + carriers: list[str] = Field( + default_factory=lambda: ["ror", "PHS", "hydro"], + description="Specifies the types of hydro power plants to build per-unit availability time series for. 'ror' stands for run-of-river plants, 'PHS' represents pumped-hydro storage, and 'hydro' stands for hydroelectric dams.", + ) + PHS_max_hours: float = Field( + 6, + description="Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom`. Cf. `PyPSA documentation `_.", + ) + hydro_max_hours: str | float = Field( + "energy_capacity_totals_by_country", + description="Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity `p_nom` or heuristically determined. Cf. `PyPSA documentation `_.", + ) + flatten_dispatch: bool = Field( + False, + description="Consider an upper limit for the hydro dispatch. The limit is given by the average capacity factor plus the buffer given in `flatten_dispatch_buffer`.", + ) + flatten_dispatch_buffer: float = Field( + 0.2, + description="If `flatten_dispatch` is true, specify the value added above the average capacity factor.", + ) + clip_min_inflow: float = Field( + 1.0, + description="To avoid too small values in the inflow time series, values below this threshold (MW) are set to zero.", + ) + eia_norm_year: bool | int = Field( + False, + description="To specify a specific year by which hydro inflow is normed that deviates from the snapshots' year.", + ) + eia_correct_by_capacity: bool = Field( + False, + description="Correct EIA annual hydro generation data by installed capacity.", + ) + eia_approximate_missing: bool = Field( + False, + description="Approximate hydro generation data for years not included in EIA dataset through a regression based on annual runoff.", + ) + + +class RenewableConfig(BaseModel): + """Configuration for `renewable` settings.""" + + onwind: _OnwindConfig = Field( + default_factory=_OnwindConfig, + description="Onshore wind configuration.", + ) + offwind_ac: _OffwindConfig = Field( + default_factory=lambda: _OffwindConfig( + max_depth=60, + max_shore_distance=30000, + landfall_length=20, + ), + alias="offwind-ac", + description="Offshore wind AC configuration.", + ) + offwind_dc: _OffwindConfig = Field( + default_factory=lambda: _OffwindConfig( + max_depth=60, + min_shore_distance=30000, + landfall_length=30, + ), + alias="offwind-dc", + description="Offshore wind DC configuration.", + ) + offwind_float: _OffwindConfig = Field( + default_factory=lambda: _OffwindConfig( + resource=_WindResourceConfig(turbine="NREL_ReferenceTurbine_5MW_offshore"), + min_depth=60, + max_depth=1000, + landfall_length=40, + ), + alias="offwind-float", + description="Floating offshore wind configuration.", + ) + solar: _SolarConfig = Field( + default_factory=_SolarConfig, + description="Solar PV configuration.", + ) + solar_hsat: _SolarConfig = Field( + default_factory=lambda: _SolarConfig( + resource=_SolarResourceConfig(tracking="horizontal"), + capacity_per_sqkm=4.43, + ), + alias="solar-hsat", + description="Solar PV with horizontal single-axis tracking configuration.", + ) + hydro: _HydroConfig = Field( + default_factory=_HydroConfig, + description="Hydropower configuration.", + ) + + model_config = ConfigDict(populate_by_name=True) diff --git a/scripts/lib/validation/config/run.py b/scripts/lib/validation/config/run.py new file mode 100644 index 000000000..f0731c3b3 --- /dev/null +++ b/scripts/lib/validation/config/run.py @@ -0,0 +1,75 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Run configuration block. + +See # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#run +""" + +from pydantic import Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _ScenariosConfig(ConfigModel): + """Configuration for `run.scenarios` level.""" + + enable: bool = Field( + False, + description="Switch to select whether workflow should generate scenarios based on ``file``.", + ) + file: str = Field( + "config/scenarios.yaml", + description="Path to the scenario yaml file. The scenario file contains config overrides for each scenario. In order to be taken account, ``run: scenarios`` has to be set to ``true`` and ``run: name`` has to be a subset of top level keys given in the scenario file. In order to automatically create a `scenario.yaml` file based on a combination of settings, alter and use the ``config/create_scenarios.py`` script in the ``config`` directory.", + examples=["config/scenarios.yaml"], + ) + + +class _SharedResourcesConfig(ConfigModel): + """Configuration for `run.shared_resources` level.""" + + policy: bool | str = Field( + False, + description="Boolean switch to select whether resources should be shared across runs. If a string is passed, this is used as a subdirectory name for shared resources. If set to 'base', only resources before creating the elec.nc file are shared.", + examples=[False, "base"], + ) + exclude: list[str] = Field( + default_factory=list, + description="For the case shared_resources=base, specify additional files that should not be shared across runs.", + ) + + +class RunConfig(ConfigModel): + """Configuration for top level `run` settings.""" + + prefix: str = Field( + "", + description="Prefix for the run name which is used as a top-layer directory name in the results and resources folders.", + ) + name: str | list[str] = Field( + "", + description="Specify a name for your run. Results will be stored under this name. If ``scenario: enable:`` is set to ``true``, the name must contain a subset of scenario names defined in ``scenario: file:``. If the name is 'all', all defined scenarios will be run.", + examples=["my-pypsa-eur-run"], + ) + + scenarios: _ScenariosConfig = Field( + default_factory=_ScenariosConfig, + description="Configuration for running multiple scenarios", + ) + + disable_progressbar: bool = Field( + False, description="Switch to select whether progressbar should be disabled." + ) + + shared_resources: _SharedResourcesConfig = Field( + default_factory=_SharedResourcesConfig, + description="Shared resources configuration for parallel execution", + ) + + use_shadow_directory: bool = Field( + False, + description="Set to ``true`` (default) if snakemake shadow directories (``shallow``) should be used. Set to ``false`` if problems occur.", + examples=[True], + ) diff --git a/scripts/lib/validation/config/scenario.py b/scripts/lib/validation/config/scenario.py new file mode 100644 index 000000000..bccaf6093 --- /dev/null +++ b/scripts/lib/validation/config/scenario.py @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Scenario configuration block. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#scenario +Wildcard docs in https://pypsa-eur.readthedocs.io/en/latest/wildcards.html +""" + +from typing import Literal + +from pydantic import Field + +from scripts.lib.validation.config._base import ConfigModel + + +class ScenarioConfig(ConfigModel): + """Configuration for top level `scenario` settings.""" + + clusters: list[int | Literal["adm", "all"]] = Field( + default_factory=lambda: [50], + description="List of ``{clusters}`` wildcards to run. Use 'adm' for administrative clustering mode, 'all' for all nodes.", + ) + opts: list[str] = Field( + default_factory=lambda: [""], + description="List of ``{opts}`` wildcards to run.", + ) + sector_opts: list[str] = Field( + default_factory=lambda: [""], + description="List of ``{sector_opts}`` wildcards to run.", + ) + planning_horizons: list[int] = Field( + default_factory=lambda: [2050], + description="List of ``{planning_horizon}`` wildcards to run.", + ) diff --git a/scripts/lib/validation/config/sector.py b/scripts/lib/validation/config/sector.py new file mode 100644 index 000000000..fcc86b147 --- /dev/null +++ b/scripts/lib/validation/config/sector.py @@ -0,0 +1,912 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Sector configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#sector +""" + +from typing import Any + +from pydantic import BaseModel, ConfigDict, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _DistrictHeatingConfig(ConfigModel): + """Configuration for `sector.district_heating` settings.""" + + potential: float | dict[str, float] = Field( + 0.6, + description="Maximum fraction of urban demand which can be supplied by district heating. If given as dictionary, specify one value per country modeled or provide a default value with key `default` to fill values for all unspecified countries.", + ) + progress: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0.0, + 2025: 0.1, + 2030: 0.25, + 2035: 0.4, + 2040: 0.55, + 2045: 0.75, + 2050: 1.0, + }, + description="Increase of today's district heating demand to potential maximum district heating share. Progress = 0 means today's district heating share. Progress = 1 means maximum fraction of urban demand is supplied by district heating.", + ) + district_heating_loss: float = Field( + 0.15, + description="Share increase in district heat demand in urban central due to heat losses.", + ) + supply_temperature_approximation: dict[str, Any] = Field( + default_factory=lambda: { + "max_forward_temperature_baseyear": { + "FR": 110, + "DK": 75, + "DE": 109, + "CZ": 130, + "FI": 115, + "PL": 130, + "SE": 102, + "IT": 90, + }, + "min_forward_temperature_baseyear": {"DE": 82}, + "return_temperature_baseyear": {"DE": 58}, + "lower_threshold_ambient_temperature": 0, + "upper_threshold_ambient_temperature": 10, + "rolling_window_ambient_temperature": 72, + "relative_annual_temperature_reduction": 0.01, + }, + description="Supply temperature approximation settings.", + ) + ptes: dict[str, Any] = Field( + default_factory=lambda: { + "dynamic_capacity": False, + "supplemental_heating": {"enable": False, "booster_heat_pump": False}, + "max_top_temperature": 90, + "min_bottom_temperature": 35, + }, + description="Pit thermal energy storage settings.", + ) + ates: dict[str, Any] = Field( + default_factory=lambda: { + "enable": False, + "suitable_aquifer_types": ["Highly productive porous aquifers"], + "aquifer_volumetric_heat_capacity": 2600, + "fraction_of_aquifer_area_available": 0.2, + "effective_screen_length": 20, + "capex_as_fraction_of_geothermal_heat_source": 0.75, + "recovery_factor": 0.6, + "marginal_cost_charger": 0.035, + "ignore_missing_regions": False, + }, + description="Aquifer thermal energy storage settings.", + ) + heat_source_cooling: float = Field( + 6, description="Cooling of heat source for heat pumps." + ) + heat_pump_cop_approximation: dict[str, Any] = Field( + default_factory=lambda: { + "refrigerant": "ammonia", + "heat_exchanger_pinch_point_temperature_difference": 5, + "isentropic_compressor_efficiency": 0.8, + "heat_loss": 0.0, + "min_delta_t_lift": 10, + }, + description="Heat pump COP approximation settings.", + ) + limited_heat_sources: dict[str, Any] = Field( + default_factory=lambda: { + "geothermal": { + "constant_temperature_celsius": 65, + "ignore_missing_regions": False, + }, + "river_water": {"constant_temperature_celsius": False}, + }, + description="Dictionary with names of limited heat sources (not air). Must be `river_water` / `geothermal` or another heat source in `Manz et al. 2024 `_.", + ) + direct_utilisation_heat_sources: list[str] = Field( + default_factory=lambda: ["geothermal"], + description="List of heat sources for direct heat utilisation in district heating. Must be in the keys of `heat_utilisation_potentials` (e.g. `geothermal`).", + ) + temperature_limited_stores: list[str] = Field( + default_factory=lambda: ["ptes"], + description="List of names for stores used as limited heat sources.", + ) + dh_areas: dict[str, Any] = Field( + default_factory=lambda: {"buffer": 1000, "handle_missing_countries": "fill"}, + description="District heating areas settings.", + ) + + +class _ResidentialHeatDsmConfig(BaseModel): + """Configuration for `sector.residential_heat.dsm` settings.""" + + enable: bool = Field( + False, + description="Enable residential heat demand-side management that allows heating systems to provide flexibility by shifting demand within configurable time periods. Models building thermal mass as energy storage.", + ) + direction: list[str] = Field( + default_factory=lambda: ["overheat", "undercool"], + description="'overheat-undercool' means both pre-heating and delayed heating are allowed. 'overheat' allows only pre-heating where buildings are heated up above target temperature and then allowed to cool down, while 'undercool' allows only delayed heating where buildings can cool below target temperature and then be heated up again.", + ) + restriction_value: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0.06, + 2025: 0.16, + 2030: 0.27, + 2035: 0.36, + 2040: 0.38, + 2045: 0.39, + 2050: 0.4, + }, + description="Maximum state of charge (as fraction) for heat flexibility storage representing available thermal buffer capacity in buildings. Set to 0 for no flexibility or to 1.0 to assume that the entire heating demand can contribute to flexibility.", + ) + restriction_time: list[int] = Field( + default_factory=lambda: [10, 22], + description="Checkpoint hours (0-23) at which heat flexibility storage must return to baseline state of charge, i.e. the residence surplus or missing heat be balanced. Time is the local time for each country and bus. Default: [10, 22] creates 12-hour periods with checkpoints at 10am and 10pm.", + ) + + +class _ResidentialHeatConfig(BaseModel): + """Configuration for `sector.residential_heat` settings.""" + + dsm: _ResidentialHeatDsmConfig = Field( + default_factory=_ResidentialHeatDsmConfig, + description="Configuration options for residential heat demand-side management (DSM). See `smartEn DSM study `_ (Appendix A) for methodology.", + ) + + +class _RetrofittingConfig(BaseModel): + """Configuration for `sector.retrofitting` settings.""" + + retro_endogen: bool = Field( + False, + description="Add retrofitting as an endogenous system which co-optimise space heat savings.", + ) + cost_factor: float = Field(1.0, description="Weight costs for building renovation.") + interest_rate: float = Field( + 0.04, description="The interest rate for investment in building components." + ) + annualise_cost: bool = Field( + True, description="Annualise the investment costs of retrofitting." + ) + tax_weighting: bool = Field( + False, + description="Weight the costs of retrofitting depending on taxes in countries.", + ) + construction_index: bool = Field( + True, + description="Weight the costs of retrofitting depending on labour/material costs per country.", + ) + + +class _CHPConfig(BaseModel): + """Configuration for `sector.chp` settings.""" + + enable: bool = Field( + True, description="Add option for using Combined Heat and Power (CHP)." + ) + fuel: list[str] = Field( + default_factory=lambda: ["solid biomass", "gas"], + description='Possible options are all fuels which have an existing bus and their CO2 intensity is given in the technology data. Currently possible are "gas", "oil", "methanol", "lignite", "coal" as well as "solid biomass". For all fuels except solid biomass, the techno-economic data from gas CHP is used. For the special case of solid biomass fuel, both CHP plants with and without carbon capture are added.', + ) + micro_chp: bool = Field( + False, + description="Add option for using gas-fired Combined Heat and Power (CHP) for decentral areas.", + ) + + +class _MethanolConfig(BaseModel): + """Configuration for `sector.methanol` settings.""" + + regional_methanol_demand: bool = Field( + False, + description="Spatially resolve methanol demand. Set to true if regional CO2 constraints needed.", + ) + methanol_reforming: bool = Field(False, description="Add methanol reforming.") + methanol_reforming_cc: bool = Field( + False, description="Add methanol reforming with carbon capture." + ) + methanol_to_kerosene: bool = Field(False, description="Add methanol to kerosene.") + methanol_to_power: dict[str, bool] = Field( + default_factory=lambda: { + "ccgt": False, + "ccgt_cc": False, + "ocgt": True, + "allam": False, + }, + description="Add different methanol to power technologies.", + ) + biomass_to_methanol: bool = Field(True, description="Add biomass to methanol.") + biomass_to_methanol_cc: bool = Field( + False, description="Add biomass to methanol with carbon capture." + ) + + +class _TransmissionEfficiencyConfig(BaseModel): + """Configuration for `sector.transmission_efficiency` settings.""" + + enable: list[str] = Field( + default_factory=lambda: [ + "DC", + "H2 pipeline", + "gas pipeline", + "electricity distribution grid", + ], + description="Switch to select the carriers for which transmission efficiency is to be added. Carriers not listed assume lossless transmission.", + ) + DC: dict[str, float] = Field( + default_factory=lambda: { + "efficiency_static": 0.98, + "efficiency_per_1000km": 0.977, + }, + description="DC transmission efficiency.", + ) + H2_pipeline: dict[str, float] = Field( + default_factory=lambda: { + "efficiency_per_1000km": 1, + "compression_per_1000km": 0.018, + }, + alias="H2 pipeline", + description="H2 pipeline transmission efficiency.", + ) + gas_pipeline: dict[str, float] = Field( + default_factory=lambda: { + "efficiency_per_1000km": 1, + "compression_per_1000km": 0.01, + }, + alias="gas pipeline", + description="Gas pipeline transmission efficiency.", + ) + electricity_distribution_grid: dict[str, float] = Field( + default_factory=lambda: {"efficiency_static": 0.97}, + alias="electricity distribution grid", + description="Electricity distribution grid efficiency.", + ) + + model_config = ConfigDict(populate_by_name=True) + + +class _LimitMaxGrowthConfig(BaseModel): + """Configuration for `sector.limit_max_growth` settings.""" + + enable: bool = Field( + False, description="Add option to limit the maximum growth of a carrier." + ) + factor: float = Field( + 1.3, + description="The maximum growth factor of a carrier (e.g. 1.3 allows 30% larger than max historic growth).", + ) + max_growth: dict[str, float] = Field( + default_factory=lambda: { + "onwind": 16, + "solar": 28, + "offwind-ac": 35, + "offwind-dc": 35, + }, + description="The historic maximum growth of a carrier.", + ) + max_relative_growth: dict[str, float] = Field( + default_factory=lambda: { + "onwind": 3, + "solar": 3, + "offwind-ac": 3, + "offwind-dc": 3, + }, + description="The historic maximum relative growth of a carrier.", + ) + + +class _EnhancedGeothermalConfig(BaseModel): + """Configuration for `sector.enhanced_geothermal` settings.""" + + enable: bool = Field( + False, description="Add option to include Enhanced Geothermal Systems." + ) + flexible: bool = Field( + True, description="Add option for flexible operation (see Ricks et al. 2024)." + ) + max_hours: int = Field( + 240, + description="The maximum hours the reservoir can be charged under flexible operation.", + ) + max_boost: float = Field( + 0.25, description="The maximum boost in power output under flexible operation." + ) + var_cf: bool = Field( + True, + description="Add option for variable capacity factor (see Ricks et al. 2024).", + ) + sustainability_factor: float = Field( + 0.0025, + description="Share of sourced heat that is replenished by the earth's core (see details in `build_egs_potentials.py `_).", + ) + + +class _SolidBiomassImportConfig(BaseModel): + """Configuration for `sector.solid_biomass_import` settings.""" + + enable: bool = Field( + False, description="Add option to include solid biomass imports." + ) + price: float = Field( + 54, description="Price for importing solid biomass (currency/MWh)." + ) + max_amount: float = Field( + 1390, description="Maximum solid biomass import potential (TWh)." + ) + upstream_emissions_factor: float = Field( + 0.1, description="Upstream emissions of solid biomass imports." + ) + + +class _ImportsConfig(BaseModel): + """Configuration for `sector.imports` settings.""" + + enable: bool = Field( + False, description="Add option to include renewable energy imports." + ) + limit: float = Field( + float("inf"), description="Maximum allowed renewable energy imports (TWh)." + ) + limit_sense: str = Field("<=", description="Sense of the limit.") + price: dict[str, float] = Field( + default_factory=lambda: { + "H2": 74, + "NH3": 97, + "methanol": 121, + "gas": 122, + "oil": 125, + }, + description="Price for importing renewable energy of carrier.", + ) + + +class SectorConfig(BaseModel): + """Configuration for `sector` settings.""" + + transport: bool = Field(True, description="Flag to include transport sector.") + heating: bool = Field(True, description="Flag to include heating sector.") + biomass: bool = Field(True, description="Flag to include biomass sector.") + industry: bool = Field(True, description="Flag to include industry sector.") + shipping: bool = Field(True, description="Flag to include shipping sector.") + aviation: bool = Field(True, description="Flag to include aviation sector.") + agriculture: bool = Field(True, description="Flag to include agriculture sector.") + fossil_fuels: bool = Field( + True, description="Flag to include imports of fossil fuels." + ) + + district_heating: _DistrictHeatingConfig = Field( + default_factory=_DistrictHeatingConfig, + description="District heating configuration.", + ) + + heat_pump_sources: dict[str, list[str]] = Field( + default_factory=lambda: { + "urban central": ["air"], + "urban decentral": ["air"], + "rural": ["air", "ground"], + }, + description="Heat pump sources by area.", + ) + + residential_heat: _ResidentialHeatConfig = Field( + default_factory=_ResidentialHeatConfig, + description="Residential heat configuration.", + ) + + cluster_heat_buses: bool = Field( + True, + description="Cluster residential and service heat buses in `prepare_sector_network.py `_ to one to save memory.", + ) + heat_demand_cutout: str = Field("default", description="Heat demand cutout.") + + # Transport settings + bev_dsm_restriction_value: float = Field( + 0.8, + description="Adds a lower state of charge (SOC) limit for battery electric vehicles (BEV) to manage its own energy demand (DSM). Located in `build_transport_demand.py `_. Set to 0 for no restriction on BEV DSM.", + ) + bev_dsm_restriction_time: float = Field( + 7, description="Time at which SOC of BEV has to be dsm_restriction_value." + ) + transport_heating_deadband_upper: float = Field( + 20.0, + description="The maximum temperature in the vehicle. At higher temperatures, the energy required for cooling in the vehicle increases.", + ) + transport_heating_deadband_lower: float = Field( + 15.0, + description="The minimum temperature in the vehicle. At lower temperatures, the energy required for heating in the vehicle increases.", + ) + ICE_lower_degree_factor: float = Field( + 0.375, + description="Share increase in energy demand in internal combustion engine (ICE) for each degree difference between the cold environment and the minimum temperature.", + ) + ICE_upper_degree_factor: float = Field( + 1.6, + description="Share increase in energy demand in internal combustion engine (ICE) for each degree difference between the hot environment and the maximum temperature.", + ) + EV_lower_degree_factor: float = Field( + 0.98, + description="Share increase in energy demand in electric vehicles (EV) for each degree difference between the cold environment and the minimum temperature.", + ) + EV_upper_degree_factor: float = Field( + 0.63, + description="Share increase in energy demand in electric vehicles (EV) for each degree difference between the hot environment and the maximum temperature.", + ) + bev_dsm: bool | int = Field( + True, + description="Add the option for battery electric vehicles (BEV) to participate in demand-side management (DSM).", + ) + bev_dsm_availability: float = Field( + 0.5, + description="The share for battery electric vehicles (BEV) that are able to do demand side management (DSM).", + ) + bev_energy: float = Field( + 0.05, description="The average size of battery electric vehicles (BEV) in MWh." + ) + bev_charge_efficiency: float = Field( + 0.9, + description="Battery electric vehicles (BEV) charge and discharge efficiency.", + ) + bev_charge_rate: float = Field( + 0.011, + description="The power consumption for one electric vehicle (EV) in MWh. Value derived from 3-phase charger with 11 kW.", + ) + bev_avail_max: float = Field( + 0.95, + description="The maximum share plugged-in availability for passenger electric vehicles.", + ) + bev_avail_mean: float = Field( + 0.8, + description="The average share plugged-in availability for passenger electric vehicles.", + ) + v2g: bool = Field( + True, + description="Allows feed-in to grid from EV battery. This is only enabled if BEV demand-side management is enabled, and the share of vehicles participating is V2G is given by `bev_dsm_availability`.", + ) + + land_transport_fuel_cell_share: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0, + 2025: 0, + 2030: 0, + 2035: 0, + 2040: 0, + 2045: 0, + 2050: 0, + }, + description="The share of vehicles that uses fuel cells in a given year.", + ) + land_transport_electric_share: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0, + 2025: 0.05, + 2030: 0.2, + 2035: 0.45, + 2040: 0.7, + 2045: 0.85, + 2050: 1, + }, + description="The share of vehicles that uses electric vehicles (EV) in a given year.", + ) + land_transport_ice_share: dict[int, float] = Field( + default_factory=lambda: { + 2020: 1, + 2025: 0.95, + 2030: 0.8, + 2035: 0.55, + 2040: 0.3, + 2045: 0.15, + 2050: 0, + }, + description="The share of vehicles that uses internal combustion engines (ICE) in a given year. What is not EV or FCEV is oil-fuelled ICE.", + ) + + transport_electric_efficiency: float = Field( + 53.19, + description="The conversion efficiencies of electric vehicles in transport.", + ) + transport_fuel_cell_efficiency: float = Field( + 30.003, description="The H2 conversion efficiencies of fuel cells in transport." + ) + transport_ice_efficiency: float = Field( + 16.0712, + description="The oil conversion efficiencies of internal combustion engine (ICE) in transport.", + ) + + agriculture_machinery_electric_share: float = Field( + 0.5, description="The share for agricultural machinery that uses electricity." + ) + agriculture_machinery_oil_share: float = Field( + 0.5, description="The share for agricultural machinery that uses oil." + ) + agriculture_machinery_fuel_efficiency: float = Field( + 0.7, + description="The efficiency of electric-powered machinery in the conversion of electricity to meet agricultural needs.", + ) + agriculture_machinery_electric_efficiency: float = Field( + 0.3, + description="The efficiency of oil-powered machinery in the conversion of oil to meet agricultural needs.", + ) + + shipping_hydrogen_liquefaction: bool = Field( + False, + description="Whether to include liquefaction costs for hydrogen demand in shipping.", + ) + shipping_hydrogen_share: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0, + 2025: 0, + 2030: 0, + 2035: 0, + 2040: 0, + 2045: 0, + 2050: 0, + }, + description="The share of ships powered by hydrogen in a given year.", + ) + shipping_methanol_share: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0, + 2025: 0, + 2030: 0.15, + 2035: 0.35, + 2040: 0.55, + 2045: 0.8, + 2050: 1, + }, + description="The share of ships powered by methanol in a given year.", + ) + shipping_oil_share: dict[int, float] = Field( + default_factory=lambda: { + 2020: 1, + 2025: 1, + 2030: 0.85, + 2035: 0.65, + 2040: 0.45, + 2045: 0.2, + 2050: 0, + }, + description="The share of ships powered by oil in a given year.", + ) + shipping_methanol_efficiency: float = Field( + 0.46, + description="The efficiency of methanol-powered ships in the conversion of methanol to meet shipping needs (propulsion). The efficiency increase from oil can be 10-15% higher according to the `IEA `_.", + ) + shipping_oil_efficiency: float = Field( + 0.40, + description="The efficiency of oil-powered ships in the conversion of oil to meet shipping needs (propulsion). Base value derived from 2011.", + ) + + aviation_demand_factor: float = Field( + 1.0, + description="The proportion of demand for aviation compared to today's consumption.", + ) + HVC_demand_factor: float = Field( + 1.0, + description="The proportion of demand for high-value chemicals compared to today's consumption.", + ) + + time_dep_hp_cop: bool = Field( + True, + description="Consider the time dependent coefficient of performance (COP) of the heat pump.", + ) + heat_pump_sink_T_individual_heating: float = Field( + 55.0, + description="The temperature heat sink used in heat pumps based on DTU / large area radiators. The value is conservatively high to cover hot water and space heating in poorly-insulated buildings.", + ) + + reduce_space_heat_exogenously: bool = Field( + True, + description="Influence on space heating demand by a certain factor (applied before losses in district heating).", + ) + reduce_space_heat_exogenously_factor: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0.10, + 2025: 0.09, + 2030: 0.09, + 2035: 0.11, + 2040: 0.16, + 2045: 0.21, + 2050: 0.29, + }, + description="A positive factor can mean renovation or demolition of a building. If the factor is negative, it can mean an increase in floor area, increased thermal comfort, population growth. The default factors are determined by the `Eurocalc Homes and buildings decarbonization scenario `_.", + ) + + retrofitting: _RetrofittingConfig = Field( + default_factory=_RetrofittingConfig, description="Retrofitting configuration." + ) + + tes: bool = Field( + True, + description="Add option for storing thermal energy in large water pits associated with district heating systems and individual thermal energy storage (TES).", + ) + boilers: bool = Field( + True, description="Add option for transforming gas into heat using gas boilers." + ) + resistive_heaters: bool = Field( + True, + description="Add option for transforming electricity into heat using resistive heaters (independently from gas boilers).", + ) + oil_boilers: bool = Field( + False, description="Add option for transforming oil into heat using boilers." + ) + biomass_boiler: bool = Field( + True, description="Add option for transforming biomass into heat using boilers." + ) + overdimension_heat_generators: dict[str, float] = Field( + default_factory=lambda: {"decentral": 1.1, "central": 1.0}, + description="Add option for overdimensioning heating systems by a certain factor. This allows them to cover heat demand peaks e.g. 10% higher than those in the data with a setting of 1.1.", + ) + + chp: _CHPConfig = Field( + default_factory=_CHPConfig, description="CHP configuration." + ) + solar_thermal: bool = Field( + True, description="Add option for using solar thermal to generate heat." + ) + solar_cf_correction: float = Field( + 0.788457, + description="The correction factor for the value provided by the solar thermal profile calculations.", + ) + + methanation: bool = Field( + True, + description="Add option for transforming hydrogen and CO2 into methane using methanation.", + ) + coal_cc: bool = Field( + False, description="Add option for coal CHPs with carbon capture." + ) + dac: bool = Field(True, description="Add option for Direct Air Capture (DAC).") + co2_vent: bool = Field( + False, + description="Add option for vent out CO2 from storages to the atmosphere.", + ) + heat_vent: dict[str, bool] = Field( + default_factory=lambda: { + "urban central": True, + "urban decentral": True, + "rural": True, + }, + description="Heat venting by area.", + ) + marginal_cost_heat_vent: float = Field( + 0.02, description="The marginal cost of heat-venting in all heating systems." + ) + + allam_cycle_gas: bool = Field( + False, + description="Add option to include `Allam cycle gas power plants `_.", + ) + hydrogen_fuel_cell: bool = Field( + True, + description="Add option to include hydrogen fuel cell for re-electrification. Assuming OCGT technology costs.", + ) + hydrogen_turbine: bool = Field( + True, + description="Add option to include hydrogen turbine for re-electrification. Assuming OCGT technology costs.", + ) + SMR: bool = Field( + True, + description="Add option for transforming natural gas into hydrogen and CO2 using Steam Methane Reforming (SMR).", + ) + SMR_cc: bool = Field( + True, + description="Add option for transforming natural gas into hydrogen and CO2 using Steam Methane Reforming (SMR) and Carbon Capture (CC).", + ) + + regional_oil_demand: bool = Field( + True, + description="Spatially resolve oil demand. Set to true if regional CO2 constraints needed.", + ) + regional_coal_demand: bool = Field(False, description="Regional coal demand.") + + regional_co2_sequestration_potential: dict[str, Any] = Field( + default_factory=lambda: { + "enable": True, + "attribute": [ + "conservative estimate Mt", + "conservative estimate GAS Mt", + "conservative estimate OIL Mt", + "conservative estimate aquifer Mt", + ], + "include_onshore": False, + "min_size": 3, + "max_size": 25, + "years_of_storage": 25, + }, + description="Add option for regionally-resolved geological carbon dioxide sequestration potentials based on `CO2StoP `_.", + ) + co2_sequestration_potential: dict[int, float] = Field( + default_factory=lambda: { + 2020: 0, + 2025: 0, + 2030: 40, + 2035: 100, + 2040: 180, + 2045: 250, + 2050: 250, + }, + description="The potential of sequestering CO2 in Europe per year and investment period.", + ) + co2_sequestration_cost: float = Field( + 30, description="The cost of sequestering a ton of CO2 (currency/tCO2)." + ) + co2_sequestration_lifetime: int = Field( + 50, description="The lifetime of a CO2 sequestration site (years)." + ) + co2_spatial: bool = Field( + True, + description="Add option to spatially resolve carrier representing stored carbon dioxide. This allows for more detailed modelling of CCUTS, e.g. regarding the capturing of industrial process emissions, usage as feedstock for electrofuels, transport of carbon dioxide, and geological sequestration sites.", + ) + co2_network: bool = Field( + True, + description="Add option for planning a new carbon dioxide transmission network.", + ) + co2_network_cost_factor: float = Field( + 1, + description="The cost factor for the capital cost of the carbon dioxide transmission network.", + ) + cc_fraction: float = Field( + 0.9, + description="The default fraction of CO2 captured with post-combustion capture.", + ) + + hydrogen_underground_storage: bool = Field( + True, + description="Add options for storing hydrogen underground. Storage potential depends regionally.", + ) + hydrogen_underground_storage_locations: list[str] = Field( + default_factory=lambda: ["onshore", "nearshore"], + description="The location where hydrogen underground storage can be located. Onshore, nearshore, offshore means it must be located more than 50 km away from the sea, within 50 km of the sea, or within the sea itself respectively.", + ) + + methanol: _MethanolConfig = Field( + default_factory=_MethanolConfig, description="Methanol configuration." + ) + + ammonia: bool | str = Field( + True, + description='Add ammonia as a carrier. It can be either true (copperplated NH3), false (no NH3 carrier) or "regional" (regionalised NH3 without network).', + ) + min_part_load_electrolysis: float = Field( + 0, description="The minimum unit dispatch (`p_min_pu`) for electrolysis." + ) + min_part_load_fischer_tropsch: float = Field( + 0.5, + description="The minimum unit dispatch (`p_min_pu`) for the Fischer-Tropsch process.", + ) + min_part_load_methanolisation: float = Field( + 0.3, + description="The minimum unit dispatch (`p_min_pu`) for the methanolisation process.", + ) + min_part_load_methanation: float = Field( + 0.3, description="Minimum part load methanation." + ) + + use_fischer_tropsch_waste_heat: float = Field( + 0.25, + description="Add option for using waste heat of Fischer Tropsch in district heating networks.", + ) + use_haber_bosch_waste_heat: float = Field( + 0.25, description="Use Haber-Bosch waste heat." + ) + use_methanolisation_waste_heat: float = Field( + 0.25, description="Use methanolisation waste heat." + ) + use_methanation_waste_heat: float = Field( + 0.25, description="Use methanation waste heat." + ) + use_fuel_cell_waste_heat: float = Field( + 1, + description="Add option for using waste heat of fuel cells in district heating networks.", + ) + use_electrolysis_waste_heat: float = Field( + 0.25, + description="Add option for using waste heat of electrolysis in district heating networks.", + ) + + electricity_transmission_grid: bool = Field( + True, + description="Switch for enabling/disabling the electricity transmission grid.", + ) + electricity_distribution_grid: bool = Field( + True, + description="Add a simplified representation of the exchange capacity between transmission and distribution grid level through a link.", + ) + electricity_distribution_grid_cost_factor: float = Field( + 1.0, + description="Multiplies the investment cost of the electricity distribution grid.", + ) + electricity_grid_connection: bool = Field( + True, + description="Add the cost of electricity grid connection for onshore wind and solar.", + ) + + transmission_efficiency: _TransmissionEfficiencyConfig = Field( + default_factory=_TransmissionEfficiencyConfig, + description="Transmission efficiency configuration.", + ) + + H2_network: bool = Field(True, description="Add option for new hydrogen pipelines.") + gas_network: bool = Field( + True, + description="Add existing natural gas infrastructure, incl. LNG terminals, production and entry-points. The existing gas network is added with a lossless transport model. A length-weighted `k-edge augmentation algorithm `_ can be run to add new candidate gas pipelines such that all regions of the model can be connected to the gas network. When activated, all the gas demands are regionally disaggregated as well.", + ) + H2_retrofit: bool = Field( + False, + description="Add option for retrofiting existing pipelines to transport hydrogen.", + ) + H2_retrofit_capacity_per_CH4: float = Field( + 0.6, + description="The ratio for H2 capacity per original CH4 capacity of retrofitted pipelines. The `European Hydrogen Backbone (April, 2020) p.15 `_ 60% of original natural gas capacity could be used in cost-optimal case as H2 capacity.", + ) + gas_network_connectivity_upgrade: float = Field( + 1, + description="The number of desired edge connectivity (k) in the length-weighted `k-edge augmentation algorithm `_ used for the gas network.", + ) + gas_distribution_grid: bool = Field( + True, description="Add a gas distribution grid." + ) + gas_distribution_grid_cost_factor: float = Field( + 1.0, + description="Multiplier for the investment cost of the gas distribution grid.", + ) + + biomass_spatial: bool = Field( + True, description="Add option for resolving biomass demand regionally." + ) + biomass_transport: bool = Field( + False, description="Add option for transporting solid biomass between nodes." + ) + biogas_upgrading: bool = Field(True, description="Biogas upgrading.") + biogas_upgrading_cc: bool = Field( + False, description="Add option to capture CO2 from biomass upgrading." + ) + + conventional_generation: dict[str, str] = Field( + default_factory=lambda: {"OCGT": "gas", "CCGT": "gas"}, + description="Add a more detailed description of conventional carriers. Any power generation requires the consumption of fuel from nodes representing that fuel.", + ) + + biomass_to_liquid: bool = Field( + True, + description="Add option for transforming solid biomass into liquid fuel with the same properties as oil.", + ) + biomass_to_liquid_cc: bool = Field( + False, + description="Add option for transforming solid biomass into liquid fuel with the same properties as oil with carbon capture.", + ) + electrobiofuels: bool = Field(True, description="Electrobiofuels.") + biosng: bool = Field( + False, + description="Add option for transforming solid biomass into synthesis gas with the same properties as natural gas.", + ) + biosng_cc: bool = Field( + False, + description="Add option for transforming solid biomass into synthesis gas with the same properties as natural gas with carbon capture.", + ) + bioH2: bool = Field( + False, + description="Add option for transforming solid biomass into hydrogen with carbon capture.", + ) + municipal_solid_waste: bool = Field( + False, description="Add option for municipal solid waste." + ) + + limit_max_growth: _LimitMaxGrowthConfig = Field( + default_factory=_LimitMaxGrowthConfig, + description="Limit max growth configuration.", + ) + enhanced_geothermal: _EnhancedGeothermalConfig = Field( + default_factory=_EnhancedGeothermalConfig, + description="Enhanced geothermal configuration.", + ) + solid_biomass_import: _SolidBiomassImportConfig = Field( + default_factory=_SolidBiomassImportConfig, + description="Solid biomass import configuration.", + ) + imports: _ImportsConfig = Field( + default_factory=_ImportsConfig, description="Imports configuration." + ) diff --git a/scripts/lib/validation/config/snapshots.py b/scripts/lib/validation/config/snapshots.py new file mode 100644 index 000000000..0932b2f36 --- /dev/null +++ b/scripts/lib/validation/config/snapshots.py @@ -0,0 +1,32 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Snapshots configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#snapshots +""" + +from typing import Literal + +from pydantic import Field + +from scripts.lib.validation.config._base import ConfigModel + + +class SnapshotsConfig(ConfigModel): + """Configuration for `snapshots` settings.""" + + start: str | list[str] = Field( + "2013-01-01", + description="Left bound of date range.", + ) + end: str | list[str] = Field( + "2014-01-01", + description="Right bound of date range.", + ) + inclusive: Literal["left", "right", "both"] | None = Field( + "left", + description="Make the time interval closed to the `left`, `right`, or both sides `both` or neither side `None`.", + ) diff --git a/scripts/lib/validation/config/solar_thermal.py b/scripts/lib/validation/config/solar_thermal.py new file mode 100644 index 000000000..fdb9026f4 --- /dev/null +++ b/scripts/lib/validation/config/solar_thermal.py @@ -0,0 +1,45 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Solar thermal configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#solar-thermal +""" + +from typing import Literal + +from pydantic import BaseModel, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _OrientationConfig(ConfigModel): + """Configuration for `solar_thermal.orientation` settings.""" + + slope: float = Field( + 45.0, + description="The angle between the ground and the panels.", + ) + azimuth: float = Field( + 180.0, + description="The angle between the North and the sun with panels on the local horizon.", + ) + + +class SolarThermalConfig(BaseModel): + """Configuration for `solar_thermal` settings.""" + + clearsky_model: Literal["simple", "enhanced"] = Field( + "simple", + description="Type of clearsky model for diffuse irradiation.", + ) + orientation: _OrientationConfig = Field( + default_factory=_OrientationConfig, + description="Panel orientation with slope and azimuth.", + ) + cutout: str = Field( + "default", + description="Name of the cutout to use for solar thermal calculations.", + ) diff --git a/scripts/lib/validation/config/solving.py b/scripts/lib/validation/config/solving.py new file mode 100644 index 000000000..442cb253e --- /dev/null +++ b/scripts/lib/validation/config/solving.py @@ -0,0 +1,381 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Solving configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#solving +""" + +from typing import Any + +from pydantic import BaseModel, Field, field_validator, model_validator + +from scripts.lib.validation.config._base import ConfigModel + + +class _PostDiscretizationConfig(ConfigModel): + """Configuration for `solving.options.post_discretization` settings.""" + + enable: bool = Field( + False, + description="Switch to enable post-discretization of the network. Disabled by default.", + ) + line_unit_size: float = Field( + 1700, description="Discrete unit size of lines in MW." + ) + line_threshold: float = Field( + 0.3, + description="The threshold relative to the discrete line unit size beyond which to round up to the next unit.", + ) + link_unit_size: dict[str, float] = Field( + default_factory=lambda: {"DC": 2000, "H2 pipeline": 1200, "gas pipeline": 1500}, + description="Discrete unit size of links in MW by carrier (given in dictionary style).", + ) + link_threshold: dict[str, float] = Field( + default_factory=lambda: {"DC": 0.3, "H2 pipeline": 0.3, "gas pipeline": 0.3}, + description="The threshold relative to the discrete link unit size beyond which to round up to the next unit by carrier (given in dictionary style).", + ) + fractional_last_unit_size: bool = Field( + False, + description="When true, links and lines can be built up to p_nom_max. When false, they can only be built up to a multiple of the unit size.", + ) + + +class _ModelKwargsConfig(BaseModel): + """Configuration for `solving.options.model_kwargs` settings.""" + + solver_dir: str = Field( + "", description="Absolute path to the directory where linopy saves files." + ) + + +class _SolvingOptionsConfig(BaseModel): + """Configuration for `solving.options` settings.""" + + clip_p_max_pu: float = Field( + 0.01, + description="To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero.", + ) + load_shedding: bool | float = Field( + False, + description="Add generators with very high marginal cost to simulate load shedding and avoid problem infeasibilities. If load shedding is a float, it denotes the marginal cost in EUR/kWh.", + ) + curtailment_mode: bool = Field( + False, + description="Fixes the dispatch profiles of generators with time-varying p_max_pu by setting `p_min_pu = p_max_pu` and adds an auxiliary curtailment generator (with negative sign to absorb excess power) at every AC bus. This can speed up the solving process as the curtailment decision is aggregated into a single generator per region. Defaults to `false`.", + ) + noisy_costs: bool = Field( + True, + description="Add random noise to marginal cost of generators by :math:`\\mathcal{U}(0.009,0,011)` and capital cost of lines and links by :math:`\\mathcal{U}(0.09,0,11)`.", + ) + skip_iterations: bool = Field( + True, + description="Skip iterating, do not update impedances of branches. Defaults to true.", + ) + rolling_horizon: bool = Field( + False, + description="Switch for rule `solve_operations_network` whether to optimize the network in a rolling horizon manner, where the snapshot range is split into slices of size `horizon` which are solved consecutively. This setting has currently no effect on sector-coupled networks.", + ) + seed: int = Field( + 123, description="Random seed for increased deterministic behaviour." + ) + custom_extra_functionality: str | None = Field( + "../data/custom_extra_functionality.py", + description="Path to a Python file with custom extra functionality code to be injected into the solving rules of the workflow relative to `rules` directory.", + ) + io_api: str | None = Field( + None, + description="Passed to linopy and determines the API used to communicate with the solver. With the `'lp'` and `'mps'` options linopy passes a file to the solver; with the `'direct'` option (only supported for HIGHS and Gurobi) linopy uses an in-memory python API resulting in better performance.", + ) + track_iterations: bool = Field( + False, + description="Flag whether to store the intermediate branch capacities and objective function values are recorded for each iteration in `network.lines['s_nom_opt_X']` (where `X` labels the iteration)", + ) + min_iterations: int = Field( + 2, + description="Minimum number of solving iterations in between which resistance and reactence (`x/r`) are updated for branches according to `s_nom_opt` of the previous run.", + ) + max_iterations: int = Field( + 3, + description="Maximum number of solving iterations in between which resistance and reactence (`x/r`) are updated for branches according to `s_nom_opt` of the previous run.", + ) + transmission_losses: int = Field( + 2, + description="Add piecewise linear approximation of transmission losses based on n tangents. Defaults to 0, which means losses are ignored.", + ) + linearized_unit_commitment: bool = Field( + True, + description="Whether to optimise using the linearized unit commitment formulation.", + ) + horizon: int = Field( + 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.", + ) + 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.""" + + agg_offwind: bool = Field( + False, + description="Aggregate together all the types of offwind when writing the constraint (`offwind-all` as a carrier in the `.csv` file). Default is false.", + ) + agg_solar: bool = Field( + False, + description="Aggregate together all the types of electric solar when writing the constraint (`solar-all` as a carrier in the `.csv` file). Default is false.", + ) + include_existing: bool = Field( + False, + description="Take existing capacities into account when writing the constraint. Default is false.", + ) + file: str = Field( + "data/agg_p_nom_minmax.csv", + description="Reference to `.csv` file specifying per carrier generator nominal capacity constraints for individual countries and planning horizons. Defaults to `data/agg_p_nom_minmax.csv`.", + ) + + +class _ConstraintsConfig(BaseModel): + """Configuration for `solving.constraints` settings.""" + + CCL: bool = Field( + False, + description="Add minimum and maximum levels of generator nominal capacity per carrier for individual countries. These can be specified in the file linked at `electricity: agg_p_nom_limits` in the configuration. File defaults to `data/agg_p_nom_minmax.csv`. Does not work with a time resolution resampling.", + ) + EQ: bool | str = Field( + False, + description="Require each country or node to on average produce a minimal share of its total consumption itself. Example: `EQ0.5c` demands each country to produce on average at least 50% of its consumption; `EQ0.5` demands each node to produce on average at least 50% of its consumption.", + ) + BAU: bool = Field( + False, + description="Add a per-`carrier` minimal overall capacity; i.e. at least `40GW` of `OCGT` in Europe; configured in `electricity: BAU_mincapacities`", + ) + SAFE: bool = Field( + False, + description="Add a capacity reserve margin of a certain fraction above the peak demand to which renewable generators and storage do *not* contribute. Ignores network.", + ) + + +class _SolverConfig(BaseModel): + """Configuration for `solving.solver` settings.""" + + name: str = Field( + "gurobi", + description="Solver to use for optimisation problems in the workflow; e.g. clustering and linear optimal power flow.", + ) + options: str = Field( + "gurobi-default", description="Link to specific parameter settings." + ) + + +class _CheckObjectiveConfig(BaseModel): + """Configuration for `solving.check_objective` settings.""" + + enable: bool = Field(False, description="Enable objective value checking.") + expected_value: float | None = Field(None, description="Expected objective value.") + atol: float = Field(1_000_000, description="Absolute tolerance.") + rtol: float = Field(0.01, description="Relative tolerance.") + + @field_validator("expected_value", mode="before") + @classmethod + def parse_none_string(cls, v): + if v == "None" or v is None: + return None + return v + + +class _OETCConfig(BaseModel): + """Configuration for `solving.oetc` settings (Open Energy Transition Computing cluster support).""" + + name: str = Field( + "pypsa-eur", + description="Name identifier for the OETC job.", + ) + authentication_server_url: str = Field( + "", + description="URL of the OETC authentication server for job submission.", + ) + orchestrator_server_url: str = Field( + "", + description="URL of the OETC orchestrator server for job management.", + ) + cpu_cores: int = Field( + 8, + description="Number of CPU cores to request for the OETC job. (includes RAM amount at the moment with a factor of 8)", + ) + disk_space_gb: int = Field( + 50, + description="Amount of disk space in gigabytes to request for the OETC job.", + ) + delete_worker_on_error: bool = Field( + True, + description="Whether to delete the worker instance when an error occurs during job execution.", + ) + + +class SolvingConfig(BaseModel): + """Configuration for `solving` settings.""" + + options: _SolvingOptionsConfig = Field( + default_factory=_SolvingOptionsConfig, description="Solving options." + ) + agg_p_nom_limits: _AggPNomLimitsConfig = Field( + default_factory=_AggPNomLimitsConfig, + description="Aggregate p_nom limits configuration.", + ) + constraints: _ConstraintsConfig = Field( + default_factory=_ConstraintsConfig, description="Constraints configuration." + ) + solver: _SolverConfig = Field( + default_factory=_SolverConfig, description="Solver configuration." + ) + solver_options: dict[str, dict[str, Any]] = Field( + default_factory=lambda: { + "highs-default": { + "threads": 1, + "solver": "ipm", + "run_crossover": "off", + "small_matrix_value": 1e-6, + "large_matrix_value": 1e9, + "primal_feasibility_tolerance": 1e-5, + "dual_feasibility_tolerance": 1e-5, + "ipm_optimality_tolerance": 1e-4, + "parallel": "on", + "random_seed": 123, + }, + "highs-simplex": { + "solver": "simplex", + "parallel": "on", + "primal_feasibility_tolerance": 1e-5, + "dual_feasibility_tolerance": 1e-5, + "random_seed": 123, + }, + "gurobi-default": { + "threads": 32, + "method": 2, + "crossover": 0, + "BarConvTol": 1e-5, + "Seed": 123, + "AggFill": 0, + "PreDual": 0, + "GURO_PAR_BARDENSETHRESH": 200, + }, + "gurobi-numeric-focus": { + "NumericFocus": 3, + "method": 2, + "crossover": 0, + "BarHomogeneous": 1, + "BarConvTol": 1e-5, + "FeasibilityTol": 1e-4, + "OptimalityTol": 1e-4, + "ObjScale": -0.5, + "threads": 8, + "Seed": 123, + }, + "gurobi-fallback": { + "crossover": 0, + "method": 2, + "BarHomogeneous": 1, + "BarConvTol": 1e-5, + "FeasibilityTol": 1e-5, + "OptimalityTol": 1e-5, + "Seed": 123, + "threads": 8, + }, + "cplex-default": { + "threads": 4, + "lpmethod": 4, + "solutiontype": 2, + "barrier.convergetol": 1e-5, + "feasopt.tolerance": 1e-6, + }, + "copt-default": { + "Threads": 8, + "LpMethod": 2, + "Crossover": 0, + "RelGap": 1e-6, + "Dualize": 0, + }, + "copt-gpu": { + "LpMethod": 6, + "GPUMode": 1, + "PDLPTol": 1e-5, + "Crossover": 0, + }, + "xpress-default": { + "threads": 8, + "lpflags": 4, + "crossover": 0, + "bargaptarget": 1e-5, + "baralg": 2, + }, + "xpress-gpu": { + "lpflags": 4, + "crossover": 0, + "baralg": 4, + "barhggpu": 1, + "barhgreltol": 1e-5, + }, + "cbc-default": {}, + "glpk-default": {}, + }, + description="Dictionaries with solver-specific parameter settings.", + ) + + @field_validator("solver_options") + @classmethod + def check_no_gurobi_credentials(cls, v): + """Prevent Gurobi license credentials from being stored in config.""" + forbidden_keys = {"WLSACCESSID", "WLSSECRET", "LICENSEID"} + for solver_name, options in v.items(): + if "env" in options: + found = forbidden_keys & set(options["env"].keys()) + if found: + raise ValueError( + f"Gurobi license credentials ({', '.join(found)}) must not be set in config to avoid leaking secrets. " + "Use a license file instead or check the PyPSA options documentation on how to pass solver_options via environment variables, " + 'e.g. PYPSA_PARAMS__OPTIMIZE__SOLVER_OPTIONS={"env": {"WLSACCESSID": "...", "WLSSECRET": "...", "LICENSEID": 1234}}' + ) + return v + + check_objective: _CheckObjectiveConfig = Field( + default_factory=_CheckObjectiveConfig, + description="Objective checking configuration.", + ) + oetc: _OETCConfig | None = Field( + None, + description="Configuration options for Open Energy Transition Computing (OETC) cluster support.", + ) + mem_mb: int = Field( + 128000, + description="Estimated maximum memory requirement for solving networks (MB).", + ) + memory_logging_frequency: int = Field( + 5, description="Interval in seconds at which memory usage is logged." + ) + runtime: str = Field("48h", description="Runtime in humanfriendly style.") diff --git a/scripts/lib/validation/config/transformers.py b/scripts/lib/validation/config/transformers.py new file mode 100644 index 000000000..207981250 --- /dev/null +++ b/scripts/lib/validation/config/transformers.py @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Transformers configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transformers +""" + +from pydantic import Field + +from scripts.lib.validation.config._base import ConfigModel + + +class TransformersConfig(ConfigModel): + """Configuration for `transformers` settings.""" + + x: float = Field( + 0.1, + description="Series reactance in per unit (p.u.), using `s_nom` as base power of the transformer. Overwritten if `type` is specified.", + ) + s_nom: float = Field( + 2000.0, + description="Limit of apparent power which can pass through branch (MVA). Overwritten if `type` is specified.", + ) + type: str = Field( + "", + description="Specifies transformer types to assume for the transformers of the ENTSO-E grid extraction.", + ) diff --git a/scripts/lib/validation/config/transmission_projects.py b/scripts/lib/validation/config/transmission_projects.py new file mode 100644 index 000000000..e48a790a9 --- /dev/null +++ b/scripts/lib/validation/config/transmission_projects.py @@ -0,0 +1,57 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Transmission projects configuration. + +See docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#transmission-projects +""" + +from typing import Literal + +from pydantic import BaseModel, Field + +from scripts.lib.validation.config._base import ConfigModel + + +class _IncludeConfig(ConfigModel): + """Configuration for `transmission_projects.include` settings.""" + + tyndp2020: bool = Field( + True, + description="Whether to integrate the TYNDP 2020 dataset.", + ) + nep: bool = Field( + True, + description="Whether to integrate the German network development plan dataset.", + ) + manual: bool = Field( + True, + description="Whether to integrate the manually added transmission projects. They are taken from the previously existing links_tyndp.csv file.", + ) + + +class TransmissionProjectsConfig(BaseModel): + """Configuration for `transmission_projects` settings.""" + + enable: bool = Field( + True, + description="Whether to integrate this transmission projects or not.", + ) + include: _IncludeConfig = Field( + default_factory=_IncludeConfig, + description="Name of the transmission projects. They should be unique and have to be provided in the `data/transmission_projects` folder.", + ) + skip: list[str] = Field( + default_factory=lambda: ["upgraded_lines", "upgraded_links"], + description="Type of lines to skip from all transmission projects. Possible values are: `upgraded_lines`, `upgraded_links`, `new_lines`, `new_links`.", + ) + status: list[str] | dict[str, list[str]] = Field( + default_factory=lambda: ["under_construction", "in_permitting", "confirmed"], + description="Status to include into the model as list or as dict with name of project and status to include. Possible values for status are `under_construction`, `in_permitting`, `confirmed`, `planned_not_yet_permitted`, `under_consideration`.", + ) + new_link_capacity: Literal["zero", "keep"] = Field( + "zero", + description="Whether to set the new link capacity to the provided capacity or set it to zero.", + ) diff --git a/scripts/lib/validation/config_updates.py b/scripts/lib/validation/config_updates.py new file mode 100644 index 000000000..3bf79ade8 --- /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 000000000..846e06fa8 --- /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 63d962544..fc45ed2fd 100644 --- a/scripts/make_summary.py +++ b/scripts/make_summary.py @@ -41,14 +41,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 d8b4e4c6b..8016e9941 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 d09c49ec9..a58e82b65 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 e781a2939..dd1bff188 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_cop_profiles/plot_cop_profiles.py b/scripts/plot_cop_profiles/plot_cop_profiles.py index d2860fb7a..248fdb417 100644 --- a/scripts/plot_cop_profiles/plot_cop_profiles.py +++ b/scripts/plot_cop_profiles/plot_cop_profiles.py @@ -12,7 +12,6 @@ import numpy as np import pandas as pd import xarray as xr -from _helpers import configure_logging from bokeh.io import output_file, save from bokeh.layouts import column, row from bokeh.models import ( @@ -26,6 +25,7 @@ from bokeh.plotting import figure from bokeh.transform import dodge +from scripts._helpers import configure_logging from scripts.definitions.heat_system_type import HeatSystemType logger = logging.getLogger(__name__) diff --git a/scripts/plot_gas_network.py b/scripts/plot_gas_network.py index 250b1fec0..faea716cd 100644 --- a/scripts/plot_gas_network.py +++ b/scripts/plot_gas_network.py @@ -89,25 +89,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"] @@ -125,7 +125,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", @@ -134,10 +134,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, @@ -145,21 +145,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"], ) @@ -207,8 +207,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 b88ab5ff4..350631841 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 da6c79ab2..d04f37df1 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 920edb0a1..67eef1e3a 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 f50602737..ac2388b94 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 08e084fb5..2a270672c 100644 --- a/scripts/plot_summary.py +++ b/scripts/plot_summary.py @@ -273,7 +273,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) @@ -485,7 +485,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 50f149eb3..7cf0e98f6 100755 --- a/scripts/prepare_network.py +++ b/scripts/prepare_network.py @@ -4,7 +4,7 @@ """ -Prepare PyPSA network for solving according to :ref:`opts` and :ref:`ll`, such +Prepare PyPSA network for solving according to :ref:`opts`, such as. - adding an annual **limit** of carbon-dioxide emissions, @@ -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 2bb896a15..7829e2b75 100644 --- a/scripts/prepare_osm_network_release.py +++ b/scripts/prepare_osm_network_release.py @@ -2,13 +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 @@ -16,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", @@ -76,156 +85,1157 @@ "p_nom", "geometry", ] +ROUNDING_DECIMALS = { + "s_nom": 3, + "r": 6, + "x": 6, + "b": 8, +} -def export_clean_csv(df, columns, output_file): +def export_clean_csv( + 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. + 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 """ - columns = [col for col in columns if col in df.columns] + rename_dict = { - "Bus": "bus_id", - "Line": "line_id", - "Link": "link_id", - "Transformer": "transformer_id", "v_nom": "voltage", "num_parallel": "circuits", } - if "converter_id" in columns: - rename_dict["Link"] = "converter_id" + df = ( + df.rename_axis(index=rename_idx) + .reset_index() + .rename(columns=rename_dict) + .loc[:, columns] + .replace({True: "t", False: "f"}) + ) - df.reset_index().rename(columns=rename_dict).loc[:, columns].replace( - {True: "t", False: "f"} - ).to_csv(output_file, index=False, quotechar="'") + 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 = [ - "Bus", - "v_nom", - "dc", - "symbol", - "under_construction", - "tags", - "geometry", - ] - buses = network.buses.reset_index()[ - [c for c in buses_cols if c in network.buses.columns] - ] - buses["geometry"] = buses.geometry.apply(lambda x: loads(x)) - buses = gpd.GeoDataFrame(buses, geometry="geometry", crs=crs) - - lines_cols = [ - "Line", - "bus0", - "bus1", - "v_nom", - "i_nom", - "num_parallel", - "s_nom", - "r", - "x", - "b", - "length", - "underground", - "under_construction", - "type", - "tags", - "geometry", - ] - lines = network.lines.reset_index()[ - [c for c in lines_cols if c in network.lines.columns] - ] - # 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 = [ - "Link", - "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] - .reset_index() - .rename(columns={"voltage": "v_nom"})[ - [c for c in links_cols if c in network.links.columns] - ] + + # 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 = [ - "Link", - "bus0", - "bus1", - "v_nom", - "p_nom", - "geometry", - ] - converters = ( - network.links[is_converter] - .reset_index() - .rename(columns={"voltage": "v_nom"})[ - [c for c in converters_cols if c in network.links.columns] - ] + + 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 = [ - "Transformer", - "bus0", - "bus1", - "voltage_bus0", - "voltage_bus1", - "s_nom", - "geometry", - ] - transformers = network.transformers.reset_index()[ - [c for c in transformers_cols if c in network.transformers.columns] - ] - 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("