Files
MLPproject/.venv/lib/python3.12/site-packages/pythonjsonlogger/utils.py
2025-10-23 15:44:32 +02:00

41 lines
1.1 KiB
Python

"""Utilities for Python JSON Logger"""
### IMPORTS
### ============================================================================
## Future
from __future__ import annotations
## Standard Library
import importlib.util
## Installed
## Application
from .exception import MissingPackageError
### FUNCTIONS
### ============================================================================
def package_is_available(
name: str, *, throw_error: bool = False, extras_name: str | None = None
) -> bool:
"""Determine if the given package is available for import.
Args:
name: Import name of the package to check.
throw_error: Throw an error if the package is unavailable.
extras_name: Extra dependency name to use in `throw_error`'s message.
Raises:
MissingPackageError: When `throw_error` is `True` and the return value would be `False`
Returns:
If the package is available for import.
"""
available = importlib.util.find_spec(name) is not None
if not available and throw_error:
raise MissingPackageError(name, extras_name)
return available