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/plugins/defs.py
2
3
  #exonware/xwsystem/plugins/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
  Plugins types and enums for XWSystem.
@@ -1,9 +1,10 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/plugins/errors.py
1
2
  #exonware/xwsystem/plugins/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
  Plugin-specific error classes for XSystem plugin system.
@@ -0,0 +1,3 @@
1
+ #
2
+ # Marker file for PEP 561 to indicate that exonware.xwsystem is a typed package.
3
+ #
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ #exonware/xwsystem/src/exonware/xwsystem/query/__init__.py
4
+
5
+ Query foundation layer for eXonware ecosystem.
6
+
7
+ This package defines query contracts and a small registry that higher-level
8
+ libraries (e.g., xwquery) can register into, while lower-level libraries
9
+ (e.g., xwnode) can depend on without creating circular dependencies.
10
+
11
+ Company: eXonware.com
12
+ Author: Eng. Muhammad AlShehri
13
+ Email: connect@exonware.com
14
+ Version: 0.1.0.3
15
+ Generation Date: 28-Dec-2025
16
+ """
17
+
18
+ from .contracts import IQueryProvider, QueryResult
19
+ from .errors import QueryProviderError, QueryProviderNotRegisteredError
20
+ from .registry import (
21
+ get_query_provider,
22
+ get_query_provider_registry,
23
+ register_query_provider,
24
+ reset_query_provider_registry,
25
+ )
26
+
27
+ __all__ = [
28
+ "IQueryProvider",
29
+ "QueryResult",
30
+ "QueryProviderError",
31
+ "QueryProviderNotRegisteredError",
32
+ "get_query_provider",
33
+ "get_query_provider_registry",
34
+ "register_query_provider",
35
+ "reset_query_provider_registry",
36
+ ]
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ #exonware/xwsystem/src/exonware/xwsystem/query/contracts.py
4
+
5
+ Query contracts (foundation layer).
6
+
7
+ These interfaces live in xwsystem to avoid circular dependencies between:
8
+ - xwnode (data structures / node facade)
9
+ - xwquery (query engine)
10
+ - xwdata (data facade built on xwnode + xwquery)
11
+
12
+ Company: eXonware.com
13
+ Author: Eng. Muhammad AlShehri
14
+ Email: connect@exonware.com
15
+ Version: 0.1.0.3
16
+ Generation Date: 28-Dec-2025
17
+ """
18
+
19
+ from __future__ import annotations
20
+
21
+ from typing import Any, Protocol, runtime_checkable, TypeAlias
22
+
23
+ QueryResult: TypeAlias = Any
24
+
25
+
26
+ @runtime_checkable
27
+ class IQueryProvider(Protocol):
28
+ """
29
+ Interface for query execution providers.
30
+
31
+ Implementations live in higher-level packages (e.g., xwquery) and register
32
+ themselves via `exonware.xwsystem.query.registry`.
33
+ """
34
+
35
+ provider_id: str
36
+
37
+ def execute(
38
+ self,
39
+ query: str,
40
+ data: Any,
41
+ *,
42
+ format: str | None = None,
43
+ auto_detect: bool = True,
44
+ **opts: Any,
45
+ ) -> QueryResult:
46
+ """
47
+ Execute a query against data.
48
+
49
+ Args:
50
+ query: Query string (SQL, GraphQL, xwquery script, etc.)
51
+ data: Target data (XWNode, dict, list, etc.)
52
+ format: Optional explicit format identifier
53
+ auto_detect: Whether provider should auto-detect when format is None
54
+ **opts: Provider-specific options
55
+ """
56
+ ...
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ #exonware/xwsystem/src/exonware/xwsystem/query/errors.py
4
+
5
+ Query provider errors (foundation layer).
6
+
7
+ Company: eXonware.com
8
+ Author: Eng. Muhammad AlShehri
9
+ Email: connect@exonware.com
10
+ Version: 0.1.0.3
11
+ Generation Date: 28-Dec-2025
12
+ """
13
+
14
+
15
+ class QueryProviderError(Exception):
16
+ """Base error for query provider integration."""
17
+
18
+
19
+ class QueryProviderNotRegisteredError(QueryProviderError):
20
+ """
21
+ Raised when a consumer requests a query provider but none is registered.
22
+ """
@@ -0,0 +1,128 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ #exonware/xwsystem/src/exonware/xwsystem/query/registry.py
4
+
5
+ Global query provider registry (foundation layer).
6
+
7
+ Company: eXonware.com
8
+ Author: Eng. Muhammad AlShehri
9
+ Email: connect@exonware.com
10
+ Version: 0.1.0.3
11
+ Generation Date: 28-Dec-2025
12
+ """
13
+
14
+ from __future__ import annotations
15
+
16
+ from threading import RLock
17
+ from typing import Optional
18
+
19
+ from .contracts import IQueryProvider
20
+ from .errors import QueryProviderNotRegisteredError
21
+
22
+
23
+ class QueryProviderRegistry:
24
+ """
25
+ Thread-safe registry for query providers.
26
+
27
+ Design notes:
28
+ - Multiple providers may be registered (future-proofing).
29
+ - A default provider may be selected; consumers typically use the default.
30
+ """
31
+
32
+ def __init__(self) -> None:
33
+ self._lock = RLock()
34
+ self._providers: dict[str, IQueryProvider] = {}
35
+ self._default_provider_id: Optional[str] = None
36
+
37
+ def register(self, provider: IQueryProvider, *, overwrite: bool = False, make_default: bool = True) -> None:
38
+ provider_id = provider.provider_id.strip().lower()
39
+ if not provider_id:
40
+ raise ValueError("provider.provider_id must be a non-empty string")
41
+
42
+ with self._lock:
43
+ if provider_id in self._providers and not overwrite:
44
+ return
45
+ self._providers[provider_id] = provider
46
+ if make_default or self._default_provider_id is None:
47
+ self._default_provider_id = provider_id
48
+
49
+ def unregister(self, provider_id: str) -> bool:
50
+ pid = provider_id.strip().lower()
51
+ with self._lock:
52
+ if pid not in self._providers:
53
+ return False
54
+ del self._providers[pid]
55
+ if self._default_provider_id == pid:
56
+ self._default_provider_id = next(iter(self._providers.keys()), None)
57
+ return True
58
+
59
+ def get(self, provider_id: str) -> Optional[IQueryProvider]:
60
+ pid = provider_id.strip().lower()
61
+ with self._lock:
62
+ return self._providers.get(pid)
63
+
64
+ def get_default(self) -> Optional[IQueryProvider]:
65
+ with self._lock:
66
+ if not self._default_provider_id:
67
+ return None
68
+ return self._providers.get(self._default_provider_id)
69
+
70
+ def require_default(self) -> IQueryProvider:
71
+ provider = self.get_default()
72
+ if provider is None:
73
+ raise QueryProviderNotRegisteredError(
74
+ "No query provider registered. "
75
+ "Install and import exonware-xwquery to register a provider."
76
+ )
77
+ return provider
78
+
79
+ def list_provider_ids(self) -> list[str]:
80
+ with self._lock:
81
+ return list(self._providers.keys())
82
+
83
+ def clear(self) -> None:
84
+ with self._lock:
85
+ self._providers.clear()
86
+ self._default_provider_id = None
87
+
88
+
89
+ _global_registry: Optional[QueryProviderRegistry] = None
90
+ _global_lock = RLock()
91
+
92
+
93
+ def get_query_provider_registry() -> QueryProviderRegistry:
94
+ """
95
+ Get the global query provider registry (thread-safe singleton).
96
+ """
97
+ global _global_registry
98
+ if _global_registry is None:
99
+ with _global_lock:
100
+ if _global_registry is None:
101
+ _global_registry = QueryProviderRegistry()
102
+ return _global_registry
103
+
104
+
105
+ def reset_query_provider_registry() -> None:
106
+ """
107
+ Reset the global registry (primarily for testing).
108
+ """
109
+ global _global_registry
110
+ with _global_lock:
111
+ _global_registry = None
112
+
113
+
114
+ def register_query_provider(provider: IQueryProvider, *, overwrite: bool = False, make_default: bool = True) -> None:
115
+ """
116
+ Register a query provider in the global registry.
117
+ """
118
+ get_query_provider_registry().register(provider, overwrite=overwrite, make_default=make_default)
119
+
120
+
121
+ def get_query_provider(provider_id: str | None = None) -> Optional[IQueryProvider]:
122
+ """
123
+ Get a provider by id, or the default provider if provider_id is None.
124
+ """
125
+ registry = get_query_provider_registry()
126
+ if provider_id is None:
127
+ return registry.get_default()
128
+ return registry.get(provider_id)
@@ -1,8 +1,9 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/runtime/__init__.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
  XSystem Runtime Package
