exonware-xwsystem 0.1.0.1__py3-none-any.whl → 0.1.0.3__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 (341) hide show
  1. exonware/__init__.py +2 -1
  2. exonware/conf.py +2 -2
  3. exonware/xwsystem/__init__.py +115 -43
  4. exonware/xwsystem/base.py +30 -0
  5. exonware/xwsystem/caching/__init__.py +39 -13
  6. exonware/xwsystem/caching/base.py +24 -6
  7. exonware/xwsystem/caching/bloom_cache.py +2 -2
  8. exonware/xwsystem/caching/cache_manager.py +2 -1
  9. exonware/xwsystem/caching/conditional.py +2 -2
  10. exonware/xwsystem/caching/contracts.py +85 -139
  11. exonware/xwsystem/caching/decorators.py +6 -19
  12. exonware/xwsystem/caching/defs.py +2 -1
  13. exonware/xwsystem/caching/disk_cache.py +2 -1
  14. exonware/xwsystem/caching/distributed.py +2 -1
  15. exonware/xwsystem/caching/errors.py +2 -1
  16. exonware/xwsystem/caching/events.py +110 -27
  17. exonware/xwsystem/caching/eviction_strategies.py +2 -2
  18. exonware/xwsystem/caching/external_caching_python.py +701 -0
  19. exonware/xwsystem/caching/facade.py +253 -0
  20. exonware/xwsystem/caching/factory.py +300 -0
  21. exonware/xwsystem/caching/fluent.py +14 -12
  22. exonware/xwsystem/caching/integrity.py +21 -6
  23. exonware/xwsystem/caching/lfu_cache.py +2 -1
  24. exonware/xwsystem/caching/lfu_optimized.py +18 -6
  25. exonware/xwsystem/caching/lru_cache.py +7 -4
  26. exonware/xwsystem/caching/memory_bounded.py +2 -2
  27. exonware/xwsystem/caching/metrics_exporter.py +2 -2
  28. exonware/xwsystem/caching/observable_cache.py +2 -2
  29. exonware/xwsystem/caching/pluggable_cache.py +2 -2
  30. exonware/xwsystem/caching/rate_limiter.py +2 -2
  31. exonware/xwsystem/caching/read_through.py +2 -2
  32. exonware/xwsystem/caching/secure_cache.py +81 -28
  33. exonware/xwsystem/caching/serializable.py +9 -7
  34. exonware/xwsystem/caching/stats.py +2 -2
  35. exonware/xwsystem/caching/tagging.py +2 -2
  36. exonware/xwsystem/caching/ttl_cache.py +4 -3
  37. exonware/xwsystem/caching/two_tier_cache.py +6 -3
  38. exonware/xwsystem/caching/utils.py +30 -12
  39. exonware/xwsystem/caching/validation.py +2 -2
  40. exonware/xwsystem/caching/warming.py +6 -3
  41. exonware/xwsystem/caching/write_behind.py +15 -6
  42. exonware/xwsystem/config/__init__.py +11 -17
  43. exonware/xwsystem/config/base.py +5 -5
  44. exonware/xwsystem/config/contracts.py +93 -153
  45. exonware/xwsystem/config/defaults.py +3 -2
  46. exonware/xwsystem/config/defs.py +3 -2
  47. exonware/xwsystem/config/errors.py +2 -5
  48. exonware/xwsystem/config/logging.py +12 -8
  49. exonware/xwsystem/config/logging_setup.py +3 -2
  50. exonware/xwsystem/config/performance.py +1 -46
  51. exonware/xwsystem/config/performance_modes.py +9 -8
  52. exonware/xwsystem/config/version_manager.py +1 -0
  53. exonware/xwsystem/config.py +27 -0
  54. exonware/xwsystem/console/__init__.py +53 -0
  55. exonware/xwsystem/console/base.py +133 -0
  56. exonware/xwsystem/console/cli/__init__.py +61 -0
  57. exonware/xwsystem/{cli → console/cli}/args.py +27 -24
  58. exonware/xwsystem/{cli → console/cli}/base.py +18 -87
  59. exonware/xwsystem/{cli → console/cli}/colors.py +15 -13
  60. exonware/xwsystem/console/cli/console.py +98 -0
  61. exonware/xwsystem/{cli → console/cli}/contracts.py +51 -69
  62. exonware/xwsystem/console/cli/defs.py +87 -0
  63. exonware/xwsystem/console/cli/encoding.py +69 -0
  64. exonware/xwsystem/{cli → console/cli}/errors.py +8 -3
  65. exonware/xwsystem/console/cli/event_logger.py +166 -0
  66. exonware/xwsystem/{cli → console/cli}/progress.py +25 -21
  67. exonware/xwsystem/{cli → console/cli}/prompts.py +3 -2
  68. exonware/xwsystem/{cli → console/cli}/tables.py +27 -24
  69. exonware/xwsystem/console/contracts.py +113 -0
  70. exonware/xwsystem/console/defs.py +154 -0
  71. exonware/xwsystem/console/errors.py +34 -0
  72. exonware/xwsystem/console/event_logger.py +385 -0
  73. exonware/xwsystem/console/writer.py +132 -0
  74. exonware/xwsystem/contracts.py +28 -0
  75. exonware/xwsystem/data_structures/__init__.py +23 -0
  76. exonware/xwsystem/data_structures/trie.py +34 -0
  77. exonware/xwsystem/data_structures/union_find.py +144 -0
  78. exonware/xwsystem/defs.py +17 -0
  79. exonware/xwsystem/errors.py +23 -0
  80. exonware/xwsystem/facade.py +62 -0
  81. exonware/xwsystem/http_client/__init__.py +22 -1
  82. exonware/xwsystem/http_client/advanced_client.py +8 -5
  83. exonware/xwsystem/http_client/base.py +3 -2
  84. exonware/xwsystem/http_client/client.py +7 -4
  85. exonware/xwsystem/http_client/contracts.py +42 -56
  86. exonware/xwsystem/http_client/defs.py +2 -1
  87. exonware/xwsystem/http_client/errors.py +2 -1
  88. exonware/xwsystem/http_client/facade.py +156 -0
  89. exonware/xwsystem/io/__init__.py +22 -3
  90. exonware/xwsystem/io/archive/__init__.py +8 -2
  91. exonware/xwsystem/io/archive/archive.py +1 -1
  92. exonware/xwsystem/io/archive/archive_files.py +4 -7
  93. exonware/xwsystem/io/archive/archivers.py +120 -10
  94. exonware/xwsystem/io/archive/base.py +4 -5
  95. exonware/xwsystem/io/archive/codec_integration.py +1 -2
  96. exonware/xwsystem/io/archive/compression.py +1 -2
  97. exonware/xwsystem/io/archive/facade.py +263 -0
  98. exonware/xwsystem/io/archive/formats/__init__.py +2 -3
  99. exonware/xwsystem/io/archive/formats/brotli_format.py +20 -7
  100. exonware/xwsystem/io/archive/formats/lz4_format.py +20 -7
  101. exonware/xwsystem/io/archive/formats/rar.py +11 -5
  102. exonware/xwsystem/io/archive/formats/sevenzip.py +12 -6
  103. exonware/xwsystem/io/archive/formats/squashfs_format.py +1 -2
  104. exonware/xwsystem/io/archive/formats/tar.py +52 -7
  105. exonware/xwsystem/io/archive/formats/wim_format.py +11 -5
  106. exonware/xwsystem/io/archive/formats/zip.py +1 -2
  107. exonware/xwsystem/io/archive/formats/zpaq_format.py +1 -2
  108. exonware/xwsystem/io/archive/formats/zstandard.py +20 -7
  109. exonware/xwsystem/io/base.py +119 -115
  110. exonware/xwsystem/io/codec/__init__.py +4 -2
  111. exonware/xwsystem/io/codec/base.py +19 -13
  112. exonware/xwsystem/io/codec/contracts.py +59 -2
  113. exonware/xwsystem/io/codec/registry.py +67 -21
  114. exonware/xwsystem/io/common/__init__.py +1 -1
  115. exonware/xwsystem/io/common/atomic.py +29 -16
  116. exonware/xwsystem/io/common/base.py +11 -10
  117. exonware/xwsystem/io/common/lock.py +6 -5
  118. exonware/xwsystem/io/common/path_manager.py +2 -1
  119. exonware/xwsystem/io/common/watcher.py +1 -2
  120. exonware/xwsystem/io/contracts.py +301 -433
  121. exonware/xwsystem/io/contracts_1.py +1180 -0
  122. exonware/xwsystem/io/data_operations.py +19 -20
  123. exonware/xwsystem/io/defs.py +4 -3
  124. exonware/xwsystem/io/errors.py +3 -2
  125. exonware/xwsystem/io/facade.py +87 -61
  126. exonware/xwsystem/io/file/__init__.py +1 -1
  127. exonware/xwsystem/io/file/base.py +8 -9
  128. exonware/xwsystem/io/file/conversion.py +2 -3
  129. exonware/xwsystem/io/file/file.py +61 -18
  130. exonware/xwsystem/io/file/paged_source.py +8 -8
  131. exonware/xwsystem/io/file/paging/__init__.py +1 -2
  132. exonware/xwsystem/io/file/paging/byte_paging.py +4 -5
  133. exonware/xwsystem/io/file/paging/line_paging.py +2 -3
  134. exonware/xwsystem/io/file/paging/record_paging.py +2 -3
  135. exonware/xwsystem/io/file/paging/registry.py +1 -2
  136. exonware/xwsystem/io/file/source.py +13 -17
  137. exonware/xwsystem/io/filesystem/__init__.py +1 -1
  138. exonware/xwsystem/io/filesystem/base.py +1 -2
  139. exonware/xwsystem/io/filesystem/local.py +3 -4
  140. exonware/xwsystem/io/folder/__init__.py +1 -1
  141. exonware/xwsystem/io/folder/base.py +1 -2
  142. exonware/xwsystem/io/folder/folder.py +16 -7
  143. exonware/xwsystem/io/indexing/__init__.py +14 -0
  144. exonware/xwsystem/io/indexing/facade.py +443 -0
  145. exonware/xwsystem/io/path_parser.py +98 -0
  146. exonware/xwsystem/io/serialization/__init__.py +21 -3
  147. exonware/xwsystem/io/serialization/auto_serializer.py +146 -20
  148. exonware/xwsystem/io/serialization/base.py +84 -34
  149. exonware/xwsystem/io/serialization/contracts.py +50 -73
  150. exonware/xwsystem/io/serialization/defs.py +2 -1
  151. exonware/xwsystem/io/serialization/errors.py +2 -1
  152. exonware/xwsystem/io/serialization/flyweight.py +154 -7
  153. exonware/xwsystem/io/serialization/format_detector.py +15 -14
  154. exonware/xwsystem/io/serialization/formats/__init__.py +8 -5
  155. exonware/xwsystem/io/serialization/formats/binary/bson.py +15 -6
  156. exonware/xwsystem/io/serialization/formats/binary/cbor.py +5 -5
  157. exonware/xwsystem/io/serialization/formats/binary/marshal.py +5 -5
  158. exonware/xwsystem/io/serialization/formats/binary/msgpack.py +5 -5
  159. exonware/xwsystem/io/serialization/formats/binary/pickle.py +5 -5
  160. exonware/xwsystem/io/serialization/formats/binary/plistlib.py +5 -5
  161. exonware/xwsystem/io/serialization/formats/database/dbm.py +7 -7
  162. exonware/xwsystem/io/serialization/formats/database/shelve.py +7 -7
  163. exonware/xwsystem/io/serialization/formats/database/sqlite3.py +7 -7
  164. exonware/xwsystem/io/serialization/formats/tabular/__init__.py +27 -0
  165. exonware/xwsystem/io/serialization/formats/tabular/base.py +89 -0
  166. exonware/xwsystem/io/serialization/formats/tabular/csv.py +319 -0
  167. exonware/xwsystem/io/serialization/formats/tabular/df.py +249 -0
  168. exonware/xwsystem/io/serialization/formats/tabular/excel.py +291 -0
  169. exonware/xwsystem/io/serialization/formats/tabular/googlesheets.py +374 -0
  170. exonware/xwsystem/io/serialization/formats/text/__init__.py +1 -1
  171. exonware/xwsystem/io/serialization/formats/text/append_only_log.py +5 -7
  172. exonware/xwsystem/io/serialization/formats/text/configparser.py +5 -5
  173. exonware/xwsystem/io/serialization/formats/text/csv.py +7 -5
  174. exonware/xwsystem/io/serialization/formats/text/formdata.py +5 -5
  175. exonware/xwsystem/io/serialization/formats/text/json.py +27 -18
  176. exonware/xwsystem/io/serialization/formats/text/json5.py +8 -4
  177. exonware/xwsystem/io/serialization/formats/text/jsonlines.py +18 -14
  178. exonware/xwsystem/io/serialization/formats/text/multipart.py +5 -5
  179. exonware/xwsystem/io/serialization/formats/text/toml.py +8 -6
  180. exonware/xwsystem/io/serialization/formats/text/xml.py +25 -20
  181. exonware/xwsystem/io/serialization/formats/text/yaml.py +8 -6
  182. exonware/xwsystem/io/serialization/parsers/__init__.py +3 -2
  183. exonware/xwsystem/io/serialization/parsers/base.py +6 -5
  184. exonware/xwsystem/io/serialization/parsers/hybrid_parser.py +7 -6
  185. exonware/xwsystem/io/serialization/parsers/msgspec_parser.py +10 -7
  186. exonware/xwsystem/io/serialization/parsers/orjson_direct_parser.py +7 -6
  187. exonware/xwsystem/io/serialization/parsers/orjson_parser.py +11 -8
  188. exonware/xwsystem/io/serialization/parsers/pysimdjson_parser.py +13 -9
  189. exonware/xwsystem/io/serialization/parsers/rapidjson_parser.py +10 -7
  190. exonware/xwsystem/io/serialization/parsers/registry.py +11 -10
  191. exonware/xwsystem/io/serialization/parsers/standard.py +7 -6
  192. exonware/xwsystem/io/serialization/parsers/ujson_parser.py +10 -7
  193. exonware/xwsystem/io/serialization/registry.py +4 -4
  194. exonware/xwsystem/io/serialization/serializer.py +168 -79
  195. exonware/xwsystem/io/serialization/universal_options.py +367 -0
  196. exonware/xwsystem/io/serialization/utils/__init__.py +1 -2
  197. exonware/xwsystem/io/serialization/utils/path_ops.py +5 -6
  198. exonware/xwsystem/io/source_reader.py +223 -0
  199. exonware/xwsystem/io/stream/__init__.py +1 -1
  200. exonware/xwsystem/io/stream/async_operations.py +61 -14
  201. exonware/xwsystem/io/stream/base.py +1 -2
  202. exonware/xwsystem/io/stream/codec_io.py +6 -7
  203. exonware/xwsystem/ipc/__init__.py +1 -0
  204. exonware/xwsystem/ipc/async_fabric.py +4 -4
  205. exonware/xwsystem/ipc/base.py +6 -5
  206. exonware/xwsystem/ipc/contracts.py +41 -66
  207. exonware/xwsystem/ipc/defs.py +2 -1
  208. exonware/xwsystem/ipc/errors.py +2 -1
  209. exonware/xwsystem/ipc/message_queue.py +5 -2
  210. exonware/xwsystem/ipc/pipes.py +70 -34
  211. exonware/xwsystem/ipc/process_manager.py +7 -5
  212. exonware/xwsystem/ipc/process_pool.py +6 -5
  213. exonware/xwsystem/ipc/shared_memory.py +64 -11
  214. exonware/xwsystem/monitoring/__init__.py +7 -0
  215. exonware/xwsystem/monitoring/base.py +11 -8
  216. exonware/xwsystem/monitoring/contracts.py +86 -144
  217. exonware/xwsystem/monitoring/defs.py +2 -1
  218. exonware/xwsystem/monitoring/error_recovery.py +16 -3
  219. exonware/xwsystem/monitoring/errors.py +2 -1
  220. exonware/xwsystem/monitoring/facade.py +183 -0
  221. exonware/xwsystem/monitoring/memory_monitor.py +1 -0
  222. exonware/xwsystem/monitoring/metrics.py +1 -0
  223. exonware/xwsystem/monitoring/performance_manager_generic.py +7 -7
  224. exonware/xwsystem/monitoring/performance_monitor.py +1 -0
  225. exonware/xwsystem/monitoring/performance_validator.py +1 -0
  226. exonware/xwsystem/monitoring/system_monitor.py +6 -5
  227. exonware/xwsystem/monitoring/tracing.py +18 -16
  228. exonware/xwsystem/monitoring/tracker.py +2 -1
  229. exonware/xwsystem/operations/__init__.py +5 -50
  230. exonware/xwsystem/operations/base.py +3 -44
  231. exonware/xwsystem/operations/contracts.py +25 -15
  232. exonware/xwsystem/operations/defs.py +1 -1
  233. exonware/xwsystem/operations/diff.py +5 -4
  234. exonware/xwsystem/operations/errors.py +1 -1
  235. exonware/xwsystem/operations/merge.py +6 -4
  236. exonware/xwsystem/operations/patch.py +5 -4
  237. exonware/xwsystem/patterns/__init__.py +1 -0
  238. exonware/xwsystem/patterns/base.py +2 -1
  239. exonware/xwsystem/patterns/context_manager.py +2 -1
  240. exonware/xwsystem/patterns/contracts.py +215 -256
  241. exonware/xwsystem/patterns/defs.py +2 -1
  242. exonware/xwsystem/patterns/dynamic_facade.py +1 -0
  243. exonware/xwsystem/patterns/errors.py +2 -4
  244. exonware/xwsystem/patterns/handler_factory.py +2 -3
  245. exonware/xwsystem/patterns/import_registry.py +1 -0
  246. exonware/xwsystem/patterns/object_pool.py +1 -0
  247. exonware/xwsystem/patterns/registry.py +4 -43
  248. exonware/xwsystem/plugins/__init__.py +2 -1
  249. exonware/xwsystem/plugins/base.py +6 -5
  250. exonware/xwsystem/plugins/contracts.py +94 -158
  251. exonware/xwsystem/plugins/defs.py +2 -1
  252. exonware/xwsystem/plugins/errors.py +2 -1
  253. exonware/xwsystem/py.typed +3 -0
  254. exonware/xwsystem/query/__init__.py +36 -0
  255. exonware/xwsystem/query/contracts.py +56 -0
  256. exonware/xwsystem/query/errors.py +22 -0
  257. exonware/xwsystem/query/registry.py +128 -0
  258. exonware/xwsystem/runtime/__init__.py +2 -1
  259. exonware/xwsystem/runtime/base.py +4 -3
  260. exonware/xwsystem/runtime/contracts.py +39 -60
  261. exonware/xwsystem/runtime/defs.py +2 -1
  262. exonware/xwsystem/runtime/env.py +11 -9
  263. exonware/xwsystem/runtime/errors.py +2 -1
  264. exonware/xwsystem/runtime/reflection.py +3 -2
  265. exonware/xwsystem/security/__init__.py +68 -11
  266. exonware/xwsystem/security/audit.py +167 -0
  267. exonware/xwsystem/security/base.py +121 -24
  268. exonware/xwsystem/security/contracts.py +91 -146
  269. exonware/xwsystem/security/crypto.py +17 -16
  270. exonware/xwsystem/security/defs.py +2 -1
  271. exonware/xwsystem/security/errors.py +2 -1
  272. exonware/xwsystem/security/facade.py +321 -0
  273. exonware/xwsystem/security/file_security.py +330 -0
  274. exonware/xwsystem/security/hazmat.py +11 -8
  275. exonware/xwsystem/security/monitor.py +372 -0
  276. exonware/xwsystem/security/path_validator.py +140 -18
  277. exonware/xwsystem/security/policy.py +357 -0
  278. exonware/xwsystem/security/resource_limits.py +1 -0
  279. exonware/xwsystem/security/validator.py +455 -0
  280. exonware/xwsystem/shared/__init__.py +14 -1
  281. exonware/xwsystem/shared/base.py +285 -2
  282. exonware/xwsystem/shared/contracts.py +415 -126
  283. exonware/xwsystem/shared/defs.py +2 -1
  284. exonware/xwsystem/shared/errors.py +2 -2
  285. exonware/xwsystem/shared/xwobject.py +316 -0
  286. exonware/xwsystem/structures/__init__.py +1 -0
  287. exonware/xwsystem/structures/base.py +3 -2
  288. exonware/xwsystem/structures/circular_detector.py +15 -14
  289. exonware/xwsystem/structures/contracts.py +53 -76
  290. exonware/xwsystem/structures/defs.py +2 -1
  291. exonware/xwsystem/structures/errors.py +2 -1
  292. exonware/xwsystem/structures/tree_walker.py +2 -1
  293. exonware/xwsystem/threading/__init__.py +21 -4
  294. exonware/xwsystem/threading/async_primitives.py +6 -5
  295. exonware/xwsystem/threading/base.py +3 -2
  296. exonware/xwsystem/threading/contracts.py +87 -143
  297. exonware/xwsystem/threading/defs.py +2 -1
  298. exonware/xwsystem/threading/errors.py +2 -1
  299. exonware/xwsystem/threading/facade.py +175 -0
  300. exonware/xwsystem/threading/locks.py +1 -0
  301. exonware/xwsystem/threading/safe_factory.py +1 -0
  302. exonware/xwsystem/utils/__init__.py +40 -0
  303. exonware/xwsystem/utils/base.py +22 -21
  304. exonware/xwsystem/utils/contracts.py +50 -73
  305. exonware/xwsystem/utils/dt/__init__.py +19 -3
  306. exonware/xwsystem/utils/dt/base.py +5 -4
  307. exonware/xwsystem/utils/dt/contracts.py +22 -29
  308. exonware/xwsystem/utils/dt/defs.py +2 -1
  309. exonware/xwsystem/utils/dt/errors.py +2 -5
  310. exonware/xwsystem/utils/dt/formatting.py +88 -2
  311. exonware/xwsystem/utils/dt/humanize.py +10 -9
  312. exonware/xwsystem/utils/dt/parsing.py +56 -5
  313. exonware/xwsystem/utils/dt/timezone_utils.py +2 -24
  314. exonware/xwsystem/utils/errors.py +2 -4
  315. exonware/xwsystem/utils/paths.py +1 -0
  316. exonware/xwsystem/utils/string.py +49 -0
  317. exonware/xwsystem/utils/test_runner.py +185 -0
  318. exonware/xwsystem/utils/utils_contracts.py +2 -1
  319. exonware/xwsystem/utils/web.py +110 -0
  320. exonware/xwsystem/validation/__init__.py +25 -1
  321. exonware/xwsystem/validation/base.py +6 -5
  322. exonware/xwsystem/validation/contracts.py +29 -41
  323. exonware/xwsystem/validation/data_validator.py +1 -0
  324. exonware/xwsystem/validation/declarative.py +11 -8
  325. exonware/xwsystem/validation/defs.py +2 -1
  326. exonware/xwsystem/validation/errors.py +2 -1
  327. exonware/xwsystem/validation/facade.py +198 -0
  328. exonware/xwsystem/validation/fluent_validator.py +22 -19
  329. exonware/xwsystem/validation/schema_discovery.py +210 -0
  330. exonware/xwsystem/validation/type_safety.py +2 -1
  331. exonware/xwsystem/version.py +2 -2
  332. {exonware_xwsystem-0.1.0.1.dist-info → exonware_xwsystem-0.1.0.3.dist-info}/METADATA +71 -4
  333. exonware_xwsystem-0.1.0.3.dist-info/RECORD +337 -0
  334. exonware/xwsystem/cli/__init__.py +0 -43
  335. exonware/xwsystem/cli/console.py +0 -113
  336. exonware/xwsystem/cli/defs.py +0 -134
  337. exonware/xwsystem/conf.py +0 -44
  338. exonware/xwsystem/security/auth.py +0 -484
  339. exonware_xwsystem-0.1.0.1.dist-info/RECORD +0 -284
  340. {exonware_xwsystem-0.1.0.1.dist-info → exonware_xwsystem-0.1.0.3.dist-info}/WHEEL +0 -0
  341. {exonware_xwsystem-0.1.0.1.dist-info → exonware_xwsystem-0.1.0.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env python3
2
+ #exonware/xwsystem/src/exonware/xwsystem/monitoring/defs.py
2
3
  #exonware/xwsystem/monitoring/types.py
3
4
  """
4
5
  Company: eXonware.com
5
6
  Author: Eng. Muhammad AlShehri
6
7
  Email: connect@exonware.com
7
- Version: 0.1.0.1
8
+ Version: 0.1.0.3
8
9
  Generation Date: 07-Sep-2025
9
10
 
10
11
  Monitoring types and enums for XWSystem.
@@ -1,3 +1,4 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/monitoring/error_recovery.py
1
2
  """
2
3
  Error Recovery and Resilience Mechanisms for XWSystem Library.
3
4
 
@@ -10,7 +11,7 @@ import functools
10
11
  import threading
11
12
  import time
12
13
  from dataclasses import dataclass, field
13
- from typing import Any, Callable, Optional, Union
14
+ from typing import Any, Callable, Optional
14
15
 
15
16
  from .defs import CircuitState
16
17
 
@@ -241,6 +242,18 @@ class ErrorRecoveryManager:
241
242
 
242
243
  return None
243
244
 
245
+ def register_degradation_strategy(self, error_type: str, strategy: Callable) -> None:
246
+ """
247
+ Register a degradation strategy for a specific error type.
248
+
249
+ Args:
250
+ error_type: Error type identifier (e.g., "security_errors", "memory")
251
+ strategy: Callable that handles the error (error, context) -> Any
252
+ """
253
+ with self._lock:
254
+ self.degradation_strategies[error_type] = strategy
255
+ logger.info(f"📋 Registered degradation strategy for: {error_type}")
256
+
244
257
  def add_circuit_breaker(self, name: str, config: CircuitBreakerConfig) -> None:
245
258
  """Add a circuit breaker."""
246
259
  with self._lock:
@@ -307,7 +320,7 @@ class ErrorRecoveryManager:
307
320
  # Calculate next delay
308
321
  delay = min(delay * backoff_factor, max_delay)
309
322
 
310
- # This should never be reached
323
+ # Unreachable code path
311
324
  raise last_exception
312
325
 
313
326
  async def async_retry_with_backoff(
@@ -344,7 +357,7 @@ class ErrorRecoveryManager:
344
357
  await asyncio.sleep(delay)
345
358
  delay = min(delay * backoff_factor, max_delay)
346
359
 
347
- # This should never be reached
360
+ # Unreachable code path
348
361
  raise last_exception
349
362
 
350
363
  def graceful_degradation(
@@ -1,9 +1,10 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/monitoring/errors.py
1
2
  #exonware/xwsystem/monitoring/errors.py
2
3
  """
3
4
  Company: eXonware.com
4
5
  Author: Eng. Muhammad AlShehri
5
6
  Email: connect@exonware.com
6
- Version: 0.1.0.1
7
+ Version: 0.1.0.3
7
8
  Generation Date: September 04, 2025
8
9
 
9
10
  Monitoring module errors - exception classes for monitoring functionality.
@@ -0,0 +1,183 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/monitoring/facade.py
2
+ """
3
+ Company: eXonware.com
4
+ Author: Eng. Muhammad AlShehri
5
+ Email: connect@exonware.com
6
+ Version: 0.1.0.3
7
+ Generation Date: January 2026
8
+
9
+ XWMonitor - Unified Monitoring Facade
10
+
11
+ Simplified API for monitoring operations:
12
+ - Performance monitoring
13
+ - Memory monitoring
14
+ - Circuit breakers
15
+ - System monitoring
16
+ """
17
+
18
+ from typing import Any, Optional, Callable
19
+ from contextlib import contextmanager
20
+ from functools import wraps
21
+
22
+ from .performance_monitor import (
23
+ PerformanceMonitor,
24
+ performance_context,
25
+ create_performance_monitor,
26
+ )
27
+ from .memory_monitor import (
28
+ MemoryMonitor,
29
+ start_memory_monitoring,
30
+ stop_memory_monitoring,
31
+ get_memory_stats,
32
+ get_memory_monitor,
33
+ )
34
+ from .error_recovery import (
35
+ CircuitBreaker,
36
+ CircuitBreakerConfig,
37
+ circuit_breaker,
38
+ retry_with_backoff,
39
+ )
40
+ from .system_monitor import (
41
+ SystemMonitor,
42
+ get_cpu_usage,
43
+ get_memory_usage,
44
+ get_system_info,
45
+ )
46
+ from ..config.logging_setup import get_logger
47
+
48
+ logger = get_logger(__name__)
49
+
50
+
51
+ class XWMonitor:
52
+ """
53
+ Unified monitoring facade - simple API for monitoring operations.
54
+
55
+ Examples:
56
+ >>> # Performance monitoring
57
+ >>> with XWMonitor.performance("operation"):
58
+ ... result = expensive_operation()
59
+
60
+ >>> # Memory monitoring
61
+ >>> monitor = XWMonitor.memory(auto_cleanup=True)
62
+ >>> monitor.start()
63
+
64
+ >>> # Circuit breaker
65
+ >>> @XWMonitor.circuit_breaker(failures=5, timeout=60)
66
+ >>> def external_api_call():
67
+ ... return requests.get("https://api.example.com")
68
+
69
+ >>> # System monitoring
70
+ >>> cpu = XWMonitor.cpu_usage()
71
+ >>> memory = XWMonitor.memory_usage()
72
+ >>> disk = XWMonitor.disk_usage()
73
+ """
74
+
75
+ @staticmethod
76
+ @contextmanager
77
+ def performance(operation_name: str):
78
+ """
79
+ Context manager for performance monitoring.
80
+
81
+ Args:
82
+ operation_name: Name of the operation being monitored
83
+ """
84
+ monitor = create_performance_monitor()
85
+ with performance_context(monitor, operation_name):
86
+ yield
87
+
88
+ @staticmethod
89
+ def memory(auto_cleanup: bool = False) -> MemoryMonitor:
90
+ """
91
+ Create memory monitor instance.
92
+
93
+ Args:
94
+ auto_cleanup: Enable automatic memory cleanup
95
+
96
+ Returns:
97
+ MemoryMonitor instance
98
+ """
99
+ monitor = get_memory_monitor()
100
+ if auto_cleanup:
101
+ monitor.enable_auto_cleanup()
102
+ return monitor
103
+
104
+ @staticmethod
105
+ def start_memory_monitoring(auto_cleanup: bool = False) -> None:
106
+ """Start memory monitoring."""
107
+ start_memory_monitoring(auto_cleanup=auto_cleanup)
108
+
109
+ @staticmethod
110
+ def stop_memory_monitoring() -> None:
111
+ """Stop memory monitoring."""
112
+ stop_memory_monitoring()
113
+
114
+ @staticmethod
115
+ def get_memory_stats() -> dict:
116
+ """Get current memory statistics."""
117
+ return get_memory_stats()
118
+
119
+ @staticmethod
120
+ def circuit_breaker(
121
+ failures: int = 5,
122
+ timeout: int = 60,
123
+ **kwargs
124
+ ):
125
+ """
126
+ Decorator for circuit breaker pattern.
127
+
128
+ Args:
129
+ failures: Number of failures before opening circuit
130
+ timeout: Timeout in seconds before attempting recovery
131
+ **kwargs: Additional circuit breaker options
132
+
133
+ Returns:
134
+ Decorator function
135
+ """
136
+ config = CircuitBreakerConfig(
137
+ failure_threshold=failures,
138
+ recovery_timeout=timeout,
139
+ **kwargs
140
+ )
141
+ return circuit_breaker(config=config)
142
+
143
+ @staticmethod
144
+ def retry(max_attempts: int = 3, backoff: float = 1.0, **kwargs):
145
+ """
146
+ Decorator for retry logic.
147
+
148
+ Args:
149
+ max_attempts: Maximum retry attempts
150
+ backoff: Backoff multiplier
151
+ **kwargs: Additional retry options
152
+
153
+ Returns:
154
+ Decorator function
155
+ """
156
+ return retry_with_backoff(max_attempts=max_attempts, backoff=backoff, **kwargs)
157
+
158
+ @staticmethod
159
+ def cpu_usage() -> float:
160
+ """Get current CPU usage percentage."""
161
+ return get_cpu_usage()
162
+
163
+ @staticmethod
164
+ def memory_usage() -> dict:
165
+ """Get current memory usage statistics."""
166
+ return get_memory_usage()
167
+
168
+ @staticmethod
169
+ def disk_usage(path: str = "/") -> dict:
170
+ """Get disk usage statistics."""
171
+ import shutil
172
+ usage = shutil.disk_usage(path)
173
+ return {
174
+ "total": usage.total,
175
+ "used": usage.used,
176
+ "free": usage.free,
177
+ "percent": (usage.used / usage.total) * 100
178
+ }
179
+
180
+ @staticmethod
181
+ def system_info() -> dict:
182
+ """Get system information."""
183
+ return get_system_info()
@@ -1,3 +1,4 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/monitoring/memory_monitor.py
1
2
  """
2
3
  Memory Monitoring and Leak Detection for XSystem Library.
3
4
 
@@ -1,3 +1,4 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/monitoring/metrics.py
1
2
  """
2
3
  Generic performance metrics and monitoring system.
3
4
 
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env python3
2
+ #exonware/xwsystem/src/exonware/xwsystem/monitoring/performance_manager_generic.py
2
3
  #exonware/xwsystem/monitoring/performance_manager_generic.py
3
4
  """
4
5
  Generic Performance Management for XSystem (Moved from performance/ module)
@@ -10,7 +11,7 @@ health monitoring, and recommendations without being tied to specific implementa
10
11
  Company: eXonware.com
11
12
  Author: Eng. Muhammad AlShehri
12
13
  Email: connect@exonware.com
13
- Version: 0.1.0.1
14
+ Version: 0.1.0.3
14
15
  Generation Date: November 04, 2025
15
16
  """
16
17
 
@@ -18,7 +19,7 @@ import threading
18
19
  import time
19
20
  from dataclasses import dataclass, field
20
21
  from enum import Enum
21
- from typing import Any, Optional, Union
22
+ from typing import Any, Optional
22
23
 
23
24
  from ..config.performance_modes import PerformanceMode
24
25
  from ..config.logging_setup import get_logger
@@ -106,19 +107,19 @@ class GenericPerformanceManager:
106
107
  """Get the current performance mode (local or global)."""
107
108
  if hasattr(self, "_local_mode") and self._local_mode is not None:
108
109
  return self._local_mode
109
- # This should be overridden by subclasses to get global mode
110
+ # Override in subclasses to get global mode
110
111
  return PerformanceMode.FAST # Default fallback
111
112
 
112
113
  def get_effective_config(self) -> Optional[Any]:
113
114
  """Get effective config (local or global)."""
114
115
  if hasattr(self, "_local_config") and self._local_config is not None:
115
116
  return self._local_config
116
- # This should be overridden by subclasses to get global config
117
+ # Override in subclasses to get global config
117
118
  return None
118
119
 
119
120
  def _create_local_config(self, mode: PerformanceMode) -> Any:
120
121
  """Create local configuration for the given mode."""
121
- # This should be overridden by subclasses
122
+ # Override in subclasses
122
123
  return {"performance_mode": mode}
123
124
 
124
125
  def get_mode_history(self) -> list[dict[str, Any]]:
@@ -262,7 +263,7 @@ class GenericPerformanceManager:
262
263
  ]:
263
264
  self.set_performance_mode(PerformanceMode.ADAPTIVE)
264
265
  elif memory_percent < 30 and cache_hit_rate > 0.8:
265
- # Good conditions - can use fast mode
266
+ # Conditions allow fast mode
266
267
  if current_mode != PerformanceMode.FAST:
267
268
  self.set_performance_mode(PerformanceMode.FAST)
268
269
 
@@ -466,4 +467,3 @@ class GenericPerformanceManager:
466
467
  def _apply_manual_overrides(self, config_overrides: dict[str, Any]) -> None:
467
468
  """Apply manual configuration overrides. Override in subclasses."""
468
469
  pass
469
-
@@ -1,3 +1,4 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/monitoring/performance_monitor.py
1
2
  """
2
3
  Performance Monitoring Utilities for XSystem
3
4
 
@@ -1,3 +1,4 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/monitoring/performance_validator.py
1
2
  """
2
3
  Performance Validation and Monitoring for XSystem Library.
3
4
 
@@ -1,8 +1,9 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/monitoring/system_monitor.py
1
2
  """
2
3
  Company: eXonware.com
3
4
  Author: Eng. Muhammad AlShehri
4
5
  Email: connect@exonware.com
5
- Version: 0.1.0.1
6
+ Version: 0.1.0.3
6
7
  Generation Date: September 04, 2025
7
8
 
8
9
  System-wide monitoring and hardware introspection utilities.
@@ -12,7 +13,7 @@ import os
12
13
  import platform
13
14
  import time
14
15
  from dataclasses import dataclass
15
- from typing import Optional, Any, Union
16
+ from typing import Optional, Any
16
17
  from pathlib import Path
17
18
 
18
19
  # Import psutil - lazy installation system will handle it if missing
@@ -142,7 +143,7 @@ class SystemMonitor:
142
143
 
143
144
  def is_available(self) -> bool:
144
145
  """Check if full system monitoring is available."""
145
- # Lazy installation system ensures psutil is always available
146
+ # Lazy installation system provides psutil when available
146
147
  return True
147
148
 
148
149
  # =============================================================================
@@ -357,7 +358,7 @@ class SystemMonitor:
357
358
 
358
359
  return SystemInfo(**system_info)
359
360
 
360
- def get_cpu_usage(self, interval: float = 1.0, per_cpu: bool = False) -> Union[float, list[float]]:
361
+ def get_cpu_usage(self, interval: float = 1.0, per_cpu: bool = False) -> float | list[float]:
361
362
  """
362
363
  Get CPU usage percentage.
363
364
 
@@ -696,5 +697,5 @@ def get_hardware_info() -> dict[str, Any]:
696
697
 
697
698
  def is_monitoring_available() -> bool:
698
699
  """Check if full system monitoring is available."""
699
- # Lazy installation system ensures psutil is always available
700
+ # Lazy installation system provides psutil when available
700
701
  return True
@@ -1,8 +1,9 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/monitoring/tracing.py
1
2
  """
2
3
  Company: eXonware.com
3
4
  Author: Eng. Muhammad AlShehri
4
5
  Email: connect@exonware.com
5
- Version: 0.1.0.1
6
+ Version: 0.1.0.3
6
7
  Generation Date: September 05, 2025
7
8
 
8
9
  Distributed Tracing Integration for Enterprise Observability
@@ -19,7 +20,7 @@ import time
19
20
  import uuid
20
21
  from contextlib import asynccontextmanager, contextmanager
21
22
  from dataclasses import dataclass, field
22
- from typing import Any, AsyncContextManager, ContextManager, Optional, Union
23
+ from typing import Any, AsyncContextManager, ContextManager, Optional
23
24
  from .base import ATracingProvider
24
25
  from .errors import TracingError
25
26
  from .defs import SpanKind
@@ -92,25 +93,27 @@ class OpenTelemetryTracer(ATracingProvider):
92
93
 
93
94
  def _setup_otlp_exporter(self, endpoint: str) -> None:
94
95
  """Set up OTLP exporter (modern standard, Python 3.8+ only, no legacy deps)."""
96
+ # Optional dependency: opentelemetry-exporter-otlp-proto-http
95
97
  try:
96
- # Lazy import to avoid pulling in dependencies unless actually used
97
- from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
98
-
99
- otlp_exporter = OTLPSpanExporter(endpoint=endpoint)
100
- span_processor = BatchSpanProcessor(otlp_exporter)
101
- trace.get_tracer_provider().add_span_processor(span_processor)
102
- logger.info(f"OTLP exporter configured for endpoint: {endpoint}")
103
-
104
- except ImportError:
105
- logger.warning(
106
- "OTLP exporter not available. Install with: pip install opentelemetry-exporter-otlp-proto-http"
107
- )
98
+ import importlib.util
99
+ _otlp_exporter_spec = importlib.util.find_spec('opentelemetry.exporter.otlp.proto.http.trace_exporter')
100
+ if _otlp_exporter_spec is not None:
101
+ from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
102
+
103
+ otlp_exporter = OTLPSpanExporter(endpoint=endpoint)
104
+ span_processor = BatchSpanProcessor(otlp_exporter)
105
+ trace.get_tracer_provider().add_span_processor(span_processor)
106
+ logger.info(f"OTLP exporter configured for endpoint: {endpoint}")
107
+ else:
108
+ logger.warning(
109
+ "OTLP exporter not available. Install with: pip install opentelemetry-exporter-otlp-proto-http"
110
+ )
108
111
  except Exception as e:
109
112
  logger.warning(f"Failed to setup OTLP exporter: {e}")
110
113
 
111
114
  def _setup_zipkin_exporter(self, endpoint: str) -> None:
112
115
  """Set up Zipkin exporter."""
113
- # Import is explicit - if missing, user should install: pip install exonware-xwsystem[observability]
116
+ # Import is explicit - if missing, install: pip install exonware-xwsystem[observability]
114
117
  from opentelemetry.exporter.zipkin.json import ZipkinExporter
115
118
 
116
119
  try:
@@ -424,4 +427,3 @@ class DistributedTracing:
424
427
  def is_tracing_enabled(self) -> bool:
425
428
  """Check if tracing is enabled."""
426
429
  return self.manager.is_tracing_enabled()
427
-
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env python3
2
+ #exonware/xwsystem/src/exonware/xwsystem/monitoring/tracker.py
2
3
  """
3
4
  Company: eXonware.com
4
5
  Author: Eng. Muhammad AlShehri
5
6
  Email: connect@exonware.com
6
- Version: 0.1.0.1
7
+ Version: 0.1.0.3
7
8
  Generation Date: October 26, 2025
8
9
 
9
10
  Operation tracker for monitoring operations with context management.
@@ -1,70 +1,25 @@
1
1
  #!/usr/bin/env python3
2
+ #exonware/xwsystem/src/exonware/xwsystem/operations/__init__.py
2
3
  """
3
4
  Company: eXonware.com
4
5
  Author: Eng. Muhammad AlShehri
5
6
  Email: connect@exonware.com
6
- Version: 0.1.0.1
7
+ Version: 0.1.0.3
7
8
  Generation Date: October 26, 2025
8
9
 
9
10
  Universal operations library for data manipulation.
10
11
  """
11
12
 
12
- from typing import Any, Optional, Union
13
- from enum import Enum
14
- from dataclasses import dataclass
15
13
  from ..config.logging_setup import get_logger
16
14
 
17
15
  logger = get_logger("xwsystem.operations")
18
16
 
19
-
20
- class MergeStrategy(Enum):
21
- """Merge strategies for data operations."""
22
- DEEP = "deep" # Recursive merge (default)
23
- SHALLOW = "shallow" # Top-level only
24
- OVERWRITE = "overwrite" # Replace entirely
25
- APPEND = "append" # Append lists instead of replacing
26
- UNIQUE = "unique" # Merge lists with uniqueness
27
-
28
-
29
- class DiffMode(Enum):
30
- """Diff operation modes."""
31
- STRUCTURAL = "structural" # Compare structure only
32
- CONTENT = "content" # Compare content only
33
- FULL = "full" # Compare both structure and content
34
-
35
-
36
- class PatchOperation(Enum):
37
- """JSON Patch operation types."""
38
- ADD = "add"
39
- REMOVE = "remove"
40
- REPLACE = "replace"
41
- MOVE = "move"
42
- COPY = "copy"
43
- TEST = "test"
44
-
45
-
46
- @dataclass
47
- class DiffResult:
48
- """Result of a diff operation."""
49
- operations: list[dict[str, Any]]
50
- mode: DiffMode
51
- paths_changed: list[str]
52
- total_changes: int
53
-
54
-
55
- @dataclass
56
- class PatchResult:
57
- """Result of a patch operation."""
58
- success: bool
59
- operations_applied: int
60
- errors: list[str]
61
- result: Any
62
-
63
-
64
17
  # Import from submodules
65
18
  from .defs import MergeStrategy, DiffMode, PatchOperation, DiffResult, PatchResult
66
19
  from .base import (
67
- OperationError, MergeError, DiffError, PatchError,
20
+ OperationError, MergeError, DiffError, PatchError
21
+ )
22
+ from .contracts import (
68
23
  IOperation, IMergeOperation, IDiffOperation, IPatchOperation
69
24
  )
70
25
  from .merge import MergeOperation, deep_merge
@@ -1,17 +1,16 @@
1
1
  #!/usr/bin/env python3
2
+ #exonware/xwsystem/src/exonware/xwsystem/operations/base.py
2
3
  """
3
4
  Company: eXonware.com
4
5
  Author: Eng. Muhammad AlShehri
5
6
  Email: connect@exonware.com
6
- Version: 0.1.0.1
7
+ Version: 0.1.0.3
7
8
  Generation Date: October 26, 2025
8
9
 
9
10
  Base classes and contracts for operations.
10
11
  """
11
12
 
12
- from abc import ABC, abstractmethod
13
- from typing import Any, Optional, Union
14
- from .defs import MergeStrategy, DiffMode, PatchOperation, DiffResult, PatchResult
13
+ from typing import Optional
15
14
 
16
15
 
17
16
  class OperationError(Exception):
@@ -37,49 +36,9 @@ class PatchError(OperationError):
37
36
  pass
38
37
 
39
38
 
40
- class IOperation(ABC):
41
- """Interface for operations."""
42
-
43
- @abstractmethod
44
- def execute(self, *args, **kwargs) -> Any:
45
- """Execute the operation."""
46
- pass
47
-
48
-
49
- class IMergeOperation(IOperation):
50
- """Interface for merge operations."""
51
-
52
- @abstractmethod
53
- def merge(self, target: Any, source: Any, strategy: MergeStrategy = MergeStrategy.DEEP) -> Any:
54
- """Merge source into target."""
55
- pass
56
-
57
-
58
- class IDiffOperation(IOperation):
59
- """Interface for diff operations."""
60
-
61
- @abstractmethod
62
- def diff(self, original: Any, modified: Any, mode: DiffMode = DiffMode.FULL) -> DiffResult:
63
- """Generate diff between original and modified."""
64
- pass
65
-
66
-
67
- class IPatchOperation(IOperation):
68
- """Interface for patch operations."""
69
-
70
- @abstractmethod
71
- def apply_patch(self, data: Any, operations: list[dict[str, Any]]) -> PatchResult:
72
- """Apply patch operations to data."""
73
- pass
74
-
75
-
76
39
  __all__ = [
77
40
  "OperationError",
78
41
  "MergeError",
79
42
  "DiffError",
80
43
  "PatchError",
81
- "IOperation",
82
- "IMergeOperation",
83
- "IDiffOperation",
84
- "IPatchOperation",
85
44
  ]