diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 770adcf5..2903d346 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,6 +15,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 + - uses: astral-sh/ruff-action@v4.0.0 + with: + version: "0.14.x" + args: 'check .' - uses: astral-sh/ruff-action@v4.0.0 with: version: "0.14.x" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c349644b..692ed99f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -3,6 +3,9 @@ on: release: types: [published] +permissions: + contents: read + jobs: build: name: Build distribution @@ -10,18 +13,18 @@ jobs: steps: - uses: actions/checkout@v7 + with: + fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v6 with: - python-version: "3.x" - - name: Install pypa/build - run: >- - python3 -m - pip install - build - --user + python-version: "3.11" + - name: Install build and metadata validation tools + run: python -m pip install build twine - name: Build a binary wheel and a source tarball run: python3 -m build + - name: Validate distribution metadata + run: python -m twine check --strict dist/* - name: Store the distribution packages uses: actions/upload-artifact@v7 with: diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..d9094f64 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,24 @@ +# Changelog + +Notable changes to Sequince are documented in this file. + +The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). + +## [Unreleased] + +## [0.1.0b1] - 2026-10-23 + +First public beta release. + +### Added + +- Composable Sequential Monte Carlo pipelines for Bayesian inference and + particle filtering. +- Prebuilt samplers for standard Bayesian SMC, persistent Bayesian SMC, and + nested-sampling SMC. +- Array API support for NumPy, JAX, PyTorch, and CuPy backends. +- Posterior sampling, evidence estimates, and diagnostics. +- Checkpoint saving and resuming. + +[Unreleased]: https://github.com/sequince-dev/sequince/compare/v0.1.0b1...HEAD +[0.1.0b1]: https://github.com/sequince-dev/sequince/releases/tag/v0.1.0b1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9e092a49..da96370a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -295,6 +295,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.md) 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:main`: ```bash @@ -319,11 +323,27 @@ needed. ## Releases +Maintain [CHANGELOG.md](CHANGELOG.md) 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. Describe the effect on users, +especially changes to scientific results, APIs, RNG behaviour, 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. +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. + 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 diff --git a/pyproject.toml b/pyproject.toml index 48ac2f87..888995f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,8 +25,9 @@ dynamic = [ ] [project.urls] -Homepage = "https://github.com/sequince-dev/sequince" +Homepage = "https://sequince.readthedocs.io/en/latest/" Repository = "https://github.com/sequince-dev/sequince" +Documentation = "https://sequince.readthedocs.io/en/latest/" [tool.setuptools] package-dir = {"" = "src"} diff --git a/src/sequince/__init__.py b/src/sequince/__init__.py index 2c6f50e8..1e8944f0 100644 --- a/src/sequince/__init__.py +++ b/src/sequince/__init__.py @@ -65,7 +65,6 @@ "MCMCResult", "MarkovChainMonteCarlo", "SequentialMonteCarlo", - "MetaSequentialMonteCarlo", "SMCResult", "SMCConfig", "SequentialTarget",