v2.0.0 (2026-04-27)
Bug Fixes
- Add support for -- in CLI (
0a3997f)
With the adoption of typer it was no longer interpreted as a separator of arguments but rather passed literally to the underlying command, causing error.
-
Configure typer to accept
-has an alias for--help(66d928a) -
Correct CLI flag name and stale doc examples (
5f804b5)
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
- Guard against click<8.2.0 missing NoArgsIsHelpError (
121be1a)
NoArgsIsHelpError was introduced in click 8.2.0; CI environments with click 8.1.x raised AttributeError when evaluating the except clause. Import it at module load time with a harmless fallback for older click.
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Chores
-
Add CLAUDE.md file (
5818f77) -
Adjust wording (
8b04040) -
Adjust year of copyright (
2ff645b) -
Remove TODO.md, replaced by GitHub issues (
5680f74)
Items tracked in GH issues #212, #213, #214, #215, #216.
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
- deps: Bump cryptography from 46.0.6 to 46.0.7 (
5668528)
Bumps cryptography from 46.0.6 to 46.0.7.
updated-dependencies:
- dependency-name: cryptography dependency-version: 46.0.7
dependency-type: indirect ...
Signed-off-by: dependabot[bot] support@github.com
- deps: Bump the python-dependencies group across 1 directory with 2 updates (
77fa9b1)
Bumps the python-dependencies group with 1 update in the / directory: typer.
Updates typer from 0.23.1 to 0.25.0 - Release notes - Changelog - Commits
Updates python-semantic-release from 10.5.3 to 9.21.1 - Release notes - Changelog - Commits
--- updated-dependencies: - dependency-name: typer dependency-version: 0.25.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: python-dependencies
- dependency-name: python-semantic-release dependency-version: 9.21.1
dependency-type: direct:development
update-type: version-update:semver-major
dependency-group: python-dependencies ...
Signed-off-by: dependabot[bot] support@github.com
- deps: Bump the python-dependencies group with 2 updates (
e56c9a0)
Bumps the python-dependencies group with 2 updates: tox and pytest.
Updates tox from 4.52.0 to 4.52.1 - Release notes - Changelog - Commits
Updates pytest from 9.0.2 to 9.0.3 - Release notes - Changelog - Commits
--- updated-dependencies: - dependency-name: tox dependency-version: 4.52.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: python-dependencies
- dependency-name: pytest dependency-version: 9.0.3
dependency-type: direct:development
dependency-group: python-dependencies ...
Signed-off-by: dependabot[bot] support@github.com
- deps: Bump tox in the python-dependencies group (
cfeb2a8)
Bumps the python-dependencies group with 1 update: tox.
Updates tox from 4.52.1 to 4.53.0
updated-dependencies:
- dependency-name: tox dependency-version: 4.53.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: python-dependencies ...
Signed-off-by: dependabot[bot] support@github.com
- deps-dev: Bump gitpython from 3.1.46 to 3.1.47 (
2669745)
Bumps gitpython from 3.1.46 to 3.1.47.
updated-dependencies:
- dependency-name: gitpython dependency-version: 3.1.47
dependency-type: direct:development ...
Signed-off-by: dependabot[bot] support@github.com
- devcontainer: Replace Dockerfile with post-create.sh script (
fe8ba50)
Move pip installs from Dockerfile and postCreateCommand into a single post-create.sh script; switch devcontainer.json to use the base image directly. Also replaces tox with poethepoet in the bootstrap installs.
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
- tooling: Enforce poetry.lock freshness in CI and pre-commit (
e7e76e3)
Add poetry lock --check to all CI workflows and a local pre-commit hook so stale lock files are caught before commit and in CI rather than silently regenerated.
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
-
tooling: Replace tox/flake8/black/pylint with ruff and poethepoet (
6736c20) -
Delete tox.ini, .flake8, .pylintrc
-
Add ruff.toml with settings ported from .flake8 (line-length, E203, complexity, isort)
-
Add ruff and poethepoet as dev dependencies; remove flake8 and pylint
-
Define poe tasks: test, lint, fmt, check, qa, docs, deps
-
Replace black+flake8+reorder-python-imports pre-commit hooks with ruff-pre-commit
-
Update CI workflows to use ruff check instead of flake8
-
Update CLAUDE.md to document new workflow
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
- tooling: Use poe tasks in GitHub Actions workflows (
c53b484)
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Code Style
Redundant since Python 3 defaults to utf-8.
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Continuous Integration
- Remove ai-slop (
6796fdb)
Documentation
- Generate nox-test version matrix table dynamically from VERSION_MATRIX (
922265b)
Adds a list-table (ansible-core × Python) to docs/actions/noxtest.rst, built at Sphinx time from the VERSION_MATRIX in noxtest.py so the docs stay in sync automatically. Also expands VERSION_MATRIX with the full set of supported Python versions per ansible-core release.
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Replace stale argparse/AndeboxAction plugin system description with the current typer-based architecture (modules exposing app = typer.Typer()).
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
- Update test subcommand examples for typer idiom (
000c192)
Move the test type argument before '--' to match the typer/Click convention, e.g. andebox test sanity -- --docker ....
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Features
- Add nox-test action for multi-version ansible testing (
4537f86)
Adds a new nox-test action that runs ansible-test within nox across multiple ansible-core and Python version combinations. All session definitions are encapsulated inside andebox — no noxfile.py required. Sessions are registered programmatically via nox's registry API and executed through nox.workflow.execute.
Supports --ansible-core/-a and --python/-p flags to filter the version matrix, plus --session/-s for direct session selection. Default run uses one Python per ansible-core version.
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Migrate CLI and all actions from argparse+argcomplete to Typer. Move andebox_context to context.py and remove the now-empty actions/base module. Update docs and pyproject.toml accordingly.
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
-
Replace argparse/argcomplete with typer (
5b691bf) -
pyproject.toml: swap argcomplete for typer - context.py: drop argparse Namespace/ArgumentParser; add _ErrorReporter that preserves the "andebox: error:" format; create_context(args) now takes a SimpleNamespace - actions/base.py: keep AndeboxAction intact; add andebox_context() helper that builds the SimpleNamespace from typer ctx.obj + per-action kwargs and chdirs into base_dir - cli.py: replace argparse/_make_parser/AndeboxAction discovery with a typer app; discover action sub-apps by looking for app: typer.Typer on each action module - actions/*: each module keeps its class body unchanged; a thin typer callback and app are appended at the bottom - tests/test_andebox_context.py: drop _make_parser dependency; pass SimpleNamespace directly to create_context
Co-Authored-By: Claude Sonnet 4.6 (1M context) noreply@anthropic.com
Refactoring
-
Consolidate features in andebox_context (
41a9248) -
temp_tree
-
collection checks
-
exception handling
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
- Use pathlib instead of os.* (
9ed0dca)
Testing
- Remove ansible-core 2.17, add 2.21 + devel (
c203687)
Update project dependencies and lock.
Detailed Changes: v1.10.0...v2.0.0