diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 01bcaaa1..37c7eb17 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.29.1 +current_version = 0.30.0 commit = True tag = True diff --git a/CITATION.cff b/CITATION.cff index b39c28e1..1d34cd6e 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -8,5 +8,5 @@ authors: orcid: https://orcid.org/0000-0002-6349-818X title: "dfm_tools: A Python package for pre- and postprocessing D-FlowFM model input and output files" type: software -version: 0.29.1 +version: 0.30.0 doi: https://doi.org/10.5281/zenodo.7857393 diff --git a/dfm_tools/__init__.py b/dfm_tools/__init__.py index 4c7b2f3b..796bceaa 100644 --- a/dfm_tools/__init__.py +++ b/dfm_tools/__init__.py @@ -4,7 +4,7 @@ __author__ = """Jelmer Veenstra""" __email__ = "jelmer.veenstra@deltares.nl" -__version__ = "0.29.1" +__version__ = "0.30.0" from dfm_tools.deprecated import * from dfm_tools.download import * diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index e8e495a2..75b7eb53 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -1,81 +1,83 @@ # Contributing -## Checkout dfm_tools git repository +## Checkout git repository - this is just a suggestion, feel free to work with VScode or any other git-compatible workflow - download git from [git-scm.com](https://git-scm.com/download/win), install with default settings -- open git bash window where you want to clone the dfm_tools github repository (e.g. ``C:\DATA\``) -- ``git clone https://github.com/deltares/dfm_tools`` (creates a folder dfm_tools with the checked out repository) -- ``cd dfm_tools`` -- optional: ``git config --global user.email [emailaddress]`` -- optional: ``git config --global user.name [username]`` +- open git bash window where you want to clone the dfm_tools github repository (e.g. `C:\DATA\`) +- `git clone https://github.com/deltares/dfm_tools` (creates a folder dfm_tools with the checked out repository) +- `cd dfm_tools` +- optional: `git config --global user.email [emailaddress]` +- optional: `git config --global user.name [username]` ## Setup local developer environment - python 3.11 is recommended, [python>=3.9 is required](https://github.com/Deltares/dfm_tools/issues/267), [python 3.13 not yet supported](https://github.com/Deltares/dfm_tools/issues/559) - download Miniforge3 from [the miniforge github](https://github.com/conda-forge/miniforge?tab=readme-ov-file#download) and install it with the recommended settings. - open Miniforge Prompt and navigate to the local checkout folder of the repository -- ``conda create --name dfm_tools_env python=3.11 git spyder -y`` (``git`` and ``spyder`` are optional) -- ``conda activate dfm_tools_env`` -- ``python -m pip install -e .[dev,docs,examples]`` (pip developer mode, any updates to the local folder are immediately available in your python. It also installs all requirements via pip, square brackets are to install optional dependency groups) -- ``conda deactivate`` -- to remove dfm_tools_env when necessary: ``conda remove -n dfm_tools_env --all`` +- `conda create --name dfm_tools_env python=3.11 git spyder -y` (`git` and `spyder` are optional) +- `conda activate dfm_tools_env` +- `python -m pip install -e .[dev,docs,examples]` (pip developer mode, any updates to the local folder are immediately available in your python. It also installs all requirements via pip, square brackets are to install optional dependency groups) +- `conda deactivate` +- to remove dfm_tools_env when necessary: `conda remove -n dfm_tools_env --all` ## Contributing - open an existing issue or create a new issue at [the issues page](https://github.com/Deltares/dfm_tools/issues) -- create a branch via ``Development`` on the right. This branch is now linked to the issue and the issue will be closed once the branch is merged with main again +- create a branch via `Development` on the right. This branch is now linked to the issue and the issue will be closed once the branch is merged with main again - alternatively fork the repository and do your edits there -- open git bash window in local dfm_tools folder (e.g. ``C:\DATA\dfm_tools``) -- ``git fetch origin`` followed by ``git checkout [branchname]`` -- make your local changes to the dfm_tools code (including docstrings and unittests for functions), after each subtask do ``git commit -am 'description of what you did'`` (``-am`` adds all changed files to the commit) -- check if all edits were committed with ``git status``, if there are new files created also do ``git add [path-to-file]`` and commit again -- ``git push`` to push your committed changes your branch on github +- open git bash window in local dfm_tools folder (e.g. `C:\DATA\dfm_tools`) +- `git fetch origin` followed by `git checkout [branchname]` +- make your local changes to the dfm_tools code (including docstrings and unittests for functions), after each subtask do `git commit -am 'description of what you did'` (`-am` adds all changed files to the commit) +- check if all edits were committed with `git status`, if there are new files created also do `git add [path-to-file]` and commit again +- `git push` to push your committed changes your branch on github - open a pull request at the branch on github, there you can see what you just pushed and the automated checks will show up (testbank and code quality analysis). - optionally make additional local changes (+commit+push) untill you are done with the issue and the automated checks have passed -- optionally increase the dfm_tools version with: ``bumpversion patch`` +- optionally increase the dfm_tools version with: `bumpversion patch` - request a review on the pull request - after review, squash+merge the branch into main ## Running the testbank - open Miniforge Prompt and navigate to the local checkout folder of the repository -- ``conda activate dfm_tools_env`` -- ``pytest`` (runs all tests) -- ``pytest -m "not acceptance"`` -- ``pytest -m acceptance`` (runs the acceptance tests, which are the scripts in [the examples folder](https://github.com/Deltares/dfm_tools/tree/main/tests/examples)) -- ``pytest -m "not requireslocaldata"`` (this is what runs on github) +- `conda activate dfm_tools_env` +- `pytest` (runs all tests) +- `pytest -m "not acceptance"` +- `pytest -m acceptance` (runs the acceptance tests, which are the scripts in [the examples folder](https://github.com/Deltares/dfm_tools/tree/main/tests/examples)) +- `pytest -m "not requireslocaldata"` (this is what runs on github) - this workflow automatically runs via Github Actions upon push and pullrequest to main ## Generate documentation with sphinx - open Miniforge Prompt and navigate to the local checkout folder of the repository -- ``conda activate dfm_tools_env`` -- ``sphinx-build docs docs/_build`` +- `conda activate dfm_tools_env` +- `sphinx-build docs docs/_build` - this workflow automatically runs via Github Actions upon push to main -## Increase the dfm_tools version number +## Increase the version number - commit all changes via git - open Miniforge Prompt and navigate to the local checkout folder of the repository -- ``conda activate dfm_tools_env`` -- ``bumpversion major`` or ``bumpversion minor`` or ``bumpversion patch`` (changes version numbers in files and commits changes) -- push changes with ``git push`` (from git bash window) +- `conda activate dfm_tools_env` +- `bumpversion major` or `bumpversion minor` or `bumpversion patch` (changes version numbers in files and commits changes) +- push changes with `git push` (from git bash window) ## Create release -- make sure the ``main`` branch is up to date (important issues solved, all pullrequests and branches closed) -- bump the versionnumber with ``bumpversion minor`` -- update ``docs/whats-new.md`` and add a date to the current release heading -- run local testbank -- local check with: ``python -m build`` and ``twine check dist/*`` ([does not work on WCF](https://github.com/pypa/setuptools/issues/4133)) -- copy the dfm_tools version from [pyproject.toml](https://github.com/Deltares/dfm_tools/blob/main/pyproject.toml) (e.g. ``0.11.0``) +- make sure the `main` branch is up to date (check pytest warnings, important issues solved, all pullrequests and branches closed) +- bump the versionnumber with `bumpversion minor` +- update `docs/whats-new.md` and add a date to the current release heading +- run local testbank with `pytest -m "not era5slow and not requireslocaldata and not acceptance"` +- local check with: `python -m build` and `twine check dist/*` ([does not work on WCF](https://github.com/pypa/setuptools/issues/4133)) +- commit+push to github via PR +- copy the dfm_tools version from [pyproject.toml](https://github.com/Deltares/dfm_tools/blob/main/pyproject.toml) (e.g. `0.11.0`) - create a [new release](https://github.com/Deltares/dfm_tools/releases/new) -- click ``choose a tag`` and type v+versionnumber (e.g. ``v0.11.0``), click ``create new tag: v0.11.0 on publish`` -- set the release title to the tagname (e.g. ``v0.11.0``) -- click `Generate release notes` and replace the `What's Changed` info by a tagged link to ``docs/whats-new.md`` -- if all is set, click ``Publish release`` +- click `choose a tag` and type v+versionnumber (e.g. `v0.11.0`), click `create new tag: v0.11.0 on publish` +- set the release title to the tagname (e.g. `v0.11.0`) +- click `Generate release notes` and replace the `What's Changed` info by a tagged link to `docs/whats-new.md` +- if all is set, click `Publish release` - a release is created and the github action publishes it [on PyPI](https://pypi.org/project/dfm-tools) +- post-release: commit+push `bumpversion patch` and `UNRELEASED` header in `docs/whats-new.md` to distinct between release and dev version ## What are all these packages for? diff --git a/docs/whats-new.md b/docs/whats-new.md index 9505d0e9..5c5ad694 100644 --- a/docs/whats-new.md +++ b/docs/whats-new.md @@ -1,6 +1,6 @@ # What's new -## UNRELEASED +## 0.30.0 (2024-10-20) ### Fix - fixed cmems-nrt insitu again by dropping station with varying coordinates again in [#1023](https://github.com/Deltares/dfm_tools/pull/1023) diff --git a/pyproject.toml b/pyproject.toml index 765f5b3b..6a501578 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "dfm_tools" -version = "0.29.1" +version = "0.30.0" maintainers = [{ name = "Jelmer Veenstra", email = "jelmer.veenstra@deltares.nl" }] description = "dfm_tools are pre- and post-processing tools for Delft3D FM" readme = "README.md" @@ -12,48 +12,48 @@ keywords = ["dfm_tools", "D-FlowFM", "D-HYDRO", "post-processing", "pre-processi license = { text = "LGPLv3" } requires-python = ">=3.9" dependencies = [ - #scipy<1.6.0 pip install fails in py39, is also 3 years old + #scipy>=1.6.0 successfully pip installs in py39, is also 3 years old "scipy>=1.6.0", - #numpy<1.23 is EOL since june 2024 + #numpy>=1.23 is first not-EOL since june 2024 "numpy>=1.23", - #contour colorbar on uniform values fails with matplotlib<3.7.0, several other features with matplotlib<3.6.0 + #matplotlib>=3.7.0 successfully creates contour colorbar on uniform values and has several other features "matplotlib>=3.7.0", #pandas>=1.4 is required by xarray>=2023.3.0 "pandas>=1.4.0", - #shapely<2.0.0 give "AttributeError: module 'shapely' has no attribute 'GeometryType'" + #shapely>=2.0.0 fixes "AttributeError: module 'shapely' has no attribute 'GeometryType'" "shapely>=2.0.0", - #geopandas<0.13.0 require shapely<2.0.0 + #geopandas>=0.13.0 supports shapely>=2.0.0 "geopandas>=0.13.0", - #fiona<1.9 does not contain sql where filter + #fiona>=1.9 contains sql where filter "fiona>=1.9", - #contextily<1.6.2 has incorrect axis scaling: https://github.com/geopandas/contextily/issues/251 + #contextily>=1.6.2 has fixed axis scaling: https://github.com/geopandas/contextily/issues/251 "contextily>=1.6.2", - #xarray<2023.9.0 does not support multidimensional coordinates (used in e.g. HIRLAM meteo data) + #xarray>=2023.9.0 supports multidimensional coordinates (used in e.g. HIRLAM meteo data) "xarray>=2023.9.0", #dask version is aligned with xarray "dask>=2023.9.0", - #netcdf4<1.5.4 pip install fails in py39 + #netcdf4>=1.5.4 successfully pip installs in py39 "netcdf4>=1.5.4", - #bottleneck<1.3.3 pip install fails in py39 + #bottleneck>=1.3.3 successfully pip installs in py39 "bottleneck>=1.3.3", - #xugrid<0.12.1 has issue with fill_value and no flexible start_index + #xugrid>=0.12.1 fixed issue with fill_value and no flexible start_index "xugrid>=0.12.1", - #cdsapi<0.7.2 has different error upon dummy dataset + #cdsapi>=0.7.2 has different error upon dummy dataset "cdsapi>=0.7.2", - #pydap<3.4.0 is from May 2017 and does not support newer python versions + #pydap>=3.4.0 is the first with support for newer python versions "pydap>=3.4.0", - #erddapy<2.0.0 does not support pandas>=2.0.0 + #erddapy>=2.0.0 supports pandas>=2.0.0 "erddapy>=2.0.0", - #copernicusmarine<1.3.2 is not the latest version and the developers recommend to always use the latest version until 2.0.0 is released: https://github.com/Deltares/dfm_tools/issues/936 - "copernicusmarine>=1.3.2", + #copernicusmarine>=1.3.3 is the latest version and the developers recommend to always use the latest version until 2.0.0 is released: https://github.com/Deltares/dfm_tools/issues/936 + "copernicusmarine>=1.3.3", "copernicusmarine<2.0.0", # TODO: remove when dfm_tools is adjusted to not-yet-released 2.0 version: https://github.com/Deltares/dfm_tools/issues/933 - #rws-ddlpy<0.4.0 does not yet have `ddlpy.dataframe_to_xarray()` - "rws-ddlpy>=0.4.0", - #pooch<1.1.0 do not have attribute retrieve + #rws-ddlpy>=0.6.0 `ddlpy.measurements_amount()` returns all amounts + "rws-ddlpy>=0.6.0", + #pooch>=1.1.0 has attribute retrieve "pooch>=1.1.0", - #hydrolib-core 0.8.0 support for many more mdu keywords and correct dimr_config.xml for parallel runs + #hydrolib-core>=0.8.0 supports many more mdu keywords and correct dimr_config.xml for parallel runs "hydrolib-core>=0.8.0", - #meshkernel<4.2.0 support for more gridded_samples dtypes and workarounds for non-orthogonal grids + #meshkernel>=4.2.0 supports more gridded_samples dtypes and workarounds for non-orthogonal grids "meshkernel>=4.2.0", ] classifiers = [