Importer
π€ AI-Generated Content
This documentation was generated with AI assistance and is still being audited. Some, or potentially a lot, of this information may be inaccurate. Learn more.
provide.foundation.utils.importer
¶
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 - 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
32 33 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 | |