Releases: ArchiveBox/abxpkg
v1.9.14: Provider lifecycle fixes and full type-checking coverage
- Added
prek-driven quality gates withruff,ty, andpyright, and expanded static type coverage acrossabx_pkg,tests.py, and the Django example project - Fixed provider lifecycle regressions, including canonical brew formula binary resolution, stale-path uninstall handling, and a shared install-cache bug that broke real
uninstall -> installverification flows across multiple providers - Hardened optional integrations and runtime checks for
rich,ansible, andpyinfra, including accurate optional-dependency detection and safer installer import/dispatch behavior - Cleaned up runtime typing edges in settings, admin, views, logging, semver, and provider overrides without papering over errors with
Any,cast, ortype: ignore - Verified the release against live package-manager lifecycle tests and a fully clean
prek run --all-files
Full Changelog: v1.9.5...v1.9.14
v1.9.5: Logging overhaul with opt-in Rich output and cleaner fallback traces
Highlights
- Added package-wide, idiomatic Python logging with opt-in configuration via
configure_logging(...)and optional Rich support viaconfigure_rich_logging(...)andabx-pkg[rich]. - Cleaned up debug traces so they focus on the useful flow: internal underscore helpers and provider-selection noise are omitted, lifecycle logs read more naturally, and return logs mirror the original call shape.
- Improved failure logging for multi-provider fallback paths so intermediate provider failures stay at
DEBUG, while only the final all-providers-failed result emits a single call-shapedERROR ... raised ...line. - Updated
Binary(...)andShallowBinary(...)rendering to includeabspath,version, and a shortened trailing SHA suffix for easier trace inspection. - Expanded logging and provider regression coverage, including single-provider fallback, multi-provider fallback success, and full failure cases.
Notes
- Rich output remains opt-in and does not change default stdlib logging behavior.
- README logging docs were already in good shape and remain concise.
- Verification on the release commit:
uv run pytest tests.py -q->62 passed, 11 skipped.
v0.7.1: Added lazy provider singletons, rich logging, and stronger CI coverage
Highlights
- Added lazy provider singleton imports such as
from abx_pkg import apt, brew, pip, npm, env, instantiated on first access and cached for reuse. - Added package-level logging helpers with opt-in Rich support via
configure_logging(...),configure_rich_logging(...), and theabx-pkg[rich]extra. - Strengthened live lifecycle coverage and CI reliability across macOS and Linux, including better Nix/Docker setup and clearer live-test diagnostics.
- Refreshed the README and examples around the simplified provider API and new logging configuration options.
Lazy Provider Singletons
Built-in providers are now available as explicit lazy imports:
from abx_pkg import apt, brew, pip, npm, envThis keeps common usage concise without eagerly instantiating every provider at import time. To preserve that laziness, provider singleton names are intentionally excluded from from abx_pkg import *; use explicit imports when you want the cached singleton instances.
Logging
This release adds a dedicated abx_pkg.logging module and re-exports the main helpers from abx_pkg:
loggerandget_logger(...)for standard package-scoped loggingconfigure_logging(...)for stdlib handler setupconfigure_rich_logging(...)for colorized terminal output whenrichis installed
abx-pkg still stays quiet by default unless your application configures logging explicitly.
Validation
uv run pytest tests.py -q(57 passed, 11 skipped)
Full Changelog: v0.7.0...v0.7.1
v0.7.0: Added cargo/gem/go_get/nix/docker providers and install_args overrides
Highlights
- Added built-in
CargoProvider,GemProvider,GoGetProvider,NixProvider, andDockerProvidersupport out of the box. - Expanded destructive end-to-end lifecycle coverage and CI for package-manager workflows across macOS and Linux.
- Renamed binary override key
overrides.packagestooverrides.install_argsthroughout the provider API.
New BinProviders
This release adds first-class support for:
cargogemgo get/go installviaGoGetProvidernixdocker
DockerProvider uses image refs as install args, writes local wrapper shims that execute via docker run, and reports the image tag as the loaded version.
Override API Change
Binary.overrides[provider_name]['packages'] has been renamed to Binary.overrides[provider_name]['install_args'].
If you were customizing install targets before, update code like this:
# before
overrides = {
'pip': {'packages': ['yt-dlp[default,curl-cffi]']},
'docker': {'packages': ['koalaman/shellcheck:v0.10.0']},
}
# after
overrides = {
'pip': {'install_args': ['yt-dlp[default,curl-cffi]']},
'docker': {'install_args': ['koalaman/shellcheck:v0.10.0']},
}The compatibility work in this release keeps the provider internals aligned around install_args, including install/update/uninstall flows and provider override resolution.
Validation
- Standard test suite passes locally.
- Live destructive lifecycle tests were exercised locally for the new providers (
cargo,gem,go_get,nix,docker).
v0.6.5: Added update/uninstall APIs with live CI coverage across providers
- ✨ Added first-class
update()anduninstall()APIs to bothBinaryandBinProvider, with built-in implementations forbrew,npm,pip,apt,pyinfra, andansible - ✅ Added rigorous live end-to-end lifecycle tests that run real
install -> update -> uninstallflows in isolatednpm/pipenvironments and real host package managers where available - 🤖 Fixed
AnsibleProviderso thecommunity.general.homebrewmodule works correctly on Apple Silicon by resolving the realbrewpath and forcingansible-runnerto use the active venv toolchain - 🧪 Expanded CI to run the destructive package-manager tests on both
ubuntu-latestandmacOS-latest, with Python3.11,3.12,3.13, and3.14 - 📝 Updated the README to document the new lifecycle methods and removed the completed TODO for update/remove actions
Full Changelog: v0.6.4...v0.6.5
v0.6.4: Consistent euid handling across providers with safer Docker/root installs
- 🦸 Unified
euiddetection inBinProviderso providers share the same UID-selection rules - 🐳 Kept global
npmandpipinstalls running as real root in Docker/container environments while still respecting owned prefixes / venvs for local installs - 🙋 Added fallbacks for current UIDs that do not exist in
/etc/passwd, preventing provider exec from crashing in containerized environments - 🧪 Added regression tests for unmapped installer-owner UIDs, root/global install behavior, and prefix-owner precedence
- 📦 Bumped packaging metadata and refreshed dependencies for the
0.6.4release line
Full Changelog: v0.6.1...v0.6.4
v0.6.1: Post-rename cleanup for exports, publish tooling, and repository layout
- 🧹 Cleaned out leftover repository cruft after the
abx-pkgrename - 📦 Fixed exported provider symbols and a brew-provider export issue in
abx_pkg.__init__ - 🪵 Fixed a missing f-string, updated the publish script, and cleaned up package metadata
- 📚 Rewrote large sections of the README for clarity and renamed
provider_overrides->overridesin the docs - ✅ Updated ignore rules and license metadata to match the renamed project
Full Changelog: v0.6.0...v0.6.1
v0.6.0: Renamed project to abx-pkg with dry-run, sudo-aware installs, and performance fixes
- 📝 Project was renamed from
pydantic-pkgr->abx-pkg - 🐞 Fixed tests, workflow names, deprecation warnings, setup timing, and a cluster of small post-rename breakages
- ⚡️ Continued startup/performance work for
npm,pip, andbrewdetection and install setup - 🦸♂️ Improved
EUID/ sudo handling so install commands can run as the right user or retry with elevated permissions when needed - 🍸 Added dry-run support for showing install commands without actually running them
Full Changelog: v0.5.4...v0.6.0
v0.5.4: Last pydantic-pkgr release with SHA256 metadata, dry-run support, and safer root handling
- 🔐 Added
loaded_sha256support so loaded binaries can carry checksum metadata alongside path and version - 🍸 Added
dry_runsupport and a cleaner override flow forBinary/BinProvider - 🦸 Improved root /
EUIDhandling for brew / pip / npm, including cache-dir fallbacks and fixes for subprocesses writing into the wrong home directory - ⚡ Added a large round of performance work for brew / npm / pip package, abspath, and version detection, plus cached installer-binary resolution
- 📦 Switched packaging/publishing to
uv, added a publish helper script, and made this the last release under the oldpydantic-pkgrname
Full Changelog: v0.3.7...v0.5.4
v0.3.7: Added ansible/pyinfra providers, direct CLIs, and much faster brew/pip/npm startup
- 🤖 Added official
AnsibleProviderandPyinfraProviderimplementations alongside the existing apt/brew/pip/npm providers - 🧱 Split core types into dedicated modules (
base_types,shallowbinary, and provider-specific files) to make the package structure much cleaner - 🖥️ Made providers directly executable as CLIs instead of only importable library classes
- ⏱️ Moved venv / npm-prefix setup from initialization to install time and substantially sped up brew / npm / pip prefix detection
- 🎯 Added targeted-provider loading/installing, support for spaces in binary names, and fixes for npm clobbering installs
Full Changelog: v0.2.2...v0.3.7