diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 1e2bb74b7..4e9fe2e8a 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,7 +1,6 @@
on:
- push:
- branches:
- - main
+ schedule:
+ - cron: "0 5 * * 0"
jobs:
contrib-readme-job:
diff --git a/.github/workflows/ci.yml b/.github/workflows/test.yml
similarity index 59%
rename from .github/workflows/ci.yml
rename to .github/workflows/test.yml
index 78f82d04a..a243a304b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/test.yml
@@ -1,4 +1,4 @@
-name: CI
+name: Test workflows
on:
push:
@@ -10,21 +10,29 @@ on:
schedule:
- cron: "0 5 * * TUE"
+# Cancel any in-progress runs when a new run is triggered
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
env:
- CACHE_NUMBER: 1 # Change this value to manually reset the environment cache
+ CACHE_NUMBER: 0 # Change this value to manually reset the environment cache
jobs:
- build:
+ run-tests:
+ name: OS
+ runs-on: ${{ matrix.os }}-latest
strategy:
fail-fast: false
- max-parallel: 3
matrix:
- os:
- - ubuntu-latest
- - macos-latest
- # - windows-latest
-
- runs-on: ${{ matrix.os }}
+ os: [ubuntu, macos] #, windows]
+ include:
+ - os: ubuntu
+ env_file: envs/linux-pinned.yaml
+ - os: macos
+ env_file: envs/macos-pinned.yaml
+ # - os: windows
+ # env_file: envs/windows-pinned.yaml
defaults:
run:
@@ -38,7 +46,7 @@ jobs:
uses: mamba-org/setup-micromamba@v2
with:
micromamba-version: '1.5.9-1'
- environment-file: envs/environment.yaml
+ environment-file: ${{ matrix.env_file }}
log-level: debug
init-shell: bash
cache-environment: true
@@ -64,6 +72,17 @@ jobs:
- name: Run Test
run: make test
+ - name: Upload artifacts
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: results-${{ matrix.os }}
+ path: |
+ logs
+ .snakemake/log
+ results
+ retention-days: 3
+
# - name: Test plotting and summaries
# run: |
# snakemake --cores all plot_all_p_nom
diff --git a/.github/workflows/update-pinned-env.yml b/.github/workflows/update-pinned-env.yml
new file mode 100644
index 000000000..6f35831c6
--- /dev/null
+++ b/.github/workflows/update-pinned-env.yml
@@ -0,0 +1,85 @@
+name: Update pinned envs
+
+on:
+ push:
+ paths:
+ - envs/environment.yaml
+ # Run every Sunday at 5:00 UTC
+ schedule:
+ - cron: "0 5 * * 0"
+ workflow_dispatch:
+
+
+jobs:
+ update-pinned-environment:
+ if: ${{ github.ref == 'refs/heads/main' }}
+ name: Update pinned envs
+ runs-on: ${{ matrix.os }}-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu, macos, windows]
+ include:
+ - os: ubuntu
+ suffix: "linux"
+ - os: macos
+ suffix: "macos"
+ - os: windows
+ suffix: "windows"
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Setup conda
+ uses: conda-incubator/setup-miniconda@v3
+ with:
+ activate-environment: ${{ github.event.repository.name }}
+ environment-file: envs/environment.yaml
+
+ - name: Update pinned environment per OS
+ run: |
+ conda env export --name ${{ github.event.repository.name }} --no-builds > envs/${{ matrix.suffix }}-pinned.yaml
+
+ - name: Add SPDX header
+ if: ${{ matrix.suffix != 'windows' }}
+ run: |
+ SPDX_HEADER="# SPDX-FileCopyrightText: PyPSA-Earth and PyPSA-Eur Authors\n#\n# SPDX-License-Identifier: CC0-1.0\n"
+ echo -e "$SPDX_HEADER" | cat - envs/${{ matrix.suffix }}-pinned.yaml > temp && mv temp envs/${{ matrix.suffix }}-pinned.yaml
+
+ - name: Add SPDX header (windows)
+ if: ${{ matrix.suffix == 'windows' }}
+ run: |
+ $SPDX_HEADER = "# SPDX-FileCopyrightText: PyPSA-Earth and PyPSA-Eur`r`n#`r`n# SPDX-License-Identifier: CC0-1.0`r`n`r`n"
+ $CurrentContent = Get-Content "envs/${{ matrix.suffix }}-pinned.yaml" -Raw
+ $NewContent = $SPDX_HEADER + $CurrentContent
+ $NewContent | Set-Content "envs/${{ matrix.suffix }}-pinned.yaml"
+
+ - name: Cache environment files
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ matrix.suffix }}-pinned
+ path: envs/${{ matrix.suffix }}-pinned.yaml
+
+ create-pull-request:
+ needs: update-pinned-environment
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Download all artifacts
+ uses: actions/download-artifact@v4
+
+ - name: Prepare files for commit
+ run: |
+ mkdir -p envs
+ mv linux-pinned/* envs/linux-pinned.yaml
+ mv macos-pinned/* envs/macos-pinned.yaml
+ mv windows-pinned/* envs/windows-pinned.yaml
+
+ - name: Create Pull Request
+ uses: peter-evans/create-pull-request@v7
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ branch: update-pinned-environment
+ title: "[github-actions.ci] Update pinned envs"
+ body: "Automatically generated PR to update pinned environment files for Windows, macOS, and Linux."
+ commit-message: "Update pinned environment files for all platforms"
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 32f9b1175..3b6f3603e 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -90,6 +90,6 @@ repos:
# Check for FSFE REUSE compliance (licensing)
- repo: https://github.com/fsfe/reuse-tool
- rev: v4.0.3
+ rev: v5.0.2
hooks:
- id: reuse
diff --git a/README.md b/README.md
index 2459cf773..ab89b2909 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ by
## Development Status: **Stable and Active**
-[![Test workflows](https://github.com/pypsa-meets-earth/pypsa-earth/actions/workflows/ci.yml/badge.svg)](https://github.com/pypsa-meets-earth/pypsa-earth/actions/workflows/ci.yml)
+[![Test workflows](https://github.com/pypsa-meets-earth/pypsa-earth/actions/workflows/test.yml/badge.svg)](https://github.com/pypsa-meets-earth/pypsa-earth/actions/workflows/test.yml)
[![Documentation Status](https://readthedocs.org/projects/pypsa-earth/badge/?version=latest)](https://pypsa-earth.readthedocs.io/en/latest/?badge=latest)
![Size](https://img.shields.io/github/repo-size/pypsa-meets-earth/pypsa-earth)
[![License: AGPL v3](https://img.shields.io/badge/License-AGPLv3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
@@ -393,6 +393,13 @@ The documentation is available here: [documentation](https://pypsa-earth.readthe
Ekaterina-Vo
+
+
+
+
+ Lukas Trippe
+
+ |
@@ -400,6 +407,8 @@ The documentation is available here: [documentation](https://pypsa-earth.readthe
Tobias
|
+
+
@@ -407,8 +416,6 @@ The documentation is available here: [documentation](https://pypsa-earth.readthe
Null
|
-
-
@@ -416,13 +423,6 @@ The documentation is available here: [documentation](https://pypsa-earth.readthe
Null
|
-
-
-
-
- Lukas Trippe
-
- |
diff --git a/doc/release_notes.rst b/doc/release_notes.rst
index 42dfecf92..f2a739e5c 100644
--- a/doc/release_notes.rst
+++ b/doc/release_notes.rst
@@ -26,12 +26,17 @@ E.g. if a new rule becomes available describe how to use it `make test` and in o
* Include a dedicated cutout for Oceania in bundle_config.yaml `PR #1157 `__
+* Removed duplications of devendencies in environment.yaml `PR #1128 `_
+
* Use BASE_DIR in rules and `_helpers.py` script for facilitate module import in subworkflow `PR #1137 `__
+
* Enable sector rules import in subworkflow `PR #1178 `__
* Include option of endogenous export, which optimizes the export quantity based on price signals `PR #1201 `__
+* Remove elec-based H2 and battery technologies before addition in `prepare_sector_network.py` script and fix bus names for links that models H2 repuspose network `PR #1198 `__
+
**Minor Changes and bug-fixing**
* The default configuration for `electricity:estimate_renewable_capacities:year` was updated from 2020 to 2023. `PR #1106 `__
@@ -50,6 +55,12 @@ E.g. if a new rule becomes available describe how to use it `make test` and in o
* Drop entries that contain non-string elements in country column of `CO2_emissions_csv` data in `prepare_transport_data_input.py` script `PR #1166 `_
+* Adds `Dependabot `__ to keep GitHub actions up to date. `PR #1184 `__
+
+* Adds code security scans via `CodeQL `__ to CI. `PR #1185 `__
+
+* Adds CI to update keep pinned environment files up to date. `PR #1183 `__ and `PR #1210 `__
+
PyPSA-Earth 0.4.1
=================
diff --git a/envs/environment.yaml b/envs/environment.yaml
index 7da885a73..5cf7cd46e 100644
--- a/envs/environment.yaml
+++ b/envs/environment.yaml
@@ -13,11 +13,14 @@ dependencies:
- mamba # esp for windows build
- pypsa>=0.24, <0.25
-# - atlite>=0.2.4 # until https://github.com/PyPSA/atlite/issues/244 is not merged
- dask
-- powerplantmatching
-- earth-osm>=2.1
-- atlite
+# currently the packages are being installed with pip
+# need to move back to conda once the issues will be resolved
+- powerplantmatching>=0.5.19
+# - earth-osm>=2.1
+# until the release will incorporate all the fixes needed
+# to work with CDS beta
+- atlite>=0.3
# Dependencies of the workflow itself
- xlrd
@@ -81,8 +84,7 @@ dependencies:
- gurobi
- pip:
- - earth-osm>=2.2 # until conda release it out
- - powerplantmatching>=0.5.19 # until conda release it out
+ - earth-osm>=2.2 # until conda release it out for earth-osm
- git+https://github.com/davide-f/google-drive-downloader@master # google drive with fix for virus scan
- git+https://github.com/FRESNA/vresutils@master # until new pip release > 0.3.1 (strictly)
- tsam>=1.1.0
diff --git a/envs/environment.fixed.yaml b/envs/linux-pinned.yaml
similarity index 64%
rename from envs/environment.fixed.yaml
rename to envs/linux-pinned.yaml
index 873a45f51..b0ebdc850 100644
--- a/envs/environment.fixed.yaml
+++ b/envs/linux-pinned.yaml
@@ -1,81 +1,81 @@
-# SPDX-FileCopyrightText: PyPSA-Earth and PyPSA-Eur Authors
+# SPDX-FileCopyrightText: PyPSA-Earth and PyPSA-Eur Authors
#
-# SPDX-License-Identifier: AGPL-3.0-or-later
+# SPDX-License-Identifier: CC0-1.0
name: pypsa-earth
channels:
+- conda-forge
- bioconda
- gurobi
-- conda-forge
- defaults
+- https://repo.anaconda.com/pkgs/main
+- https://repo.anaconda.com/pkgs/r
dependencies:
- _libgcc_mutex=0.1
- _openmp_mutex=4.5
- affine=2.4.0
-- alsa-lib=1.2.12
+- alsa-lib=1.2.13
+- ampl-mp=3.1.0
- amply=0.1.6
-- anyio=4.4.0
+- anyio=4.6.2.post1
- appdirs=1.4.4
-- archspec=0.2.3
- argon2-cffi=23.1.0
- argon2-cffi-bindings=21.2.0
- arrow=1.3.0
- asttokens=2.4.1
- async-lru=2.0.4
- atk-1.0=2.38.0
-- atlite=0.2.14
+- atlite==0.3.0
- attr=2.5.1
- attrs=24.2.0
-- aws-c-auth=0.7.22
-- aws-c-cal=0.7.1
-- aws-c-common=0.9.23
-- aws-c-compression=0.2.18
-- aws-c-event-stream=0.4.2
-- aws-c-http=0.8.2
-- aws-c-io=0.14.10
-- aws-c-mqtt=0.10.4
-- aws-c-s3=0.6.0
-- aws-c-sdkutils=0.1.16
-- aws-checksums=0.1.18
-- aws-crt-cpp=0.27.3
-- aws-sdk-cpp=1.11.329
-- azure-core-cpp=1.13.0
-- azure-identity-cpp=1.8.0
-- azure-storage-blobs-cpp=12.12.0
-- azure-storage-common-cpp=12.7.0
-- azure-storage-files-datalake-cpp=12.11.0
-- babel=2.14.0
+- aws-c-auth=0.8.0
+- aws-c-cal=0.8.0
+- aws-c-common=0.10.3
+- aws-c-compression=0.3.0
+- aws-c-event-stream=0.5.0
+- aws-c-http=0.9.1
+- aws-c-io=0.15.2
+- aws-c-mqtt=0.11.0
+- aws-c-s3=0.7.1
+- aws-c-sdkutils=0.2.1
+- aws-checksums=0.2.2
+- aws-crt-cpp=0.29.5
+- aws-sdk-cpp=1.11.449
+- azure-core-cpp=1.14.0
+- azure-identity-cpp=1.10.0
+- azure-storage-blobs-cpp=12.13.0
+- azure-storage-common-cpp=12.8.0
+- azure-storage-files-datalake-cpp=12.12.0
+- babel=2.16.0
- beautifulsoup4=4.12.3
-- bleach=6.1.0
+- bleach=6.2.0
- blosc=1.21.6
- bokeh=3.5.2
-- boltons=24.0.0
-- bottleneck=1.4.0
+- bottleneck=1.4.2
- branca=0.7.2
- brotli=1.1.0
- brotli-bin=1.1.0
- brotli-python=1.1.0
- brotlicffi=1.1.0.0
- bzip2=1.0.8
-- c-ares=1.32.3
+- c-ares=1.34.3
- c-blosc2=2.15.1
- ca-certificates=2024.8.30
- cached-property=1.5.2
- cached_property=1.5.2
-- cads-api-client=1.3.2
- cairo=1.18.0
+- capnproto=1.0.2
- cartopy=0.23.0
-- cdsapi=0.7.3
- certifi=2024.8.30
- cffi=1.17.1
- cfgv=3.3.1
- cfitsio=4.4.1
- cftime=1.6.4
-- charset-normalizer=3.3.2
+- charset-normalizer=3.4.0
- click=8.1.7
- click-plugins=1.1.1
- cligj=0.7.2
-- cloudpickle=3.0.0
+- cloudpickle=3.1.0
- coin-or-cbc=2.10.12
- coin-or-cgl=0.60.9
- coin-or-clp=1.17.10
@@ -85,67 +85,59 @@ dependencies:
- colorama=0.4.6
- colorcet=3.1.0
- comm=0.2.2
-- conda=24.7.1
-- conda-libmamba-solver=24.7.0
-- conda-package-handling=2.3.0
-- conda-package-streaming=0.10.0
- configargparse=1.7
- connection_pool=0.0.3
- contextily=1.6.2
-- contourpy=1.3.0
+- contourpy=1.3.1
- country_converter=1.2
+- cpp-expected=1.1.0
- cycler=0.12.1
-- cytoolz=0.12.3
-- dask=2024.9.0
-- dask-core=2024.9.0
-- dask-expr=1.1.14
+- cytoolz=1.0.0
+- dask=2024.11.2
+- dask-core=2024.11.2
+- dask-expr=1.1.19
- datashader=0.16.3
- datrie=0.8.2
- dbus=1.13.6
-- debugpy=1.8.5
+- debugpy=1.8.9
- decorator=5.1.1
- defusedxml=0.7.1
- deprecation=2.1.0
- descartes=1.1.0
-- distlib=0.3.8
-- distributed=2024.9.0
-- distro=1.9.0
+- distlib=0.3.9
+- distributed=2024.11.2
- docutils=0.21.2
- dpath=2.2.0
-- earth-osm=2.1
- entrypoints=0.4
-- entsoe-py=0.6.8
-- et_xmlfile=1.1.0
+- et_xmlfile=2.0.0
- exceptiongroup=1.2.2
- executing=2.1.0
-- expat=2.6.3
+- expat=2.6.4
- filelock=3.16.1
-- fiona=1.10.1
-- fmt=10.2.1
-- folium=0.17.0
+- fiona=1.9.6
+- fmt=11.0.2
+- folium=0.18.0
- font-ttf-dejavu-sans-mono=2.37
- font-ttf-inconsolata=3.000
- font-ttf-source-code-pro=2.038
- font-ttf-ubuntu=0.83
-- fontconfig=2.14.2
+- fontconfig=2.15.0
- fonts-conda-ecosystem=1
- fonts-conda-forge=1
-- fonttools=4.53.1
+- fonttools=4.55.0
- fqdn=1.5.1
- freetype=2.12.1
- freexl=2.0.0
- fribidi=1.0.10
-- frozendict=2.4.4
-- fsspec=2024.9.0
+- fsspec=2024.10.0
- future=1.0.0
- gdal=3.9.2
- gdk-pixbuf=2.42.12
- geographiclib=2.0
-- geojson-rewind=1.1.0
- geopandas=0.14.3
- geopandas-base=0.14.3
- geopy=2.4.1
-- geos=3.12.2
+- geos=3.13.0
- geotiff=1.7.3
- geoviews=1.13.0
- geoviews-core=1.13.0
@@ -155,8 +147,8 @@ dependencies:
- giflib=5.2.2
- gitdb=4.0.11
- gitpython=3.1.43
-- glib=2.80.3
-- glib-tools=2.80.3
+- glib=2.82.2
+- glib-tools=2.82.2
- glog=0.7.1
- glpk=5.0
- gmp=6.3.0
@@ -166,40 +158,38 @@ dependencies:
- gstreamer=1.24.7
- gtk2=2.24.33
- gts=0.7.6
-- gurobi=11.0.3
+- gurobi=12.0.0
- h11=0.14.0
- h2=4.1.0
- harfbuzz=9.0.0
- hdf4=4.2.15
- hdf5=1.14.3
-- holoviews=1.19.1
+- holoviews=1.20.0
- hpack=4.0.0
-- httpcore=1.0.5
+- httpcore=1.0.7
- httpx=0.27.2
- humanfriendly=10.0
-- hvplot=0.10.0
+- hvplot=0.11.1
- hyperframe=6.0.1
- icu=75.1
-- identify=2.6.1
+- identify=2.6.2
- idna=3.10
- importlib-metadata=8.5.0
- importlib_metadata=8.5.0
- importlib_resources=6.4.5
- inflate64=1.0.0
-- iniconfig=2.0.0
-- ipopt=3.13.2
+- ipopt=3.14.16
- ipykernel=6.29.5
-- ipython=8.27.0
+- ipython=8.29.0
- isoduration=20.11.0
-- jedi=0.19.1
+- jedi=0.19.2
- jinja2=3.1.4
- joblib=1.4.2
-- json-c=0.17
-- json5=0.9.25
-- jsonpatch=1.33
+- json-c=0.18
+- json5=0.9.28
- jsonpointer=3.0.0
- jsonschema=4.23.0
-- jsonschema-specifications=2023.12.1
+- jsonschema-specifications=2024.10.1
- jsonschema-with-format-nongpl=4.23.0
- jupyter-lsp=2.2.5
- jupyter_client=8.6.3
@@ -207,7 +197,7 @@ dependencies:
- jupyter_events=0.10.0
- jupyter_server=2.14.2
- jupyter_server_terminals=0.5.3
-- jupyterlab=4.2.5
+- jupyterlab=4.3.1
- jupyterlab_pygments=0.3.0
- jupyterlab_server=2.27.3
- kealib=1.5.3
@@ -216,15 +206,15 @@ dependencies:
- krb5=1.21.3
- lame=3.100
- lcms2=2.16
-- ld_impl_linux-64=2.40
+- ld_impl_linux-64=2.43
- lerc=4.0.0
-- libabseil=20240116.2
+- libabseil=20240722.0
- libaec=1.1.3
- libarchive=3.7.4
-- libarrow=17.0.0
-- libarrow-acero=17.0.0
-- libarrow-dataset=17.0.0
-- libarrow-substrait=17.0.0
+- libarrow=18.0.0
+- libarrow-acero=18.0.0
+- libarrow-dataset=18.0.0
+- libarrow-substrait=18.0.0
- libasprintf=0.22.5
- libasprintf-devel=0.22.5
- libblas=3.9.0
@@ -233,22 +223,22 @@ dependencies:
- libbrotlienc=1.1.0
- libcap=2.69
- libcblas=3.9.0
-- libclang-cpp15=15.0.7
-- libclang13=18.1.8
+- libclang-cpp19.1=19.1.4
+- libclang13=19.1.4
- libcrc32c=1.1.2
- libcups=2.3.3
- libcurl=8.10.1
-- libdeflate=1.21
+- libdeflate=1.22
- libdrm=2.4.123
- libedit=3.1.20191231
- libegl=1.7.0
- libev=4.33
- libevent=2.1.12
-- libexpat=2.6.3
+- libexpat=2.6.4
- libffi=3.4.2
- libflac=1.4.3
-- libgcc=14.1.0
-- libgcc-ng=14.1.0
+- libgcc=14.2.0
+- libgcc-ng=14.2.0
- libgcrypt=1.11.0
- libgd=2.3.3
- libgdal=3.9.2
@@ -267,64 +257,65 @@ dependencies:
- libgdal-xls=3.9.2
- libgettextpo=0.22.5
- libgettextpo-devel=0.22.5
-- libgfortran=14.1.0
-- libgfortran-ng=14.1.0
-- libgfortran5=14.1.0
+- libgfortran=14.2.0
+- libgfortran-ng=14.2.0
+- libgfortran5=14.2.0
- libgl=1.7.0
-- libglib=2.80.3
+- libglib=2.82.2
- libglvnd=1.7.0
- libglx=1.7.0
-- libgomp=14.1.0
-- libgoogle-cloud=2.26.0
-- libgoogle-cloud-storage=2.26.0
-- libgpg-error=1.50
-- libgrpc=1.62.2
+- libgomp=14.2.0
+- libgoogle-cloud=2.31.0
+- libgoogle-cloud-storage=2.31.0
+- libgpg-error=1.51
+- libgrpc=1.67.1
+- libhwloc=2.11.2
- libiconv=1.17
- libjpeg-turbo=3.0.0
- libkml=1.3.0
- liblapack=3.9.0
- liblapacke=3.9.0
- libllvm14=14.0.6
-- libllvm15=15.0.7
-- libllvm18=18.1.8
-- libmamba=1.5.9
-- libmambapy=1.5.9
+- libllvm19=19.1.4
+- libmamba=2.0.3
- libnetcdf=4.9.2
-- libnghttp2=1.58.0
+- libnghttp2=1.64.0
- libnsl=2.0.1
- libogg=1.3.5
-- libopenblas=0.3.27
+- libopenblas=0.3.28
- libopus=1.3.1
-- libparquet=17.0.0
+- libparquet=18.0.0
- libpciaccess=0.18
- libpng=1.6.44
-- libpq=16.4
-- libprotobuf=4.25.3
-- libre2-11=2023.09.01
+- libpq=16.6
+- libprotobuf=5.28.2
+- libre2-11=2024.07.02
- librsvg=2.58.4
- librttopo=1.1.0
+- libscotch=7.0.4
- libsndfile=1.2.2
- libsodium=1.0.20
- libsolv=0.7.30
- libspatialindex=2.0.0
- libspatialite=5.1.0
-- libsqlite=3.46.1
-- libssh2=1.11.0
-- libstdcxx=14.1.0
-- libstdcxx-ng=14.1.0
-- libsystemd0=256.6
-- libthrift=0.19.0
-- libtiff=4.6.0
+- libspral=2024.05.08
+- libsqlite=3.47.0
+- libssh2=1.11.1
+- libstdcxx=14.2.0
+- libstdcxx-ng=14.2.0
+- libsystemd0=256.7
+- libthrift=0.21.0
+- libtiff=4.7.0
- libutf8proc=2.8.0
- libuuid=2.38.1
- libvorbis=1.3.7
- libwebp-base=1.4.0
-- libxcb=1.16
+- libxcb=1.17.0
- libxcrypt=4.4.36
- libxkbcommon=1.7.0
-- libxml2=2.12.7
+- libxml2=2.13.5
- libxslt=1.1.39
-- libzip=1.10.1
+- libzip=1.11.2
- libzlib=1.3.1
- linkify-it-py=2.0.3
- linopy=0.3.11
@@ -334,27 +325,27 @@ dependencies:
- lz4=4.3.3
- lz4-c=1.9.4
- lzo=2.10
-- mamba=1.5.9
-- mapclassify=2.8.0
+- mamba=2.0.3
+- mapclassify=2.8.1
- markdown=3.6
- markdown-it-py=3.0.0
-- markupsafe=2.1.5
+- markupsafe=3.0.2
- matplotlib=3.5.2
- matplotlib-base=3.5.2
- matplotlib-inline=0.1.7
- mdit-py-plugins=0.4.2
- mdurl=0.1.2
- memory_profiler=0.61.0
-- menuinst=2.1.2
- mercantile=1.2.1
- metis=5.1.0
- minizip=4.0.7
- mistune=3.0.2
-- mpg123=1.32.6
+- mpg123=1.32.9
- msgpack-python=1.1.0
- multipledispatch=0.6.0
-- multiurl=0.3.1
- multivolumefile=0.2.3
+- mumps-include=5.7.3
+- mumps-seq=5.7.3
- munkres=1.1.4
- mysql-common=9.0.1
- mysql-libs=9.0.1
@@ -364,52 +355,50 @@ dependencies:
- ncurses=6.5
- nest-asyncio=1.6.0
- netcdf4=1.7.1
-- networkx=3.3
+- networkx=3.4
+- nlohmann_json=3.11.3
- nodeenv=1.9.1
- nomkl=1.0
- notebook-shim=0.2.4
-- nspr=4.35
-- nss=3.104
+- nspr=4.36
+- nss=3.107
- numba=0.60.0
-- numexpr=2.10.0
+- numexpr=2.10.1
- numpy=1.26.4
- openjpeg=2.5.2
- openpyxl=3.1.5
-- openssl=3.3.2
-- orc=2.0.1
+- openssl=3.4.0
+- orc=2.0.3
- overrides=7.7.0
-- packaging=24.1
+- packaging=24.2
- pandas=2.2.2
- pandocfilters=1.5.0
-- panel=1.5.0
+- panel=1.5.4
- pango=1.54.0
- param=2.1.1
- parso=0.8.4
- partd=1.4.2
-- patsy=0.5.6
+- patsy=1.0.1
- pcre2=10.44
- pexpect=4.9.0
- pickleshare=0.7.5
-- pillow=10.4.0
-- pip=24.2
+- pillow=11.0.0
+- pip=24.3.1
- pixman=0.43.2
- pkgutil-resolve-name=1.3.10
- plac=1.4.3
- platformdirs=4.3.6
-- pluggy=1.5.0
- ply=3.11
-- polars=1.7.1
+- polars=1.14.0
- poppler=24.08.0
- poppler-data=0.4.12
-- postgresql=16.4
-- powerplantmatching=0.6.0
-- pre-commit=3.8.0
-- progressbar2=4.5.0
+- postgresql=16.6
+- powerplantmatching==0.6.0
+- pre-commit=4.0.1
- proj=9.5.0
-- prometheus_client=0.20.0
-- prompt-toolkit=3.0.47
-- protobuf=4.25.3
-- psutil=6.0.0
+- prometheus_client=0.21.0
+- prompt-toolkit=3.0.48
+- psutil=6.1.0
- pthread-stubs=0.4
- ptyprocess=0.7.0
- pulp=2.7.0
@@ -417,70 +406,65 @@ dependencies:
- pure_eval=0.2.3
- py-cpuinfo=9.0.0
- py7zr=0.22.0
-- pyarrow=17.0.0
-- pyarrow-core=17.0.0
-- pyarrow-hotfix=0.6
+- pyarrow=18.0.0
+- pyarrow-core=18.0.0
- pybcj=1.0.2
-- pybind11-abi=4
-- pycosat=0.6.6
-- pycountry=24.6.1
- pycparser=2.22
-- pycryptodomex=3.20.0
+- pycryptodomex=3.21.0
- pyct=0.5.0
- pydoe2=1.3.0
- pygments=2.18.0
-- pyogrio=0.9.0
-- pyomo=6.8.0
-- pyparsing=3.1.4
+- pyogrio=0.10.0
+- pyomo=6.8.2
+- pyparsing=3.2.0
- pyppmd=1.1.0
-- pyproj=3.6.1
+- pyproj=3.7.0
- pypsa=0.24.0
- pyqt=5.15.9
- pyqt5-sip=12.12.2
- pyshp=2.3.1
- pysocks=1.7.1
- pytables=3.10.1
-- pytest=8.3.3
-- python=3.10.14
-- python-dateutil=2.9.0
+- python=3.10.15
+- python-dateutil=2.9.0.post0
- python-fastjsonschema=2.20.0
- python-json-logger=2.0.7
-- python-tzdata=2024.1
-- python-utils=3.8.2
+- python-tzdata=2024.2
- python_abi=3.10
- pytz=2024.2
- pyviz_comms=3.0.3
- pyyaml=6.0.2
- pyzmq=26.2.0
-- pyzstd=0.16.1
-- qt-main=5.15.8
+- pyzstd=0.16.2
+- qt-main=5.15.15
- rasterio=1.3.11
-- re2=2023.09.01
+- re2=2024.07.02
- readline=8.2
- referencing=0.35.1
-- reproc=14.2.4.post0
-- reproc-cpp=14.2.4.post0
+- reproc=14.2.5.post0
+- reproc-cpp=14.2.5.post0
- requests=2.32.3
- reretry=0.11.8
- reverse-geocode=1.4.1
- rfc3339-validator=0.1.4
- rfc3986-validator=0.1.1
- rioxarray=0.17.0
-- rpds-py=0.20.0
+- rpds-py=0.21.0
- rtree=1.3.0
- ruamel.yaml=0.17.26
- ruamel.yaml.clib=0.2.8
-- s2n=1.4.17
+- s2n=1.5.9
- scikit-learn=1.5.2
- scipy=1.14.1
- seaborn=0.13.2
- seaborn-base=0.13.2
- send2trash=1.8.3
-- setuptools=73.0.1
+- setuptools=75.6.0
- shapely=2.0.6
+- simdjson=3.10.1
- sip=6.7.12
- six=1.16.0
-- smart_open=7.0.4
+- smart_open=7.0.5
- smmap=5.0.0
- snakemake-minimal=7.32.4
- snappy=1.2.1
@@ -488,10 +472,10 @@ dependencies:
- snuggs=1.4.7
- sortedcontainers=2.4.0
- soupsieve=2.5
-- spdlog=1.13.0
-- sqlite=3.46.1
+- spdlog=1.14.1
+- sqlite=3.47.0
- stack_data=0.6.2
-- statsmodels=0.14.3
+- statsmodels=0.14.4
- stopit=1.1.2
- tabulate=0.9.0
- tblib=3.0.0
@@ -499,60 +483,57 @@ dependencies:
- texttable=1.7.0
- threadpoolctl=3.5.0
- throttler=1.2.2
-- tiledb=2.25.0
-- tinycss2=1.3.0
+- tiledb=2.26.2
+- tinycss2=1.4.0
- tk=8.6.13
- toml=0.10.2
-- tomli=2.0.1
-- toolz=0.12.1
+- tomli=2.1.0
+- toolz=1.0.0
- toposort=1.10
- tornado=6.4.1
-- tqdm=4.66.5
+- tqdm=4.67.0
- traitlets=5.14.3
-- truststore=0.9.2
-- types-python-dateutil=2.9.0.20240906
+- types-python-dateutil=2.9.0.20241003
- typing-extensions=4.12.2
- typing_extensions=4.12.2
- typing_utils=0.1.0
- tzcode=2024b
-- tzdata=2024a
+- tzdata=2024b
- uc-micro-py=1.0.3
- ukkonen=1.0.1
- unicodedata2=15.1.0
-- unidecode=1.3.8
+- unixodbc=2.3.12
- uri-template=1.3.0
- uriparser=0.9.8
- urllib3=2.2.3
- validators=0.34.0
-- virtualenv=20.26.5
+- virtualenv=20.27.1
- wcwidth=0.2.13
- webcolors=24.8.0
- webencodings=0.5.1
- websocket-client=1.8.0
-- wheel=0.44.0
+- wheel=0.45.1
- wrapt=1.16.0
-- xarray=2023.11.0
- xcb-util=0.4.1
- xcb-util-image=0.4.0
- xcb-util-keysyms=0.4.1
- xcb-util-renderutil=0.3.10
- xcb-util-wm=0.4.2
- xerces-c=3.2.5
-- xkeyboard-config=2.42
+- xkeyboard-config=2.43
- xlrd=2.0.1
-- xorg-kbproto=1.0.7
- xorg-libice=1.1.1
- xorg-libsm=1.2.4
-- xorg-libx11=1.8.9
+- xorg-libx11=1.8.10
- xorg-libxau=1.0.11
-- xorg-libxdmcp=1.1.3
-- xorg-libxext=1.3.4
+- xorg-libxdamage=1.1.6
+- xorg-libxdmcp=1.1.5
+- xorg-libxext=1.3.6
+- xorg-libxfixes=6.0.1
- xorg-libxrender=0.9.11
- xorg-libxxf86vm=1.1.5
-- xorg-renderproto=0.11.1
-- xorg-xextproto=7.3.0
- xorg-xf86vidmodeproto=2.3.1
-- xorg-xproto=7.0.31
+- xorg-xorgproto=2024.1
- xyzservices=2024.9.0
- xz=5.2.6
- yaml=0.2.5
@@ -561,16 +542,29 @@ dependencies:
- zeromq=4.3.5
- zict=3.0.0
- zipfile-deflate64=0.2.0
-- zipp=3.20.2
+- zipp=3.21.0
- zlib=1.3.1
- zlib-ng=2.2.2
- zstandard=0.23.0
- zstd=1.5.6
- pip:
- - chaospy==4.3.16
+ - cads-api-client==1.5.4
+ - cdsapi==0.7.4
+ - chaospy==4.3.17
- countrycode==0.4.0
+ - earth-osm==2.2
+ - entsoe-py==0.6.16
+ - fake-useragent==1.5.1
- googledrivedownloader==0.4
- - highspy==1.7.2
- - numpoly==1.2.13
- - tsam==2.3.3
- - vresutils==0.3.2.dev11+g150c1be
+ - highspy==1.8.1
+ - multiurl==0.3.3
+ - numpoly==1.3.4
+ - progressbar2==4.5.0
+ - protobuf==5.28.3
+ - pycountry==24.6.1
+ - python-utils==3.9.0
+ - tsam==2.3.6
+ - unidecode==1.3.8
+ - git+https://github.com/FRESNA/vresutils@master
+ - xarray==2024.11.0
+prefix: /usr/share/miniconda/envs/pypsa-earth
diff --git a/envs/macos-pinned.yaml b/envs/macos-pinned.yaml
new file mode 100644
index 000000000..d2ce9c15a
--- /dev/null
+++ b/envs/macos-pinned.yaml
@@ -0,0 +1,502 @@
+# SPDX-FileCopyrightText: PyPSA-Earth and PyPSA-Eur Authors
+#
+# SPDX-License-Identifier: CC0-1.0
+
+name: pypsa-earth
+channels:
+- conda-forge
+- bioconda
+- gurobi
+- defaults
+- https://repo.anaconda.com/pkgs/main
+- https://repo.anaconda.com/pkgs/r
+dependencies:
+- affine=2.4.0
+- ampl-mp=3.1.0
+- amply=0.1.6
+- anyio=4.6.2.post1
+- appdirs=1.4.4
+- appnope=0.1.4
+- argon2-cffi=23.1.0
+- argon2-cffi-bindings=21.2.0
+- arrow=1.3.0
+- asttokens=2.4.1
+- async-lru=2.0.4
+- atk-1.0=2.38.0
+- atlite==0.3.0
+- attrs=24.2.0
+- aws-c-auth=0.8.0
+- aws-c-cal=0.8.0
+- aws-c-common=0.10.3
+- aws-c-compression=0.3.0
+- aws-c-event-stream=0.5.0
+- aws-c-http=0.9.1
+- aws-c-io=0.15.2
+- aws-c-mqtt=0.11.0
+- aws-c-s3=0.7.1
+- aws-c-sdkutils=0.2.1
+- aws-checksums=0.2.2
+- aws-crt-cpp=0.29.5
+- aws-sdk-cpp=1.11.449
+- azure-core-cpp=1.14.0
+- azure-identity-cpp=1.10.0
+- azure-storage-blobs-cpp=12.13.0
+- azure-storage-common-cpp=12.8.0
+- azure-storage-files-datalake-cpp=12.12.0
+- babel=2.16.0
+- beautifulsoup4=4.12.3
+- bleach=6.2.0
+- blosc=1.21.6
+- bokeh=3.5.2
+- bottleneck=1.4.2
+- branca=0.7.2
+- brotli=1.1.0
+- brotli-bin=1.1.0
+- brotli-python=1.1.0
+- brotlicffi=1.1.0.0
+- bzip2=1.0.8
+- c-ares=1.34.3
+- c-blosc2=2.15.1
+- ca-certificates=2024.8.30
+- cached-property=1.5.2
+- cached_property=1.5.2
+- cairo=1.18.0
+- capnproto=1.0.2
+- cartopy=0.23.0
+- certifi=2024.8.30
+- cffi=1.17.1
+- cfgv=3.3.1
+- cfitsio=4.4.1
+- cftime=1.6.4
+- charset-normalizer=3.4.0
+- click=8.1.7
+- click-plugins=1.1.1
+- cligj=0.7.2
+- cloudpickle=3.1.0
+- coin-or-cbc=2.10.12
+- coin-or-cgl=0.60.9
+- coin-or-clp=1.17.10
+- coin-or-osi=0.108.11
+- coin-or-utils=2.11.12
+- coincbc=2.10.12
+- colorama=0.4.6
+- colorcet=3.1.0
+- comm=0.2.2
+- configargparse=1.7
+- connection_pool=0.0.3
+- contextily=1.6.2
+- contourpy=1.3.1
+- country_converter=1.2
+- cpp-expected=1.1.0
+- cycler=0.12.1
+- cyrus-sasl=2.1.27
+- cytoolz=1.0.0
+- dask=2024.11.2
+- dask-core=2024.11.2
+- dask-expr=1.1.19
+- datashader=0.16.3
+- datrie=0.8.2
+- debugpy=1.8.9
+- decorator=5.1.1
+- defusedxml=0.7.1
+- deprecation=2.1.0
+- descartes=1.1.0
+- distlib=0.3.9
+- distributed=2024.11.2
+- docutils=0.21.2
+- dpath=2.2.0
+- entrypoints=0.4
+- et_xmlfile=2.0.0
+- exceptiongroup=1.2.2
+- executing=2.1.0
+- filelock=3.16.1
+- fiona=1.9.6
+- fmt=11.0.2
+- folium=0.18.0
+- font-ttf-dejavu-sans-mono=2.37
+- font-ttf-inconsolata=3.000
+- font-ttf-source-code-pro=2.038
+- font-ttf-ubuntu=0.83
+- fontconfig=2.15.0
+- fonts-conda-ecosystem=1
+- fonts-conda-forge=1
+- fonttools=4.55.0
+- fqdn=1.5.1
+- freetype=2.12.1
+- freexl=2.0.0
+- fribidi=1.0.10
+- fsspec=2024.10.0
+- future=1.0.0
+- gdal=3.9.3
+- gdk-pixbuf=2.42.12
+- geographiclib=2.0
+- geopandas=0.14.3
+- geopandas-base=0.14.3
+- geopy=2.4.1
+- geos=3.13.0
+- geotiff=1.7.3
+- geoviews=1.13.0
+- geoviews-core=1.13.0
+- gflags=2.2.2
+- giflib=5.2.2
+- gitdb=4.0.11
+- gitpython=3.1.43
+- glog=0.7.1
+- glpk=5.0
+- gmp=6.3.0
+- graphite2=1.3.13
+- graphviz=12.0.0
+- gtk2=2.24.33
+- gts=0.7.6
+- gurobi=12.0.0
+- h11=0.14.0
+- h2=4.1.0
+- harfbuzz=9.0.0
+- hdf4=4.2.15
+- hdf5=1.14.3
+- holoviews=1.20.0
+- hpack=4.0.0
+- httpcore=1.0.7
+- httpx=0.27.2
+- humanfriendly=10.0
+- hvplot=0.11.1
+- hyperframe=6.0.1
+- icu=75.1
+- identify=2.6.2
+- idna=3.10
+- importlib-metadata=8.5.0
+- importlib_metadata=8.5.0
+- importlib_resources=6.4.5
+- inflate64=1.0.0
+- ipopt=3.14.16
+- ipykernel=6.29.5
+- ipython=8.29.0
+- isoduration=20.11.0
+- jedi=0.19.2
+- jinja2=3.1.4
+- joblib=1.4.2
+- json-c=0.18
+- json5=0.9.28
+- jsonpointer=3.0.0
+- jsonschema=4.23.0
+- jsonschema-specifications=2024.10.1
+- jsonschema-with-format-nongpl=4.23.0
+- jupyter-lsp=2.2.5
+- jupyter_client=8.6.3
+- jupyter_core=5.7.2
+- jupyter_events=0.10.0
+- jupyter_server=2.14.2
+- jupyter_server_terminals=0.5.3
+- jupyterlab=4.3.1
+- jupyterlab_pygments=0.3.0
+- jupyterlab_server=2.27.3
+- kealib=1.5.3
+- kiwisolver=1.4.7
+- krb5=1.21.3
+- lcms2=2.16
+- lerc=4.0.0
+- libabseil=20240722.0
+- libaec=1.1.3
+- libarchive=3.7.4
+- libarrow=18.0.0
+- libarrow-acero=18.0.0
+- libarrow-dataset=18.0.0
+- libarrow-substrait=18.0.0
+- libblas=3.9.0
+- libbrotlicommon=1.1.0
+- libbrotlidec=1.1.0
+- libbrotlienc=1.1.0
+- libcblas=3.9.0
+- libcrc32c=1.1.2
+- libcurl=8.10.1
+- libcxx=19.1.4
+- libdeflate=1.22
+- libedit=3.1.20191231
+- libev=4.33
+- libevent=2.1.12
+- libexpat=2.6.4
+- libffi=3.4.2
+- libgd=2.3.3
+- libgdal=3.9.3
+- libgdal-core=3.9.3
+- libgdal-fits=3.9.3
+- libgdal-grib=3.9.3
+- libgdal-hdf4=3.9.3
+- libgdal-hdf5=3.9.3
+- libgdal-jp2openjpeg=3.9.3
+- libgdal-kea=3.9.3
+- libgdal-netcdf=3.9.3
+- libgdal-pdf=3.9.3
+- libgdal-pg=3.9.3
+- libgdal-postgisraster=3.9.3
+- libgdal-tiledb=3.9.3
+- libgdal-xls=3.9.3
+- libgfortran=5.0.0
+- libgfortran5=13.2.0
+- libglib=2.82.2
+- libgoogle-cloud=2.31.0
+- libgoogle-cloud-storage=2.31.0
+- libgrpc=1.67.1
+- libiconv=1.17
+- libintl=0.22.5
+- libjpeg-turbo=3.0.0
+- libkml=1.3.0
+- liblapack=3.9.0
+- liblapacke=3.9.0
+- libllvm14=14.0.6
+- libmamba=2.0.3
+- libnetcdf=4.9.2
+- libnghttp2=1.64.0
+- libntlm=1.4
+- libopenblas=0.3.28
+- libparquet=18.0.0
+- libpng=1.6.44
+- libpq=17.2
+- libprotobuf=5.28.2
+- libre2-11=2024.07.02
+- librsvg=2.58.4
+- librttopo=1.1.0
+- libscotch=7.0.5
+- libsodium=1.0.20
+- libsolv=0.7.30
+- libspatialindex=2.0.0
+- libspatialite=5.1.0
+- libsqlite=3.47.0
+- libssh2=1.11.1
+- libthrift=0.21.0
+- libtiff=4.7.0
+- libutf8proc=2.8.0
+- libwebp-base=1.4.0
+- libxcb=1.17.0
+- libxml2=2.13.5
+- libxslt=1.1.39
+- libzip=1.11.2
+- libzlib=1.3.1
+- linkify-it-py=2.0.3
+- linopy=0.3.11
+- llvm-openmp=19.1.4
+- llvmlite=0.43.0
+- locket=1.0.0
+- lxml=5.3.0
+- lz4=4.3.3
+- lz4-c=1.9.4
+- lzo=2.10
+- mamba=2.0.3
+- mapclassify=2.8.1
+- markdown=3.6
+- markdown-it-py=3.0.0
+- markupsafe=3.0.2
+- matplotlib=3.5.2
+- matplotlib-base=3.5.2
+- matplotlib-inline=0.1.7
+- mdit-py-plugins=0.4.2
+- mdurl=0.1.2
+- memory_profiler=0.61.0
+- mercantile=1.2.1
+- metis=5.1.0
+- minizip=4.0.7
+- mistune=3.0.2
+- msgpack-python=1.1.0
+- multipledispatch=0.6.0
+- multivolumefile=0.2.3
+- mumps-include=5.7.3
+- mumps-seq=5.7.3
+- munkres=1.1.4
+- nbclient=0.10.0
+- nbconvert-core=7.16.4
+- nbformat=5.10.4
+- ncurses=6.5
+- nest-asyncio=1.6.0
+- netcdf4=1.7.1
+- networkx=3.4
+- nlohmann_json=3.11.3
+- nodeenv=1.9.1
+- notebook-shim=0.2.4
+- nspr=4.36
+- nss=3.107
+- numba=0.60.0
+- numexpr=2.10.1
+- numpy=1.26.4
+- openjpeg=2.5.2
+- openldap=2.6.8
+- openpyxl=3.1.5
+- openssl=3.4.0
+- orc=2.0.3
+- overrides=7.7.0
+- packaging=24.2
+- pandas=2.2.2
+- pandocfilters=1.5.0
+- panel=1.5.4
+- pango=1.54.0
+- param=2.1.1
+- parso=0.8.4
+- partd=1.4.2
+- patsy=1.0.1
+- pcre2=10.44
+- pexpect=4.9.0
+- pickleshare=0.7.5
+- pillow=11.0.0
+- pip=24.3.1
+- pixman=0.43.4
+- pkgutil-resolve-name=1.3.10
+- plac=1.4.3
+- platformdirs=4.3.6
+- ply=3.11
+- polars=1.14.0
+- poppler=24.08.0
+- poppler-data=0.4.12
+- postgresql=17.2
+- powerplantmatching==0.6.0
+- pre-commit=4.0.1
+- proj=9.5.0
+- prometheus_client=0.21.0
+- prompt-toolkit=3.0.48
+- psutil=6.1.0
+- pthread-stubs=0.4
+- ptyprocess=0.7.0
+- pulp=2.7.0
+- pure_eval=0.2.3
+- py-cpuinfo=9.0.0
+- py7zr=0.22.0
+- pyarrow=18.0.0
+- pyarrow-core=18.0.0
+- pybcj=1.0.2
+- pycparser=2.22
+- pycryptodomex=3.21.0
+- pyct=0.5.0
+- pydoe2=1.3.0
+- pygments=2.18.0
+- pyobjc-core=10.3.1
+- pyobjc-framework-cocoa=10.3.1
+- pyogrio=0.10.0
+- pyomo=6.8.2
+- pyparsing=3.2.0
+- pyppmd=1.1.0
+- pyproj=3.7.0
+- pypsa=0.24.0
+- pyshp=2.3.1
+- pysocks=1.7.1
+- pytables=3.10.1
+- python=3.10.15
+- python-dateutil=2.9.0.post0
+- python-fastjsonschema=2.20.0
+- python-json-logger=2.0.7
+- python-tzdata=2024.2
+- python_abi=3.10
+- pytz=2024.2
+- pyviz_comms=3.0.3
+- pyyaml=6.0.2
+- pyzmq=26.2.0
+- pyzstd=0.16.2
+- rasterio=1.3.11
+- re2=2024.07.02
+- readline=8.2
+- referencing=0.35.1
+- reproc=14.2.5.post0
+- reproc-cpp=14.2.5.post0
+- requests=2.32.3
+- reretry=0.11.8
+- reverse-geocode=1.4.1
+- rfc3339-validator=0.1.4
+- rfc3986-validator=0.1.1
+- rioxarray=0.17.0
+- rpds-py=0.21.0
+- rtree=1.3.0
+- ruamel.yaml=0.17.26
+- ruamel.yaml.clib=0.2.8
+- scikit-learn=1.5.2
+- scipy=1.14.1
+- seaborn=0.13.2
+- seaborn-base=0.13.2
+- send2trash=1.8.3
+- setuptools=75.6.0
+- shapely=2.0.6
+- simdjson=3.10.1
+- six=1.16.0
+- smart_open=7.0.5
+- smmap=5.0.0
+- snakemake-minimal=7.32.4
+- snappy=1.2.1
+- sniffio=1.3.1
+- snuggs=1.4.7
+- sortedcontainers=2.4.0
+- soupsieve=2.5
+- spdlog=1.14.1
+- sqlite=3.47.0
+- stack_data=0.6.2
+- statsmodels=0.14.4
+- stopit=1.1.2
+- tabulate=0.9.0
+- tblib=3.0.0
+- terminado=0.18.1
+- texttable=1.7.0
+- threadpoolctl=3.5.0
+- throttler=1.2.2
+- tiledb=2.26.2
+- tinycss2=1.4.0
+- tk=8.6.13
+- tomli=2.1.0
+- toolz=1.0.0
+- toposort=1.10
+- tornado=6.4.1
+- tqdm=4.67.0
+- traitlets=5.14.3
+- types-python-dateutil=2.9.0.20241003
+- typing-extensions=4.12.2
+- typing_extensions=4.12.2
+- typing_utils=0.1.0
+- tzcode=2024b
+- tzdata=2024b
+- uc-micro-py=1.0.3
+- ukkonen=1.0.1
+- unicodedata2=15.1.0
+- unixodbc=2.3.12
+- uri-template=1.3.0
+- uriparser=0.9.8
+- urllib3=2.2.3
+- validators=0.34.0
+- virtualenv=20.27.1
+- wcwidth=0.2.13
+- webcolors=24.8.0
+- webencodings=0.5.1
+- websocket-client=1.8.0
+- wheel=0.45.1
+- wrapt=1.16.0
+- xerces-c=3.2.5
+- xlrd=2.0.1
+- xorg-libxau=1.0.11
+- xorg-libxdmcp=1.1.5
+- xyzservices=2024.9.0
+- xz=5.2.6
+- yaml=0.2.5
+- yaml-cpp=0.8.0
+- yte=1.5.4
+- zeromq=4.3.5
+- zict=3.0.0
+- zipfile-deflate64=0.2.0
+- zipp=3.21.0
+- zlib=1.3.1
+- zlib-ng=2.2.2
+- zstandard=0.23.0
+- zstd=1.5.6
+- pip:
+ - cads-api-client==1.5.4
+ - cdsapi==0.7.4
+ - chaospy==4.3.17
+ - countrycode==0.4.0
+ - earth-osm==2.2
+ - entsoe-py==0.6.16
+ - fake-useragent==1.5.1
+ - googledrivedownloader==0.4
+ - highspy==1.8.1
+ - multiurl==0.3.3
+ - numpoly==1.3.4
+ - progressbar2==4.5.0
+ - protobuf==5.28.3
+ - pycountry==24.6.1
+ - python-utils==3.9.0
+ - tsam==2.3.6
+ - unidecode==1.3.8
+ - git+https://github.com/FRESNA/vresutils@master
+ - xarray==2024.11.0
+prefix: /Users/runner/miniconda3/envs/pypsa-earth
diff --git a/envs/windows-pinned.yaml b/envs/windows-pinned.yaml
new file mode 100644
index 000000000..ab01b32da
--- /dev/null
+++ b/envs/windows-pinned.yaml
@@ -0,0 +1,499 @@
+# SPDX-FileCopyrightText: PyPSA-Earth and PyPSA-Eur
+#
+# SPDX-License-Identifier: CC0-1.0
+
+name: pypsa-earth
+channels:
+- conda-forge
+- bioconda
+- gurobi
+- defaults
+- https://repo.anaconda.com/pkgs/main
+- https://repo.anaconda.com/pkgs/r
+- https://repo.anaconda.com/pkgs/msys2
+dependencies:
+- _openmp_mutex=4.5
+- affine=2.4.0
+- amply=0.1.6
+- anyio=4.6.2.post1
+- appdirs=1.4.4
+- argon2-cffi=23.1.0
+- argon2-cffi-bindings=21.2.0
+- arrow=1.3.0
+- asttokens=2.4.1
+- async-lru=2.0.4
+- atlite==0.3.0
+- attrs=24.2.0
+- aws-c-auth=0.8.0
+- aws-c-cal=0.8.0
+- aws-c-common=0.10.3
+- aws-c-compression=0.3.0
+- aws-c-event-stream=0.5.0
+- aws-c-http=0.9.1
+- aws-c-io=0.15.2
+- aws-c-mqtt=0.11.0
+- aws-c-s3=0.7.1
+- aws-c-sdkutils=0.2.1
+- aws-checksums=0.2.2
+- aws-crt-cpp=0.29.5
+- aws-sdk-cpp=1.11.449
+- azure-core-cpp=1.14.0
+- azure-identity-cpp=1.10.0
+- azure-storage-blobs-cpp=12.13.0
+- azure-storage-common-cpp=12.8.0
+- babel=2.16.0
+- beautifulsoup4=4.12.3
+- bleach=6.2.0
+- blosc=1.21.6
+- bokeh=3.5.2
+- bottleneck=1.4.2
+- branca=0.7.2
+- brotli=1.1.0
+- brotli-bin=1.1.0
+- brotli-python=1.1.0
+- brotlicffi=1.1.0.0
+- bzip2=1.0.8
+- c-ares=1.34.3
+- c-blosc2=2.15.1
+- ca-certificates=2024.8.30
+- cached-property=1.5.2
+- cached_property=1.5.2
+- cairo=1.18.0
+- capnproto=1.0.2
+- cartopy=0.23.0
+- certifi=2024.8.30
+- cffi=1.17.1
+- cfgv=3.3.1
+- cfitsio=4.4.1
+- cftime=1.6.4
+- charset-normalizer=3.4.0
+- click=8.1.7
+- click-plugins=1.1.1
+- cligj=0.7.2
+- cloudpickle=3.1.0
+- colorama=0.4.6
+- colorcet=3.1.0
+- comm=0.2.2
+- configargparse=1.7
+- connection_pool=0.0.3
+- contextily=1.6.2
+- contourpy=1.3.1
+- country_converter=1.2
+- cpp-expected=1.1.0
+- cpython=3.10.15
+- cycler=0.12.1
+- cytoolz=1.0.0
+- dask=2024.11.2
+- dask-core=2024.11.2
+- dask-expr=1.1.19
+- datashader=0.16.3
+- datrie=0.8.2
+- debugpy=1.8.9
+- decorator=5.1.1
+- defusedxml=0.7.1
+- deprecation=2.1.0
+- descartes=1.1.0
+- distlib=0.3.9
+- distributed=2024.11.2
+- docutils=0.21.2
+- dpath=2.2.0
+- entrypoints=0.4
+- et_xmlfile=2.0.0
+- exceptiongroup=1.2.2
+- executing=2.1.0
+- filelock=3.16.1
+- fiona=1.9.6
+- fmt=11.0.2
+- folium=0.18.0
+- font-ttf-dejavu-sans-mono=2.37
+- font-ttf-inconsolata=3.000
+- font-ttf-source-code-pro=2.038
+- font-ttf-ubuntu=0.83
+- fontconfig=2.15.0
+- fonts-conda-ecosystem=1
+- fonts-conda-forge=1
+- fonttools=4.55.0
+- fqdn=1.5.1
+- freetype=2.12.1
+- freexl=2.0.0
+- fribidi=1.0.10
+- fsspec=2024.10.0
+- future=1.0.0
+- gdal=3.9.3
+- geographiclib=2.0
+- geopandas=0.14.3
+- geopandas-base=0.14.3
+- geopy=2.4.1
+- geos=3.13.0
+- geotiff=1.7.3
+- geoviews=1.13.0
+- geoviews-core=1.13.0
+- getopt-win32=0.1
+- gitdb=4.0.11
+- gitpython=3.1.43
+- glib=2.82.2
+- glib-tools=2.82.2
+- glpk=5.0
+- graphite2=1.3.13
+- graphviz=12.0.0
+- gst-plugins-base=1.24.7
+- gstreamer=1.24.7
+- gts=0.7.6
+- gurobi=12.0.0
+- h11=0.14.0
+- h2=4.1.0
+- harfbuzz=9.0.0
+- hdf4=4.2.15
+- hdf5=1.14.3
+- holoviews=1.20.0
+- hpack=4.0.0
+- httpcore=1.0.7
+- httpx=0.27.2
+- humanfriendly=10.0
+- hvplot=0.11.1
+- hyperframe=6.0.1
+- icu=75.1
+- identify=2.6.2
+- idna=3.10
+- importlib-metadata=8.5.0
+- importlib_metadata=8.5.0
+- importlib_resources=6.4.5
+- inflate64=1.0.0
+- ipopt=3.14.16
+- ipykernel=6.29.5
+- ipython=8.29.0
+- isoduration=20.11.0
+- jedi=0.19.2
+- jinja2=3.1.4
+- joblib=1.4.2
+- json5=0.9.28
+- jsonpointer=3.0.0
+- jsonschema=4.23.0
+- jsonschema-specifications=2024.10.1
+- jsonschema-with-format-nongpl=4.23.0
+- jupyter-lsp=2.2.5
+- jupyter_client=8.6.3
+- jupyter_core=5.7.2
+- jupyter_events=0.10.0
+- jupyter_server=2.14.2
+- jupyter_server_terminals=0.5.3
+- jupyterlab=4.3.1
+- jupyterlab_pygments=0.3.0
+- jupyterlab_server=2.27.3
+- kealib=1.5.3
+- kiwisolver=1.4.7
+- krb5=1.21.3
+- lcms2=2.16
+- lerc=4.0.0
+- libabseil=20240722.0
+- libaec=1.1.3
+- libarchive=3.7.4
+- libarrow=18.0.0
+- libarrow-acero=18.0.0
+- libarrow-dataset=18.0.0
+- libarrow-substrait=18.0.0
+- libblas=3.9.0
+- libbrotlicommon=1.1.0
+- libbrotlidec=1.1.0
+- libbrotlienc=1.1.0
+- libcblas=3.9.0
+- libclang13=19.1.4
+- libcrc32c=1.1.2
+- libcurl=8.10.1
+- libdeflate=1.22
+- libevent=2.1.12
+- libexpat=2.6.4
+- libffi=3.4.2
+- libflang=5.0.0
+- libgcc=14.2.0
+- libgd=2.3.3
+- libgdal=3.9.3
+- libgdal-core=3.9.3
+- libgdal-fits=3.9.3
+- libgdal-grib=3.9.3
+- libgdal-hdf4=3.9.3
+- libgdal-hdf5=3.9.3
+- libgdal-jp2openjpeg=3.9.3
+- libgdal-kea=3.9.3
+- libgdal-netcdf=3.9.3
+- libgdal-pdf=3.9.3
+- libgdal-pg=3.9.3
+- libgdal-postgisraster=3.9.3
+- libgdal-tiledb=3.9.3
+- libgdal-xls=3.9.3
+- libglib=2.82.2
+- libgomp=14.2.0
+- libgoogle-cloud=2.31.0
+- libgoogle-cloud-storage=2.31.0
+- libgrpc=1.67.1
+- libiconv=1.17
+- libintl=0.22.5
+- libintl-devel=0.22.5
+- libjpeg-turbo=3.0.0
+- libkml=1.3.0
+- liblapack=3.9.0
+- libmamba=2.0.3
+- libnetcdf=4.9.2
+- libogg=1.3.5
+- libopenblas=0.3.28
+- libparquet=18.0.0
+- libpng=1.6.44
+- libpq=17.2
+- libprotobuf=5.28.2
+- libre2-11=2024.07.02
+- librttopo=1.1.0
+- libsodium=1.0.20
+- libsolv=0.7.30
+- libspatialindex=2.0.0
+- libspatialite=5.1.0
+- libsqlite=3.47.0
+- libssh2=1.11.1
+- libthrift=0.21.0
+- libtiff=4.7.0
+- libutf8proc=2.8.0
+- libvorbis=1.3.7
+- libwebp-base=1.4.0
+- libwinpthread=12.0.0.r4.gg4f2fc60ca
+- libxcb=1.17.0
+- libxml2=2.13.5
+- libxslt=1.1.39
+- libzip=1.11.2
+- libzlib=1.3.1
+- linkify-it-py=2.0.3
+- linopy=0.3.11
+- llvm-meta=5.0.0
+- llvmlite=0.43.0
+- locket=1.0.0
+- lxml=5.3.0
+- lz4=4.3.3
+- lz4-c=1.9.4
+- lzo=2.10
+- mamba=2.0.3
+- mapclassify=2.8.1
+- markdown=3.6
+- markdown-it-py=3.0.0
+- markupsafe=3.0.2
+- matplotlib=3.5.2
+- matplotlib-base=3.5.2
+- matplotlib-inline=0.1.7
+- mdit-py-plugins=0.4.2
+- mdurl=0.1.2
+- memory_profiler=0.61.0
+- mercantile=1.2.1
+- minizip=4.0.6
+- mistune=3.0.2
+- msgpack-python=1.1.0
+- multipledispatch=0.6.0
+- multivolumefile=0.2.3
+- mumps-seq=5.7.3
+- munkres=1.1.4
+- nbclient=0.10.0
+- nbconvert-core=7.16.4
+- nbformat=5.10.4
+- nest-asyncio=1.6.0
+- netcdf4=1.7.1
+- networkx=3.4
+- nlohmann_json=3.11.3
+- nodeenv=1.9.1
+- nomkl=1.0
+- notebook-shim=0.2.4
+- numba=0.60.0
+- numexpr=2.10.1
+- numpy=1.26.4
+- openjpeg=2.5.2
+- openmp=5.0.0
+- openpyxl=3.1.5
+- openssl=3.4.0
+- orc=2.0.3
+- overrides=7.7.0
+- packaging=24.2
+- pandas=2.2.2
+- pandocfilters=1.5.0
+- panel=1.5.4
+- pango=1.54.0
+- param=2.1.1
+- parso=0.8.4
+- partd=1.4.2
+- patsy=1.0.1
+- pcre2=10.44
+- pickleshare=0.7.5
+- pillow=11.0.0
+- pip=24.3.1
+- pixman=0.43.4
+- pkgutil-resolve-name=1.3.10
+- plac=1.4.3
+- platformdirs=4.3.6
+- ply=3.11
+- poppler=24.08.0
+- poppler-data=0.4.12
+- postgresql=17.2
+- powerplantmatching==0.6.0
+- pre-commit=4.0.1
+- proj=9.5.0
+- prometheus_client=0.21.0
+- prompt-toolkit=3.0.48
+- psutil=6.1.0
+- pthread-stubs=0.4
+- pulp=2.7.0
+- pure_eval=0.2.3
+- py-cpuinfo=9.0.0
+- py7zr=0.22.0
+- pyarrow=18.0.0
+- pyarrow-core=18.0.0
+- pybcj=1.0.2
+- pycparser=2.22
+- pycryptodomex=3.21.0
+- pyct=0.5.0
+- pydoe2=1.3.0
+- pygments=2.18.0
+- pyogrio=0.10.0
+- pyomo=6.8.2
+- pyparsing=3.2.0
+- pyppmd=1.1.0
+- pyproj=3.7.0
+- pypsa=0.24.0
+- pyqt=5.15.9
+- pyqt5-sip=12.12.2
+- pyreadline3=3.5.4
+- pyshp=2.3.1
+- pysocks=1.7.1
+- pytables=3.10.1
+- python=3.10.15
+- python-dateutil=2.9.0.post0
+- python-fastjsonschema=2.20.0
+- python-json-logger=2.0.7
+- python-tzdata=2024.2
+- python_abi=3.10
+- pytz=2024.2
+- pyviz_comms=3.0.3
+- pywin32=307
+- pywinpty=2.0.14
+- pyyaml=6.0.2
+- pyzmq=26.2.0
+- pyzstd=0.16.2
+- qt-main=5.15.15
+- rasterio=1.3.11
+- re2=2024.07.02
+- referencing=0.35.1
+- reproc=14.2.5.post0
+- reproc-cpp=14.2.5.post0
+- requests=2.32.3
+- reretry=0.11.8
+- reverse-geocode=1.4.1
+- rfc3339-validator=0.1.4
+- rfc3986-validator=0.1.1
+- rioxarray=0.17.0
+- rpds-py=0.21.0
+- rtree=1.3.0
+- ruamel.yaml=0.17.26
+- ruamel.yaml.clib=0.2.8
+- scikit-learn=1.5.2
+- scipy=1.14.1
+- seaborn=0.13.2
+- seaborn-base=0.13.2
+- send2trash=1.8.3
+- setuptools=75.6.0
+- shapely=2.0.6
+- simdjson=3.10.1
+- sip=6.7.12
+- six=1.16.0
+- smart_open=7.0.5
+- smmap=5.0.0
+- snakemake-minimal=7.32.4
+- snappy=1.2.1
+- sniffio=1.3.1
+- snuggs=1.4.7
+- sortedcontainers=2.4.0
+- soupsieve=2.5
+- spdlog=1.14.1
+- sqlite=3.47.0
+- stack_data=0.6.2
+- statsmodels=0.14.4
+- stopit=1.1.2
+- tabulate=0.9.0
+- tblib=3.0.0
+- terminado=0.18.1
+- texttable=1.7.0
+- threadpoolctl=3.5.0
+- throttler=1.2.2
+- tiledb=2.26.2
+- tinycss2=1.4.0
+- tk=8.6.13
+- toml=0.10.2
+- tomli=2.1.0
+- toolz=1.0.0
+- toposort=1.10
+- tornado=6.4.1
+- tqdm=4.67.0
+- traitlets=5.14.3
+- types-python-dateutil=2.9.0.20241003
+- typing-extensions=4.12.2
+- typing_extensions=4.12.2
+- typing_utils=0.1.0
+- tzdata=2024b
+- uc-micro-py=1.0.3
+- ucrt=10.0.22621.0
+- ukkonen=1.0.1
+- unicodedata2=15.1.0
+- uri-template=1.3.0
+- uriparser=0.9.8
+- urllib3=2.2.3
+- validators=0.34.0
+- vc=14.3
+- vc14_runtime=14.42.34433
+- virtualenv=20.27.1
+- vs2015_runtime=14.42.34433
+- wcwidth=0.2.13
+- webcolors=24.8.0
+- webencodings=0.5.1
+- websocket-client=1.8.0
+- wheel=0.45.1
+- win_inet_pton=1.1.0
+- winpty=0.4.3
+- wrapt=1.16.0
+- xerces-c=3.2.5
+- xlrd=2.0.1
+- xorg-libice=1.1.1
+- xorg-libsm=1.2.4
+- xorg-libx11=1.8.10
+- xorg-libxau=1.0.11
+- xorg-libxdmcp=1.1.5
+- xorg-libxext=1.3.6
+- xorg-libxpm=3.5.17
+- xorg-libxt=1.3.1
+- xorg-xorgproto=2024.1
+- xyzservices=2024.9.0
+- xz=5.2.6
+- yaml=0.2.5
+- yaml-cpp=0.8.0
+- yte=1.5.4
+- zeromq=4.3.5
+- zict=3.0.0
+- zipfile-deflate64=0.2.0
+- zipp=3.21.0
+- zlib=1.3.1
+- zlib-ng=2.2.2
+- zstandard=0.23.0
+- zstd=1.5.6
+- pip:
+ - cads-api-client==1.5.4
+ - cdsapi==0.7.4
+ - chaospy==4.3.17
+ - countrycode==0.4.0
+ - earth-osm==2.2
+ - entsoe-py==0.6.16
+ - fake-useragent==1.5.1
+ - googledrivedownloader==0.4
+ - highspy==1.8.1
+ - multiurl==0.3.3
+ - numpoly==1.3.4
+ - polars==1.14.0
+ - progressbar2==4.5.0
+ - protobuf==5.28.3
+ - pycountry==24.6.1
+ - python-utils==3.9.0
+ - tsam==2.3.6
+ - unidecode==1.3.8
+ - git+https://github.com/FRESNA/vresutils@master
+ - xarray==2024.11.0
+prefix: C:\Miniconda\envs\pypsa-earth
diff --git a/scripts/prepare_gas_network.py b/scripts/prepare_gas_network.py
index cbdcd120a..2ef30d0ff 100644
--- a/scripts/prepare_gas_network.py
+++ b/scripts/prepare_gas_network.py
@@ -23,6 +23,7 @@
BASE_DIR,
content_retrieve,
progress_retrieve,
+ three_2_two_digits_country,
two_2_three_digits_country,
)
from build_shapes import gadm
@@ -915,13 +916,13 @@ def check_existence(row):
)
# Conversion of GADM id to from 3 to 2-digit
- # pipelines["bus0"] = pipelines["bus0"].apply(
- # lambda id: three_2_two_digits_country(id[:3]) + id[3:]
- # )
+ pipelines["bus0"] = pipelines["bus0"].apply(
+ lambda id: three_2_two_digits_country(id[:3]) + id[3:]
+ )
- # pipelines["bus1"] = pipelines["bus1"].apply(
- # lambda id: three_2_two_digits_country(id[:3]) + id[3:]
- # )
+ pipelines["bus1"] = pipelines["bus1"].apply(
+ lambda id: three_2_two_digits_country(id[:3]) + id[3:]
+ )
pipelines.to_csv(snakemake.output.clustered_gas_network, index=False)
diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py
index 88caefb9f..01ab70a7b 100644
--- a/scripts/prepare_sector_network.py
+++ b/scripts/prepare_sector_network.py
@@ -186,9 +186,9 @@ def H2_liquid_fossil_conversions(n, costs):
def add_hydrogen(n, costs):
"function to add hydrogen as an energy carrier with its conversion technologies from and to AC"
+ logger.info("Adding hydrogen")
- if not "H2" in n.carriers.index:
- n.add("Carrier", "H2")
+ n.add("Carrier", "H2")
n.madd(
"Bus",
@@ -488,22 +488,9 @@ def add_links_elec_routing_new_H2_pipelines():
# Order buses to detect equal pairs for bidirectional pipelines
buses_ordered = h2_links.apply(lambda p: sorted([p.bus0, p.bus1]), axis=1)
- if snakemake.config["build_osm_network"]["force_ac"]:
- # Appending string for carrier specification '_AC'
- h2_links["bus0"] = buses_ordered.str[0] + "_AC"
- h2_links["bus1"] = buses_ordered.str[1] + "_AC"
-
- # # Conversion of GADM id to from 3 to 2-digit
- # h2_links["bus0"] = (
- # h2_links["bus0"]
- # .str.split(".")
- # .apply(lambda id: three_2_two_digits_country(id[0]) + "." + id[1])
- # )
- # h2_links["bus1"] = (
- # h2_links["bus1"]
- # .str.split(".")
- # .apply(lambda id: three_2_two_digits_country(id[0]) + "." + id[1])
- # )
+ # Appending string for carrier specification '_AC', because hydrogen has _AC in bus names
+ h2_links["bus0"] = buses_ordered.str[0] + "_AC"
+ h2_links["bus1"] = buses_ordered.str[1] + "_AC"
# Create index column
h2_links["buses_idx"] = (
@@ -517,7 +504,7 @@ def add_links_elec_routing_new_H2_pipelines():
if len(h2_links) > 0:
if snakemake.config["sector"]["hydrogen"]["gas_network_repurposing"]:
- add_links_elec_routing_new_H2_pipelines()
+ add_links_repurposed_H2_pipelines()
if snakemake.config["sector"]["hydrogen"]["network_routes"] == "greenfield":
add_links_elec_routing_new_H2_pipelines()
else:
@@ -1096,9 +1083,9 @@ def add_aviation(n, cost):
def add_storage(n, costs):
"function to add the different types of storage systems"
+ logger.info("Add battery storage")
- if not "battery" in n.carriers.index:
- n.add("Carrier", "battery")
+ n.add("Carrier", "battery")
n.madd(
"Bus",
@@ -2763,6 +2750,31 @@ def remove_elec_base_techs(n):
n.carriers.drop(to_remove, inplace=True, errors="ignore")
+def remove_carrier_related_components(n, carriers_to_drop):
+ """
+ Removes carrier related components, such as "Carrier", "Generator", "Link", "Store", and "Storage Unit"
+ """
+ # remove carriers
+ n.carriers.drop(carriers_to_drop, inplace=True, errors="ignore")
+
+ # remove buses, generators, stores, and storage units with carrier to remote
+ for c in n.iterate_components(["Bus", "Generator", "Store", "StorageUnit"]):
+ logger.info(f"Removing {c.list_name} with carrier {list(carriers_to_drop)}")
+ names = c.df.index[c.df.carrier.isin(carriers_to_drop)]
+ if c.name == "Bus":
+ buses_to_remove = names
+ n.mremove(c.name, names)
+
+ # remove links connected to buses that were removed
+ links_to_remove = n.links.query(
+ "bus0 in @buses_to_remove or bus1 in @buses_to_remove or bus2 in @buses_to_remove or bus3 in @buses_to_remove or bus4 in @buses_to_remove"
+ ).index
+ logger.info(
+ f"Removing links with carrier {list(n.links.loc[links_to_remove].carrier.unique())}"
+ )
+ n.mremove("Link", links_to_remove)
+
+
if __name__ == "__main__":
if "snakemake" not in globals():
# from helper import mock_snakemake #TODO remove func from here to helper script
@@ -2906,6 +2918,9 @@ def remove_elec_base_techs(n):
add_generation(n, costs, existing_capacities, existing_efficiencies, existing_nodes)
+ # remove H2 and battery technologies added in elec-only model
+ remove_carrier_related_components(n, carriers_to_drop=["H2", "battery"])
+
add_hydrogen(n, costs) # TODO add costs
add_storage(n, costs)
|