Changelog

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

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.7.1] - 2025-04-29

Changed

  • Refactored core logic into PackageManager class. Module-level functions now wrap methods of a default instance.

  • is_installed now accepts an optional version_specifier argument.

  • install_if_missing now uses version_specifier instead of separate version and enforce_version arguments (old arguments are deprecated but handled with warnings).

  • `ensure_packages` now accepts both a dictionary and a list of requirement strings. (New)

  • Added `verbose` parameter to installation/uninstallation functions to control direct output. (New)

  • Improved internal command execution and error handling.

  • Updated dependencies (packaging, ascii_colors).

  • Switched build system to use pyproject.toml with setuptools.

  • Minimum Python version raised to 3.8.

[0.7.0] - 2025-04-25

Added

  • ensure_packages function for efficiently checking and installing/updating a dictionary of requirements.

  • dry_run parameter added to most installation/uninstallation functions.

  • Asynchronous API (async_package_manager module) with AsyncPackageManager, async_install, async_install_if_missing, async_check_vulnerabilities.

  • check_vulnerabilities function using pip-audit (requires pipmaster[audit]).

  • get_pip_manager factory function to get PackageManager instances for specific environments.

  • get_package_info function to run pip show.

  • install_or_update and install_or_update_multiple convenience functions.

  • Placeholders for future uv and conda backend support.

  • More robust logging using ascii_colors.

  • Comprehensive documentation generated with Sphinx.

  • GitHub Actions workflow for building and deploying documentation.

  • Development dependencies ([dev] extra) including pytest, pytest-asyncio, ruff, mypy, sphinx.

Changed

  • Refactored core logic into PackageManager class. Module-level functions now wrap methods of a default instance.

  • is_installed now accepts an optional version_specifier argument.

  • install_if_missing now uses version_specifier instead of separate version and enforce_version arguments (old arguments are deprecated but handled with warnings).

  • Improved internal command execution and error handling.

  • Updated dependencies (packaging, ascii_colors).

  • Switched build system to use pyproject.toml with setuptools.

  • Minimum Python version raised to 3.8.

Deprecated

  • is_version_higher (use is_version_compatible with >=).

  • is_version_exact (use is_version_compatible with ==).

  • install_if_missing parameters version and enforce_version (use version_specifier).

Removed

  • (No major removals in this version)

[0.1.0] - 2024-04-01

Added

  • Initial release with basic install, is_installed, get_installed_version, uninstall functions.