diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..eb29d91 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,27 @@ +# Changelog + +Notable changes to sequince-density are documented in this file. + +The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). + +## [Unreleased] + +## [0.1.0b1] - 2026-10-27 + +First public beta release. + +### Added + +- Normalizing-flow adapters for Zuko (PyTorch) and FlowJAX (JAX), supporting + fitting, sampling, density evaluation, and forward/inverse transformations. +- Gaussian-mixture proposals fitted with scikit-learn, using full covariance + matrices and equal-weight training populations. Fitting and density evaluation + use NumPy on the CPU. +- Integration with Sequince's `FlowProposal` and `FlowTransform` for fitted + starting proposals and flow-preconditioned mutation. +- Explicit RNG arguments for fitting and sampling, and checkpoint restoration of + fitted models, particle transforms, and training histories. FlowJAX checkpoints + also preserve the internal random key. + +[Unreleased]: https://github.com/sequince-dev/sequince-density/compare/v0.1.0b1...HEAD +[0.1.0b1]: https://github.com/sequince-dev/sequince-density/releases/tag/v0.1.0b1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fc0aae3..0451fb1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -308,6 +308,10 @@ should also follow this format and describe the final change. ## Pull requests and review +For each pull request with user-visible changes, update +[CHANGELOG.md][changelog] under `Unreleased` in the same pull request. Follow +the entry categories and guidance in the releases section below. + Push your branch and open a pull request targeting `sequince-dev/sequince-density:main`: ```bash @@ -332,13 +336,41 @@ needed. ## Releases +Maintain [CHANGELOG.md][changelog] using +[Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Add user-visible changes +under `Unreleased`, grouped as `Added`, `Changed`, `Deprecated`, `Removed`, +`Fixed`, or `Security`; omit empty groups. For the first release, summarize the +initial features under `Added`. Describe the +effect on users, especially changes to densities, weighting, RNG behaviour, +APIs, or checkpoint compatibility. Routine internal refactoring and CI +maintenance do not normally need entries. + Releases are coordinated by maintainers. Versions are derived from Git tags by `setuptools-scm`; do not maintain a separate hard-coded version number. Use tags such as `v0.1.0` and release notes describing user-visible changes and any incompatibilities. +Until the first release, keep the initial feature summary under `Unreleased` +and link that heading to the repository's commit history. When preparing a +release, move the unreleased entries into a section headed +`## [VERSION] - YYYY-MM-DD`, using the actual release date, and leave a fresh +`Unreleased` section at the top. For the first beta, use a PEP 440 version such +as `0.1.0b1` with the Git tag `v0.1.0b1`. Link its heading to the GitHub release, +and update the `Unreleased` link to compare that tag with `HEAD`. For later +releases, link each version heading to the comparison with the preceding tag. +Use the version's changelog section as the GitHub release notes, and mark beta +releases as prereleases on GitHub. + Before publishing, verify the intended commit, applicable CI results, and the -built distribution in a clean environment. Publishing a GitHub release triggers -the PyPI workflow in `.github/workflows/publish.yml`. Check that the workflow -completes successfully. Published distributions cannot be overwritten, so verify -the tag and artifacts before publishing. +built distribution in a clean environment. Check that the package version matches +the intended tag, run `python -m twine check --strict dist/*`, and verify wheel +installation with each supported extra independently. Confirm that the GitHub +`release` environment and PyPI trusted publisher are configured for this +repository. + +Publishing a GitHub release triggers the PyPI workflow in +`.github/workflows/publish.yml`. Check that the workflow completes successfully +and the published package can be installed from PyPI. Published distributions +cannot be overwritten, so verify the tag and artifacts before publishing. + +[changelog]: https://github.com/sequince-dev/sequince-density/blob/main/CHANGELOG.md diff --git a/README.md b/README.md index 8563192..02414c1 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,8 @@ Full proposal examples will be linked here once published in See the [sequince density documentation](https://sequince.readthedocs.io/projects/sequince-density/en/latest/) for installation, density fitting, and integration with Sequince proposals and transforms. +See the [changelog](CHANGELOG.md) for release notes and unreleased changes. + ## Examples The [`sequince-examples`](https://github.com/sequince-dev/sequince-examples) diff --git a/docs/changelog.rst b/docs/changelog.rst new file mode 100644 index 0000000..4afc7d3 --- /dev/null +++ b/docs/changelog.rst @@ -0,0 +1,2 @@ +.. include:: ../CHANGELOG.md + :parser: myst_parser.sphinx_ diff --git a/docs/index.rst b/docs/index.rst index d0c2e32..d2510f7 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -24,6 +24,7 @@ Features gaussian_mixtures proposals examples + changelog API reference developer_guide/index diff --git a/pyproject.toml b/pyproject.toml index 66d6b57..0b692df 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ dependencies = [ "array-api-compat>=1.5", "numpy>=1.25.2", "orng>=0.2.0a2", - "sequince", + "sequince>=0.1.0b1", ] dynamic = [ "version"