modflowpy / flopy

A Python package to create, run, and post-process MODFLOW-based models.
https://flopy.readthedocs.io
Other
497 stars 304 forks source link

feature: use VCS for version automation #1664

Open wpbonelli opened 1 year ago

wpbonelli commented 1 year ago

Is your feature request related to a problem? Please describe. FloPy version updates are already automated, scripts/update_version.py just needs to run at release time. Ad hoc versioning can be hard to get right and has limitations though, like providing no information between releases. Finer-grained version strings could be helpful e.g. to trace issues to release vs. development versions or even specific commits

Describe the solution you'd like Could consider a tool like versioneer, maybe once it stabilizes a bit. It uses git as the source of truth, so versioning would just involve tagging revisions. From the link above:

you get a useful fine-grained version string, updated every time you run your program, embedded into release products via the most common tarball-generation tools (setup.py sdist and git-archive). Developers will get detailed version information in their test logs (assuming you record version in them, which you should), so other developers can reproduce their tree. Bug reports from end users will contain enough data (assuming they emit the version string) to reproduce their code, and to learn if they have local modifications or not.

Describe alternatives you've considered Not changing the current approach, it's simple enough and we need a script to update README.md and DISCLAIMER.md anyway

Additional context Maybe this should be a discussion instead?

mwtoews commented 1 year ago

I'm generally on-board for this feature. My preference is setuptools_scm, which is similar to versioneer, except that it does not need to be installed into the codebase. The other benefit of setuptools_scm is that when creating a source distribution, it includes the git-tracked files to the sdist.