"""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