You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			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
 |