Importer
provide.foundation.utils.importer
¶
TODO: Add module docstring.
Functions¶
lazy_import
¶
Import a module lazily with comprehensive safety checks.
This function provides thread-safe lazy loading with protection against: - Circular imports (tracks import chains) - Stack overflow (enforces maximum depth) - Corrupted module states (validates sys.modules)
Commonly lazy-loaded modules: - cli: Requires optional 'click' dependency - crypto: Cryptographic utilities - docs: Documentation generation - formatting: Text formatting utilities - metrics: Metrics collection - observability: Observability features
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
parent_module
|
str
|
The parent module name (e.g., "provide.foundation") |
required |
name
|
str
|
Module name to lazy-load (e.g., "cli") |
required |
Returns:
| Type | Description |
|---|---|
object
|
The imported module |
Raises:
| Type | Description |
|---|---|
AttributeError
|
If module is not allowed for lazy loading or circular import detected |
ImportError
|
If module import fails |
RecursionError
|
If import depth exceeds safe limits |
Note
Complexity is intentionally high to handle all edge cases in this critical import hook (recursion, corruption, depth limits).
Example
from provide.foundation.utils.importer import lazy_import cli = lazy_import("provide.foundation", "cli")
Source code in provide/foundation/utils/importer.py
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | |