All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
While on 0.x, minor releases may include breaking changes. The public API is
the set of symbols exported from devol.__all__; anything else is internal.
- README badges: PyPI version, supported Python versions, CI status, license.
First published release to PyPI.
- Project metadata for PyPI publication (license, authors, classifiers, URLs).
LICENSEfile (MIT).py.typedmarker so downstream type checkers pick updevol's inline hints.CONTRIBUTING.mdwith minimum expectations for patches.- This changelog.
- CI matrix covering Python 3.11, 3.12, and 3.13 with separate lint, typecheck, test, and build jobs.
examples,benchmark,dev, andalloptional dependency groups.src/devolis now strictly typed end-to-end (mypy --strictclean).- Installation section in the README explaining the new extras.
- README hero visual: 4-panel static figure and animated GIF showing diffusion evolution collapsing noise onto the Rastrigin fitness landscape. Reproducible via
scripts/generate_readme_figure.py. - Automated release pipeline (
.github/workflows/release.yml): tag-driven publishing via PyPI Trusted Publishers (OIDC), no stored credentials. Prerelease tags (rc,a,b) publish to TestPyPI; final tags publish to PyPI. Both paths require manual approval via GitHub Environments, build a GitHub Release with artifacts attached, and validate that the tag matchespyproject.toml. CONTRIBUTING.mdnow documents the release flow.
- Moved
pytestfrom required dependencies to thedevextra. - Moved
torch,torchvision,gymnasium, andmatplotlibout of required dependencies. Installingdevolnow pulls onlynumpy,pydantic, andpydantic-yaml; the heavy deps live under theexamplesextra. - Dropped unused
pydantic-settingsfrom dependencies. - Wheel contents narrowed to
src/devolonly —examples/andbenchmark/stay in the repo but are no longer shipped. devol.__version__is now read dynamically from the installed package metadata (importlib.metadata.version), makingpyproject.tomlthe single source of truth for the version string.
DiffusionEvolution.run()no longer requiresinitial_population; callingalgo.run()now initializes a population automatically, matching the documented Quick Start usage and unblocking thedevolCLI entry point.