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 + + + lkstrp +
+ Lukas Trippe +
+ Tooblippe @@ -400,6 +407,8 @@ The documentation is available here: [documentation](https://pypsa-earth.readthe Tobias + + asolavi @@ -407,8 +416,6 @@ The documentation is available here: [documentation](https://pypsa-earth.readthe Null - - rajesh-ieg @@ -416,13 +423,6 @@ The documentation is available here: [documentation](https://pypsa-earth.readthe Null - - - lkstrp -
- Lukas Trippe -
- danielelerede-oet 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)