Changelog¶
The changelog format is based on Keep a Changelog.
This project uses Semantic Versioning - MAJOR.MINOR.PATCH
[UNRELEASED DRAFT] (2026-10-12)¶
Removed¶
Dropped support for Python 3.10 (EOL) and therefore Salt 3004.x/3005.x
Removed the obsolete
setuptoolspins for Salt source builds. Salt 3006.24/3007.15/3008.0+ ship a PEP 517 build backend. Pinning older point releases now requires a manualsetuptools<75.6.0build constraint to avoid a dependency-less Salt install.Removed the vestigial
sphinxcontrib-spellingSphinx extension. Its spellcheck builder was never invoked, but loading the extension forced all docs builds to require theenchantsystem library.
Changed¶
All
noxsessions except the version-matrixedtestsnow run on the selectedvenv_pythoninstead of a generic Python 3. A newtestsession runs the test suite on that version only;make testsnow invokes it.Artifact and CodeCov upload names now consistently reference the CI job name and include the OS release where applicable.
Following PyPI’s recommendation of minimal Trusted Publisher workflows,
deploy-package-action.ymlwas reduced to artifact verification and publishing: its publish jobs republish the exact verified bytes with minimal permissions. The GitHub release and docs deployment moved to a newfinalize-release-action.ymlworkflow outside the publishing trust boundary.Non-Ubuntu Linux distributions selected in
linux_test_distrosare tested inside VMs with a parametrized Salt/Python version matrix, whose Python versions are provisioned byuv– except Alpine, which runs against the OS-packaged Salt release like the BSDs since important binary dependencies lackmuslwheels.Removed installation of unnecessary packages during pre-commit CI job
Reworked the CI test jobs to respect the new
linux_test_distrosand*_releasesanswers. TheLinuxjob keeps its name unless more than one Ubuntu release is selected, corresponds to theUbuntudistribution selection and runs on the selected Ubuntu releases.Reworked the automated release tagging: the
mathieudutour/github-tag-actiondependency was replaced with plain git commands, which now tag the actual merge commit instead of the ephemeral PR merge ref. The tag is attributed to the bot account that pushes it.Sped up the Windows test job by disabling Windows Defender real-time monitoring on the ephemeral runner, which scans every written file synchronously and significantly slows down test environment provisioning.
Switched CI and the dev automation to
prek, a faster drop-in replacement forpre-commit. On platforms without prebuiltprekbinaries, the dev automation still falls back topre-commit.Switched the
actionlintpre-commit hook fromactionlint-pyto a maintained fork providing a hook with integrated shellcheck support. Both tools are now compiled locally, requiring only a Go toolchain instead of prebuilt platform binaries.Synced the generated loader module stubs with the interfaces Salt expects: they now scaffold the specifically named functions required by the respective module type, where applicable.
The GitHub App for release automation (
AUTORELEASE_CLID/AUTORELEASE_PRIVsecrets) now also pushes the release tag when the autorelease PR is merged, making the regular tag push workflow (tag.yml) the single entry point for all releases.The VM test tooling (
uv,nox) is installed from PyPI at the pinned versions tracked in the template, making test environments predictable and refreshing cached VM images on version bumps.The automated release PR preparation now only installs a pinned towncrier instead of the whole project. To support this, the towncrier
namesetting is specified explicitly, avoiding a package import.
Fixed¶
Fixed bashisms in the generated
Makefile, which broke its targets on platforms where/bin/shis not bash, e.g. FreeBSD.Fixed generating projects from non-git template copies leaking local cruft (
__pycache__, bytecode, editor backups) into the project. Copier skips its default exclusions when_subdirectoryis set, so the relevant patterns are now listed explicitly.Fixed pylint complaining about missing members when modules in a Salt extension such as
saltext.github(namespace package) import thegithubpackage (the root one)Fixed release automation on repositories whose default workflow token permissions are read-only: the jobs creating/updating the release PR without a configured autorelease app and closing it on manual tags now explicitly request
contents/pull-requestswrite permissions.Fixed several issues in the bundled
developer tools. Notably, virtual environment creation was broken on Windows whenuvwas unavailable.Fixed the autodocs pre-commit hook script generating documentation for untracked Python modules in
src. Only files tracked by git are considered now.Fixed the autodocs pre-commit hook script rendering a separate document with the same header for each module when multiple modules of the same kind shared a virtualname. They are now collected into a single, shared document.
Fixed the generated
.gitignorenot ignoring.envrc, which the docs recommend creating and which can contain machine-specific or sensitive values.Fixed the generated matcher stub’s
__virtualname__, which must carry a_matchsuffix to be selectable as a target type, and added the required__proxyenabled__declaration to the proxy stub.Fixed the generated noxfile’s rootless Podman autodetection for container tests, which was never included.
Fixed the isort pre-commit hook’s
--pyargument, which was passed in a form isort silently ignored. The project’s minimum Python version syntax is now actually applied, which can cause new isort-induced changes when updating existing projects.Fixed the pre-commit workflow running all hooks twice on pull requests that modify the pre-commit configuration.
Fixed workflow cancellation being resisted by
if: always()jobs and steps, which GitHub runs even in cancelled workflow runs. Status bookkeeping, log uploads and cache pruning now use!cancelled(), allowing cancellation to take effect immediately.Fixed
SKIP_REQUIREMENTS_INSTALLnever engaging in the generated CI workflows: TheTest/Build Docssteps silently reinstalled all requirements the preceding--install-onlystep had just installed.Restricted the pinned
uvin thenoxpre-commit hooks’additional_dependenciesto platforms withuvwheels, whose absence (e.g. on FreeBSD) previously broke hook installation since buildinguvfrom source requires a Rust toolchain.noxnow falls back to thevirtualenvbackend there, unlessuvis found onPATH.Stopped rewriting
tornadoimports to Salt core-internal ones via the salt-rewrite pre-commit hooks. This rule is specific to old Salt core versions.When
SKIPis set, the initialization automation now installs the pre-commit hook without--install-hooks, which prepares environments for all hooks regardless of it. Skipped hooks thus no longer break automated setup on platforms where they cannot be built.
Added¶
Added CI test jobs for FreeBSD and OpenBSD when selected in
os_support. Lacking native GitHub-hosted runners, the tests run inside VMs on Linux runners, courtesy of thevmactionsproject, against the OS-packaged Salt release (no onedir builds exist either), with the project’s minimum Salt requirement as a lower bound.Added OS Trove classifiers to the generated package metadata, derived from the
os_supportanswer, which now also offersFreeBSDandOpenBSDchoices.Added
concurrencygroups to the workflow entry points: an obsoletepr.ymlrun is now aborted when the PR receives new commits, while runs for consecutive pushes tomainand duplicate release runs for the same ref are queued instead of running in parallel.Added a
--skip-installflag totools/initialize.py, which only installs the project when the virtual environment has just been created. Thedirenvexample configuration uses it to speed up shell entry.Added a
resourcechoice to theloadersquestion, scaffolding a module for Salt’s new resources subsystem (introduced in Salt 3008.0). The generated stub stays dormant on older Salt releases, so it does not restrict the extension’s supported Salt versions.Added a new
typingquestion, which generates support for static type checking viaty. When enabled, the project receives a pre-commit hook typechecking the complete project and corresponding[tool.ty.*]configuration inpyproject.toml.Added a
Clear Actions Cachesworkflow, allowing to purge all caches or a single key via manual dispatch.Added dependency caching to the CI workflows:
pre-commitenvironments anduv’s wheel cache are now persisted between runs on GitHub-hosted runners. Release builds never use caches, enforced viacache-mode: noneand a tag ref check in the cache steps.Added questions for selecting the Linux distributions (
linux_test_distros) and OS releases (ubuntu_releases,debian_releases,alpine_releases,almalinux_releases,rockylinux_releases,freebsd_releases,openbsd_releases) the test suite runs on.Added support for inheriting system-wide packages in the development and
noxsession virtual environments by settingVENV_SYSTEM_SITE_PACKAGES=1, easing development of OS-specific extensions whose dependencies are only available as system packages. This mode falls back tovenvandpipsinceuv pip installignores inherited packages.Added the
VENV_PYTHONenvironment variable for locally overriding the Python version of the development virtual environment, e.g. when the configuredvenv_pythonis hard to come by on the development machine.Added the
require_autorelease_appquestion, defaulting to true for repositories inside thesalt-extensionsorganization. It renders significantly simpler release workflows that require the configured GitHub App; otherwise, they still support falling back to the default GitHub token.Added the
venv_pythonquestion for choosing the Python version of the development virtual environment instead of hardcoding a recommendation. The docs, package and release preparation workflows follow it as well.Documented skipping pre-commit hooks that fail to install on some platforms, e.g.
actionlint, via pre-commit’s standardSKIPenvironment variable. The generated.envrc.exampleincludes a corresponding hint.Resource types authored as packages with per-type loader overlay directories (
resources/<rtype>/{modules,states,...}/) are supported by the autodocs generation, and the CLI example check covers per-resource-type execution module overlays.Template updates adjust the OS release answers automatically: previously selected defaults follow the current default and releases that are not offered anymore are removed.
The generated noxfile now recognizes Salt release branches in
SALT_REQUIREMENT: values likesalt==3007.xinstall Salt from the corresponding upstream git branch instead of a released package, same assalt==master.The new
typingquestion also generates autils/_types.pymodule, providing type aliases for common Salt objects and importable typed declarations of most loader dunders. The generated loader module stubs import the ones they use insidetyping.TYPE_CHECKINGblocks.The scaffolded resource functional test verifies the resource type is discovered by the Salt loader and skips cleanly on Salt releases without the resources subsystem.
The selectable OS releases are limited to those that are still supported upstream and available in CI, kept in sync automatically by a scheduled workflow querying endoflife.date, the vmactions project and the GitHub runner images.
The workflows now declare least-privilege Actions cache access via the
cache-modekey: release builds andworkflow_run-triggered workflows are denied cache access entirely, protecting against cache poisoning.The
tools/initialize.pyscript now sports a proper CLI, providing--helpoutput and rejecting unknown arguments instead of silently ignoring them.When updating an extension that already ships resource modules, the
resourcetype is selected automatically in theloadersanswer.
0.10.0 (2026-07-02)¶
Changed¶
Marked Salt 3007 as no longer supported, meaning it is no longer tested against if
min_salt_version== 3006.Switched recommended venv Python version from 3.10 to 3.14
Updated dev/CI dependencies
Fixed¶
Fixed pre-commit workflow Python version if
python_requiresis higher than 3.10. pre-commit should always run with the minimally supported Python of the project, while it was previously hardcoded to 3.10.
Added¶
Added Salt 3008
0.9.0 (2026-03-17)¶
Changed¶
Refactored release workflow into separate toplevel one, which allowed to upgrade PyPI release action and publish attestations with Trusted Publishing #167
BREAKING: Added required environment for PyPI package releases in GHA workflow named
release
Fixed¶
Fixed docs publishing failure in release workflow when the autorelease PR method was used #378
Added¶
Allowed to make use of a GitHub App for the autorelease bot, which allows CI to run on the autorelease PR
0.8.0 (2026-01-27)¶
Removed¶
Dropped support for Python 3.9 (EOL) and therefore Salt 3003.x
Changed¶
Updated dev/CI dependencies
0.7.5 (2025-09-18)¶
Changed¶
Updated dev/CI dependencies
Fixed¶
Fixed Codecov upload in PR from fork #199
0.7.4 (2025-05-02)¶
Fixed¶
Fixed rendering with Copier 9.7+ #196
Fixed nox test session when uv is unavailable
Updated dev/CI dependencies
0.7.3 (2025-03-27)¶
Changed¶
Updated dev/CI dependencies
Fixed¶
Added Salt 3006.10, which fixes the missing
cryptography(rsa) dependency in integration testsFixed release workflow after the release of setuptools 77
0.7.2 (2025-03-21)¶
Changed¶
Updated dev/CI dependencies
Fixed¶
Fixed CI and dev environments with uv>=0.6.0 (Salt’s dependencies were never installed, causing an ImportError for
looseversion)
0.7.1 (2025-03-17)¶
Fixed¶
Fixed broken release workflow by downgrading action
0.7.0 (2025-03-13)¶
Removed¶
Removed included
.envrcfile, provided an example envrc instead
Fixed¶
Fixed development environment compatibility with Python 3.9 #112
Added support for Copier 9.6+, raised minimum Copier version to 9.6.0 #148
Added libenchant autodiscovery for docs build on Apple Silicon macOS with Homebrew
Fixed release workflow with trusted publishing
Fixed venv Python version selection with uv
Updated dev/CI dependencies
Added¶
Added makefile to automate common operations
Enabled instant feedback on test failures in CI
0.6.0 (2024-11-03)¶
Fixed¶
Fixed Windows test runs after repo.saltproject.io decommission
Updated dev/CI dependencies
Added¶
Improved release automation: Added workflow that builds the changelog and creates/updates a PR on pushes to the default branch. Added trigger for release workflow when this PR is merged. #18
Added
breakingnews fragment type to towncrier
0.5.2 (2024-10-16)¶
Removed¶
Dropped Python 3.8 support
0.5.1 (2024-10-16)¶
Fixed¶
Fixed updates with salt_version containing a minor version
Updated dev/CI dependencies
0.5.0 (2024-10-07)¶
Removed¶
Dropped
workflowsquestion andbasicandorgworkflow variants. All projects use theenhancedworkflows from now on.Removed redundant changed-files-debug job
Changed¶
Ensured minimum and maximum supported Salt versions always at least follow their default values (supported versions at the time of the template release) when updating the template.
Excluded default fixtures from coverage calculations
Pinned pre-commit hooks and actions to digests
Added¶
Added
no cover: start [...] no cover: stoppragma to exclude statements from coverageAdded default
.codecov.yml
0.4.8 (2024-10-05)¶
Fixed¶
Fixed PyPI uploads in enhanced workflow
0.4.7 (2024-10-04)¶
Fixed¶
Fixed codecov uploads in enhanced workflow
0.4.6 (2024-10-04)¶
Changed¶
Reduced maximum Python support of 3007 to 3.10 since 3.11 and 3.12 have issues
0.4.5 (2024-09-27)¶
Changed¶
Allowed specifying a minor version in max_salt_version
Improved test version matrix generation in enhanced workflow
Fixed¶
Fixed basic workflow tests running against .0 minor releases only
Fixed project environment initialization crash during first copy. This crash did not result in any issues other than a warning after copy.
Moved migrations into Python script, making them more platform-agnostic
Updated salt-rewrite URL in pre-commit config
Added¶
Added
os_supportquestion when enhanced workflows were selected, influencing the OS the tests are run on
0.4.4 (2024-09-25)¶
Fixed¶
Fixed RenovateBot warning about merge conflicts after update
0.4.3 (2024-09-25)¶
Changed¶
Made pre-commit run on all files in PRs that change lint config
Made repo automation reset git index after running pre-commit to allow RenovateBot to detect new files correctly
0.4.2 (2024-09-24)¶
Changed¶
Ignored keyword-arg-before-vararg pylint warning by default because
salt.utils.args.get_function_argspecdoes not work with this style
0.4.1 (2024-09-23)¶
Fixed¶
Fixed check-merge-conflict pre-commit hook false positive in RST files with specific Saltext name lengths #52
0.4.0 (2024-09-23)¶
Removed¶
Removed unnecessary
docs-htmlandgen-api-docsnox sessionsRemoved unused saltpylint dependency
Changed¶
Changed nox pre-commit hook to local hook, added support for recent nox versions
Homogenized YAML syntax in
org/enhancedworkflowsIncreased default pylint strictness
Made rolling doc releases the default when
source_urlis in orgPinned pylint version used for linting
Switched nox venv backend to uv, which reduced the time for pre-commit linting and other nox sessions significantly
Updated pre-commit hook versions
Updated pylint configuration
Fixed¶
Fixed unwanted regeneration of deleted boilerplate during updates #41
Added Copier template test runs on macOS and Windows and fixed some template issues on Windows
Ensured pylint lints against the minimum required Python version
Fixed
deploy-docsif condition inenhancedworkflowFixed license classifier usage when non-apache
licenseis selectedFixed unreleased version in rendered docs changelog with
enhancedworkflowMade merge conflict pre-commit hook always run
Removed duplicate pre-commit hook for merge conflict check
Added¶
Automated most post-copy/update tasks like repo initialization, dev env setup and pre-commit installation and running #45
Added 3006.9 to known point releases
Added
(master|minion)_configfixtures to easily allow daemon configuration overridesAdded
actionlintwithshellcheckintegration as a pre-commit hookAdded
relax_pylintquestion to suppress some annoying messages, especially with legacy codeAdded a
.envrcfor direnv that runs the new initialization script, ensuring that development environments are present and in sync for all developersAdded development environment initialization script to generated projects
Allowed overriding parameters to sphinx-autobuild in
docs-htmlnox session
0.3.7 (2024-08-05)¶
Correct meta files, remove install note, better docs URL default
Changed¶
Defaulted docs_url to GH Pages URL when deploying docs
Removed install note regarding relenv bug
Fixed¶
Fixed new meta files added in 0.3.5
0.3.6 (2024-08-05)¶
Workflow fixes/improvements, more meta files
Changed¶
Synced
enhancedworkflow actions with centralized ones (docs deploy)Require tests passing for deploying docs, add docs deploy to pipeline exit status
Default to
orgworkflows ifsource_urlis within org
Fixed¶
Fixed
enhancedworkflowsRemoved GitHub Actions workflow creation if
source_urlis not on GitHub
Added¶
Added
deploy_docsoptionAdded more meta files (CODE-OF-CONDUCT, CONTRIBUTING, NOTICE)
0.3.5 (2024-07-23)¶
SSH fixtures fixes
Changed¶
Stopped ignoring host keys in SSH tests
Fixed¶
Fixed test suite crash on Windows when
ssh_fixturesis selected
0.3.4 (2024-07-23)¶
Workflow deprecation warning fix
Changed¶
Switched from deprecated set-output to environment file in workflows
0.3.3 (2024-07-23)¶
Fix black formatting
Fixed¶
Fixed default black formatting
0.3.2 (2024-07-22)¶
Fix docs build, update dev stuff
Fixed¶
Fixed docs build with importlib-metadata >=8
Fixed enhanced workflow syntax
Added¶
Added
test_containersquestionAdded 3007.1 to known point releases
0.3.1 (2024-05-23)¶
Provide Python 3.8 migration
Changed¶
Updated actions in workflows
Updated test requirements
Fixed¶
Provided migration from <0.3.0 regarding
min_python_versionto avoid update crash with--skip-answeredFixed coverage in
enhancedworkflow
Added¶
Added upload of html-docs artifact to
enhancedworkflow
0.3.0 (2024-05-07)¶
Drop Python 3.7 support, dev updates, default to 3006
Changed¶
Defaulted
min_salt_versionto 3006Migrated into
salt-extensionsorgDropped Python 3.7 support
Replaced import reordering tool with isort
Improved package_name validation
Updated pre-commit hooks for Python >= 3.8
Added¶
Added crossrefs for
conf_(minion|master)in docsAdded 3005.5 to known point releases
Added 3006.7 to known point releases
Added 3006.8 to known point releases
0.2.9 (2024-02-20)¶
Correct autodocs path
Fixed¶
Fixed module discovery in autodocs pre-commit hook when
project_name!=package_name
0.2.8 (2024-02-08)¶
Suppress localhost linkcheck errs, update data
Changed¶
Suppressed localhost linkcheck errors
Added¶
Added 3006.6 to known point releases
Added Python 3.12 to 3007 version support
0.2.7 (2024-01-06)¶
Workflow improvements, sync with official tool
Fixed¶
Corrected unit test opts fixture confdir
Added¶
Added enhanced and centralized workflows
0.2.6 (2023-12-15)¶
Minor fixes, support nested utils, add install guide
Changed¶
Minor docs layout changes
Fixed¶
Fixed discovery of nested utils in autodocs hook
Added¶
Added default installation guide
0.2.5 (2023-12-13)¶
Cleanup docs, add changelog to docs, fix CLI scripts
Changed¶
Reduced docs nesting, removed
docs/**/all.rst
Fixed¶
Fixed local pre-commit hooks paths
Added¶
Added (rolling) changelog to docs
0.2.4 (2023-12-11)¶
Fix typo in README
No significant changes.
0.2.3 (2023-12-11)¶
Community enhancements, changelog
Changed¶
Reworked default README
Added¶
Added towncrier scaffolding
Added GitHub issue/PR templates
0.2.2 (2023-12-10)¶
pyproject.toml with Salt requirement fixed
Fixed¶
Readded Salt requirement
0.2.1 (2023-12-08)¶
Fix docs build after pyproject migration
Fixed¶
Fixed docs build after switch to pyproject.toml
0.2.0 (2023-12-08)¶
Remove pinning, transition to pyproject.toml
Changed¶
Transitioned to
pyproject.toml
0.1.6 (2023-12-08)¶
Remove pinning
Changed¶
Dropped scaffolding for requirements pinning
Fixed¶
Fixed README instructions
0.1.5 (2023-11-15)¶
Fix autodocs in pre-commit workflow
Fixed¶
Fixed module discovery in autodocs hook
0.1.4 (2023-11-15)¶
More docs build fixes
Fixed¶
Fixed 3.7 pip-compile docs
0.1.3 (2023-11-15)¶
Fix docs build
Fixed¶
Ensured make-autodocs works without saltext namespace
Fixed intersphinx URL for pytest
Added¶
parametrized docs/all.rst
0.1.2 (2023-11-15)¶
pre-commit pylint fixes
Fixed¶
Fixed pre-commit nox/pylint race condition
0.1.1 (2023-11-14)¶
salt-rewrite 2.3.0 has wrong python_requires
Fixed¶
Fixed pre-commit on Python 3.7 (salt-rewrite 2.3.0 has wrong python_requires)
0.1.0 (2023-11-14)¶
diverged from official salt-extension tool
Removed¶
Dropped support for Python <3.7
Dropped support for Salt <3003
Changed¶
Defaulted minimum supported version to 3005
Updated pre-commit hook versions
Updated workflow action versions
Added validation for many inputs
Fixed¶
Corrected minimum pytest-salt-factories version
Corrected reference to requirement files
Added¶
Parametrized versions all over the template
Added salt-ssh fixtures
Added functional tests skeleton
Added
(minion|master)_optsunit test fixtures
0.0.2 (2023-11-14)¶
in sync w/ salt-extension + pre-commit applied
Fixed¶
Fixed default project pre-commit formatting
0.0.1 (2023-11-13)¶
Initial release based on official salt-extension tool