Changelog#

All notable changes to this project will be documented in this file.

Unreleased#

Warning

These changes reflect the current development progress and have not been part of a PyPI release yet.

No significant changes.

2025.1.3#

  • Retire the hacky “custom” lockfile approach and stabilize around now standardized uv.lock

  • Migrate to packages and uv workspaces layout

  • Introduce pipeline workflow package in preparation for migrating reproducible research pipelines from PhD work

  • Improve setup for first-timers, new machines, fresh repos, implemented as just recipes

  • Synchronize environment variables in a few places, unifying contrib/CI config by choosing the lesser of two evils, compared with a truly “single source of truth”

  • The above facilitated minimizing directly templated files (e.g. template/**/*.jinja files), reducing diffs on template updates

  • Install and use uv locally with a project-specific version instead of hijacking global uv and forcing it to a certain version

  • Funnel almost all useful actions through the just command runner via e.g. ./j.ps1 <recipe> <args> ...

  • Retire PowerShell scripts except for ./j.ps1 and scripts/pre.ps1 which thinly wrap just invocations and handle the few things just cannot do (or cannot do neatly)

  • Base most of CI on these just recipes, allowing local testing and debugging of CI actions. Only the potentially sensitive release workflow is “hard-coded” in the workflow file

  • Implement artifact attestation and PyPI publishing via OIDC in release workflows

  • After a few false starts (see the latest flurry of releases), implement release workflow that requires normal CI to pass, optionally publishes to PyPI, and updates release notes

  • Derive the optional VSCode layer’s Tasks from the just recipes, and generally make the template more VSCode-optional

  • Modernize Renovate dependency management configuration, by default make it less noisy

  • Try generating CI environment workflow and separating changelog drafting from releasing (75edd78)

  • Unify behavior of Pyright (or optional Pylance) locally and in CI without resorting to a platform-specific local extension approach

2025.1.2#

Released while attempting to stabilize the release workflow, maintained here only to match the immutable Zenodo-tracked release record. Significant changes documented in 2025.1.3 above.

2025.1.1#

Released while attempting to stabilize the release workflow, maintained here only to match the immutable Zenodo-tracked release record. Significant changes documented in 2025.1.3 above.

2025.1.0#

Released while attempting to stabilize the release workflow, maintained here only to match the immutable Zenodo-tracked release record. Significant changes documented in 2025.1.3 above.

2024.2.0#

This release stabilizes the core mechanics of the template, including environment setup and synchronization, CI/CD workflows, documentation and tests, and more. The template now wraps uv run in ./dev.ps1 as Invoke-Uv, aliased to iuv, which keeps environment variables and hooks in sync in addition to the syncing done by uv itself.

  • Restructure template as a modern uv project with workspace layout and lockfiles

  • Add TOML and Prettier formatting to pre-commit

  • Introduce Invoke-Uv.ps1 and iuv alias which wraps uv run, but also syncs submodules, environment variables, ensures pre-commit hooks are installed

  • Have Invoke-Uv.ps1 also work correctly in CI, invoking --locked and --frozen when appropriate and generating artifacts for inspecting the packages installed in CI runs

  • Transition Renovate dependency management to maintain PEP 621 requirements in pyproject.toml by automatically re-locking with uv

  • Simplify CI pipelines, don’t commit during them, allowing this template to function in repos where main has push protection

  • Leverage uv’s Python executable management to avoid having to install it

  • Finalize the complete machine setup scripts for Windows, Linux, and MacOS

  • Fix Codecov integration (#437)

  • Elevate Pyright warnings to errors in CI (37d079c5)

  • Generate appropriate coverage report format for Codecov (c22b475b)

  • Handle locked submodule configs (75d4cb02)

  • Only run coverage in task and CI, not in VSCode test runner (Fixes #447) (bb19a367)

  • Remove Pylance bundled stubs instead of synchronizing submodules/typings (8579ca8c)

  • Require docs build to pass before updating lock (Fixes #445) (1d78af44)

  • Run winget more safely and facilitate commit-pinned changelog entries.

  • Require exact and winget source, and run winget silently for safter Windows machine initialization.

  • Add task for timestamped ad-hoc/orphan changelog entries. 34dede3f

  • Single-source Pylance version (5e878127)

2024.1.1#

  • Make first release

  • Actually compare directs (#397)

  • Specify automation profile (#406)

  • Fix splatting in Windows install script in contributing guide (#413)

  • Fix sync.py for lock.json existing but empty (#415)

  • Fix powershell invocation for paths containing spaces (#416)

  • Produce an output requirements.txt with all requirements (#417)

  • Mitigate CVE-2024-37891 by setting urllib3>=2.2.2 (#421)

  • Add changelog entry step to contribution flow (#423)

  • Added towncrier

  • Fix changerelease workflow and reduce duplication