ahvn.utils.basic.deps_utils module¶

Dependency management and lazy loading utilities.

This module provides a clean, industrial-standard dependency management system and utilities for lazy loading modules.

class ahvn.utils.basic.deps_utils.DependencyManager[source]¶

Bases: object

Clean dependency management system.

Return type:

DependencyManager

static __new__(cls)[source]¶

Singleton pattern.

Return type:

DependencyManager

__init__()[source]¶

Initialize the manager.

add(dep_info)[source]¶

Add a dependency.

Return type:

None

Parameters:

dep_info (DependencyInfo)

check(name)[source]¶

Check if a dependency is available.

Return type:

bool

Parameters:

name (str)

require(name, feature='')[source]¶

Require a dependency, raising error if missing.

Return type:

None

Parameters:
list(filter_optional=None)[source]¶

List all dependencies.

Return type:

List[str]

Parameters:

filter_optional (bool | None)

missing()[source]¶

Get list of missing dependencies.

Return type:

List[str]

info(name)[source]¶

Get dependency information.

Return type:

Dict[str, Any]

Parameters:

name (str)

clear_cache()[source]¶

Clear dependency cache.

Return type:

None

load(module_name, package=None, error_msg=None)[source]¶

Import an optional dependency, raising a clear error if missing.

Parameters:
  • module_name (str) – The python module name to import (e.g. “pandas”)

  • package (Optional[str]) – The pip package name (e.g. “pandas”). Defaults to module_name.

  • error_msg (Optional[str]) – Custom error message. If None, generates a standard one.

Return type:

ModuleType

Returns:

The imported module.

Raises:

OptionalDependencyError – If the module cannot be imported.

exception ahvn.utils.basic.deps_utils.DependencyError[source]¶

Bases: Exception

Dependency-related error.

exception ahvn.utils.basic.deps_utils.OptionalDependencyError[source]¶

Bases: DependencyError, ImportError

Optional dependency not available.

ahvn.utils.basic.deps_utils.lazy_getattr(name, export_map, package)[source]¶

Helper function to implement __getattr__ for lazy loading modules.

Parameters:
  • name (str) – The attribute name being accessed.

  • export_map (Dict[str, str]) – A dictionary mapping attribute names to relative module paths (e.g., { “MyClass”: “.my_module” }).

  • package (str) – The package name (usually __name__ of the calling module).

Returns:

The requested attribute from the imported module.

Raises:

AttributeError – If the name is not in the export_map.

ahvn.utils.basic.deps_utils.collect_exports(package_names, parent_package)[source]¶

Collects exported names from a list of subpackages to build a master lazy map.

Parameters:
  • package_names (List[str]) – List of relative package names (e.g., [“klstore”, “klengine”]).

  • parent_package (str) – The parent package name (usually __name__).

Returns:

“.klstore” }).

Return type:

A dictionary mapping exported names to their relative package path (e.g., { “DatabaseKLStore”

ahvn.utils.basic.deps_utils.lazy_import_submodules(name, submodules, package)[source]¶

Helper function to lazy load submodules.

Parameters:
  • name (str) – The attribute name being accessed.

  • submodules (List[str]) – List of submodule names (relative).

  • package (str) – The package name.

Returns:

The imported module or None.

class ahvn.utils.basic.deps_utils.DependencyInfo(name, packages, install, description, optional=True, required_for=None)[source]¶

Bases: object

Information about a dependency.

Parameters:
name: str¶
packages: List[str]¶
install: str¶
description: str¶
optional: bool = True¶
required_for: List[str] | None = None¶
__post_init__()[source]¶

Initialize default values.

__init__(name, packages, install, description, optional=True, required_for=None)¶
Parameters:
Return type:

None

ahvn.utils.basic.deps_utils.get_default_dependencies()[source]¶

Get all default dependency definitions.

Return type:

dict