Skip to content

Releases: ArchiveBox/abxpkg

v1.9.14: Provider lifecycle fixes and full type-checking coverage

21 Mar 07:44
e16dc8e

Choose a tag to compare

  • Added prek-driven quality gates with ruff, ty, and pyright, and expanded static type coverage across abx_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 -> install verification flows across multiple providers
  • Hardened optional integrations and runtime checks for rich, ansible, and pyinfra, 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, or type: 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

15 Mar 22:17
4ce6acb

Choose a tag to compare

Highlights

  • Added package-wide, idiomatic Python logging with opt-in configuration via configure_logging(...) and optional Rich support via configure_rich_logging(...) and abx-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-shaped ERROR ... raised ... line.
  • Updated Binary(...) and ShallowBinary(...) rendering to include abspath, 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

15 Mar 21:15
01d4644

Choose a tag to compare

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 the abx-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, env

This 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:

  • logger and get_logger(...) for standard package-scoped logging
  • configure_logging(...) for stdlib handler setup
  • configure_rich_logging(...) for colorized terminal output when rich is 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

15 Mar 10:23
707c1cc

Choose a tag to compare

Highlights

  • Added built-in CargoProvider, GemProvider, GoGetProvider, NixProvider, and DockerProvider support 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.packages to overrides.install_args throughout the provider API.

New BinProviders

This release adds first-class support for:

  • cargo
  • gem
  • go get / go install via GoGetProvider
  • nix
  • docker

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

15 Mar 09:22
80ba9bb

Choose a tag to compare

  • ✨ Added first-class update() and uninstall() APIs to both Binary and BinProvider, with built-in implementations for brew, npm, pip, apt, pyinfra, and ansible
  • ✅ Added rigorous live end-to-end lifecycle tests that run real install -> update -> uninstall flows in isolated npm / pip environments and real host package managers where available
  • 🤖 Fixed AnsibleProvider so the community.general.homebrew module works correctly on Apple Silicon by resolving the real brew path and forcing ansible-runner to use the active venv toolchain
  • 🧪 Expanded CI to run the destructive package-manager tests on both ubuntu-latest and macOS-latest, with Python 3.11, 3.12, 3.13, and 3.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

15 Mar 07:31
e3b5805

Choose a tag to compare

  • 🦸 Unified euid detection in BinProvider so providers share the same UID-selection rules
  • 🐳 Kept global npm and pip installs 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.4 release line

Full Changelog: v0.6.1...v0.6.4

v0.6.1: Post-rename cleanup for exports, publish tooling, and repository layout

26 Feb 18:02
35edfac

Choose a tag to compare

  • 🧹 Cleaned out leftover repository cruft after the abx-pkg rename
  • 📦 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 -> overrides in 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

12 Nov 10:30
7473d1c

Choose a tag to compare

  • 📝 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, and brew detection 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

12 Nov 10:31
d8d8700

Choose a tag to compare

  • 🔐 Added loaded_sha256 support so loaded binaries can carry checksum metadata alongside path and version
  • 🍸 Added dry_run support and a cleaner override flow for Binary / BinProvider
  • 🦸 Improved root / EUID handling 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 old pydantic-pkgr name

Full Changelog: v0.3.7...v0.5.4

v0.3.7: Added ansible/pyinfra providers, direct CLIs, and much faster brew/pip/npm startup

26 Sep 01:43
4f9486a

Choose a tag to compare

  • 🤖 Added official AnsibleProvider and PyinfraProvider implementations 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