Skip to main content

Manage optional requirements and their versions at runtime

Project description

optional_requirements

Manage optional requirements and their versions at runtime.

Examples

Managing requirements specified in a file

If you have a requirements file in your package (it must be included when installing the package), you can it to manage optional dependencies.

The find_requirements_file function will start at the given path and search for a file matching the given name, climbing up the directory tree until it finds a match or it goes out of a Python package (i.e., it no longer sees an __init__.py file.).

from pathlib import Path

from optional_requirements import (
    Requirements,
    parse_requirements_file,
    find_requirements_file,
    IncompatibleRequirementError,
    MissingRequirementError
)

r = Requirements(requirements=parse_requirements_file(
    find_requirements_file(
        start=Path(__file__),
        name="optional-requirements.txt",
    )
))

try:
    pd = r.try_import(name="pandas", reason="This is required to read a CSV file.")
except IncompatibleRequirementError as e:
    # The wrong version is installed.
    print(e.current_version)
    print(e.required_version)
    pass
except MissingRequirementError as e:
    # The requirement is not installed.
    print(e.required_version)
    pass
else:
    # Do something with the imported dependency.
    df = pd.DataFrame()
    pass

Managing requirements as a group in code

from optional_requirements import Requirements
from packaging.requirements import Requirement

r = Requirements(requirements=[Requirement("pandas==2.*"), Requirement("numpy<2")])
r.try_import(name="pandas", reason="This is required to read a CSV file.")

Managing requirements one by one in code

from optional_requirements import try_import_requirement
from packaging.requirements import Requirement

try_import_requirement(requirement=Requirement("numpy<2"), reason="Required for quick maths.")

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

optional_requirements-0.0.2.tar.gz (9.9 kB view hashes)

Uploaded Source

Built Distribution

optional_requirements-0.0.2-py3-none-any.whl (7.9 kB view hashes)

Uploaded Python 3

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