Skip to main content

A package to dynamically inject requirements into a virtual environment.

Project description

Requirement Manager

This project provides a RequirementManager (requires is an alias) class to manage Python package requirements using virtual environments. It can be used as a decorator or context manager to ensure specific packages are installed and available during the execution of a function or code block.

Features

  • Automatically creates and manages virtual environments.
  • Checks if the required packages are already installed.
  • Installs packages if they are not already available.
  • Supports ephemeral virtual environments that are deleted after use.
  • Can be used as a decorator or context manager.

Installation

pip install pydepinject

Usage

Decorator

To use the requires as a decorator, simply decorate your function with the required packages:

from pydepinject import requires


@requires("requests", "numpy")
def my_function():
    import requests
    import numpy as np
    print(requests.__version__)
    print(np.__version__)

my_function()

Context Manager

You can also use the requires as a context manager:

from pydepinject import requires


with requires("requests", "numpy"):
    import requests
    import numpy as np
    print(requests.__version__)
    print(np.__version__)

Reusable Virtual Environments

The requires can create named virtual environments and reuse them across multiple functions or code blocks:

@requires("requests", venv_name="myenv", ephemeral=False)
def my_function():
    import requests
    print(requests.__version__)


with requires("pylint", venv_name="myenv", ephemeral=False):
    import pylint
    print(pylint.__version__)
    import requests  # This is also available here because it was installed in the same virtual environment
    print(requests.__version__)

Managing Virtual Environments

The requires can automatically delete ephemeral virtual environments after use. This is useful when you want to ensure that the virtual environment is clean and does not persist after the function or code block completes:

@requires("requests", venv_name="myenv", ephemeral=True)
def my_function():
    import requests
    print(requests.__version__)

my_function()

Logging

The requires uses the logging module to provide debug information. By default, it logs to the console at the DEBUG level. You can adjust the logging configuration as needed.

Unit Tests

Unit tests are provided to verify the functionality of the requires. The tests use pytest and cover various scenarios including decorator usage, context manager usage, ephemeral environments, and more.

Running Tests

To run the unit tests, ensure you have pytest installed, and then execute the following command:

pytest

License

This project is licensed under the MIT License. See the LICENSE file for more details.

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

pydepinject-0.0.1.dev0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

pydepinject-0.0.1.dev0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file pydepinject-0.0.1.dev0.tar.gz.

File metadata

  • Download URL: pydepinject-0.0.1.dev0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.10.14

File hashes

Hashes for pydepinject-0.0.1.dev0.tar.gz
Algorithm Hash digest
SHA256 078d9f4e3e07b5a6681afc10de9d671a1cd3f804b510a4c5520232bc1353c399
MD5 828c09fb2c82a52033bd50ff242bb82d
BLAKE2b-256 3cf404ec22c3da966117bd72123d0ac8083755b51b807867ff9f6a28a5e84b1e

See more details on using hashes here.

File details

Details for the file pydepinject-0.0.1.dev0-py3-none-any.whl.

File metadata

File hashes

Hashes for pydepinject-0.0.1.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 89b886b6a5e4bce539d3addc32c32ddd31c77a2f697b238fa886a180dd24ce36
MD5 fc61ed387f9892949a49301b4829391b
BLAKE2b-256 06fccf5a89fa984a5b1aafe4b6bb218be76f74758e8517a534274a6d34739b6a

See more details on using hashes here.

Supported by

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