Skip to main content

Provides a reproducible, versioned Python environment for Anemoi experiments.

Project description

Project Maturity: Emerging CI Test Status CI Publish Status

Provides a reproducible, versioned Python environment for Anemoi experiments.

anemoi-env is a meta-package that defines a standardized set of dependencies for machine learning and data science workflows. It contains no source code—only dependency declarations that are automatically versioned and published monthly.

Installation

Stable Release (Locked Dependencies)

For reproducible environments, install a specific calendar-versioned release from PyPI:

$ pip install anemoi-env==2025.10

Or install the latest locked version from the main branch:

$ pip install git+https://github.com/MeteoSwiss/anemoi-env.git@main

Development (Flexible Dependencies)

For development with the latest Anemoi features from main branches (no lock file):

$ pip install git+https://github.com/MeteoSwiss/anemoi-env.git@dev

Warning: The dev branch uses bleeding-edge dependencies and may be unstable.

Feature Testing (Fixed Commit SHAs)

For testing specific features with reproducible Anemoi commits, create a feature branch from main (not dev):

$ git checkout main
$ git checkout -b feature-test/new-graphs

Then edit pyproject.toml to pin specific commits:

[tool.poetry.dependencies]
anemoi-datasets = { git = "https://github.com/ecmwf/anemoi-datasets", rev = "abc123def" }
anemoi-graphs = { git = "https://github.com/ecmwf/anemoi-core.git", subdirectory = "graphs", rev = "def456abc" }
# ... other packages with fixed revisions

Run poetry lock to generate a lock file for this specific combination, then install:

$ poetry lock
$ poetry install

This approach provides reproducibility while testing bleeding-edge features before they’re released to PyPI.

Branching Strategy

This repository uses a multi-branch strategy with different dependency sources:

  • main: Contains poetry.lock and uses stable PyPI releases of all dependencies. Updated automatically every Monday via CI. Each update creates a calendar-versioned release (e.g., 2025.10) and publishes to PyPI. Use this for reproducible, production-ready environments.

  • dev: Contains pyproject.toml with no lock file and uses bleeding-edge versions from Anemoi package main branches (via git dependencies). Used for development against the latest Anemoi features. Not published to PyPI.

  • feature-test/: Custom feature branches with fixed commit SHAs for each Anemoi package. Includes poetry.lock for reproducible testing of specific feature combinations. Useful for validating new features before they reach PyPI. Not published.

Continuous Integration

The repository includes automated CI/CD workflows:

  • CI Test (CI_test.yaml): Runs on every push and pull request. Tests installation and verifies that all Anemoi packages can be imported successfully.

  • CI Publish (CI_publish.yaml): Runs every Monday at 3 AM UTC. Automatically:

    1. Updates poetry.lock with latest compatible versions

    2. Checks if any dependencies have changed

    3. If changes detected:

      • Updates version to current date (YYYY.MM.DD)

      • Runs scripts/update_changelog.py to document Anemoi package versions

      • Creates a git tag

      • Publishes the new release to PyPI

    4. If no changes, skips publishing

This ensures monthly snapshots of the Anemoi ecosystem are automatically published when updates are available.

Versioning

Uses Calendar Versioning (CalVer): YYYY.MM

Each monthly release represents a snapshot of the dependency tree at that point in time.

What’s Included

  • Anemoi Packages:

    • anemoi-datasets

    • anemoi-graphs

    • anemoi-inference

    • anemoi-models

    • anemoi-registry

    • anemoi-training

    • anemoi-utils

Development Setup with Poetry

Note: This package is a meta-package with no source code. Development primarily involves updating dependencies in pyproject.toml.

Local Development

Clone and install in development mode:

$ git clone https://github.com/MeteoSwiss/anemoi-env.git
$ cd anemoi-env
$ git checkout dev
$ poetry install

Generate Documentation

$ poetry run sphinx-build doc doc/_build

Then open the index.html file generated in anemoi-env/doc/_build/.

Usage For Reproducible Research

Always specify the exact version in your project dependencies:

For stable PyPI releases:

[tool.poetry.dependencies]
anemoi-env = "2025.10"

Or in requirements.txt:

anemoi-env==2025.10

For testing specific feature combinations:

[tool.poetry.dependencies]
anemoi-env = { git = "https://github.com/MeteoSwiss/anemoi-env.git", rev = "feature-test/new-graphs" }

This ensures your research uses a specific, reproducible set of dependencies—either from PyPI (stable) or from a pinned feature branch (testing).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anemoi_env-2025.10.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

anemoi_env-2025.10-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file anemoi_env-2025.10.tar.gz.

File metadata

  • Download URL: anemoi_env-2025.10.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.11 Linux/6.11.0-1018-azure

File hashes

Hashes for anemoi_env-2025.10.tar.gz
Algorithm Hash digest
SHA256 6f7410cf38765d29b1ec8bf4119455432ca74e0a48eae8d17b5f26baf5f02b25
MD5 fad47999eaaeb54a9d357b216a582847
BLAKE2b-256 9a4ccb5ef39dcc8f08a08bcd2fb91f33a52d690ca110cdc2b417edd78c844ed1

See more details on using hashes here.

File details

Details for the file anemoi_env-2025.10-py3-none-any.whl.

File metadata

  • Download URL: anemoi_env-2025.10-py3-none-any.whl
  • Upload date:
  • Size: 4.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.11 Linux/6.11.0-1018-azure

File hashes

Hashes for anemoi_env-2025.10-py3-none-any.whl
Algorithm Hash digest
SHA256 dcf58af812c6e2ebabb4935e706156bb1c40990b4c636eca7191e9dac73b0c0e
MD5 0b777eb894531aa08b757ff09deea084
BLAKE2b-256 68df7c3e140cb51978460021b92f2130fbf149b26e57d2b6a331345177d53d33

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page