@@ -1,16 +1,17 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/runtime/base.py
1
2
  #exonware/xwsystem/runtime/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: September 04, 2025
8
9
 
9
10
  Runtime module base classes - abstract classes for runtime functionality.
10
11
  """
11
12
 
12
13
  from abc import ABC, abstractmethod
13
- from typing import Any, Optional, Union, Callable
14
+ from typing import Any, Optional, Callable
14
15
  from .contracts import RuntimeMode, PlatformType, PythonVersion, EnvironmentType
15
16
 
16
17
 
@@ -370,7 +371,7 @@ class ARuntimeManagerBase(ABC):
370
371
 
371
372
 
372
373
  class BaseRuntime(ARuntimeBase):
373
- """Base runtime implementation for backward compatibility."""
374
+ """Base runtime implementation."""
374
375
 
375
376
  def __init__(self, mode: RuntimeMode = RuntimeMode.NORMAL):
376
377
  """Initialize base runtime."""
@@ -1,15 +1,15 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/runtime/contracts.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
  Runtime module contracts - interfaces and enums for runtime environment functionality.
9
10
  """
10
11
 
11
- from abc import ABC, abstractmethod
12
- from typing import Any, Optional, Union, Callable
12
+ from typing import Any, Optional, Callable, Protocol, runtime_checkable
13
13
  import sys
