exonware-xwlazy 0.1.0.11__py3-none-any.whl → 0.1.0.20__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. exonware/__init__.py +26 -0
  2. exonware/xwlazy/__init__.py +0 -0
  3. exonware/xwlazy/common/__init__.py +47 -0
  4. exonware/xwlazy/common/base.py +56 -0
  5. exonware/xwlazy/common/cache.py +504 -0
  6. exonware/xwlazy/common/logger.py +257 -0
  7. exonware/xwlazy/common/services/__init__.py +72 -0
  8. exonware/xwlazy/common/services/dependency_mapper.py +232 -0
  9. exonware/xwlazy/common/services/install_async_utils.py +165 -0
  10. exonware/xwlazy/common/services/install_cache_utils.py +245 -0
  11. exonware/xwlazy/common/services/keyword_detection.py +283 -0
  12. exonware/xwlazy/common/services/spec_cache.py +165 -0
  13. xwlazy/lazy/lazy_state.py → exonware/xwlazy/common/services/state_manager.py +0 -2
  14. exonware/xwlazy/common/strategies/__init__.py +28 -0
  15. exonware/xwlazy/common/strategies/caching_dict.py +44 -0
  16. exonware/xwlazy/common/strategies/caching_installation.py +88 -0
  17. exonware/xwlazy/common/strategies/caching_lfu.py +66 -0
  18. exonware/xwlazy/common/strategies/caching_lru.py +63 -0
  19. exonware/xwlazy/common/strategies/caching_multitier.py +59 -0
  20. exonware/xwlazy/common/strategies/caching_ttl.py +59 -0
  21. {xwlazy/lazy → exonware/xwlazy}/config.py +51 -21
  22. exonware/xwlazy/contracts.py +1396 -0
  23. exonware/xwlazy/defs.py +378 -0
  24. xwlazy/lazy/lazy_errors.py → exonware/xwlazy/errors.py +21 -16
  25. exonware/xwlazy/facade.py +991 -0
  26. exonware/xwlazy/module/__init__.py +18 -0
  27. exonware/xwlazy/module/base.py +565 -0
  28. exonware/xwlazy/module/data.py +17 -0
  29. exonware/xwlazy/module/facade.py +246 -0
  30. exonware/xwlazy/module/importer_engine.py +2117 -0
  31. exonware/xwlazy/module/strategies/__init__.py +22 -0
  32. exonware/xwlazy/module/strategies/module_helper_lazy.py +93 -0
  33. exonware/xwlazy/module/strategies/module_helper_simple.py +65 -0
  34. exonware/xwlazy/module/strategies/module_manager_advanced.py +111 -0
  35. exonware/xwlazy/module/strategies/module_manager_simple.py +95 -0
  36. exonware/xwlazy/package/__init__.py +18 -0
  37. exonware/xwlazy/package/base.py +798 -0
  38. xwlazy/lazy/host_conf.py → exonware/xwlazy/package/conf.py +61 -16
  39. exonware/xwlazy/package/data.py +17 -0
  40. exonware/xwlazy/package/facade.py +480 -0
  41. exonware/xwlazy/package/services/__init__.py +84 -0
  42. exonware/xwlazy/package/services/async_install_handle.py +87 -0
  43. exonware/xwlazy/package/services/config_manager.py +245 -0
  44. exonware/xwlazy/package/services/discovery.py +370 -0
  45. {xwlazy/lazy → exonware/xwlazy/package/services}/host_packages.py +43 -20
  46. exonware/xwlazy/package/services/install_async.py +277 -0
  47. exonware/xwlazy/package/services/install_cache.py +145 -0
  48. exonware/xwlazy/package/services/install_interactive.py +59 -0
  49. exonware/xwlazy/package/services/install_policy.py +156 -0
  50. exonware/xwlazy/package/services/install_registry.py +54 -0
  51. exonware/xwlazy/package/services/install_result.py +17 -0
  52. exonware/xwlazy/package/services/install_sbom.py +153 -0
  53. exonware/xwlazy/package/services/install_utils.py +79 -0
  54. exonware/xwlazy/package/services/installer_engine.py +406 -0
  55. exonware/xwlazy/package/services/lazy_installer.py +718 -0
  56. {xwlazy/lazy → exonware/xwlazy/package/services}/manifest.py +40 -33
  57. exonware/xwlazy/package/services/strategy_registry.py +186 -0
  58. exonware/xwlazy/package/strategies/__init__.py +57 -0
  59. exonware/xwlazy/package/strategies/package_discovery_file.py +129 -0
  60. exonware/xwlazy/package/strategies/package_discovery_hybrid.py +84 -0
  61. exonware/xwlazy/package/strategies/package_discovery_manifest.py +101 -0
  62. exonware/xwlazy/package/strategies/package_execution_async.py +113 -0
  63. exonware/xwlazy/package/strategies/package_execution_cached.py +90 -0
  64. exonware/xwlazy/package/strategies/package_execution_pip.py +99 -0
  65. exonware/xwlazy/package/strategies/package_execution_wheel.py +106 -0
  66. exonware/xwlazy/package/strategies/package_mapping_discovery_first.py +100 -0
  67. exonware/xwlazy/package/strategies/package_mapping_hybrid.py +105 -0
  68. exonware/xwlazy/package/strategies/package_mapping_manifest_first.py +100 -0
  69. exonware/xwlazy/package/strategies/package_policy_allow_list.py +57 -0
  70. exonware/xwlazy/package/strategies/package_policy_deny_list.py +57 -0
  71. exonware/xwlazy/package/strategies/package_policy_permissive.py +46 -0
  72. exonware/xwlazy/package/strategies/package_timing_clean.py +67 -0
  73. exonware/xwlazy/package/strategies/package_timing_full.py +66 -0
  74. exonware/xwlazy/package/strategies/package_timing_smart.py +68 -0
  75. exonware/xwlazy/package/strategies/package_timing_temporary.py +66 -0
  76. exonware/xwlazy/runtime/__init__.py +18 -0
  77. exonware/xwlazy/runtime/adaptive_learner.py +129 -0
  78. exonware/xwlazy/runtime/base.py +274 -0
  79. exonware/xwlazy/runtime/facade.py +94 -0
  80. exonware/xwlazy/runtime/intelligent_selector.py +170 -0
  81. exonware/xwlazy/runtime/metrics.py +60 -0
  82. exonware/xwlazy/runtime/performance.py +37 -0
  83. exonware/xwlazy/version.py +2 -2
  84. {exonware_xwlazy-0.1.0.11.dist-info → exonware_xwlazy-0.1.0.20.dist-info}/METADATA +89 -11
  85. exonware_xwlazy-0.1.0.20.dist-info/RECORD +87 -0
  86. exonware_xwlazy-0.1.0.11.dist-info/RECORD +0 -20
  87. xwlazy/__init__.py +0 -34
  88. xwlazy/lazy/__init__.py +0 -301
  89. xwlazy/lazy/bootstrap.py +0 -106
  90. xwlazy/lazy/lazy_base.py +0 -465
  91. xwlazy/lazy/lazy_contracts.py +0 -290
  92. xwlazy/lazy/lazy_core.py +0 -3727
  93. xwlazy/lazy/logging_utils.py +0 -194
  94. xwlazy/version.py +0 -77
  95. {exonware_xwlazy-0.1.0.11.dist-info → exonware_xwlazy-0.1.0.20.dist-info}/WHEEL +0 -0
  96. {exonware_xwlazy-0.1.0.11.dist-info → exonware_xwlazy-0.1.0.20.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exonware-xwlazy
3
- Version: 0.1.0.11
3
+ Version: 0.1.0.20
4
4
  Summary: Marker package that enables lazy install features across the eXonware suite.
5
5
  Project-URL: Homepage, https://exonware.com
6
6
  Project-URL: Repository, https://github.com/exonware/xwlazy
@@ -76,14 +76,40 @@ Built-in tracking of module load times, access counts, memory usage, and cache h
76
76
 
77
77
  **Why it matters:** Visibility into lazy loading performance helps identify bottlenecks and optimize import strategies.
78
78
 
79
- ### 🎨 **5 Installation Modes**
80
- - **AUTO:** Install automatically without asking
81
- - **INTERACTIVE:** Prompt user before each installation
82
- - **WARN:** Log warnings but don't install (monitoring mode)
83
- - **DISABLED:** Don't install anything
79
+ ### 🎨 **Two-Dimensional Mode System**
80
+
81
+ xwlazy uses a powerful two-dimensional mode system that separates **loading behavior** from **installation behavior**, giving you precise control over how modules are loaded and when packages are installed.
82
+
83
+ #### **Lazy Load Modes** (When modules load)
84
+ - **NONE:** Standard imports (no lazy loading)
85
+ - **AUTO:** Lazy loading enabled (deferred module loading)
86
+ - **PRELOAD:** Preload all modules on start (parallel loading)
87
+ - **BACKGROUND:** Load modules in background threads (non-blocking)
88
+ - **CACHED:** Cache loaded modules but allow unloading
89
+
90
+ #### **Lazy Install Modes** (When packages install)
91
+ - **NONE:** No auto-installation
92
+ - **SMART:** Install on first usage (on-demand)
93
+ - **FULL:** Install all dependencies on start (parallel batch)
94
+ - **CLEAN:** Install on usage + uninstall after completion
95
+ - **TEMPORARY:** Always uninstall after use (aggressive cleanup)
96
+ - **SIZE_AWARE:** Install small packages, skip large ones
97
+ - **INTERACTIVE:** Ask user before installing
98
+ - **WARN:** Log warning but don't install (monitoring mode)
99
+ - **DISABLED:** Don't install anything (explicit)
84
100
  - **DRY_RUN:** Show what would be installed
85
101
 
86
- **Why it matters:** Different environments need different policies. Development might use AUTO, production might use WARN or DISABLED.
102
+ #### **Preset Modes** (Quick combinations)
103
+ - **none:** NONE load + NONE install (standard imports)
104
+ - **lite:** AUTO load + NONE install (lazy loading only)
105
+ - **smart:** AUTO load + SMART install (on-demand installation)
106
+ - **full:** AUTO load + FULL install (install all on start)
107
+ - **clean:** AUTO load + CLEAN install (install + cleanup)
108
+ - **temporary:** AUTO load + TEMPORARY install (aggressive cleanup)
109
+ - **size_aware:** AUTO load + SIZE_AWARE install (smart sizing)
110
+ - **auto:** AUTO load + SMART install + auto-uninstall large packages
111
+
112
+ **Why it matters:** Different environments need different policies. Development might use `smart`, production might use `lite` or `warn`, CI/CD might use `clean` or `temporary`.
87
113
 
88
114
  ## 🏆 Performance Benchmarks
89
115
 
@@ -215,26 +241,76 @@ import suspicious_package # ❌ Blocked by security policy
215
241
 
216
242
  ## 🔧 Advanced Configuration
217
243
 
218
- ### Installation Modes
244
+ ### Two-Dimensional Mode Configuration
245
+
246
+ #### Using Preset Modes (Recommended)
247
+
248
+ ```python
249
+ from xwlazy.lazy import config_package_lazy_install_enabled
250
+
251
+ # Quick preset modes
252
+ config_package_lazy_install_enabled("xwsystem", enabled=True, mode="smart") # On-demand install
253
+ config_package_lazy_install_enabled("xwsystem", enabled=True, mode="full") # Install all on start
254
+ config_package_lazy_install_enabled("xwsystem", enabled=True, mode="clean") # Install + cleanup
255
+ config_package_lazy_install_enabled("xwsystem", enabled=True, mode="lite") # Lazy load only
256
+ ```
257
+
258
+ #### Using Explicit Mode Configuration
219
259
 
220
260
  ```python
221
261
  from xwlazy.lazy import (
222
262
  config_package_lazy_install_enabled,
263
+ LazyLoadMode,
223
264
  LazyInstallMode,
265
+ LazyModeConfig,
266
+ )
267
+
268
+ # Explicit two-dimensional configuration
269
+ config_package_lazy_install_enabled(
270
+ "xwsystem",
271
+ enabled=True,
272
+ load_mode=LazyLoadMode.PRELOAD, # Preload all modules
273
+ install_mode=LazyInstallMode.SMART # Install on-demand
274
+ )
275
+
276
+ # Or use LazyModeConfig for full control
277
+ config = LazyModeConfig(
278
+ load_mode=LazyLoadMode.BACKGROUND,
279
+ install_mode=LazyInstallMode.SIZE_AWARE,
280
+ large_package_threshold_mb=100.0, # Skip packages > 100MB
281
+ background_workers=4 # 4 background workers
224
282
  )
283
+ config_package_lazy_install_enabled(
284
+ "xwsystem",
285
+ enabled=True,
286
+ mode_config=config
287
+ )
288
+ ```
289
+
290
+ #### Using exonware.conf (Global Configuration)
225
291
 
292
+ ```python
293
+ import exonware.conf as conf
294
+
295
+ # Set global lazy mode for all packages
296
+ conf.lazy = "smart" # or "lite", "full", "clean", "auto", etc.
297
+ ```
298
+
299
+ #### Special Purpose Modes
300
+
301
+ ```python
226
302
  # Interactive mode: Ask user before installing
227
303
  config_package_lazy_install_enabled(
228
304
  "xwsystem",
229
305
  enabled=True,
230
- mode=LazyInstallMode.INTERACTIVE
306
+ mode="interactive" # or LazyInstallMode.INTERACTIVE
231
307
  )
232
308
 
233
309
  # Warn mode: Log but don't install (monitoring)
234
310
  config_package_lazy_install_enabled(
235
311
  "xwsystem",
236
312
  enabled=True,
237
- mode=LazyInstallMode.WARN
313
+ mode="warn" # or LazyInstallMode.WARN
238
314
  )
239
315
  ```
240
316
 
@@ -376,5 +452,7 @@ xwlazy is built with inspiration from the Python lazy import ecosystem, particul
376
452
 
377
453
  **Part of the eXonware ecosystem** - Enterprise-grade Python libraries for modern software development.
378
454
 
379
- *Version: 0.1.0.12 | Last Updated: 17-Nov-2025*
455
+ *Last Updated: 17-Nov-2025*
456
+
457
+ > **Note:** For the current version, use `from exonware.xwlazy import __version__` or `import exonware.xwlazy; print(exonware.xwlazy.__version__)`
380
458
 
@@ -0,0 +1,87 @@
1
+ exonware/__init__.py,sha256=T2WAMwseXT3R0gApl9kfNq1o_jBGmn2VAGnBsshpk3E,822
2
+ exonware/xwlazy/__init__.py,sha256=7_eS3ekP3Z3A5FbXUFaovcrCexUqvNsf57tLHv8XnMQ,10235
3
+ exonware/xwlazy/config.py,sha256=ca0ECwTt34zFbNYfuwCeC0w17zatLstNk5l52UwhhQg,6241
4
+ exonware/xwlazy/contracts.py,sha256=Jyr1anMVZS_DCjhY7k27I2qNOJYYc1pBFStMJMmG--M,44365
5
+ exonware/xwlazy/defs.py,sha256=hY-MOMLbFNNPfdZXUwRCdOj9pYEUuFuTZQlwPSYUz2M,12290
6
+ exonware/xwlazy/errors.py,sha256=2a-FMiQa4h-m7SCqo19a7h09zGiAHClnuZCGKgvYO0I,9188
7
+ exonware/xwlazy/facade.py,sha256=4Hd6JGAKbn2y7n9QsS4Mbf1AjaXdFMSUEiaOCQyrZ4U,38749
8
+ exonware/xwlazy/version.py,sha256=UqMcJnv7RnFAVLmU2wDGR19wgY0DtSb-tLSSitndDBQ,2351
9
+ exonware/xwlazy/common/__init__.py,sha256=VSW_iv6dyaC1YtoY66bAsrLFRJW-f0UVeB7Qgr-FOiU,860
10
+ exonware/xwlazy/common/base.py,sha256=TsGduH5yspumKjMPKXeqJkz7-n7KyXcbm6PhzwapZOo,1404
11
+ exonware/xwlazy/common/cache.py,sha256=ZDGtx1XfY_g_EP7eV20ASKkxyTANqvciOKk1UdQkIf4,17547
12
+ exonware/xwlazy/common/logger.py,sha256=mHyFyBulHcvwb2EuTHhVYDsdKoaVXCdJ84vowiXBUrI,8350
13
+ exonware/xwlazy/common/services/__init__.py,sha256=LgoL5PdLdaanKKkw1WghiNirLIFpkSkExlXWBezGZdc,1774
14
+ exonware/xwlazy/common/services/dependency_mapper.py,sha256=D4Hdu-oDt_RHMFdRkHyYeiQlvhf5pgShopvzytt486A,8555
15
+ exonware/xwlazy/common/services/install_async_utils.py,sha256=RIx5bemXjcQOPyPvKLuHUQOFGWdwdM9tOz-w-ZAF8lw,4966
16
+ exonware/xwlazy/common/services/install_cache_utils.py,sha256=vIZxNASN8q_rigla8LoHWDAqGo8qgaHQ4xI1SOcj25k,7589
17
+ exonware/xwlazy/common/services/keyword_detection.py,sha256=B-Wo_KArhsZSUb_XNSnJjcoZob6l4BrBYyXf5ixk444,9776
18
+ exonware/xwlazy/common/services/spec_cache.py,sha256=rdQb43vUoMpNeHUeK3ANF42mn9k5V2D9ohEeLunqrkk,5318
19
+ exonware/xwlazy/common/services/state_manager.py,sha256=hYU4w8GX0-Zq7NAcMGRuEKMWMJ1LBzPhJH0A5dmM7jg,3116
20
+ exonware/xwlazy/common/strategies/__init__.py,sha256=4GERnc2Ktj_DiMHn0UUqdXcY5nGedbZer9vPhKQyf9I,633
21
+ exonware/xwlazy/common/strategies/caching_dict.py,sha256=IFX6bjf5jStqG66qMKWYXpWiGKsvxIE1WCfsz_KKJhM,1126
22
+ exonware/xwlazy/common/strategies/caching_installation.py,sha256=uamdlsXbbf_rkz3O5z9MlMlmTKYF2i_-G7ZiOP62Zyk,2523
23
+ exonware/xwlazy/common/strategies/caching_lfu.py,sha256=5lBOaDolMHqX3_KjZLavaXeAEiVnhLpPHJlQD3oP2mU,1971
24
+ exonware/xwlazy/common/strategies/caching_lru.py,sha256=5ibtwtmZSJsz9rlga3p8MIIdfAUTidhUCuSWHbFU4Jk,1832
25
+ exonware/xwlazy/common/strategies/caching_multitier.py,sha256=HpFYjc-8-suosexfpwrw9NQyZSdKh0Nd3KT4E7MjC0Y,1910
26
+ exonware/xwlazy/common/strategies/caching_ttl.py,sha256=OvJtelb_-q3yTN8DzKfquYm-_igfe9DddLBbD71J80U,1637
27
+ exonware/xwlazy/module/__init__.py,sha256=sL_G0RvpMfif0e3Yzo0CSj2xAPPF6phlQB367agzqfE,627
28
+ exonware/xwlazy/module/base.py,sha256=eqTj8xHtSXIiqMiycfAcQ76RUQVqxpKXGIiyyesbViI,20682
29
+ exonware/xwlazy/module/data.py,sha256=Q3xNBQgHM_AlMvujkx_YmVT3H1Fr-6xUqryTlWClbp8,318
30
+ exonware/xwlazy/module/facade.py,sha256=zrjN5BEMpEjT64etss2Rh627onjwIzV3c6UNvk2jD-k,8089
31
+ exonware/xwlazy/module/importer_engine.py,sha256=dc1EF95nAHu9omnN0ui9XkSO6PM_ly3yx_unz694m4I,91818
32
+ exonware/xwlazy/module/strategies/__init__.py,sha256=oV49bhWlErG197Y7yKcUzm4acDvfGnVm77lcNLgAu5I,467
33
+ exonware/xwlazy/module/strategies/module_helper_lazy.py,sha256=fr71AOWXS2BE5RWccFar8Edi5SppsPwbuCtLvahppYY,2679
34
+ exonware/xwlazy/module/strategies/module_helper_simple.py,sha256=Hu3z5X_Fg24jZuumUmV8mk1bFyrNu85gUgSR-YHHUZI,1683
35
+ exonware/xwlazy/module/strategies/module_manager_advanced.py,sha256=lMkfFZlExpGUTDKpZAmxAXX5Cely4qy5l3yPl0rD0Hs,3293
36
+ exonware/xwlazy/module/strategies/module_manager_simple.py,sha256=zKkWSZXpz0gZAftkaQZVfjdh3zpHvdLhHik5iOLZGXc,2442
37
+ exonware/xwlazy/package/__init__.py,sha256=UI7xwTbFDURAt7kCr3yRhZzZtFrWRDwhJXakSyJwSCU,640
38
+ exonware/xwlazy/package/base.py,sha256=SAj5kCxVt9gHvrT770aEiFb8mc3OELz5kE2ZxpR8Kdk,27930
39
+ exonware/xwlazy/package/conf.py,sha256=OMoLj59sypWaVQZ-ELrxKv5fIqMyJcN7HhzYgWJW-Mg,14053
40
+ exonware/xwlazy/package/data.py,sha256=3TFb_Qr6HJfQSCBG4Kg9-dIbyrt76zpMnAFoD0ZdTEA,323
41
+ exonware/xwlazy/package/facade.py,sha256=r5hW0ve2FQ6oqspCPts3ZHFA-cvNQcsCBZVjfClpVkw,18743
42
+ exonware/xwlazy/package/services/__init__.py,sha256=ydB2kRzx6I3Kpm-bYyecTwHdkE_544X0CAXHZh7AyZY,2240
43
+ exonware/xwlazy/package/services/async_install_handle.py,sha256=TN7iYUOPiTGG-xXtPjdFTIZ7-_IEn0vYeWK-EuEhlNU,2803
44
+ exonware/xwlazy/package/services/config_manager.py,sha256=JOWciuQi2D7BCLm90i0nbWvksVidPrK1vCUcXjhAnkE,10551
45
+ exonware/xwlazy/package/services/discovery.py,sha256=DxFHz5OMg4kg5Dy_zkKQaU5wdSyIGFXFXz7-DVvLgfI,14637
46
+ exonware/xwlazy/package/services/host_packages.py,sha256=NGpqadJpJtUBFTBxG4axNhEYXAuCUu_ktWYRTbobaVI,5429
47
+ exonware/xwlazy/package/services/install_async.py,sha256=pcTzX_COx2E4vP6MAzwu7OC0XZImWKfsrFrPQvV46Z0,13279
48
+ exonware/xwlazy/package/services/install_cache.py,sha256=KL0uzK7CmFiTFs8zjWOY8zYXKSC2cLcUD_cWDEktsTI,5974
49
+ exonware/xwlazy/package/services/install_interactive.py,sha256=5tvVeogm9wIVG6u8jiSSpmXiPt1wXMtdTAETjsZ3QBE,2155
50
+ exonware/xwlazy/package/services/install_policy.py,sha256=_et-C7m5iOxudpkSBT9G2lNqqt1EUZh-nygSjyQdMEM,5876
51
+ exonware/xwlazy/package/services/install_registry.py,sha256=1_6T3xaMM0IaitpFsvLxBCSBBWbnE0nwdPZd86a9qFg,1504
52
+ exonware/xwlazy/package/services/install_result.py,sha256=MeXi-B9QBO1uZlyUbCBDNu_LBoYYQiInWoIDLQ0BVCs,346
53
+ exonware/xwlazy/package/services/install_sbom.py,sha256=aph691SEPu8lvPDR5Fbf2JyPemlKKVEbra-79JzhV60,5571
54
+ exonware/xwlazy/package/services/install_utils.py,sha256=T1KeU3fbyNFYdYjeBWUIfWwTSQ6WHASVl-zSDDvxrvI,2371
55
+ exonware/xwlazy/package/services/installer_engine.py,sha256=d5Vxq_wicVhn52Mm-iTd9pWCkqJZ9_361L-6rP3bhrI,15363
56
+ exonware/xwlazy/package/services/lazy_installer.py,sha256=2oZxVZZX3hMsBwIYwzS97YVUPvRGbepTb04EnlIfHMI,32098
57
+ exonware/xwlazy/package/services/manifest.py,sha256=txAotO00hJtfsMuNX6HycyCTBbjs_nSgOARXSSLNGPw,19163
58
+ exonware/xwlazy/package/services/strategy_registry.py,sha256=4pKEKSy_TshHNGw2GctYJTMzk7z5YBncS2wfrBNBEsY,6796
59
+ exonware/xwlazy/package/strategies/__init__.py,sha256=r_gpreZ6kcsWfHkGABYlZVx69JdvbMwlftitAKEwbrA,1626
60
+ exonware/xwlazy/package/strategies/package_discovery_file.py,sha256=mArPdled9s3ql7NncFwPgRSINtC2FM7a7k7Xi5jPgVA,4394
61
+ exonware/xwlazy/package/strategies/package_discovery_hybrid.py,sha256=7HdmbIILFcm2FNV7o3x3Pc1jUUuiUHaSAMItor6xJCk,2654
62
+ exonware/xwlazy/package/strategies/package_discovery_manifest.py,sha256=EiBbwWcggJvue6iJbmSmsNXpBNhS74vb7sLysEEK_F4,3368
63
+ exonware/xwlazy/package/strategies/package_execution_async.py,sha256=sZDtelXLdoumdVTywjyjdyvv10mKXroASc2FuAZ-p60,3644
64
+ exonware/xwlazy/package/strategies/package_execution_cached.py,sha256=htl8YOusqwIgEPZjn__KNK77lHCkWfFJyjF90gb2CcY,2680
65
+ exonware/xwlazy/package/strategies/package_execution_pip.py,sha256=gBz7tCpE6n5bkrU2EjQvt0gymn-cPUFxyAxmJfDIgtI,2963
66
+ exonware/xwlazy/package/strategies/package_execution_wheel.py,sha256=pb4mJLqwDrLiH46koW0wcQtbrwTDY1-GgtTCR6ryGuM,3209
67
+ exonware/xwlazy/package/strategies/package_mapping_discovery_first.py,sha256=La3VZPPDsvhBgQ-q23kFJWVqPBYhzt2fzpFINobnotA,3279
68
+ exonware/xwlazy/package/strategies/package_mapping_hybrid.py,sha256=bchfFkzVRLh1AVCQ6OLYzkilW5pqAJug4C_fS_XRFn0,3399
69
+ exonware/xwlazy/package/strategies/package_mapping_manifest_first.py,sha256=Q25r0L4193sKPWPe1YMMxvXnH0hkrKPc_TchPSgOljw,3304
70
+ exonware/xwlazy/package/strategies/package_policy_allow_list.py,sha256=l_1w_LnWWvGtOsJxlbrwfYIDLn1DSgwWlJh-dDQIoWE,1556
71
+ exonware/xwlazy/package/strategies/package_policy_deny_list.py,sha256=S1xdNe_ticMvSt_gigLkTR_b9wV0_H9iDTJ-io9yfWk,1516
72
+ exonware/xwlazy/package/strategies/package_policy_permissive.py,sha256=k2MndZ7kBH-SEfgEycNJidwaVo9994a32YLCStR2pH0,1127
73
+ exonware/xwlazy/package/strategies/package_timing_clean.py,sha256=KwZmo8KSa4_jJOwwgrAujdUUBJQEHml8rWY0tuvhoZk,1826
74
+ exonware/xwlazy/package/strategies/package_timing_full.py,sha256=1vphf9RXTE1tLFfmqAwytleGqR2Pia9jGXNT5d-pvQg,1736
75
+ exonware/xwlazy/package/strategies/package_timing_smart.py,sha256=GlmAR77qK0lfpu6DoLokJ1BOUo1cWVgZt0nBmf5xG2U,1835
76
+ exonware/xwlazy/package/strategies/package_timing_temporary.py,sha256=ek6HE4S5RAiljDgbfw6m1D_U4iDYV-F6r5LZ_uzvxM4,1795
77
+ exonware/xwlazy/runtime/__init__.py,sha256=jbIzemqwtWvKu2LxhYU7pIcihNakQHCON8xZW0orqZA,636
78
+ exonware/xwlazy/runtime/adaptive_learner.py,sha256=fx1p9cMES_CB8l4ir0giuJHPzlCLPbl3iMpru6TNvPo,5256
79
+ exonware/xwlazy/runtime/base.py,sha256=mEKlUe09wpCI8VHF3I-pdnH5VIDC1PqK8iQzANR_b90,10019
80
+ exonware/xwlazy/runtime/facade.py,sha256=9R-1aXMTxZuaN1xD2JrU2RFjzPKXu7-oTM5dTV5kY1E,3415
81
+ exonware/xwlazy/runtime/intelligent_selector.py,sha256=501Lrsa3_CaA1-mY6H-w46KEblpsYjO3_mzbNJJKgKM,6531
82
+ exonware/xwlazy/runtime/metrics.py,sha256=QHYKZ55pjdEKeOBjMVQ2N2y0rgJWAOWeD_N0S7YYOHg,1987
83
+ exonware/xwlazy/runtime/performance.py,sha256=57ygfRhqyZVn75B55b7-eKk1EIisdCD8qrbwv2wKAl4,1198
84
+ exonware_xwlazy-0.1.0.20.dist-info/METADATA,sha256=nPfeHzlaPLpdvG98HMNcpeUfgQy_5fsjWgCEkAvg0FQ,16859
85
+ exonware_xwlazy-0.1.0.20.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
86
+ exonware_xwlazy-0.1.0.20.dist-info/licenses/LICENSE,sha256=w42ohoEUfhyT0NgiivAL4fWg2AMRLGnfXPMAR4EO-MU,1094
87
+ exonware_xwlazy-0.1.0.20.dist-info/RECORD,,
@@ -1,20 +0,0 @@
1
- exonware/xwlazy/__init__.py,sha256=uS0FTfM1r1FqcM2C6FrLgFARp-drdMxnJOg5XATAM3U,1674
2
- exonware/xwlazy/version.py,sha256=E5aVPnT4mfjNCGF4IEs45FOFv_vH_RspxZBtW_y8je8,2351
3
- xwlazy/__init__.py,sha256=kMokTnTWqht1Rr4VgPfxpjp6BYQ0Pziu3rpXw93-57k,608
4
- xwlazy/version.py,sha256=HB5UxTEw9CUiCDNVgFLHpMuojbuugXVR7kXQhdJOy9E,2351
5
- xwlazy/lazy/__init__.py,sha256=VhBEqwhR_GUrdn5400KWS28pX7T36kqTz9p2QgxqrXA,7361
6
- xwlazy/lazy/bootstrap.py,sha256=okGe1f30qPXC7uyz7rnY6wzan3Mkt6Z5sukyPfZK4kQ,3721
7
- xwlazy/lazy/config.py,sha256=Wb6YMqYJT4Car79i8tvFptKlDT-15tplWeZZ2IMfZzY,5344
8
- xwlazy/lazy/host_conf.py,sha256=w_bT8VQEOtrf8oR-rY08dxB-k-Y7nMWt2mlOiZcVaxI,11377
9
- xwlazy/lazy/host_packages.py,sha256=7b4XmfcbSHE68aFeXgAp3ELEG0t9poa73MRULzQmtGY,4059
10
- xwlazy/lazy/lazy_base.py,sha256=mtIq3F4LdH7IIxm0Tizma_4nkxwVVJ7IcwAPmLWqYls,13919
11
- xwlazy/lazy/lazy_contracts.py,sha256=6GZj3svH4Tsb74Syjh0hKgkMuNGDfGCTVb4QNI9T7dM,7573
12
- xwlazy/lazy/lazy_core.py,sha256=_FwYz140ueeRgFrQAk0K5xdmKyEcHsfYtBgzytrQ6nI,145139
13
- xwlazy/lazy/lazy_errors.py,sha256=0ttYzcquv0jAd6cfO2be77sRHWuTPjW8KDQFQ-4JQWo,8642
14
- xwlazy/lazy/lazy_state.py,sha256=a_pOIDI6apbpu3xWvnofyM3vReV49CXiZmplkpWATmE,3118
15
- xwlazy/lazy/logging_utils.py,sha256=n2AkfQfFkUxlpAZyRNllwZTFrLfI0HD73ULw-AqQUCo,5830
16
- xwlazy/lazy/manifest.py,sha256=GCExV9EDOQ3HGIwVp-9wUk5MPUnJGYGKGS7CREPHubU,18497
17
- exonware_xwlazy-0.1.0.11.dist-info/METADATA,sha256=i77J_GYb3myTc0VCx_P96up0ZjSSaIQvkYF6RQMGb3U,13759
18
- exonware_xwlazy-0.1.0.11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
19
- exonware_xwlazy-0.1.0.11.dist-info/licenses/LICENSE,sha256=w42ohoEUfhyT0NgiivAL4fWg2AMRLGnfXPMAR4EO-MU,1094
20
- exonware_xwlazy-0.1.0.11.dist-info/RECORD,,
xwlazy/__init__.py DELETED
@@ -1,34 +0,0 @@
1
- """
2
- Top-level xwlazy package exposing lazy runtime utilities.
3
- """
4
-
5
- from .version import (
6
- __version__,
7
- VERSION_MAJOR,
8
- VERSION_MINOR,
9
- VERSION_PATCH,
10
- VERSION_BUILD,
11
- VERSION_SUFFIX,
12
- VERSION_STRING,
13
- get_version,
14
- get_version_info,
15
- get_version_dict,
16
- is_dev_version,
17
- is_release_version,
18
- )
19
-
20
- __all__ = [
21
- "__version__",
22
- "VERSION_MAJOR",
23
- "VERSION_MINOR",
24
- "VERSION_PATCH",
25
- "VERSION_BUILD",
26
- "VERSION_SUFFIX",
27
- "VERSION_STRING",
28
- "get_version",
29
- "get_version_info",
30
- "get_version_dict",
31
- "is_dev_version",
32
- "is_release_version",
33
- ]
34
-
xwlazy/lazy/__init__.py DELETED
@@ -1,301 +0,0 @@
1
- """
2
- #exonware/xwsystem/src/exonware/xwsystem/utils/lazy_package/__init__.py
3
-
4
- Company: eXonware.com
5
- Author: Eng. Muhammad AlShehri
6
- Email: connect@exonware.com
7
- Version: 0.1.0.16
8
- Generation Date: 10-Oct-2025
9
-
10
- Lazy Package - Unified Lazy Loading System
11
-
12
- This package provides per-package lazy loading with automatic installation
13
- of missing dependencies. It consolidates all lazy loading functionality into
14
- a clean, well-structured module following DEV_GUIDELINES.md.
15
-
16
- Design Patterns:
17
- - Facade: Unified API (LazySystemFacade, LazyModeFacade)
18
- - Strategy: Pluggable discovery/installation/caching strategies
19
- - Template Method: Base classes define common workflows
20
- - Singleton: Global instances for system-wide state
21
- - Registry: Per-package isolation (LazyInstallerRegistry)
22
- - Observer: Performance monitoring
23
- - Proxy: Deferred loading (LazyLoader, DeferredImportError)
24
- - Factory: Handler creation
25
-
26
- Core Goal: Per-Package Lazy Loading
27
- Each package (xwsystem, xwnode, xwdata) can independently enable lazy mode.
28
- Only packages installed with [lazy] extra get auto-installation.
29
-
30
- Quick Start:
31
- # In your package's __init__.py
32
- from xwlazy.lazy import config_package_lazy_install_enabled
33
- config_package_lazy_install_enabled("yourpackage") # Auto-detect from pip install
34
-
35
- Usage:
36
- # Then just use normal Python imports!
37
- import fastavro # Missing? Auto-installed! ✨
38
- import pandas # Missing? Auto-installed! ✨
39
- """
40
-
41
- # Import all from submodules
42
- from .lazy_contracts import (
43
- # Enums
44
- LazyInstallMode,
45
- PathType,
46
- # Dataclasses
47
- DependencyInfo,
48
- # Interfaces
49
- IPackageDiscovery,
50
- IPackageInstaller,
51
- IImportHook,
52
- IPackageCache,
53
- ILazyLoader,
54
- )
55
-
56
- from .lazy_errors import (
57
- # Exceptions
58
- LazySystemError,
59
- LazyInstallError,
60
- LazyDiscoveryError,
61
- LazyHookError,
62
- LazySecurityError,
63
- ExternallyManagedError,
64
- DeferredImportError,
65
- )
66
-
67
- from .lazy_base import (
68
- # Abstract base classes
69
- APackageDiscovery,
70
- APackageInstaller,
71
- AImportHook,
72
- APackageCache,
73
- ALazyLoader,
74
- )
75
-
76
- from .lazy_core import (
77
- # Core classes
78
- DependencyMapper,
79
- LazyDiscovery,
80
- LazyInstaller,
81
- LazyInstallPolicy,
82
- LazyInstallerRegistry,
83
- LazyImportHook,
84
- LazyMetaPathFinder,
85
- LazyLoader,
86
- LazyImporter,
87
- LazyModuleRegistry,
88
- LazyPerformanceMonitor,
89
- LazyInstallConfig,
90
- LazyModeFacade,
91
- WatchedPrefixRegistry,
92
- AsyncInstallHandle,
93
-
94
- # Discovery functions
95
- get_lazy_discovery,
96
- discover_dependencies,
97
- export_dependency_mappings,
98
-
99
- # Install functions
100
- enable_lazy_install,
101
- disable_lazy_install,
102
- is_lazy_install_enabled,
103
- set_lazy_install_mode,
104
- get_lazy_install_mode,
105
- install_missing_package,
106
- install_and_import,
107
- get_lazy_install_stats,
108
- get_all_lazy_install_stats,
109
- lazy_import_with_install,
110
- xwimport,
111
-
112
- # Hook functions
113
- install_import_hook,
114
- uninstall_import_hook,
115
- is_import_hook_installed,
116
-
117
- # Lazy loading functions
118
- enable_lazy_imports,
119
- disable_lazy_imports,
120
- is_lazy_import_enabled,
121
- lazy_import,
122
- register_lazy_module,
123
- preload_module,
124
- get_lazy_module,
125
- get_loading_stats,
126
- preload_frequently_used,
127
- get_lazy_import_stats,
128
-
129
- # Lazy mode facade functions
130
- enable_lazy_mode,
131
- disable_lazy_mode,
132
- is_lazy_mode_enabled,
133
- get_lazy_mode_stats,
134
- configure_lazy_mode,
135
- preload_modules,
136
- optimize_lazy_mode,
137
-
138
- # Configuration
139
- config_package_lazy_install_enabled,
140
- sync_manifest_configuration,
141
- refresh_lazy_manifests,
142
-
143
- # Security & Policy
144
- set_package_allow_list,
145
- set_package_deny_list,
146
- add_to_package_allow_list,
147
- add_to_package_deny_list,
148
- set_package_index_url,
149
- set_package_extra_index_urls,
150
- add_package_trusted_host,
151
- set_package_lockfile,
152
- generate_package_sbom,
153
- check_externally_managed_environment,
154
-
155
- # Registration helpers
156
- register_lazy_module_prefix,
157
- register_lazy_module_methods,
158
- )
159
-
160
- from .config import LazyConfig, DEFAULT_LAZY_CONFIG
161
- from .host_conf import get_conf_module
162
- from .host_packages import register_host_package, refresh_host_package
163
- from .logging_utils import (
164
- get_log_categories,
165
- is_log_category_enabled,
166
- set_log_categories,
167
- set_log_category,
168
- )
169
-
170
- # Version info
171
- __version__ = "0.0.1.382"
172
- __author__ = "Eng. Muhammad AlShehri"
173
- __email__ = "connect@exonware.com"
174
- __company__ = "eXonware.com"
175
-
176
- # Export all
177
- __all__ = [
178
- # Enums
179
- 'LazyInstallMode',
180
- 'PathType',
181
-
182
- # Dataclasses
183
- 'DependencyInfo',
184
-
185
- # Interfaces
186
- 'IPackageDiscovery',
187
- 'IPackageInstaller',
188
- 'IImportHook',
189
- 'IPackageCache',
190
- 'ILazyLoader',
191
-
192
- # Exceptions
193
- 'LazySystemError',
194
- 'LazyInstallError',
195
- 'LazyDiscoveryError',
196
- 'LazyHookError',
197
- 'LazySecurityError',
198
- 'ExternallyManagedError',
199
- 'DeferredImportError',
200
-
201
- # Abstract base classes
202
- 'APackageDiscovery',
203
- 'APackageInstaller',
204
- 'AImportHook',
205
- 'APackageCache',
206
- 'ALazyLoader',
207
-
208
- # Core classes
209
- 'DependencyMapper',
210
- 'LazyDiscovery',
211
- 'LazyInstaller',
212
- 'LazyInstallPolicy',
213
- 'LazyInstallerRegistry',
214
- 'LazyImportHook',
215
- 'LazyMetaPathFinder',
216
- 'LazyLoader',
217
- 'LazyImporter',
218
- 'LazyModuleRegistry',
219
- 'LazyPerformanceMonitor',
220
- 'LazyInstallConfig',
221
- 'LazyModeFacade',
222
- 'WatchedPrefixRegistry',
223
- 'AsyncInstallHandle',
224
-
225
- # Discovery functions
226
- 'get_lazy_discovery',
227
- 'discover_dependencies',
228
- 'export_dependency_mappings',
229
-
230
- # Install functions
231
- 'enable_lazy_install',
232
- 'disable_lazy_install',
233
- 'is_lazy_install_enabled',
234
- 'set_lazy_install_mode',
235
- 'get_lazy_install_mode',
236
- 'install_missing_package',
237
- 'install_and_import',
238
- 'get_lazy_install_stats',
239
- 'get_all_lazy_install_stats',
240
- 'lazy_import_with_install',
241
- 'xwimport',
242
-
243
- # Hook functions
244
- 'install_import_hook',
245
- 'uninstall_import_hook',
246
- 'is_import_hook_installed',
247
-
248
- # Lazy loading functions
249
- 'enable_lazy_imports',
250
- 'disable_lazy_imports',
251
- 'is_lazy_import_enabled',
252
- 'lazy_import',
253
- 'register_lazy_module',
254
- 'preload_module',
255
- 'get_lazy_module',
256
- 'get_loading_stats',
257
- 'preload_frequently_used',
258
- 'get_lazy_import_stats',
259
-
260
- # Lazy mode facade functions
261
- 'enable_lazy_mode',
262
- 'disable_lazy_mode',
263
- 'is_lazy_mode_enabled',
264
- 'get_lazy_mode_stats',
265
- 'configure_lazy_mode',
266
- 'preload_modules',
267
- 'optimize_lazy_mode',
268
-
269
- # Configuration
270
- 'config_package_lazy_install_enabled',
271
- 'sync_manifest_configuration',
272
- 'refresh_lazy_manifests',
273
- 'LazyConfig',
274
- 'DEFAULT_LAZY_CONFIG',
275
-
276
- # Security & Policy
277
- 'set_package_allow_list',
278
- 'set_package_deny_list',
279
- 'add_to_package_allow_list',
280
- 'add_to_package_deny_list',
281
- 'set_package_index_url',
282
- 'set_package_extra_index_urls',
283
- 'add_package_trusted_host',
284
- 'set_package_lockfile',
285
- 'generate_package_sbom',
286
- 'check_externally_managed_environment',
287
-
288
- # Registration helpers
289
- 'register_lazy_module_prefix',
290
- 'register_lazy_module_methods',
291
- 'register_host_package',
292
- 'refresh_host_package',
293
- 'get_conf_module',
294
-
295
- # Logging helpers
296
- 'get_log_categories',
297
- 'is_log_category_enabled',
298
- 'set_log_categories',
299
- 'set_log_category',
300
- ]
301
-