Skip to main content

Tools to manage (uv) environemnts programmatically.

Project description

DepKit

PyPI License Package status Monthly downloads Distribution format Wheel availability Python version Implementation Releases Github Contributors Github Discussions Github Forks Github Issues Github Issues Github Watchers Github Stars Github Repository size Github last commit Github release date Github language count Github commits this month Package status PyUp

DependencyManager

A flexible Python dependency manager that handles runtime dependencies and script imports.

Quick Start

from depkit import DependencyManager

# Simple usage
manager = DependencyManager(requirements=["requests>=2.31.0"])
manager.install()
import requests
# ... do your work ...
manager.uninstall()  # optional cleanup

Recommended Usage (Context Managers)

# Synchronous
with DependencyManager(requirements=["requests"]) as manager:
    import requests
    # ... do your work ...
    # cleanup happens automatically

# Asynchronous
async with DependencyManager(requirements=["requests"]) as manager:
    import requests
    # ... do your work ...
    # cleanup happens automatically

Features

  • Simple install/uninstall methods for quick usage
  • Context managers for proper resource management
  • PEP 723 dependency declaration support
  • Support for both pip and uv package managers
  • Custom pip index URL support
  • Temporary script importing
  • Path management for imports

Installation

pip install depkit

Basic Usage

The DependencyManager supports both synchronous and asynchronous context managers:

Async Usage

from depkit import DependencyManager

async with DependencyManager(
    requirements=["requests>=2.31.0", "pandas"],
    prefer_uv=True
) as manager:
    import requests
    import pandas

Sync Usage

from depkit import DependencyManager

with DependencyManager(
    requirements=["requests>=2.31.0", "pandas"],
    prefer_uv=True
) as manager:
    import requests
    import pandas

Working with Scripts

The DependencyManager can handle scripts with PEP 723 dependency declarations:

# example_script.py
# /// script
# dependencies = [
#   "requests>=2.31.0",
#   "pandas>=2.0.0"
# ]
# requires-python = ">=3.12"
# ///

import requests
import pandas as pd

Load and use the script:

async with DependencyManager(
    scripts=["path/to/example_script.py"],
    extra_paths=["."]  # Add paths to Python's import path
) as manager:
    # Script's dependencies are installed automatically
    from example_script import some_function

Configuration Options

DependencyManager(
    prefer_uv: bool = False,          # Prefer uv over pip if available
    requirements: list[str] = None,   # List of PEP 508 requirement specifiers
    extra_paths: list[str] = None,    # Additional Python import paths
    scripts: list[str] = None,        # Scripts to load and process
    pip_index_url: str = None,        # Custom PyPI index URL
)

Features in Detail

UV Integration

The manager automatically detects and can use uv for faster package installation:

manager = DependencyManager(prefer_uv=True)

Custom Package Index

Specify a custom PyPI index:

manager = DependencyManager(
    requirements=["private-package>=1.0.0"],
    pip_index_url="https://private.pypi.org/simple"
)

Path Management

Add custom import paths:

manager = DependencyManager(
    extra_paths=[
        "./src",
        "./lib",
    ]
)

Error Handling

from depkit import DependencyError

try:
    async with DependencyManager(requirements=["nonexistent-package"]):
        pass
except DependencyError as e:
    print(f"Dependency management failed: {e}")

Best Practices

  1. Use as a context manager to ensure proper cleanup
  2. Specify exact version requirements when possible
  3. Use PEP 723 for script dependencies
  4. Handle DependencyError exceptions appropriately
  5. Consider using uv in production for better performance

Limitations

  • Requires Python 3.12 or higher
  • Some features may not work on all platforms
  • UV support requires uv to be installed separately

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

depkit-1.0.3.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

depkit-1.0.3-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file depkit-1.0.3.tar.gz.

File metadata

  • Download URL: depkit-1.0.3.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for depkit-1.0.3.tar.gz
Algorithm Hash digest
SHA256 fd99b0539cf963222539496ad59ff6e86324c9c2886773af48c5e82c3238782d
MD5 74313dc7e6fcb226c1f2a16abaf5b5a9
BLAKE2b-256 d5b5159c10374734998a2298a6010d79f14af66c4c6a8b8fdd36430389dd8548

See more details on using hashes here.

Provenance

The following attestation bundles were made for depkit-1.0.3.tar.gz:

Publisher: build.yml on phil65/depkit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file depkit-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: depkit-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 13.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for depkit-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f573ee66a802ae7bfd1ea4f40966cb5b1da0a1b6749626ea71a2b94cbb7f7a35
MD5 b5692d3ebd8773b8e1ab717390d3c8dc
BLAKE2b-256 d3b37157b3a43813e8eaa8184bec405588ae6a332abf1ef52c1423db82a1acde

See more details on using hashes here.

Provenance

The following attestation bundles were made for depkit-1.0.3-py3-none-any.whl:

Publisher: build.yml on phil65/depkit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page