14
14
 
15
15
  # Import enums from types module
@@ -21,151 +21,130 @@ from .defs import (
21
21
  )
22
22
 
23
23
 
24
- class IEnvironmentManager(ABC):
24
+ @runtime_checkable
25
+ class IEnvironmentManager(Protocol):
25
26
  """Interface for environment management."""
26
27
 
27
- @abstractmethod
28
28
  def get_environment_type(self) -> EnvironmentType:
29
29
  """Get current environment type."""
30
- pass
30
+ ...
31
31
 
32
- @abstractmethod
33
32
  def set_environment_type(self, env_type: EnvironmentType) -> None:
34
33
  """Set environment type."""
35
- pass
34
+ ...
36
35
 
37
- @abstractmethod
38
36
  def get_environment_variable(self, name: str, default: Optional[str] = None) -> Optional[str]:
39
37
  """Get environment variable."""
40
- pass
38
+ ...
41
39
 
42
- @abstractmethod
43
40
  def set_environment_variable(self, name: str, value: str) -> None:
44
41
  """Set environment variable."""
45
- pass
42
+ ...
46
43
 
47
- @abstractmethod
48
44
  def get_all_environment_variables(self) -> dict[str, str]:
49
45
  """Get all environment variables."""
50
- pass
46
+ ...
51
47
 
52
48
 
53
- class IPlatformInfo(ABC):
49
+ @runtime_checkable
50
+ class IPlatformInfo(Protocol):
54
51
  """Interface for platform information."""
55
52
 
56
- @abstractmethod
57
53
  def get_platform_type(self) -> PlatformType:
58
54
  """Get platform type."""
59
- pass
55
+ ...
60
56
 
61
- @abstractmethod
62
57
  def get_platform_version(self) -> str:
63
58
  """Get platform version."""
64
- pass
59
+ ...
65
60
 
66
- @abstractmethod
67
61
  def get_architecture(self) -> str:
68
62
  """Get system architecture."""
69
- pass
63
+ ...
70
64
 
71
- @abstractmethod
72
65
  def get_hostname(self) -> str:
73
66
  """Get system hostname."""
74
- pass
67
+ ...
75
68
 
76
- @abstractmethod
77
69
  def get_username(self) -> str:
78
70
  """Get current username."""
79
- pass
71
+ ...
80
72
 
81
73
 
82
- class IPythonInfo(ABC):
74
+ @runtime_checkable
75
+ class IPythonInfo(Protocol):
83
76
  """Interface for Python information."""
84
77
 
85
- @abstractmethod
86
78
  def get_python_version(self) -> PythonVersion:
87
79
  """Get Python version."""
88
- pass
80
+ ...
89
81
 
90
- @abstractmethod
91
82
  def get_python_executable(self) -> str:
92
83
  """Get Python executable path."""
93
- pass
84
+ ...
94
85
 
95
- @abstractmethod
96
86
  def get_python_path(self) -> list[str]:
97
87
  """Get Python path."""
98
- pass
88
+ ...
99
89
 
100
- @abstractmethod
101
90
  def get_installed_packages(self) -> dict[str, str]:
102
91
  """Get installed packages."""
103
- pass
92
+ ...
104
93
 
105
- @abstractmethod
106
94
  def is_package_installed(self, package_name: str) -> bool:
107
95
  """Check if package is installed."""
108
- pass
96
+ ...
109
97
 
110
98
 
111
- class IReflectionUtils(ABC):
99
+ @runtime_checkable
100
+ class IReflectionUtils(Protocol):
112
101
  """Interface for reflection utilities."""
113
102
 
114
- @abstractmethod
115
103
  def get_class_from_string(self, class_path: str) -> type:
116
104
  """Get class from string path."""
117
- pass
105
+ ...
118
106
 
119
- @abstractmethod
120
107
  def get_function_from_string(self, function_path: str) -> Callable:
121
108
  """Get function from string path."""
