exonware-xwnode 0.0.1.12__tar.gz

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 (338) hide show
  1. exonware_xwnode-0.0.1.12/.gitignore +280 -0
  2. exonware_xwnode-0.0.1.12/LICENSE +21 -0
  3. exonware_xwnode-0.0.1.12/PKG-INFO +169 -0
  4. exonware_xwnode-0.0.1.12/README.md +131 -0
  5. exonware_xwnode-0.0.1.12/docs/COMPETITOR_ANALYSIS.md +100 -0
  6. exonware_xwnode-0.0.1.12/docs/ENHANCED_STRATEGY_SYSTEM.md +311 -0
  7. exonware_xwnode-0.0.1.12/docs/MIGRATION_SUMMARY.md +165 -0
  8. exonware_xwnode-0.0.1.12/docs/PROJECT_PHASES.md +173 -0
  9. exonware_xwnode-0.0.1.12/docs/XSYSTEM_INTEGRATION.md +211 -0
  10. exonware_xwnode-0.0.1.12/docs/XWQUERY_SCRIPT.md +1593 -0
  11. exonware_xwnode-0.0.1.12/examples/demo_sql_results.py +288 -0
  12. exonware_xwnode-0.0.1.12/examples/enhanced_strategy_demo.py +253 -0
  13. exonware_xwnode-0.0.1.12/examples/enhanced_xnode_demo.py +301 -0
  14. exonware_xwnode-0.0.1.12/examples/simple_sql_test.py +468 -0
  15. exonware_xwnode-0.0.1.12/examples/sql_demo_results.py +307 -0
  16. exonware_xwnode-0.0.1.12/examples/test_sql_actions.py +470 -0
  17. exonware_xwnode-0.0.1.12/examples/test_xwquery_script_system.py +233 -0
  18. exonware_xwnode-0.0.1.12/examples/xwnode_sql_actions.sql +299 -0
  19. exonware_xwnode-0.0.1.12/examples/xwquery_conversion_examples.py +480 -0
  20. exonware_xwnode-0.0.1.12/examples/xwquery_script_demo.py +331 -0
  21. exonware_xwnode-0.0.1.12/pyproject.toml +119 -0
  22. exonware_xwnode-0.0.1.12/requirements.txt +83 -0
  23. exonware_xwnode-0.0.1.12/src/exonware/__init__.py +14 -0
  24. exonware_xwnode-0.0.1.12/src/exonware/xwnode/__init__.py +127 -0
  25. exonware_xwnode-0.0.1.12/src/exonware/xwnode/base.py +676 -0
  26. exonware_xwnode-0.0.1.12/src/exonware/xwnode/config.py +178 -0
  27. exonware_xwnode-0.0.1.12/src/exonware/xwnode/contracts.py +730 -0
  28. exonware_xwnode-0.0.1.12/src/exonware/xwnode/errors.py +503 -0
  29. exonware_xwnode-0.0.1.12/src/exonware/xwnode/facade.py +460 -0
  30. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/__init__.py +158 -0
  31. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/advisor.py +463 -0
  32. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/edges/__init__.py +32 -0
  33. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/edges/adj_list.py +227 -0
  34. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/edges/adj_matrix.py +391 -0
  35. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/edges/base.py +169 -0
  36. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/flyweight.py +328 -0
  37. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/__init__.py +13 -0
  38. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/_base_edge.py +403 -0
  39. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/_base_node.py +307 -0
  40. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_adj_list.py +353 -0
  41. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_adj_matrix.py +445 -0
  42. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_bidir_wrapper.py +455 -0
  43. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_block_adj_matrix.py +539 -0
  44. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_coo.py +533 -0
  45. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_csc.py +447 -0
  46. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_csr.py +492 -0
  47. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_dynamic_adj_list.py +503 -0
  48. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_flow_network.py +555 -0
  49. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_hyperedge_set.py +516 -0
  50. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_neural_graph.py +650 -0
  51. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_octree.py +574 -0
  52. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_property_store.py +655 -0
  53. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_quadtree.py +519 -0
  54. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_rtree.py +820 -0
  55. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_temporal_edgeset.py +558 -0
  56. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_tree_graph_basic.py +271 -0
  57. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/impls/edge_weighted_graph.py +411 -0
  58. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/manager.py +775 -0
  59. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/metrics.py +538 -0
  60. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/migration.py +432 -0
  61. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/__init__.py +50 -0
  62. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/_base_node.py +307 -0
  63. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/adjacency_list.py +267 -0
  64. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/aho_corasick.py +345 -0
  65. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/array_list.py +209 -0
  66. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/base.py +247 -0
  67. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/deque.py +200 -0
  68. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/hash_map.py +135 -0
  69. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/heap.py +307 -0
  70. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/linked_list.py +232 -0
  71. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_aho_corasick.py +520 -0
  72. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_array_list.py +175 -0
  73. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_avl_tree.py +371 -0
  74. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_b_plus_tree.py +542 -0
  75. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_bitmap.py +420 -0
  76. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_bitset_dynamic.py +513 -0
  77. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_bloom_filter.py +347 -0
  78. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_btree.py +357 -0
  79. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_count_min_sketch.py +470 -0
  80. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_cow_tree.py +473 -0
  81. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_cuckoo_hash.py +392 -0
  82. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_fenwick_tree.py +301 -0
  83. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_hash_map.py +269 -0
  84. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_heap.py +191 -0
  85. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_hyperloglog.py +407 -0
  86. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_linked_list.py +409 -0
  87. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_lsm_tree.py +400 -0
  88. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_ordered_map.py +390 -0
  89. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_ordered_map_balanced.py +565 -0
  90. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_patricia.py +512 -0
  91. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_persistent_tree.py +378 -0
  92. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_radix_trie.py +452 -0
  93. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_red_black_tree.py +497 -0
  94. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_roaring_bitmap.py +570 -0
  95. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_segment_tree.py +289 -0
  96. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_set_hash.py +354 -0
  97. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_set_tree.py +480 -0
  98. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_skip_list.py +316 -0
  99. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_splay_tree.py +393 -0
  100. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_suffix_array.py +487 -0
  101. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_treap.py +387 -0
  102. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_tree_graph_hybrid.py +1434 -0
  103. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_trie.py +252 -0
  104. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_union_find.py +187 -0
  105. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/node_xdata_optimized.py +369 -0
  106. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/priority_queue.py +209 -0
  107. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/queue.py +161 -0
  108. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/sparse_matrix.py +206 -0
  109. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/stack.py +152 -0
  110. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/trie.py +274 -0
  111. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/nodes/union_find.py +283 -0
  112. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/pattern_detector.py +603 -0
  113. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/performance_monitor.py +487 -0
  114. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/__init__.py +24 -0
  115. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/base.py +236 -0
  116. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/cql.py +201 -0
  117. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/cypher.py +181 -0
  118. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/datalog.py +70 -0
  119. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/elastic_dsl.py +70 -0
  120. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/eql.py +70 -0
  121. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/flux.py +70 -0
  122. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/gql.py +70 -0
  123. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/graphql.py +240 -0
  124. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/gremlin.py +181 -0
  125. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/hiveql.py +214 -0
  126. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/hql.py +70 -0
  127. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/jmespath.py +219 -0
  128. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/jq.py +66 -0
  129. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/json_query.py +66 -0
  130. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/jsoniq.py +248 -0
  131. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/kql.py +70 -0
  132. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/linq.py +238 -0
  133. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/logql.py +70 -0
  134. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/mql.py +68 -0
  135. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/n1ql.py +210 -0
  136. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/partiql.py +70 -0
  137. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/pig.py +215 -0
  138. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/promql.py +70 -0
  139. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/sparql.py +220 -0
  140. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/sql.py +275 -0
  141. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/xml_query.py +66 -0
  142. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/xpath.py +223 -0
  143. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/xquery.py +258 -0
  144. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/xwnode_executor.py +332 -0
  145. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/queries/xwquery_strategy.py +424 -0
  146. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/registry.py +604 -0
  147. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/simple.py +273 -0
  148. exonware_xwnode-0.0.1.12/src/exonware/xwnode/strategies/utils.py +532 -0
  149. exonware_xwnode-0.0.1.12/src/exonware/xwnode/types.py +912 -0
  150. exonware_xwnode-0.0.1.12/src/exonware/xwnode/version.py +78 -0
  151. exonware_xwnode-0.0.1.12/src/xwnode.py +19 -0
  152. exonware_xwnode-0.0.1.12/tests/README.md +183 -0
  153. exonware_xwnode-0.0.1.12/tests/XWQUERY_SCRIPT_TEST_SUMMARY.md +202 -0
  154. exonware_xwnode-0.0.1.12/tests/__init__.py +9 -0
  155. exonware_xwnode-0.0.1.12/tests/conftest.py +357 -0
  156. exonware_xwnode-0.0.1.12/tests/core/__init__.py +9 -0
  157. exonware_xwnode-0.0.1.12/tests/core/conftest.py +29 -0
  158. exonware_xwnode-0.0.1.12/tests/core/debug_test.py +17 -0
  159. exonware_xwnode-0.0.1.12/tests/core/runner.py +55 -0
  160. exonware_xwnode-0.0.1.12/tests/core/simple_test.py +230 -0
  161. exonware_xwnode-0.0.1.12/tests/core/test_a_plus_presets.py +277 -0
  162. exonware_xwnode-0.0.1.12/tests/core/test_basic.py +268 -0
  163. exonware_xwnode-0.0.1.12/tests/core/test_core.py +358 -0
  164. exonware_xwnode-0.0.1.12/tests/core/test_core_final.py +358 -0
  165. exonware_xwnode-0.0.1.12/tests/core/test_core_focused.py +217 -0
  166. exonware_xwnode-0.0.1.12/tests/core/test_core_old.py +298 -0
  167. exonware_xwnode-0.0.1.12/tests/core/test_core_query_convert.py +398 -0
  168. exonware_xwnode-0.0.1.12/tests/core/test_core_simple.py +241 -0
  169. exonware_xwnode-0.0.1.12/tests/core/test_errors.py +411 -0
  170. exonware_xwnode-0.0.1.12/tests/core/test_facade.py +288 -0
  171. exonware_xwnode-0.0.1.12/tests/core/test_navigation.py +405 -0
  172. exonware_xwnode-0.0.1.12/tests/core/test_xnode_core.py +463 -0
  173. exonware_xwnode-0.0.1.12/tests/core/test_xwnode_query_action_executor.py +482 -0
  174. exonware_xwnode-0.0.1.12/tests/core/test_xwquery_script_strategy.py +607 -0
  175. exonware_xwnode-0.0.1.12/tests/delete/__init__ copy.py +12 -0
  176. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/README.md +184 -0
  177. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/__init__.py +19 -0
  178. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/conftest.py +168 -0
  179. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/runner.py +132 -0
  180. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/src/xlib/xdata/__init__.py +0 -0
  181. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/test_performance_modes.py +554 -0
  182. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/test_runner.py +145 -0
  183. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/__init__.py +8 -0
  184. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/core_tests/README.md +56 -0
  185. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/core_tests/__init__.py +8 -0
  186. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/core_tests/conftest.py +37 -0
  187. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/core_tests/runner.py +98 -0
  188. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/core_tests/test_xnode_core.py +403 -0
  189. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/error_tests/__init__.py +8 -0
  190. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/error_tests/conftest.py +28 -0
  191. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/error_tests/runner.py +98 -0
  192. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/error_tests/test_errors.py +425 -0
  193. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/integration_tests/__init__.py +8 -0
  194. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/integration_tests/conftest.py +102 -0
  195. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/integration_tests/runner.py +98 -0
  196. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/integration_tests/test_integration.py +365 -0
  197. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/model_tests/__init__.py +8 -0
  198. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/model_tests/conftest.py +11 -0
  199. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/model_tests/runner.py +98 -0
  200. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/model_tests/test_model.py +236 -0
  201. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/navigation_tests/__init__.py +8 -0
  202. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/navigation_tests/conftest.py +96 -0
  203. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/navigation_tests/runner.py +98 -0
  204. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/navigation_tests/test_navigation.py +407 -0
  205. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/perf_test/PERFORMANCE_IMPROVEMENTS.md +186 -0
  206. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/perf_test/PERFORMANCE_SUMMARY.md +168 -0
  207. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/perf_test/README.md +71 -0
  208. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/perf_test/__init__.py +8 -0
  209. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/perf_test/conftest.py +67 -0
  210. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/perf_test/perf_xnode.csv +32 -0
  211. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/perf_test/perf_xnode.py +268 -0
  212. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/perf_test/perf_xnode_detailed.csv +10 -0
  213. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/perf_test/runner.py +303 -0
  214. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/perf_test/src/xlib/xdata/__init__.py +0 -0
  215. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/perf_test/test_performance.py +218 -0
  216. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/test_adaptive_mode.py +262 -0
  217. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/test_auto3_phase1.py +568 -0
  218. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/test_graph_functionality.py +322 -0
  219. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/test_new_features.py +479 -0
  220. exonware_xwnode-0.0.1.12/tests/delete/delete_old_backup/original_location/unit/test_query_functionality.py +421 -0
  221. exonware_xwnode-0.0.1.12/tests/delete/run_all_tests_clean.py +191 -0
  222. exonware_xwnode-0.0.1.12/tests/delete/runner copy.py +132 -0
  223. exonware_xwnode-0.0.1.12/tests/delete/unit copy/__init__.py +8 -0
  224. exonware_xwnode-0.0.1.12/tests/delete/unit copy/core/__init__.py +1 -0
  225. exonware_xwnode-0.0.1.12/tests/delete/unit copy/core/test_errors.py +411 -0
  226. exonware_xwnode-0.0.1.12/tests/delete/unit copy/core/test_facade.py +256 -0
  227. exonware_xwnode-0.0.1.12/tests/delete/unit copy/core/test_navigation.py +405 -0
  228. exonware_xwnode-0.0.1.12/tests/delete/unit copy/core/test_xnode_core.py +463 -0
  229. exonware_xwnode-0.0.1.12/tests/delete/unit copy/core_tests/README.md +56 -0
  230. exonware_xwnode-0.0.1.12/tests/delete/unit copy/core_tests/__init__.py +8 -0
  231. exonware_xwnode-0.0.1.12/tests/delete/unit copy/core_tests/conftest.py +42 -0
  232. exonware_xwnode-0.0.1.12/tests/delete/unit copy/core_tests/runner.py +105 -0
  233. exonware_xwnode-0.0.1.12/tests/delete/unit copy/error_tests/__init__.py +8 -0
  234. exonware_xwnode-0.0.1.12/tests/delete/unit copy/error_tests/conftest.py +28 -0
  235. exonware_xwnode-0.0.1.12/tests/delete/unit copy/error_tests/runner.py +105 -0
  236. exonware_xwnode-0.0.1.12/tests/delete/unit copy/graph/__init__.py +1 -0
  237. exonware_xwnode-0.0.1.12/tests/delete/unit copy/graph/test_graph_ops.py +322 -0
  238. exonware_xwnode-0.0.1.12/tests/delete/unit copy/integration/__init__.py +1 -0
  239. exonware_xwnode-0.0.1.12/tests/delete/unit copy/integration/test_end_to_end.py +365 -0
  240. exonware_xwnode-0.0.1.12/tests/delete/unit copy/integration_tests/__init__.py +8 -0
  241. exonware_xwnode-0.0.1.12/tests/delete/unit copy/integration_tests/conftest.py +102 -0
  242. exonware_xwnode-0.0.1.12/tests/delete/unit copy/integration_tests/runner.py +105 -0
  243. exonware_xwnode-0.0.1.12/tests/delete/unit copy/model_tests/__init__.py +8 -0
  244. exonware_xwnode-0.0.1.12/tests/delete/unit copy/model_tests/conftest.py +11 -0
  245. exonware_xwnode-0.0.1.12/tests/delete/unit copy/model_tests/runner.py +105 -0
  246. exonware_xwnode-0.0.1.12/tests/delete/unit copy/model_tests/test_model.py +210 -0
  247. exonware_xwnode-0.0.1.12/tests/delete/unit copy/navigation_tests/__init__.py +8 -0
  248. exonware_xwnode-0.0.1.12/tests/delete/unit copy/navigation_tests/conftest.py +96 -0
  249. exonware_xwnode-0.0.1.12/tests/delete/unit copy/navigation_tests/runner.py +105 -0
  250. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_mode/README.md +166 -0
  251. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_mode/__init__.py +10 -0
  252. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_mode/conftest.py +180 -0
  253. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_mode/runner.py +490 -0
  254. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_mode/test_adaptive_mode.py +270 -0
  255. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_mode/test_config.py +18 -0
  256. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_mode/test_dual_adaptive_mode.py +219 -0
  257. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_mode/test_performance_benchmark.py +245 -0
  258. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_mode/test_performance_comparison.py +319 -0
  259. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_test/PERFORMANCE_IMPROVEMENTS.md +186 -0
  260. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_test/PERFORMANCE_SUMMARY.md +168 -0
  261. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_test/README.md +71 -0
  262. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_test/__init__.py +8 -0
  263. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_test/conftest.py +67 -0
  264. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_test/perf_xnode.csv +34 -0
  265. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_test/perf_xnode.py +269 -0
  266. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_test/perf_xnode_detailed.csv +10 -0
  267. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_test/runner.py +361 -0
  268. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_test/src/xlib/xdata/__init__.py +0 -0
  269. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_test/test_performance.py +218 -0
  270. exonware_xwnode-0.0.1.12/tests/delete/unit copy/perf_test/test_performance_modes_comparison.py +516 -0
  271. exonware_xwnode-0.0.1.12/tests/delete/unit copy/performance/__init__.py +1 -0
  272. exonware_xwnode-0.0.1.12/tests/delete/unit copy/performance/test_optimization.py +592 -0
  273. exonware_xwnode-0.0.1.12/tests/delete/unit copy/performance/test_performance_modes.py +546 -0
  274. exonware_xwnode-0.0.1.12/tests/delete/unit copy/performance/test_xsystem_integration.py +353 -0
  275. exonware_xwnode-0.0.1.12/tests/delete/unit copy/production_ready/test_production_features.py +396 -0
  276. exonware_xwnode-0.0.1.12/tests/delete/unit copy/query/__init__.py +1 -0
  277. exonware_xwnode-0.0.1.12/tests/delete/unit copy/query/test_native_query.py +421 -0
  278. exonware_xwnode-0.0.1.12/tests/delete/unit copy/structures/__init__.py +1 -0
  279. exonware_xwnode-0.0.1.12/tests/delete/unit copy/structures/test_linear.py +277 -0
  280. exonware_xwnode-0.0.1.12/tests/delete/unit copy/test_adaptive_mode.py +263 -0
  281. exonware_xwnode-0.0.1.12/tests/delete/unit copy/test_advanced_operations.py +254 -0
  282. exonware_xwnode-0.0.1.12/tests/delete/unit copy/test_aplus_improvements.py +347 -0
  283. exonware_xwnode-0.0.1.12/tests/delete/unit copy/test_auto3_phase1.py +568 -0
  284. exonware_xwnode-0.0.1.12/tests/delete/unit copy/test_auto3_phase2.py +613 -0
  285. exonware_xwnode-0.0.1.12/tests/delete/unit copy/test_auto3_phase3.py +700 -0
  286. exonware_xwnode-0.0.1.12/tests/delete/unit copy/test_auto3_phase4.py +879 -0
  287. exonware_xwnode-0.0.1.12/tests/delete/unit copy/test_new_features.py +479 -0
  288. exonware_xwnode-0.0.1.12/tests/delete/unit copy/test_tree_graph_hybrid.py +174 -0
  289. exonware_xwnode-0.0.1.12/tests/integration/__init__.py +1 -0
  290. exonware_xwnode-0.0.1.12/tests/integration/runner.py +27 -0
  291. exonware_xwnode-0.0.1.12/tests/integration/test_end_to_end.py +365 -0
  292. exonware_xwnode-0.0.1.12/tests/integration/test_installation_modes.py +81 -0
  293. exonware_xwnode-0.0.1.12/tests/integration/test_xwnode_xwsystem_lazy_serialization.py +141 -0
  294. exonware_xwnode-0.0.1.12/tests/integration/test_xwquery_script_end_to_end.py +526 -0
  295. exonware_xwnode-0.0.1.12/tests/run_all_tests.py +191 -0
  296. exonware_xwnode-0.0.1.12/tests/runner.py +47 -0
  297. exonware_xwnode-0.0.1.12/tests/test_all_strategies.py +257 -0
  298. exonware_xwnode-0.0.1.12/tests/test_basic_xwnode_creation.py +91 -0
  299. exonware_xwnode-0.0.1.12/tests/test_basic_xwnode_only.py +72 -0
  300. exonware_xwnode-0.0.1.12/tests/test_comprehensive_new_strategies.py +398 -0
  301. exonware_xwnode-0.0.1.12/tests/test_comprehensive_strategies.py +438 -0
  302. exonware_xwnode-0.0.1.12/tests/test_final_inheritance_verification.py +198 -0
  303. exonware_xwnode-0.0.1.12/tests/test_final_strategy_summary.py +198 -0
  304. exonware_xwnode-0.0.1.12/tests/test_functionality.py +214 -0
  305. exonware_xwnode-0.0.1.12/tests/test_import.py +52 -0
  306. exonware_xwnode-0.0.1.12/tests/test_inheritance_hierarchy.py +260 -0
  307. exonware_xwnode-0.0.1.12/tests/test_migration.py +62 -0
  308. exonware_xwnode-0.0.1.12/tests/test_minimal_xwnode.py +45 -0
  309. exonware_xwnode-0.0.1.12/tests/test_minimal_xwnode_simple.py +45 -0
  310. exonware_xwnode-0.0.1.12/tests/test_query_strategies.py +446 -0
  311. exonware_xwnode-0.0.1.12/tests/test_real_strategies.py +192 -0
  312. exonware_xwnode-0.0.1.12/tests/test_runner.py +145 -0
  313. exonware_xwnode-0.0.1.12/tests/test_simple_edges.py +170 -0
  314. exonware_xwnode-0.0.1.12/tests/test_simple_import.py +116 -0
  315. exonware_xwnode-0.0.1.12/tests/test_simple_inheritance.py +161 -0
  316. exonware_xwnode-0.0.1.12/tests/test_simple_new_strategies.py +192 -0
  317. exonware_xwnode-0.0.1.12/tests/test_simple_proof.py +49 -0
  318. exonware_xwnode-0.0.1.12/tests/test_standalone_xwnode.py +81 -0
  319. exonware_xwnode-0.0.1.12/tests/test_strategy_bases.py +493 -0
  320. exonware_xwnode-0.0.1.12/tests/test_strategy_bases_simple.py +493 -0
  321. exonware_xwnode-0.0.1.12/tests/test_strategy_verification.py +298 -0
  322. exonware_xwnode-0.0.1.12/tests/test_xwnode_base_only.py +73 -0
  323. exonware_xwnode-0.0.1.12/tests/test_xwnode_edges_comprehensive.py +229 -0
  324. exonware_xwnode-0.0.1.12/tests/test_xwnode_with_edges.py +130 -0
  325. exonware_xwnode-0.0.1.12/tests/test_xwquery_script_runner.py +363 -0
  326. exonware_xwnode-0.0.1.12/tests/unit/__init__.py +1 -0
  327. exonware_xwnode-0.0.1.12/tests/unit/runner.py +27 -0
  328. exonware_xwnode-0.0.1.12/tests/unit/test_graph_ops.py +322 -0
  329. exonware_xwnode-0.0.1.12/tests/unit/test_linear.py +277 -0
  330. exonware_xwnode-0.0.1.12/tests/unit/test_native_query.py +421 -0
  331. exonware_xwnode-0.0.1.12/tests/unit/test_optimization.py +592 -0
  332. exonware_xwnode-0.0.1.12/tests/unit/test_performance_modes.py +546 -0
  333. exonware_xwnode-0.0.1.12/tests/unit/test_xsystem_integration.py +353 -0
  334. exonware_xwnode-0.0.1.12/tests/unit/test_xwquery_script_integration.py +553 -0
  335. exonware_xwnode-0.0.1.12/tests/utilities/__init__.py +1 -0
  336. exonware_xwnode-0.0.1.12/tests/utilities/benchmarks/__init__.py +1 -0
  337. exonware_xwnode-0.0.1.12/tests/utilities/benchmarks/benchmarks.py +375 -0
  338. exonware_xwnode-0.0.1.12/tests/verify_installation.py +71 -0
