The PackageManager class provides a type-safe wrapper around UV, Astral’s fast Python package manager. UV is written in Rust and replaces traditional tools like pip, virtualenv, and poetry with a unified, high-performance solution.
from pyrig.rig.tools.package_manager import PackageManager# Install dependenciesPackageManager.I.install_dependencies_args().run()# Add a new packagePackageManager.I.add_dependencies_args("requests", "httpx").run()# Add dev dependenciesPackageManager.I.add_dev_dependencies_args("pytest", "ruff").run()# Update all dependenciesPackageManager.I.update_dependencies_args().run()
def no_auto_install_env_var(self) -> str: """Get environment variable name for disabling automatic dependency installing. UV normally runs 'uv sync' implicitly before commands like 'uv run' when the venv is out of date. Setting this env var to '1' disables that behaviour. Returns: 'UV_NO_SYNC' """ return "UV_NO_SYNC"# Usageimport osos.environ[PackageManager.I.no_auto_install_env_var()] = "1"PackageManager.I.run_args("pytest").run()
def project_name(self) -> str: """Get the name of the project.""" return project_name_from_cwd()def package_name(self) -> str: """Get the main package of the project.""" return kebab_to_snake_case(self.project_name())# Usageprint(f"Project: {PackageManager.I.project_name()}") # my-projectprint(f"Package: {PackageManager.I.package_name()}") # my_project
from pyrig.rig.tools.package_manager import PackageManager# Initialize a new projectPackageManager.I.init_project_args().run()# Install dependenciesPackageManager.I.install_dependencies_args().run()# Add production dependenciesPackageManager.I.add_dependencies_args( "fastapi", "uvicorn", "pydantic>=2.0").run()# Add development dependenciesPackageManager.I.add_dev_dependencies_args( "pytest", "pytest-cov", "ruff").run()# Run testsPackageManager.I.run_args("pytest").run()# Update all dependenciesPackageManager.I.update_dependencies_args().run()# Bump versionPackageManager.I.patch_version_args().run()# Build packagePackageManager.I.build_args().run()