122
- pass
109
+ ...
123
110
 
124
- @abstractmethod
125
111
  def find_classes_in_module(self, module: Any, base_class: type) -> list[type]:
126
112
  """Find classes in module."""
127
- pass
113
+ ...
128
114
 
129
- @abstractmethod
130
115
  def get_class_hierarchy(self, cls: type) -> list[type]:
131
116
  """Get class hierarchy."""
132
- pass
117
+ ...
133
118
 
134
- @abstractmethod
135
119
  def get_class_attributes(self, cls: type) -> dict[str, Any]:
136
120
  """Get class attributes."""
137
- pass
121
+ ...
138
122
 
139
123
 
140
- class IRuntimeConfig(ABC):
124
+ @runtime_checkable
125
+ class IRuntimeConfig(Protocol):
141
126
  """Interface for runtime configuration."""
142
127
 
143
- @abstractmethod
144
128
  def get_runtime_mode(self) -> RuntimeMode:
145
129
  """Get runtime mode."""
146
- pass
130
+ ...
147
131
 
148
- @abstractmethod
149
132
  def set_runtime_mode(self, mode: RuntimeMode) -> None:
150
133
  """Set runtime mode."""
151
- pass
134
+ ...
152
135
 
153
- @abstractmethod
154
136
  def get_config_value(self, key: str, default: Optional[Any] = None) -> Any:
155
137
  """Get configuration value."""
156
- pass
138
+ ...
157
139
 
158
- @abstractmethod
159
140
  def set_config_value(self, key: str, value: Any) -> None:
160
141
  """Set configuration value."""
161
- pass
142
+ ...
162
143
 
163
- @abstractmethod
164
144
  def load_config_from_file(self, file_path: str) -> None:
165
145
  """Load configuration from file."""
166
- pass
146
+ ...
167
147
 
168
- @abstractmethod
169
148
  def save_config_to_file(self, file_path: str) -> None:
170
149
  """Save configuration to file."""
171
- pass
150
+ ...
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env python3
2
+ #exonware/xwsystem/src/exonware/xwsystem/runtime/defs.py
2
3
  #exonware/xwsystem/runtime/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
  Runtime types and enums for XWSystem.
@@ -1,8 +1,9 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/runtime/env.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
  Environment management utilities for runtime configuration and detection.
@@ -12,7 +13,7 @@ import os
12
13
  import platform
13
14
  import sys
14
15
  from pathlib import Path
15
- from typing import Any, Optional, Union
16
+ from typing import Any, Optional
16
17
 
17
18
  from ..config.logging_setup import get_logger
18
19
 
@@ -49,18 +50,18 @@ class EnvironmentManager:
49
50
 
50
51
  @property
51
52
  def is_windows(self) -> bool:
52
- """Check if running on Windows."""
53
- return platform.system().lower() == 'windows'
53
+ """Check if running on Windows using Python's native platform module."""
54
+ return platform.system() == 'Windows'
54
55
 
55
56
  @property
56
57
  def is_linux(self) -> bool:
57
- """Check if running on Linux."""
58
- return platform.system().lower() == 'linux'
58
+ """Check if running on Linux using Python's native platform module."""
59
+ return platform.system() == 'Linux'
59
60
 
60
61
  @property
61
62
  def is_macos(self) -> bool:
62
- """Check if running on macOS."""
63
- return platform.system().lower() == 'darwin'
63
+ """Check if running on macOS using Python's native platform module."""
64
+ return platform.system() == 'Darwin'
64
65
 
65
66
  @property
66
67
  def is_64bit(self) -> bool:
@@ -262,7 +263,8 @@ class EnvironmentManager:
262
263
 
263
264
  def get_temp_dir(self) -> Path:
264
265
  """Get system temporary directory."""
265
- return Path(self.get_env('TEMP') or self.get_env('TMP') or '/tmp')
266
+ import tempfile
267
+ return Path(tempfile.gettempdir())
266
268
 
267
269
  def get_current_working_dir(self) -> Path:
268
270
  """Get current working directory."""
@@ -1,9 +1,10 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/runtime/errors.py
1
2
  #exonware/xwsystem/runtime/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
  Runtime module errors - exception classes for runtime functionality.
@@ -1,8 +1,9 @@
1
+ #exonware/xwsystem/src/exonware/xwsystem/runtime/reflection.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
  Reflection utilities for dynamic code inspection and manipulation.
@@ -12,7 +13,7 @@ import importlib
12
13
  import inspect
13
14
  import sys
14
15
  from pathlib import Path
15
- from typing import Any, Callable, Optional, Union
16
+ from typing import Any, Callable, Optional
16
17
 
17
18
  from ..config.logging_setup import get_logger
18
19