From 87e19700dfb4cf377340f2215d7507f1eba63039 Mon Sep 17 00:00:00 2001 From: jtsiddons Date: Fri, 14 Feb 2025 14:24:24 +0000 Subject: [PATCH 1/9] workflow: use "uv" rather than "micromamba" for environment management in ci workflow --- .github/workflows/ci.yml | 38 ++- pyproject.toml | 506 ++++++++++++++++++++------------------- 2 files changed, 282 insertions(+), 262 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 32a0758d..3fc3f678 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,33 +27,42 @@ jobs: matrix: os: ["ubuntu-latest"] # Bookend python versions - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 # Fetch all history for all branches and tags. - name: Set environment variables run: | - echo "CONDA_ENV_FILE=ci/requirements/environment.yml" >> $GITHUB_ENV + echo "UV_ENV_FILE=pyproject.toml" >> $GITHUB_ENV + # echo "UV_ENV_FILE=uv.lock" >> $GITHUB_ENV echo "PYTHON_VERSION=${{ matrix.python-version }}" >> $GITHUB_ENV + echo "UV_CACHE_DIR=/tmp/.uv-cache" >> $GITHUB_ENV - - name: Create conda environment - uses: mamba-org/setup-micromamba@0dea6379afdaffa5d528b3d1dabc45da37f443fc # v2.0.4 + - name: Install uv + uses: astral-sh/setup-uv@4db96194c378173c656ce18a155ffc14a9fc4355 # v5.2.2 with: - cache-downloads: true - cache-downloads-key: "${{runner.os}}-${{runner.arch}}-py${{matrix.python-version}}-${{hashFiles(env.CONDA_ENV_FILE)}}" - environment-file: ci/requirements/environment.yml - create-args: >- - python=${{ matrix.python-version }} + python-version: ${{ matrix.python-version }} + enable-cache: true + cache-local-path: ${{ env.UV_CACHE_DIR }} + + - name: Restore uv cache + uses: actions/cache@v4 + with: + path: ${{ env.UV_CACHE_DIR }} + key: uv-${{ runner.os }}-${{runner.arch}}-py${{matrix.python-version}}-${{ hashFiles(env.UV_ENV_FILE) }} + restore-keys: | + uv-${{ runner.os }}-${{runner.arch}}-py${{matrix.python-version}}-${{ hashFiles(env.UV_ENV_FILE) }} + uv-${{ runner.os }}-${{runner.arch}}-py${{matrix.python-version}} - name: Install cdm reader mapper toolbox run: | - python -m pip install --no-deps -e . + uv sync --all-extras --dev - name: Version info run: | - conda info -a - conda list + uv version + uv pip list - name: Import cdm reader mapper toolbox run: | @@ -61,7 +70,7 @@ jobs: - name: Run tests timeout-minutes: 10 - run: python -u -m pytest + run: uv run pytest tests --cov=cdm_reader_mapper --cov-report=xml --junitxml=test-results/${{ runner.os }}-${{ matrix.python-version }}.xml @@ -74,3 +83,6 @@ jobs: env_vars: RUNNER_OS,PYTHON_VERSION name: codecov-umbrella fail_ci_if_error: false + + - name: Minimise uv cache + run: uv cache prune --ci diff --git a/pyproject.toml b/pyproject.toml index 28b90461..d523ec30 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,249 +1,257 @@ -[build-system] -requires = ["flit_core >=3.9,<4"] -build-backend = "flit_core.buildapi" - -[project] -name = "cdm_reader_mapper" -description = "Common Data Model reader and mapper toolbox" -authors = [ - {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"} -] -readme = {file = "README.rst", content-type = "text/x-rst"} -requires-python = ">=3.9" -license = {file = "LICENSE"} -keywords = ["cdm_reader_mapper"] -classifiers = [ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "Intended Audience :: Science/Research", - "License :: OSI Approved :: Apache Software License", - "Natural Language :: English", - "Operating System :: OS Independent", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12" -] -dynamic = ["version"] -dependencies = [ - "matplotlib", - "pandas>=2.1.0", - "dask", - "distributed", - "datashader", - "msgpack", - "requests", - "xarray", - "netcdf4", - "h5netcdf", - "timezonefinder", - "python-slugify", - "textdistance", - "swifter", - "platformdirs", - "pyarrow", - "recordlinkage" -] - -[project.urls] -"Homepage" = "https://cdm-reader-mapper.readthedocs.io" -"Source" = "https://github.com/glamod/cdm_reader_mapper" -"Changelog" = "https://cdm_reader_mapper.readthedocs.io/en/latest/history.html" -"Issue tracker" = "https://github.com/glamod/cdm_reader_mapper" - -[tool] - -[tool.black] -target-version = [ - "py39", - "py310", - "py311", - "py312" -] - -[tool.bumpversion] -commit = true -commit_args = "--no-verify" -tag = false -allow_dirty = false -parse = "(?P\\d+)\\.(?P\\d+)\\.(?P\\d+)(\\-(?P[a-z]+)(\\.(?P\\d+)))?" -serialize = [ - "{major}.{minor}.{patch}-{release}.{build}", - "{major}.{minor}.{patch}" -] - -[[tool.bumpversion.files]] -filename = "cdm_reader_mapper/__init__.py" -search = "__version__ = \"{current_version}\"" -replace = "__version__ = \"{new_version}\"" - -[tool.bumpversion.parts.build] -independent = false - -[tool.bumpversion.parts.release] -optional_value = "release" -values = [ - "dev", - "release" -] - -[tool.codespell] -ignore-words-list = "sentinal, vaid, SME, ASII, TRU" -skip = "cdm_reader_mapper/mdf_reader/codes/**/*.json, cdm_reader_mapper/mdf_reader/schemas/**/*.json, cdm_reader_mapper/cdm_mapper/codes/**/*.json, tests/results/*.csv" - -[tool.coverage.run] -relative_files = true -omit = ["tests/*.py"] - -[tool.deptry] -extend_exclude = ["docs"] -ignore_notebooks = true -pep621_dev_dependency_groups = ["all", "dev", "docs"] - -[tool.deptry.package_module_name_map] -"scikit-learn" = "sklearn" -"pyyaml" = "yaml" - -[tool.deptry.per_rule_ignores] -DEP001 = ["SBCK"] -DEP002 = ["bottleneck", "pyarrow"] -DEP004 = ["matplotlib", "pytest_socket"] - -[tool.flit.sdist] -include = [ - "AUTHORS.rst", - "CHANGES.rst", - "CONTRIBUTING.rst", - "LICENSE", - "Makefile", - "README.rst", - "ci/requirements/requirements.txt", - "docs/**/*.png", - "docs/**/*.rst", - "docs/**/*.txt", - "docs/Makefile", - "docs/conf.py", - "docs/make.bat", - "tests/**/*.py", - "cdm_reader_mapper/**/*.json", - "cdm_reader_mapper/**/*.py", - "cdm_reader_mapper/**/*.txt", - "cdm_reader_mapper/**/*.yml" -] -exclude = [ - "**/*.py[co]", - "**/__pycache__", - ".*", - "docs/_*", - "docs/modules.rst", - "pylintrc" -] - -[tool.isort] -profile = "black" -py_version = 310 -append_only = true -add_imports = "from __future__ import annotations" - -[tool.mypy] -python_version = 3.10 -show_error_codes = true -warn_return_any = true -warn_unused_configs = true -plugins = ["numpy.typing.mypy_plugin"] - -[[tool.mypy.overrides]] -module = [ - "boltons.*", - "cftime.*", - "jsonpickle.*", - "numba.*", - "pytest_socket.*", - "SBCK.*", - "scipy.*", - "sklearn.*", - "statsmodels.*", - "yamale.*", - "yaml.*" -] -ignore_missing_imports = true - -[tool.pytest] -python_files = "test_*.py" -testpaths = ["./tests"] - -[tool.ruff] -src = ["xclim"] -line-length = 150 -target-version = "py39" -exclude = [ - ".git", - "build", - ".eggs" -] -extend-include = [ - "*.ipynb" # Include notebooks -] - -[tool.ruff.format] -line-ending = "auto" - -[tool.ruff.lint] -extend-select = [ - "RUF022" # unsorted-dunder-all -] -ignore = [ - "D205", # blank-line-after-summary - "D400", # ends-in-period - "D401" # non-imperative-mood -] -preview = true -select = [ - "C90", # mccabe-complexity - "D", # docstrings - "E", # pycodestyle errors - "F", # pyflakes - "N802", # invalid-function-name - "S", # bandit - "W" # pycodestyle warnings -] - -[tool.ruff.lint.flake8-bandit] -check-typed-exception = true - -[tool.ruff.lint.flake8-import-conventions.aliases] -"matplotlib.pyplot" = "plt" -numpy = "np" -pandas = "pd" -scipy = "sp" -xarray = "xr" - -[tool.ruff.lint.isort] -known-first-party = ["xclim"] -case-sensitive = true -detect-same-package = false -lines-after-imports = 2 -no-lines-before = ["future", "standard-library"] - -[tool.ruff.lint.mccabe] -max-complexity = 15 - -[tool.ruff.lint.per-file-ignores] -"docs/*.py" = ["D100", "D101", "D102", "D103"] -"tests/**/*test*.py" = ["D100", "D101", "D102", "D103", "N802", "S101"] -"cdm_reader_mapper/**/__init__.py" = ["F401", "F403"] - -[tool.ruff.lint.pycodestyle] -max-doc-length = 180 - -[tool.ruff.lint.pydocstyle] -convention = "numpy" - -[tool.vulture] -exclude = [] -ignore_decorators = ["@pytest.fixture"] -ignore_names = [] -min_confidence = 90 -paths = ["cdm_reader_mapper", "tests"] -sort_by_size = true +[build-system] +requires = ["flit_core >=3.9,<4"] +build-backend = "flit_core.buildapi" + +[project] +name = "cdm_reader_mapper" +description = "Common Data Model reader and mapper toolbox" +authors = [ + {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"} +] +readme = {file = "README.rst", content-type = "text/x-rst"} +requires-python = ">=3.9" +license = {file = "LICENSE"} +keywords = ["cdm_reader_mapper"] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: Apache Software License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12" +] +dynamic = ["version"] +dependencies = [ + "matplotlib", + "pandas>=2.1.0", + "dask", + "distributed", + "datashader", + "msgpack", + "requests", + "xarray", + "netcdf4", + "h5netcdf", + "timezonefinder", + "python-slugify", + "textdistance", + "swifter", + "platformdirs", + "pyarrow", + "recordlinkage", + "numba>=0.60", +] + +[project.urls] +"Homepage" = "https://cdm-reader-mapper.readthedocs.io" +"Source" = "https://github.com/glamod/cdm_reader_mapper" +"Changelog" = "https://cdm_reader_mapper.readthedocs.io/en/latest/history.html" +"Issue tracker" = "https://github.com/glamod/cdm_reader_mapper" + +[tool] + +[tool.black] +target-version = [ + "py39", + "py310", + "py311", + "py312" +] + +[tool.bumpversion] +commit = true +commit_args = "--no-verify" +tag = false +allow_dirty = false +parse = "(?P\\d+)\\.(?P\\d+)\\.(?P\\d+)(\\-(?P[a-z]+)(\\.(?P\\d+)))?" +serialize = [ + "{major}.{minor}.{patch}-{release}.{build}", + "{major}.{minor}.{patch}" +] + +[[tool.bumpversion.files]] +filename = "cdm_reader_mapper/__init__.py" +search = "__version__ = \"{current_version}\"" +replace = "__version__ = \"{new_version}\"" + +[tool.bumpversion.parts.build] +independent = false + +[tool.bumpversion.parts.release] +optional_value = "release" +values = [ + "dev", + "release" +] + +[tool.codespell] +ignore-words-list = "sentinal, vaid, SME, ASII, TRU" +skip = "cdm_reader_mapper/mdf_reader/codes/**/*.json, cdm_reader_mapper/mdf_reader/schemas/**/*.json, cdm_reader_mapper/cdm_mapper/codes/**/*.json, tests/results/*.csv" + +[tool.coverage.run] +relative_files = true +omit = ["tests/*.py"] + +[tool.deptry] +extend_exclude = ["docs"] +ignore_notebooks = true +pep621_dev_dependency_groups = ["all", "dev", "docs"] + +[tool.deptry.package_module_name_map] +"scikit-learn" = "sklearn" +"pyyaml" = "yaml" + +[tool.deptry.per_rule_ignores] +DEP001 = ["SBCK"] +DEP002 = ["bottleneck", "pyarrow"] +DEP004 = ["matplotlib", "pytest_socket"] + +[tool.flit.sdist] +include = [ + "AUTHORS.rst", + "CHANGES.rst", + "CONTRIBUTING.rst", + "LICENSE", + "Makefile", + "README.rst", + "ci/requirements/requirements.txt", + "docs/**/*.png", + "docs/**/*.rst", + "docs/**/*.txt", + "docs/Makefile", + "docs/conf.py", + "docs/make.bat", + "tests/**/*.py", + "cdm_reader_mapper/**/*.json", + "cdm_reader_mapper/**/*.py", + "cdm_reader_mapper/**/*.txt", + "cdm_reader_mapper/**/*.yml" +] +exclude = [ + "**/*.py[co]", + "**/__pycache__", + ".*", + "docs/_*", + "docs/modules.rst", + "pylintrc" +] + +[tool.isort] +profile = "black" +py_version = 310 +append_only = true +add_imports = "from __future__ import annotations" + +[tool.mypy] +python_version = 3.10 +show_error_codes = true +warn_return_any = true +warn_unused_configs = true +plugins = ["numpy.typing.mypy_plugin"] + +[[tool.mypy.overrides]] +module = [ + "boltons.*", + "cftime.*", + "jsonpickle.*", + "numba.*", + "pytest_socket.*", + "SBCK.*", + "scipy.*", + "sklearn.*", + "statsmodels.*", + "yamale.*", + "yaml.*" +] +ignore_missing_imports = true + +[tool.pytest] +python_files = "test_*.py" +testpaths = ["./tests"] + +[tool.ruff] +src = ["xclim"] +line-length = 150 +target-version = "py39" +exclude = [ + ".git", + "build", + ".eggs" +] +extend-include = [ + "*.ipynb" # Include notebooks +] + +[tool.ruff.format] +line-ending = "auto" + +[tool.ruff.lint] +extend-select = [ + "RUF022" # unsorted-dunder-all +] +ignore = [ + "D205", # blank-line-after-summary + "D400", # ends-in-period + "D401" # non-imperative-mood +] +preview = true +select = [ + "C90", # mccabe-complexity + "D", # docstrings + "E", # pycodestyle errors + "F", # pyflakes + "N802", # invalid-function-name + "S", # bandit + "W" # pycodestyle warnings +] + +[tool.ruff.lint.flake8-bandit] +check-typed-exception = true + +[tool.ruff.lint.flake8-import-conventions.aliases] +"matplotlib.pyplot" = "plt" +numpy = "np" +pandas = "pd" +scipy = "sp" +xarray = "xr" + +[tool.ruff.lint.isort] +known-first-party = ["xclim"] +case-sensitive = true +detect-same-package = false +lines-after-imports = 2 +no-lines-before = ["future", "standard-library"] + +[tool.ruff.lint.mccabe] +max-complexity = 15 + +[tool.ruff.lint.per-file-ignores] +"docs/*.py" = ["D100", "D101", "D102", "D103"] +"tests/**/*test*.py" = ["D100", "D101", "D102", "D103", "N802", "S101"] +"cdm_reader_mapper/**/__init__.py" = ["F401", "F403"] + +[tool.ruff.lint.pycodestyle] +max-doc-length = 180 + +[tool.ruff.lint.pydocstyle] +convention = "numpy" + +[tool.vulture] +exclude = [] +ignore_decorators = ["@pytest.fixture"] +ignore_names = [] +min_confidence = 90 +paths = ["cdm_reader_mapper", "tests"] +sort_by_size = true + +[dependency-groups] +dev = [ + "pytest>=8.3.4", + "pytest-cov>=6.0.0", + "pytest-env>=1.1.5", +] From 391ffad0ca482c871984385145f779eb9c0fb3ce Mon Sep 17 00:00:00 2001 From: JT Siddons <59737063+jtsiddons@users.noreply.github.com> Date: Mon, 17 Feb 2025 08:46:57 +0000 Subject: [PATCH 2/9] Update pyproject.toml Add python 3.13 Co-authored-by: Ludwig Lierhammer --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d523ec30..77f8c56c 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,8 @@ classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12" + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13" ] dynamic = ["version"] dependencies = [ From 8e50590cbe1bd74362cba540d8552548057020d6 Mon Sep 17 00:00:00 2001 From: jtsiddons Date: Mon, 17 Feb 2025 09:53:23 +0000 Subject: [PATCH 3/9] workflow: add workflow to verify installation via pip --- .github/workflows/install.yml | 51 +++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/install.yml diff --git a/.github/workflows/install.yml b/.github/workflows/install.yml new file mode 100644 index 00000000..2dddc465 --- /dev/null +++ b/.github/workflows/install.yml @@ -0,0 +1,51 @@ +name: cdm install +on: + push: + branches: + - "*" + pull_request: + branches: + - "*" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + pull-requests: read + +jobs: + test: + name: py${{ matrix.python-version }} + runs-on: ${{ matrix.os }} + defaults: + run: + shell: bash -l {0} + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest"] + python-version: ["3.11"] + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 0 # Fetch all history for all branches and tags. + + - name: Create conda environment + uses: mamba-org/setup-micromamba@0dea6379afdaffa5d528b3d1dabc45da37f443fc # v2.0.4 + with: + environment-name: cdm-test + create-args: >- + python=${{ matrix.python-version }} + + - name: Install and import cdm reader mapper toolbox + run: | + python -m pip install -e . + python -c "import cdm_reader_mapper" + + - name: Version info + run: | + conda info -a + conda list + python -m pip list From 58194de864997d631ec0d8cd21d4729a0a3085b8 Mon Sep 17 00:00:00 2001 From: jtsiddons Date: Mon, 17 Feb 2025 15:13:01 +0000 Subject: [PATCH 4/9] workflow: remove unnecessary pip/conda install workflow --- .github/workflows/install.yml | 51 ----------------------------------- 1 file changed, 51 deletions(-) delete mode 100644 .github/workflows/install.yml diff --git a/.github/workflows/install.yml b/.github/workflows/install.yml deleted file mode 100644 index 2dddc465..00000000 --- a/.github/workflows/install.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: cdm install -on: - push: - branches: - - "*" - pull_request: - branches: - - "*" - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -permissions: - contents: read - pull-requests: read - -jobs: - test: - name: py${{ matrix.python-version }} - runs-on: ${{ matrix.os }} - defaults: - run: - shell: bash -l {0} - strategy: - fail-fast: false - matrix: - os: ["ubuntu-latest"] - python-version: ["3.11"] - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - fetch-depth: 0 # Fetch all history for all branches and tags. - - - name: Create conda environment - uses: mamba-org/setup-micromamba@0dea6379afdaffa5d528b3d1dabc45da37f443fc # v2.0.4 - with: - environment-name: cdm-test - create-args: >- - python=${{ matrix.python-version }} - - - name: Install and import cdm reader mapper toolbox - run: | - python -m pip install -e . - python -c "import cdm_reader_mapper" - - - name: Version info - run: | - conda info -a - conda list - python -m pip list From b73111d0ad12c066b718f86ae83bafd18c0baf1a Mon Sep 17 00:00:00 2001 From: JT Siddons <59737063+jtsiddons@users.noreply.github.com> Date: Tue, 18 Feb 2025 08:49:53 +0000 Subject: [PATCH 5/9] chore(ci): remove commented env variable Co-authored-by: Ludwig Lierhammer --- .github/workflows/testing-suite.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/testing-suite.yml b/.github/workflows/testing-suite.yml index 02d87f44..2c09ffe8 100644 --- a/.github/workflows/testing-suite.yml +++ b/.github/workflows/testing-suite.yml @@ -35,7 +35,6 @@ jobs: - name: Set environment variables run: | echo "UV_ENV_FILE=pyproject.toml" >> $GITHUB_ENV - # echo "UV_ENV_FILE=uv.lock" >> $GITHUB_ENV echo "PYTHON_VERSION=${{ matrix.python-version }}" >> $GITHUB_ENV echo "UV_CACHE_DIR=/tmp/.uv-cache" >> $GITHUB_ENV From 2087aba9a92ec4d0461e3950b842b805bb960627 Mon Sep 17 00:00:00 2001 From: JT Siddons <59737063+jtsiddons@users.noreply.github.com> Date: Tue, 18 Feb 2025 08:57:27 +0000 Subject: [PATCH 6/9] chore: update author/maintainer list Co-authored-by: Ludwig Lierhammer --- pyproject.toml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index fba0be88..e1b307bf 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,6 +6,18 @@ build-backend = "flit_core.buildapi" name = "cdm_reader_mapper" description = "Common Data Model reader and mapper toolbox" authors = [ + {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"}, + {name = "Joseph Siddons", email = "joseph.siddons@noc.ac.uk"}, + {name = "Axel Andersson", email = "axel.andersson@dwd.de"}, + {name = "Tina Leiding", email = "tina.leiding@dwd.de"}, + {name = "Richard Cornes", email = "richard.cornes@noc.ac.uk"}, + {name = "Elizabeth Kent", email = "eck@noc.ac.uk"}, +] +maintainers = [ + {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"}, + {name = "Joseph Siddons", email = "joseph.siddons@noc.ac.uk"}, +] + { name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de" } ] readme = { file = "README.rst", content-type = "text/x-rst" } From 71449e8dc098b09178218d18838eb2adc344ae5b Mon Sep 17 00:00:00 2001 From: jtsiddons Date: Tue, 18 Feb 2025 08:58:33 +0000 Subject: [PATCH 7/9] fix: bad key in pyproject.toml --- pyproject.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index e1b307bf..b6e94e73 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,9 +17,6 @@ maintainers = [ {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"}, {name = "Joseph Siddons", email = "joseph.siddons@noc.ac.uk"}, ] - - { name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de" } -] readme = { file = "README.rst", content-type = "text/x-rst" } requires-python = ">=3.10" license = { file = "LICENSE" } From 178000cee7a39250b84779431776ade25022b81b Mon Sep 17 00:00:00 2001 From: jtsiddons Date: Tue, 18 Feb 2025 11:30:53 +0000 Subject: [PATCH 8/9] chore: update changelog --- CHANGES.rst | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 90e439c8..d449b716 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -3,6 +3,23 @@ Changelog ========= +2.0.1 (unreleased) +------------------ +Contributors to this version: Ludwig Lierhammer (:user:`ludwiglierhammer`) and Joseph Siddons (:user:`jtsiddons`) + +Announcements +^^^^^^^^^^^^^ +This release adds support for Python 3.13 (:pull:`228`) + +New features and enhancements +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +* add environment.yml file (:pull:`229`) + +Internal changes +^^^^^^^^^^^^^^^^ +* GitHub workflow for ``testing_suite`` now uses ``uv`` for environment management, replacing ``micromamba`` (:pull:`228`) +* rename ci/requirements to CI and tidy up requirements/dependencies (:pull:`229`) + 2.0.0 (2025-02-14) ------------------ Contributors to this version: Ludwig Lierhammer (:user:`ludwiglierhammer`) and Joseph Siddons (:user:`jtsiddons`) From 286f27d4477e2d080a81aef50b3e71f0066a2ae0 Mon Sep 17 00:00:00 2001 From: JT Siddons <59737063+jtsiddons@users.noreply.github.com> Date: Tue, 18 Feb 2025 12:09:24 +0000 Subject: [PATCH 9/9] compat: drop python 3.9 support Co-authored-by: Ludwig Lierhammer --- CHANGES.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index d449b716..3518eae3 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -9,7 +9,7 @@ Contributors to this version: Ludwig Lierhammer (:user:`ludwiglierhammer`) and J Announcements ^^^^^^^^^^^^^ -This release adds support for Python 3.13 (:pull:`228`) +This release drops support for Python 3.9 and adds support for Python 3.13 (:pull:`228`, :pull:`229`) New features and enhancements ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^