@@ -0,0 +1,280 @@
1
+ # ========================================
2
+ # eXonware {LIBRARY_NAME} .gitignore
3
+ # ========================================
4
+
5
+ # CI/CD Tools (keep private)
6
+ .ci/
7
+
8
+ # ========================================
9
+ # Python
10
+ # ========================================
11
+ __pycache__/
12
+ *.py[cod]
13
+ *$py.class
14
+ *.so
15
+ .Python
16
+ build/
17
+ develop-eggs/
18
+ dist/
19
+ downloads/
20
+ eggs/
21
+ .eggs/
22
+ lib/
23
+ lib64/
24
+ parts/
25
+ sdist/
26
+ var/
27
+ wheels/
28
+ pip-wheel-metadata/
29
+ share/python-wheels/
30
+ *.egg-info/
31
+ .installed.cfg
32
+ *.egg
33
+ MANIFEST
34
+
35
+ # PyInstaller
36
+ *.manifest
37
+ *.spec
38
+
39
+ # Installer logs
40
+ pip-log.txt
41
+ pip-delete-this-directory.txt
42
+
43
+ # Unit test / coverage reports
44
+ htmlcov/
45
+ .tox/
46
+ .nox/
47
+ .coverage
48
+ .coverage.*
49
+ .cache
50
+ nosetests.xml
51
+ coverage.xml
52
+ *.cover
53
+ *.py,cover
54
+ .hypothesis/
55
+ .pytest_cache/
56
+ cover/
57
+
58
+ # Translations
59
+ *.mo
60
+ *.pot
61
+
62
+ # Django stuff
63
+ *.log
64
+ local_settings.py
65
+ db.sqlite3
66
+ db.sqlite3-journal
67
+
68
+ # Flask stuff
69
+ instance/
70
+ .webassets-cache
71
+
72
+ # Scrapy stuff
73
+ .scrapy
74
+
75
+ # Sphinx documentation
76
+ docs/_build/
77
+
78
+ # PyBuilder
79
+ .pybuilder/
80
+ target/
81
+
82
+ # Jupyter Notebook
83
+ .ipynb_checkpoints
84
+
85
+ # IPython
86
+ profile_default/
87
+ ipython_config.py
88
+
89
+ # pyenv
90
+ # For a library or package, you might want to ignore these files since the code is
91
+ # intended to run in multiple environments; otherwise, check them in:
92
+ # .python-version
93
+
94
+ # pipenv
95
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
96
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
97
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
98
+ # install all needed dependencies.
99
+ #Pipfile.lock
100
+
101
+ # poetry
102
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
103
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
104
+ # commonly ignored for libraries.
105
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
106
+ #poetry.lock
107
+
108
+ # pdm
109
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
110
+ #pdm.lock
111
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
112
+ # in version control.
113
+ # https://pdm.fming.dev/#use-with-ide
114
+ .pdm.toml
115
+
116
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
117
+ __pypackages__/
118
+
119
+ # Celery stuff
120
+ celerybeat-schedule
121
+ celerybeat.pid
122
+
123
+ # SageMath parsed files
124
+ *.sage.py
125
+
126
+ # Environments
127
+ .env
128
+ .venv
129
+ env/
130
+ venv/
131
+ ENV/
132
+ env.bak/
133
+ venv.bak/
134
+
135
+ # Spyder project settings
136
+ .spyderproject
137
+ .spyproject
138
+
139
+ # Rope project settings
140
+ .ropeproject
141
+
142
+ # mkdocs documentation
143
+ /site
144
+
145
+ # mypy
146
+ .mypy_cache/
147
+ .dmypy.json
148
+ dmypy.json
149
+
150
+ # Pyre type checker
151
+ .pyre/
152
+
153
+ # pytype static type analyzer
154
+ .pytype/
155
+
156
+ # Cython debug symbols
157
+ cython_debug/
158
+
159
+ # ========================================
160
+ # IDEs and Editors
161
+ # ========================================
162
+
163
+ # Visual Studio Code
164
+ .vscode/
165
+ !.vscode/settings.json
166
+ !.vscode/tasks.json
167
+ !.vscode/launch.json
168
+ !.vscode/extensions.json
169
+ !.vscode/*.code-snippets
170
+
171
+ # Local History for Visual Studio Code
172
+ .history/
173
+
174
+ # Built Visual Studio Code Extensions
175
+ *.vsix
176
+
177
+ # PyCharm
178
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
179
+ # be added to the global gitignore or merged into this file. For a more nuclear
180
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
181
+ .idea/
182
+
183
+ # Sublime Text
184
+ *.tmlanguage.cache
185
+ *.tmPreferences.cache
186
+ *.stTheme.cache
187
+ *.sublime-workspace
188
+ *.sublime-project
189
+
190
+ # Vim
191
+ *~
192
+ *.swp
193
+ *.swo
194
+ *tmp
195
+
196
+ # Emacs
197
+ *~
198
+ \#*\#
199
+ /.emacs.desktop
200
+ /.emacs.desktop.lock
201
+ *.elc
202
+ auto-save-list
203
+ tramp
204
+ .\#*
205
+
206
+ # ========================================
207
+ # Operating Systems
208
+ # ========================================
209
+
210
+ # Windows
211
+ Thumbs.db
212
+ Thumbs.db:encryptable
213
+ ehthumbs.db
214
+ ehthumbs_vista.db
215
+ *.stackdump
216
+ [Dd]esktop.ini
217
+ $RECYCLE.BIN/
218
+ *.cab
219
+ *.msi
220
+ *.msix
221
+ *.msm
222
+ *.msp
223
+ *.lnk
224
+
225
+ # macOS
226
+ .DS_Store
227
+ .AppleDouble
228
+ .LSOverride
229
+ Icon
230
+ ._*
231
+ .DocumentRevisions-V100
232
+ .fseventsd
233
+ .Spotlight-V100
234
+ .TemporaryItems
235
+ .Trashes
236
+ .VolumeIcon.icns
237
+ .com.apple.timemachine.donotpresent
238
+ .AppleDB
239
+ .AppleDesktop
240
+ Network Trash Folder
241
+ Temporary Items
242
+ .apdisk
243
+
244
+ # Linux
245
+ *~
246
+ .fuse_hidden*
247
+ .directory
248
+ .Trash-*
249
+ .nfs*
250
+
251
+ # ========================================
252
+ # Development Tools
253
+ # ========================================
254
+
255
+ # Backup files
256
+ *.bak
257
+ *.backup
258
+ *.tmp
259
+ *.temp
260
+
261
+ # Log files
262
+ *.log
263
+ logs/
264
+
265
+ # Database files
266
+ *.sqlite
267
+ *.sqlite3
268
+ *.db
269
+
270
+ # Configuration files with secrets
271
+ config.ini
272
+ secrets.json
273
+ .secrets
274
+ credentials.json
275
+
276
+ # Local environment files
277
+ .env.local
278
+ .env.development.local
279
+ .env.test.local
280
+ .env.production.local
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 eXonware.com - Eng. Muhammad AlShehri
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,169 @@
1
+ Metadata-Version: 2.4
2
+ Name: exonware-xwnode
3
+ Version: 0.0.1.12
4
+ Summary: Node-based data processing and graph computation library
5
+ Project-URL: Homepage, https://exonware.com
6
+ Project-URL: Repository, https://github.com/exonware/xwnode
7
+ Project-URL: Documentation, https://github.com/exonware/xwnode#readme
8
+ Author-email: "Eng. Muhammad AlShehri" <connect@exonware.com>
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: computation,data-processing,exonware,graph,node,workflow
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Requires-Python: >=3.8
25
+ Requires-Dist: exonware-xwsystem>=0.0.1
26
+ Provides-Extra: dev
27
+ Requires-Dist: black>=23.0.0; extra == 'dev'
28
+ Requires-Dist: isort>=5.12.0; extra == 'dev'
29
+ Requires-Dist: mypy>=1.0.0; extra == 'dev'
30
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
31
+ Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
32
+ Requires-Dist: pytest>=7.0.0; extra == 'dev'
33
+ Provides-Extra: full
34
+ Requires-Dist: exonware-xwsystem[full]>=0.0.1; extra == 'full'
35
+ Provides-Extra: lazy
36
+ Requires-Dist: exonware-xwsystem[lazy]>=0.0.1; extra == 'lazy'
37
+ Description-Content-Type: text/markdown
38
+
39
+ # 🚀 **xwnode: Node-Based Data Processing Library**
40
+
41
+ **Company:** eXonware.com
42
+ **Author:** Eng. Muhammad AlShehri
43
+ **Email:** connect@exonware.com
44
+ **Version:** 0.0.1.12
45
+
46
+ ## 🎯 **What is xwnode?**
47
+
48
+ xwnode is a powerful Python library for node-based data processing and graph computation. It provides a flexible framework for building data processing workflows using interconnected nodes, enabling complex data transformations and computations through an intuitive graph-based approach.
49
+
50
+ ## ⚡ **Quick Start**
51
+
52
+ ### **Installation**
53
+
54
+ xwnode offers three installation modes to match your needs:
55
+
56
+ #### **Default (Lite) - Minimal Installation**
57
+ ```bash
58
+ pip install exonware-xwnode
59
+ # or
60
+ pip install xwnode
61
+ ```
62
+ - ✅ Core node functionality
63
+ - ✅ Basic graph operations
64
+ - ✅ Essential data processing
65
+ - ✅ Zero external dependencies (beyond xwsystem)
66
+
67
+ #### **Lazy - Auto-Install on Demand**
68
+ ```bash
69
+ pip install exonware-xwnode[lazy]
70
+ # or
71
+ pip install xwnode[lazy]
72
+ ```
73
+ - ✅ Everything from default
74
+ - ✅ Automatic dependency installation
75
+ - ✅ Enterprise serialization on-demand
76
+ - ✅ Performance monitoring when needed
77
+
78
+ #### **Full - Complete Feature Set**
79
+ ```bash
80
+ pip install exonware-xwnode[full]
81
+ # or
82
+ pip install xwnode[full]
83
+ ```
84
+ - ✅ Everything from lazy
85
+ - ✅ All xwsystem serialization formats (50+)
86
+ - ✅ Advanced security features
87
+ - ✅ Performance monitoring
88
+ - ✅ Enterprise-grade capabilities
89
+
90
+ ### **Basic Usage**
91
+ ```python
92
+ from exonware.xwnode import XWNode, XWQuery, XWFactory
93
+ # Or use convenience import:
94
+ # import xwnode
95
+
96
+ # Your node-based processing code here
97
+ node = XWNode({'data': 'example'})
98
+ ```
99
+
100
+ ## 🎯 **Perfect For:**
101
+
102
+ - **🔄 Data Processing Pipelines** - Build complex data transformation workflows
103
+ - **📊 Graph Computation** - Process data through interconnected node networks
104
+ - **🔀 Workflow Management** - Create reusable processing components
105
+ - **🧠 Algorithm Development** - Implement graph-based algorithms and computations
106
+ - **🔗 System Integration** - Connect different data processing stages
107
+
108
+ ## 🚀 **Key Features**
109
+
110
+ ✅ **Node-based architecture** for modular data processing
111
+ ✅ **Graph computation engine** for complex workflows
112
+ ✅ **Flexible data flow** between processing nodes
113
+ ✅ **Reusable components** for common operations
114
+ ✅ **Performance optimized** for large-scale processing
115
+ ✅ **Easy integration** with existing Python data tools
116
+
117
+ ## 🚀 **Project Phases**
118
+
119
+ xWNode follows a structured 5-phase development approach designed to deliver enterprise-grade functionality while maintaining rapid iteration and continuous improvement.
120
+
121
+ ### **Current Phase: 🧪 Version 0 - Experimental Stage**
122
+ - **Focus:** Fast applications & usage, refactoring to perfection of software patterns and design
123
+ - **Status:** 🟢 **ACTIVE** - Foundation complete with core node functionality, graph traversal algorithms, and comprehensive testing
124
+
125
+ ### **Development Roadmap:**
126
+ - **Version 1 (Q1 2026):** Production Ready - Enterprise deployment and hardening
127
+ - **Version 2 (Q2 2026):** Mars Standard Draft Implementation - Cross-platform interoperability
128
+ - **Version 3 (Q3 2026):** RUST Core & Facades - High-performance multi-language support
129
+ - **Version 4 (Q4 2026):** Mars Standard Implementation - Full compliance and enterprise deployment
130
+
131
+ 📖 **[View Complete Project Phases Documentation](docs/PROJECT_PHASES.md)**
132
+
133
+ ## 📚 **Documentation**
134
+
135
+ - **[API Documentation](docs/)** - Complete reference and examples
136
+ - **[Examples](examples/)** - Practical usage examples
137
+ - **[Tests](tests/)** - Test suites and usage patterns
138
+
139
+ ## 🔧 **Development**
140
+
141
+ ```bash
142
+ # Install in development mode
143
+ pip install -e .
144
+
145
+ # Run tests
146
+ python tests/runner.py
147
+
148
+ # Run specific test types
149
+ python tests/runner.py --core
150
+ python tests/runner.py --unit
151
+ python tests/runner.py --integration
152
+ ```
153
+
154
+ ## 🤝 **Contributing**
155
+
156
+ 1. Fork the repository
157
+ 2. Create a feature branch
158
+ 3. Make your changes
159
+ 4. Add tests
160
+ 5. Run the test suite
161
+ 6. Submit a pull request
162
+
163
+ ## 📄 **License**
164
+
165
+ MIT License - see LICENSE file for details.
166
+
167
+ ---
168
+
169
+ *Built with ❤️ by eXonware.com - Making node-based data processing effortless*
@@ -0,0 +1,131 @@
1
+ # 🚀 **xwnode: Node-Based Data Processing Library**
2
+
3
+ **Company:** eXonware.com
4
+ **Author:** Eng. Muhammad AlShehri
5
+ **Email:** connect@exonware.com
6
+ **Version:** 0.0.1.12
7
+
8
+ ## 🎯 **What is xwnode?**
9
+
10
+ xwnode is a powerful Python library for node-based data processing and graph computation. It provides a flexible framework for building data processing workflows using interconnected nodes, enabling complex data transformations and computations through an intuitive graph-based approach.
11
+
12
+ ## ⚡ **Quick Start**
13
+
14
+ ### **Installation**
15
+
16
+ xwnode offers three installation modes to match your needs:
17
+
18
+ #### **Default (Lite) - Minimal Installation**
19
+ ```bash
20
+ pip install exonware-xwnode
21
+ # or
22
+ pip install xwnode
23
+ ```
24
+ - ✅ Core node functionality
25
+ - ✅ Basic graph operations
26
+ - ✅ Essential data processing
27
+ - ✅ Zero external dependencies (beyond xwsystem)
28
+
29
+ #### **Lazy - Auto-Install on Demand**
30
+ ```bash
31
+ pip install exonware-xwnode[lazy]
32
+ # or
33
+ pip install xwnode[lazy]
34
+ ```
35
+ - ✅ Everything from default
36
+ - ✅ Automatic dependency installation
37
+ - ✅ Enterprise serialization on-demand
38
+ - ✅ Performance monitoring when needed
39
+
40
+ #### **Full - Complete Feature Set**
41
+ ```bash
42
+ pip install exonware-xwnode[full]
43
+ # or
44
+ pip install xwnode[full]
45
+ ```
46
+ - ✅ Everything from lazy
47
+ - ✅ All xwsystem serialization formats (50+)
48
+ - ✅ Advanced security features
49
+ - ✅ Performance monitoring
50
+ - ✅ Enterprise-grade capabilities
51
+
52
+ ### **Basic Usage**
53
+ ```python
54
+ from exonware.xwnode import XWNode, XWQuery, XWFactory
55
+ # Or use convenience import:
56
+ # import xwnode
57
+
58
+ # Your node-based processing code here
59
+ node = XWNode({'data': 'example'})
60
+ ```
61
+
62
+ ## 🎯 **Perfect For:**
63
+
64
+ - **🔄 Data Processing Pipelines** - Build complex data transformation workflows
65
+ - **📊 Graph Computation** - Process data through interconnected node networks
66
+ - **🔀 Workflow Management** - Create reusable processing components
67
+ - **🧠 Algorithm Development** - Implement graph-based algorithms and computations
68
+ - **🔗 System Integration** - Connect different data processing stages
69
+
70
+ ## 🚀 **Key Features**
71
+
72
+ ✅ **Node-based architecture** for modular data processing
73
+ ✅ **Graph computation engine** for complex workflows
74
+ ✅ **Flexible data flow** between processing nodes
75
+ ✅ **Reusable components** for common operations
76
+ ✅ **Performance optimized** for large-scale processing
77
+ ✅ **Easy integration** with existing Python data tools
78
+
79
+ ## 🚀 **Project Phases**
80
+
81
+ xWNode follows a structured 5-phase development approach designed to deliver enterprise-grade functionality while maintaining rapid iteration and continuous improvement.
82
+
83
+ ### **Current Phase: 🧪 Version 0 - Experimental Stage**
84
+ - **Focus:** Fast applications & usage, refactoring to perfection of software patterns and design
85
+ - **Status:** 🟢 **ACTIVE** - Foundation complete with core node functionality, graph traversal algorithms, and comprehensive testing
86
+
87
+ ### **Development Roadmap:**
88
+ - **Version 1 (Q1 2026):** Production Ready - Enterprise deployment and hardening
89
+ - **Version 2 (Q2 2026):** Mars Standard Draft Implementation - Cross-platform interoperability
90
+ - **Version 3 (Q3 2026):** RUST Core & Facades - High-performance multi-language support
91
+ - **Version 4 (Q4 2026):** Mars Standard Implementation - Full compliance and enterprise deployment
92
+
93
+ 📖 **[View Complete Project Phases Documentation](docs/PROJECT_PHASES.md)**
94
+
95
+ ## 📚 **Documentation**
96
+
97
+ - **[API Documentation](docs/)** - Complete reference and examples
98
+ - **[Examples](examples/)** - Practical usage examples
99
+ - **[Tests](tests/)** - Test suites and usage patterns
100
+
101
+ ## 🔧 **Development**
102
+
103
+ ```bash
104
+ # Install in development mode
105
+ pip install -e .
106
+
107
+ # Run tests
108
+ python tests/runner.py
109
+
110
+ # Run specific test types
111
+ python tests/runner.py --core
112
+ python tests/runner.py --unit
113
+ python tests/runner.py --integration
114
+ ```
115
+
116
+ ## 🤝 **Contributing**
117
+
118
+ 1. Fork the repository
119
+ 2. Create a feature branch
120
+ 3. Make your changes
121
+ 4. Add tests
122
+ 5. Run the test suite
123
+ 6. Submit a pull request
124
+
125
+ ## 📄 **License**
126
+
127
+ MIT License - see LICENSE file for details.
128
+
129
+ ---
130
+
131
+ *Built with ❤️ by eXonware.com - Making node-based data processing effortless*
@@ -0,0 +1,100 @@
1
+ # xWNode: Competitive Landscape Analysis
2
+
3
+ ## 1. Introduction
4
+
5
+ This document provides a comprehensive analysis of the competitive landscape for the `xwnode` library. The purpose is to identify key competitors, understand `xwnode`'s unique market position, and outline its strategic advantages and challenges.
6
+
7
+ `xwnode` is positioned as a foundational Python library for node-based data processing and graph computation. It provides a flexible, self-contained framework for building complex data transformation pipelines and managing workflows through an interconnected graph of nodes. Its core value is in providing a structured, modular, and intuitive paradigm for representing and executing complex data operations.
8
+
9
+ ## 2. Market Positioning
10
+
11
+ `xwnode` fits into the broad category of workflow management and data processing pipeline tools. Unlike monolithic data engineering platforms, `xwnode` appears to be a library-first tool, designed to be integrated into larger Python applications.
12
+
13
+ Its primary characteristics are:
14
+ - **Graph-Based Model:** All operations are modeled as a Directed Acyclic Graph (DAG), where nodes represent computational tasks and edges represent data dependencies.
15
+ - **Library-First:** It's a component to be used within code, not a standalone orchestrator with its own UI or separate scheduler.
16
+ - **Self-Contained:** With no external dependencies, it provides a core logic engine for graph computation without imposing a large ecosystem of tools on the user.
17
+
18
+ ## 3. Competitive Landscape Overview
19
+
20
+ The competitive landscape for `xnode` is diverse, ranging from general-purpose graph libraries to full-featured workflow orchestrators. The key distinction for positioning `xnode` is its focus as a *library* for building data workflows, rather than a standalone *platform* for running them.
21
+
22
+ ## 4. Competitor Categories
23
+
24
+ ### 4.1. Category 1: Workflow Orchestration Platforms
25
+
26
+ These are powerful, feature-rich platforms designed for scheduling, monitoring, and executing complex data pipelines. They are typically much heavier than `xnode` and represent a higher level of abstraction.
27
+
28
+ - **Apache Airflow:**
29
+ - **Description:** The dominant open-source platform for programmatically authoring, scheduling, and monitoring workflows. Workflows are defined as Python scripts.
30
+ - **Competitive Stance:** Airflow is a full-fledged orchestrator, not a library. It is a major competitor for the *use case* of running production data pipelines, but it is not a direct competitor to `xnode` as a *library*. A developer might even use `xnode` *within* an Airflow task to define a complex computation. `xnode` is for defining the *what* (the graph logic), while Airflow is for the *when* and *how* (scheduling and execution).
31
+
32
+ - **Prefect:**
33
+ - **Description:** A modern workflow orchestration tool that focuses on a "Python-first" approach, allowing users to build and monitor dataflows with a simple decorative API.
34
+ - **Competitive Stance:** Prefect is closer in spirit to `xnode` than Airflow, with a strong emphasis on writing natural Python code. However, like Airflow, it is a complete platform with a UI, a scheduler, and a focus on production monitoring. It competes for the same problem space but at a different scale.
35
+
36
+ - **Dagster:**
37
+ - **Description:** A data orchestrator for machine learning, analytics, and ETL. It emphasizes a data-aware, declarative approach to building pipelines.
38
+ - **Competitive Stance:** Dagster is also a full platform, but its emphasis on the data assets that flow between computations is philosophically similar to the node-based data flow in `xnode`. Again, it's a platform-level competitor, not a library-level one.
39
+
40
+ ### 4.2. Category 2: General-Purpose Graph Libraries
41
+
42
+ These libraries provide the tools to create, manipulate, and study the structure and dynamics of complex networks.
43
+
44
+ - **NetworkX:**
45
+ - **Description:** The most popular Python library for the creation, manipulation, and study of complex networks of nodes and edges.
46
+ - **Competitive Stance:** NetworkX is a direct competitor in the domain of graph *representation* and *analysis*. If a developer's primary goal is to model a graph and run classical graph algorithms (e.g., shortest path, centrality), NetworkX is the go-to tool. `xnode` appears to be more focused on using the graph structure for *data processing pipelines* (a DAG of operations), rather than general-purpose graph analysis.
47
+
48
+ - **graph-tool / igraph:**
49
+ - **Description:** High-performance graph libraries (often with C/C++ cores) for advanced network analysis.
50
+ - **Competitive Stance:** These are specialized, high-performance tools for scientific computing and network science. They compete with NetworkX more than with `xnode` and are focused on analysis, not data pipeline execution.
51
+
52
+ ### 4.3. Category 3: Dataflow and Stream Processing Libraries
53
+
54
+ These libraries are designed to process streams of data, often in a distributed and parallel fashion.
55
+
56
+ - **Apache Beam:**
57
+ - **Description:** An advanced, unified model for defining both batch and streaming data-parallel processing pipelines. It's a high-level API that can run on multiple execution engines (Spark, Flink, etc.).
58
+ - **Competitive Stance:** Beam is a powerful, high-level abstraction for large-scale data processing. It is far more complex than `xnode` and is designed for distributed systems. `xnode` could be seen as a lightweight, in-process alternative for use cases that do not require the scale or complexity of Beam.
59
+
60
+ ## 5. Strategic Analysis
61
+
62
+ ### Strengths
63
+
64
+ - **Simplicity and Focus:** As a dependency-free library, `xnode` can be easily integrated into any Python project without pulling in a heavy ecosystem. Its focus on a single task (defining computational graphs) is a strength.
65
+ - **Flexibility:** Being a library, it gives developers complete control over the execution environment. It can be embedded in a web server, a CLI tool, or even a task within a larger orchestrator like Airflow.
66
+ - **Intuitive Model:** The node-based graph is a very natural and visual way to represent complex data dependencies and transformations, making workflows easier to design and debug.
67
+
68
+ ### Weaknesses & Challenges
69
+
70
+ - **Lack of Production Features:** Compared to platforms like Airflow or Prefect, `xnode` (by design) lacks a scheduler, a UI, monitoring, alerting, and other features critical for production orchestration. This is a trade-off for its lightweight nature.
71
+ - **Competition from Established Tools:** The space for workflow management is crowded. `xnode` must clearly articulate its niche as a lightweight, embeddable library to differentiate itself from the feature-rich platforms.
72
+ - **General-Purpose vs. Specialized:** It faces competition from both sides: powerful orchestration platforms for production pipelines and specialized graph libraries like NetworkX for pure graph analysis.
73
+
74
+ ## 6. Conclusion
75
+
76
+ `xnode`'s primary competitive advantage is its position as a **lightweight, dependency-free, and embeddable graph computation library.** It is not trying to be a full-fledged orchestrator like Airflow or a scientific analysis tool like NetworkX.
77
+
78
+ Its ideal niche is for developers who need to:
79
+ - Define complex, multi-step data transformations within an existing Python application.
80
+ - Prototype and build data-intensive algorithms using a graph-based mental model.
81
+ - Create modular and reusable computational components without the overhead of a full orchestration platform.
82
+
83
+ Its success will depend on clearly marketing this niche and providing a powerful and ergonomic API for building and executing these computational graphs.
84
+
85
+ ## 7. Cross-Language Ecosystem Comparison
86
+
87
+ ### 7.1. Go (Golang)
88
+
89
+ - **Paradigm:** The Go ecosystem does not have a single, dominant graph-workflow library. Workflows are often implemented using channels and goroutines to pass data between concurrent processing stages. For more structured needs, developers might use a library like **GoFlow**.
90
+ - **Competitive Stance:** `xnode` offers a more structured, declarative approach than manually wiring up channels. It provides a higher-level abstraction for defining the flow of data.
91
+
92
+ ### 7.2. Rust
93
+
94
+ - **Paradigm:** The Rust ecosystem has several libraries for dataflow programming and graph-based computation. **`petgraph`** is a popular general-purpose graph library (similar to NetworkX). For dataflow, libraries like **`hydroflow`** are emerging for building complex, high-performance data pipelines.
95
+ - **Competitive Stance:** Rust's focus on performance and safety makes its dataflow libraries very powerful for systems programming. `xnode` competes by offering the simplicity and flexibility of Python, making it better suited for rapid development and data science applications.
96
+
97
+ ### 7.3. TypeScript / Node.js
98
+
99
+ - **Paradigm:** The Node.js ecosystem has several libraries for managing asynchronous control flow, which can be used to build pipelines (e.g., `async.js`). For more explicit graph-based work, libraries like **`graphlib`** (for representation) or **`Rete.js`** (for visual node-based editors) are used.
100
+ - **Competitive Stance:** `xnode` provides a more integrated and focused experience for data processing than combining general-purpose async and graph libraries in Node.js. It is philosophically similar to `Rete.js` but is focused on code-first definitions rather than visual programming.