exonware-xwnode 0.0.1.21__py3-none-any.whl → 0.0.1.23__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 (250) hide show
  1. exonware/__init__.py +8 -1
  2. exonware/xwnode/__init__.py +18 -5
  3. exonware/xwnode/add_strategy_types.py +165 -0
  4. exonware/xwnode/base.py +7 -5
  5. exonware/xwnode/common/__init__.py +1 -1
  6. exonware/xwnode/common/graph/__init__.py +30 -0
  7. exonware/xwnode/common/graph/caching.py +131 -0
  8. exonware/xwnode/common/graph/contracts.py +100 -0
  9. exonware/xwnode/common/graph/errors.py +44 -0
  10. exonware/xwnode/common/graph/indexing.py +260 -0
  11. exonware/xwnode/common/graph/manager.py +568 -0
  12. exonware/xwnode/common/management/__init__.py +3 -5
  13. exonware/xwnode/common/management/manager.py +9 -9
  14. exonware/xwnode/common/management/migration.py +6 -6
  15. exonware/xwnode/common/monitoring/__init__.py +3 -5
  16. exonware/xwnode/common/monitoring/metrics.py +7 -3
  17. exonware/xwnode/common/monitoring/pattern_detector.py +2 -2
  18. exonware/xwnode/common/monitoring/performance_monitor.py +6 -2
  19. exonware/xwnode/common/patterns/__init__.py +3 -5
  20. exonware/xwnode/common/patterns/advisor.py +1 -1
  21. exonware/xwnode/common/patterns/flyweight.py +6 -2
  22. exonware/xwnode/common/patterns/registry.py +203 -184
  23. exonware/xwnode/common/utils/__init__.py +25 -11
  24. exonware/xwnode/common/utils/simple.py +1 -1
  25. exonware/xwnode/config.py +3 -8
  26. exonware/xwnode/contracts.py +4 -105
  27. exonware/xwnode/defs.py +413 -159
  28. exonware/xwnode/edges/strategies/__init__.py +86 -4
  29. exonware/xwnode/edges/strategies/_base_edge.py +2 -2
  30. exonware/xwnode/edges/strategies/adj_list.py +287 -121
  31. exonware/xwnode/edges/strategies/adj_matrix.py +316 -222
  32. exonware/xwnode/edges/strategies/base.py +1 -1
  33. exonware/xwnode/edges/strategies/{edge_bidir_wrapper.py → bidir_wrapper.py} +45 -4
  34. exonware/xwnode/edges/strategies/bitemporal.py +520 -0
  35. exonware/xwnode/edges/strategies/{edge_block_adj_matrix.py → block_adj_matrix.py} +77 -6
  36. exonware/xwnode/edges/strategies/bv_graph.py +664 -0
  37. exonware/xwnode/edges/strategies/compressed_graph.py +217 -0
  38. exonware/xwnode/edges/strategies/{edge_coo.py → coo.py} +46 -4
  39. exonware/xwnode/edges/strategies/{edge_csc.py → csc.py} +45 -4
  40. exonware/xwnode/edges/strategies/{edge_csr.py → csr.py} +94 -12
  41. exonware/xwnode/edges/strategies/{edge_dynamic_adj_list.py → dynamic_adj_list.py} +46 -4
  42. exonware/xwnode/edges/strategies/edge_list.py +168 -0
  43. exonware/xwnode/edges/strategies/edge_property_store.py +2 -2
  44. exonware/xwnode/edges/strategies/euler_tour.py +560 -0
  45. exonware/xwnode/edges/strategies/{edge_flow_network.py → flow_network.py} +2 -2
  46. exonware/xwnode/edges/strategies/graphblas.py +449 -0
  47. exonware/xwnode/edges/strategies/hnsw.py +637 -0
  48. exonware/xwnode/edges/strategies/hop2_labels.py +467 -0
  49. exonware/xwnode/edges/strategies/{edge_hyperedge_set.py → hyperedge_set.py} +2 -2
  50. exonware/xwnode/edges/strategies/incidence_matrix.py +250 -0
  51. exonware/xwnode/edges/strategies/k2_tree.py +613 -0
  52. exonware/xwnode/edges/strategies/link_cut.py +626 -0
  53. exonware/xwnode/edges/strategies/multiplex.py +532 -0
  54. exonware/xwnode/edges/strategies/{edge_neural_graph.py → neural_graph.py} +2 -2
  55. exonware/xwnode/edges/strategies/{edge_octree.py → octree.py} +69 -11
  56. exonware/xwnode/edges/strategies/{edge_quadtree.py → quadtree.py} +66 -10
  57. exonware/xwnode/edges/strategies/roaring_adj.py +438 -0
  58. exonware/xwnode/edges/strategies/{edge_rtree.py → rtree.py} +43 -5
  59. exonware/xwnode/edges/strategies/{edge_temporal_edgeset.py → temporal_edgeset.py} +24 -5
  60. exonware/xwnode/edges/strategies/{edge_tree_graph_basic.py → tree_graph_basic.py} +78 -7
  61. exonware/xwnode/edges/strategies/{edge_weighted_graph.py → weighted_graph.py} +188 -10
  62. exonware/xwnode/errors.py +3 -6
  63. exonware/xwnode/facade.py +20 -20
  64. exonware/xwnode/nodes/strategies/__init__.py +29 -9
  65. exonware/xwnode/nodes/strategies/adjacency_list.py +650 -177
  66. exonware/xwnode/nodes/strategies/aho_corasick.py +358 -183
  67. exonware/xwnode/nodes/strategies/array_list.py +36 -3
  68. exonware/xwnode/nodes/strategies/art.py +581 -0
  69. exonware/xwnode/nodes/strategies/{node_avl_tree.py → avl_tree.py} +77 -6
  70. exonware/xwnode/nodes/strategies/{node_b_plus_tree.py → b_plus_tree.py} +81 -40
  71. exonware/xwnode/nodes/strategies/{node_btree.py → b_tree.py} +79 -9
  72. exonware/xwnode/nodes/strategies/base.py +469 -98
  73. exonware/xwnode/nodes/strategies/{node_bitmap.py → bitmap.py} +12 -12
  74. exonware/xwnode/nodes/strategies/{node_bitset_dynamic.py → bitset_dynamic.py} +11 -11
  75. exonware/xwnode/nodes/strategies/{node_bloom_filter.py → bloom_filter.py} +15 -2
  76. exonware/xwnode/nodes/strategies/bloomier_filter.py +519 -0
  77. exonware/xwnode/nodes/strategies/bw_tree.py +531 -0
  78. exonware/xwnode/nodes/strategies/contracts.py +1 -1
  79. exonware/xwnode/nodes/strategies/{node_count_min_sketch.py → count_min_sketch.py} +3 -2
  80. exonware/xwnode/nodes/strategies/{node_cow_tree.py → cow_tree.py} +135 -13
  81. exonware/xwnode/nodes/strategies/crdt_map.py +629 -0
  82. exonware/xwnode/nodes/strategies/{node_cuckoo_hash.py → cuckoo_hash.py} +2 -2
  83. exonware/xwnode/nodes/strategies/{node_xdata_optimized.py → data_interchange_optimized.py} +21 -4
  84. exonware/xwnode/nodes/strategies/dawg.py +876 -0
  85. exonware/xwnode/nodes/strategies/deque.py +321 -153
  86. exonware/xwnode/nodes/strategies/extendible_hash.py +93 -0
  87. exonware/xwnode/nodes/strategies/{node_fenwick_tree.py → fenwick_tree.py} +111 -19
  88. exonware/xwnode/nodes/strategies/hamt.py +403 -0
  89. exonware/xwnode/nodes/strategies/hash_map.py +354 -67
  90. exonware/xwnode/nodes/strategies/heap.py +105 -5
  91. exonware/xwnode/nodes/strategies/hopscotch_hash.py +525 -0
  92. exonware/xwnode/nodes/strategies/{node_hyperloglog.py → hyperloglog.py} +6 -5
  93. exonware/xwnode/nodes/strategies/interval_tree.py +742 -0
  94. exonware/xwnode/nodes/strategies/kd_tree.py +703 -0
  95. exonware/xwnode/nodes/strategies/learned_index.py +533 -0
  96. exonware/xwnode/nodes/strategies/linear_hash.py +93 -0
  97. exonware/xwnode/nodes/strategies/linked_list.py +316 -119
  98. exonware/xwnode/nodes/strategies/{node_lsm_tree.py → lsm_tree.py} +219 -15
  99. exonware/xwnode/nodes/strategies/masstree.py +130 -0
  100. exonware/xwnode/nodes/strategies/{node_persistent_tree.py → persistent_tree.py} +149 -9
  101. exonware/xwnode/nodes/strategies/priority_queue.py +544 -132
  102. exonware/xwnode/nodes/strategies/queue.py +249 -120
  103. exonware/xwnode/nodes/strategies/{node_red_black_tree.py → red_black_tree.py} +183 -72
  104. exonware/xwnode/nodes/strategies/{node_roaring_bitmap.py → roaring_bitmap.py} +19 -6
  105. exonware/xwnode/nodes/strategies/rope.py +717 -0
  106. exonware/xwnode/nodes/strategies/{node_segment_tree.py → segment_tree.py} +106 -106
  107. exonware/xwnode/nodes/strategies/{node_set_hash.py → set_hash.py} +30 -29
  108. exonware/xwnode/nodes/strategies/{node_skip_list.py → skip_list.py} +74 -6
  109. exonware/xwnode/nodes/strategies/sparse_matrix.py +427 -131
  110. exonware/xwnode/nodes/strategies/{node_splay_tree.py → splay_tree.py} +55 -6
  111. exonware/xwnode/nodes/strategies/stack.py +244 -112
  112. exonware/xwnode/nodes/strategies/{node_suffix_array.py → suffix_array.py} +5 -1
  113. exonware/xwnode/nodes/strategies/t_tree.py +94 -0
  114. exonware/xwnode/nodes/strategies/{node_treap.py → treap.py} +75 -6
  115. exonware/xwnode/nodes/strategies/{node_tree_graph_hybrid.py → tree_graph_hybrid.py} +46 -5
  116. exonware/xwnode/nodes/strategies/trie.py +153 -9
  117. exonware/xwnode/nodes/strategies/union_find.py +111 -5
  118. exonware/xwnode/nodes/strategies/veb_tree.py +856 -0
  119. exonware/xwnode/strategies/__init__.py +5 -51
  120. exonware/xwnode/version.py +3 -3
  121. {exonware_xwnode-0.0.1.21.dist-info → exonware_xwnode-0.0.1.23.dist-info}/METADATA +23 -3
  122. exonware_xwnode-0.0.1.23.dist-info/RECORD +130 -0
  123. exonware/xwnode/edges/strategies/edge_adj_list.py +0 -353
  124. exonware/xwnode/edges/strategies/edge_adj_matrix.py +0 -445
  125. exonware/xwnode/nodes/strategies/_base_node.py +0 -307
  126. exonware/xwnode/nodes/strategies/node_aho_corasick.py +0 -525
  127. exonware/xwnode/nodes/strategies/node_array_list.py +0 -179
  128. exonware/xwnode/nodes/strategies/node_hash_map.py +0 -273
  129. exonware/xwnode/nodes/strategies/node_heap.py +0 -196
  130. exonware/xwnode/nodes/strategies/node_linked_list.py +0 -413
  131. exonware/xwnode/nodes/strategies/node_trie.py +0 -257
  132. exonware/xwnode/nodes/strategies/node_union_find.py +0 -192
  133. exonware/xwnode/queries/executors/__init__.py +0 -47
  134. exonware/xwnode/queries/executors/advanced/__init__.py +0 -37
  135. exonware/xwnode/queries/executors/advanced/aggregate_executor.py +0 -50
  136. exonware/xwnode/queries/executors/advanced/ask_executor.py +0 -50
  137. exonware/xwnode/queries/executors/advanced/construct_executor.py +0 -50
  138. exonware/xwnode/queries/executors/advanced/describe_executor.py +0 -50
  139. exonware/xwnode/queries/executors/advanced/for_loop_executor.py +0 -50
  140. exonware/xwnode/queries/executors/advanced/foreach_executor.py +0 -50
  141. exonware/xwnode/queries/executors/advanced/join_executor.py +0 -50
  142. exonware/xwnode/queries/executors/advanced/let_executor.py +0 -50
  143. exonware/xwnode/queries/executors/advanced/mutation_executor.py +0 -50
  144. exonware/xwnode/queries/executors/advanced/options_executor.py +0 -50
  145. exonware/xwnode/queries/executors/advanced/pipe_executor.py +0 -50
  146. exonware/xwnode/queries/executors/advanced/subscribe_executor.py +0 -50
  147. exonware/xwnode/queries/executors/advanced/subscription_executor.py +0 -50
  148. exonware/xwnode/queries/executors/advanced/union_executor.py +0 -50
  149. exonware/xwnode/queries/executors/advanced/window_executor.py +0 -51
  150. exonware/xwnode/queries/executors/advanced/with_cte_executor.py +0 -50
  151. exonware/xwnode/queries/executors/aggregation/__init__.py +0 -21
  152. exonware/xwnode/queries/executors/aggregation/avg_executor.py +0 -50
  153. exonware/xwnode/queries/executors/aggregation/count_executor.py +0 -38
  154. exonware/xwnode/queries/executors/aggregation/distinct_executor.py +0 -50
  155. exonware/xwnode/queries/executors/aggregation/group_executor.py +0 -50
  156. exonware/xwnode/queries/executors/aggregation/having_executor.py +0 -50
  157. exonware/xwnode/queries/executors/aggregation/max_executor.py +0 -50
  158. exonware/xwnode/queries/executors/aggregation/min_executor.py +0 -50
  159. exonware/xwnode/queries/executors/aggregation/sum_executor.py +0 -50
  160. exonware/xwnode/queries/executors/aggregation/summarize_executor.py +0 -50
  161. exonware/xwnode/queries/executors/array/__init__.py +0 -9
  162. exonware/xwnode/queries/executors/array/indexing_executor.py +0 -51
  163. exonware/xwnode/queries/executors/array/slicing_executor.py +0 -51
  164. exonware/xwnode/queries/executors/base.py +0 -257
  165. exonware/xwnode/queries/executors/capability_checker.py +0 -204
  166. exonware/xwnode/queries/executors/contracts.py +0 -166
  167. exonware/xwnode/queries/executors/core/__init__.py +0 -17
  168. exonware/xwnode/queries/executors/core/create_executor.py +0 -96
  169. exonware/xwnode/queries/executors/core/delete_executor.py +0 -99
  170. exonware/xwnode/queries/executors/core/drop_executor.py +0 -100
  171. exonware/xwnode/queries/executors/core/insert_executor.py +0 -39
  172. exonware/xwnode/queries/executors/core/select_executor.py +0 -152
  173. exonware/xwnode/queries/executors/core/update_executor.py +0 -102
  174. exonware/xwnode/queries/executors/data/__init__.py +0 -13
  175. exonware/xwnode/queries/executors/data/alter_executor.py +0 -50
  176. exonware/xwnode/queries/executors/data/load_executor.py +0 -50
  177. exonware/xwnode/queries/executors/data/merge_executor.py +0 -50
  178. exonware/xwnode/queries/executors/data/store_executor.py +0 -50
  179. exonware/xwnode/queries/executors/defs.py +0 -93
  180. exonware/xwnode/queries/executors/engine.py +0 -221
  181. exonware/xwnode/queries/executors/errors.py +0 -68
  182. exonware/xwnode/queries/executors/filtering/__init__.py +0 -25
  183. exonware/xwnode/queries/executors/filtering/between_executor.py +0 -80
  184. exonware/xwnode/queries/executors/filtering/filter_executor.py +0 -79
  185. exonware/xwnode/queries/executors/filtering/has_executor.py +0 -70
  186. exonware/xwnode/queries/executors/filtering/in_executor.py +0 -70
  187. exonware/xwnode/queries/executors/filtering/like_executor.py +0 -76
  188. exonware/xwnode/queries/executors/filtering/optional_executor.py +0 -76
  189. exonware/xwnode/queries/executors/filtering/range_executor.py +0 -80
  190. exonware/xwnode/queries/executors/filtering/term_executor.py +0 -77
  191. exonware/xwnode/queries/executors/filtering/values_executor.py +0 -71
  192. exonware/xwnode/queries/executors/filtering/where_executor.py +0 -44
  193. exonware/xwnode/queries/executors/graph/__init__.py +0 -15
  194. exonware/xwnode/queries/executors/graph/in_traverse_executor.py +0 -51
  195. exonware/xwnode/queries/executors/graph/match_executor.py +0 -51
  196. exonware/xwnode/queries/executors/graph/out_executor.py +0 -51
  197. exonware/xwnode/queries/executors/graph/path_executor.py +0 -51
  198. exonware/xwnode/queries/executors/graph/return_executor.py +0 -51
  199. exonware/xwnode/queries/executors/ordering/__init__.py +0 -9
  200. exonware/xwnode/queries/executors/ordering/by_executor.py +0 -50
  201. exonware/xwnode/queries/executors/ordering/order_executor.py +0 -51
  202. exonware/xwnode/queries/executors/projection/__init__.py +0 -9
  203. exonware/xwnode/queries/executors/projection/extend_executor.py +0 -50
  204. exonware/xwnode/queries/executors/projection/project_executor.py +0 -50
  205. exonware/xwnode/queries/executors/registry.py +0 -173
  206. exonware/xwnode/queries/parsers/__init__.py +0 -26
  207. exonware/xwnode/queries/parsers/base.py +0 -86
  208. exonware/xwnode/queries/parsers/contracts.py +0 -46
  209. exonware/xwnode/queries/parsers/errors.py +0 -53
  210. exonware/xwnode/queries/parsers/sql_param_extractor.py +0 -318
  211. exonware/xwnode/queries/strategies/__init__.py +0 -24
  212. exonware/xwnode/queries/strategies/base.py +0 -236
  213. exonware/xwnode/queries/strategies/cql.py +0 -201
  214. exonware/xwnode/queries/strategies/cypher.py +0 -181
  215. exonware/xwnode/queries/strategies/datalog.py +0 -70
  216. exonware/xwnode/queries/strategies/elastic_dsl.py +0 -70
  217. exonware/xwnode/queries/strategies/eql.py +0 -70
  218. exonware/xwnode/queries/strategies/flux.py +0 -70
  219. exonware/xwnode/queries/strategies/gql.py +0 -70
  220. exonware/xwnode/queries/strategies/graphql.py +0 -240
  221. exonware/xwnode/queries/strategies/gremlin.py +0 -181
  222. exonware/xwnode/queries/strategies/hiveql.py +0 -214
  223. exonware/xwnode/queries/strategies/hql.py +0 -70
  224. exonware/xwnode/queries/strategies/jmespath.py +0 -219
  225. exonware/xwnode/queries/strategies/jq.py +0 -66
  226. exonware/xwnode/queries/strategies/json_query.py +0 -66
  227. exonware/xwnode/queries/strategies/jsoniq.py +0 -248
  228. exonware/xwnode/queries/strategies/kql.py +0 -70
  229. exonware/xwnode/queries/strategies/linq.py +0 -238
  230. exonware/xwnode/queries/strategies/logql.py +0 -70
  231. exonware/xwnode/queries/strategies/mql.py +0 -68
  232. exonware/xwnode/queries/strategies/n1ql.py +0 -210
  233. exonware/xwnode/queries/strategies/partiql.py +0 -70
  234. exonware/xwnode/queries/strategies/pig.py +0 -215
  235. exonware/xwnode/queries/strategies/promql.py +0 -70
  236. exonware/xwnode/queries/strategies/sparql.py +0 -220
  237. exonware/xwnode/queries/strategies/sql.py +0 -275
  238. exonware/xwnode/queries/strategies/xml_query.py +0 -66
  239. exonware/xwnode/queries/strategies/xpath.py +0 -223
  240. exonware/xwnode/queries/strategies/xquery.py +0 -258
  241. exonware/xwnode/queries/strategies/xwnode_executor.py +0 -332
  242. exonware/xwnode/queries/strategies/xwquery.py +0 -456
  243. exonware_xwnode-0.0.1.21.dist-info/RECORD +0 -214
  244. /exonware/xwnode/nodes/strategies/{node_ordered_map.py → ordered_map.py} +0 -0
  245. /exonware/xwnode/nodes/strategies/{node_ordered_map_balanced.py → ordered_map_balanced.py} +0 -0
  246. /exonware/xwnode/nodes/strategies/{node_patricia.py → patricia.py} +0 -0
  247. /exonware/xwnode/nodes/strategies/{node_radix_trie.py → radix_trie.py} +0 -0
  248. /exonware/xwnode/nodes/strategies/{node_set_tree.py → set_tree.py} +0 -0
  249. {exonware_xwnode-0.0.1.21.dist-info → exonware_xwnode-0.0.1.23.dist-info}/WHEEL +0 -0
  250. {exonware_xwnode-0.0.1.21.dist-info → exonware_xwnode-0.0.1.23.dist-info}/licenses/LICENSE +0 -0
@@ -9,7 +9,7 @@ memory usage, and optimization recommendations.
9
9
  Company: eXonware.com
10
10
  Author: Eng. Muhammad AlShehri
11
11
  Email: connect@exonware.com
12
- Version: 0.0.1.21
12
+ Version: 0.0.1.23
13
13
  Generation Date: 07-Sep-2025
14
14
  """
15
15
 
@@ -23,8 +23,8 @@ from exonware.xwsystem import get_logger
23
23
 
24
24
  logger = get_logger(__name__)
25
25
 
26
- from ..defs import NodeMode, EdgeMode
27
- from .flyweight import get_flyweight_stats
26
+ from ...defs import NodeMode, EdgeMode
27
+ from ..patterns.flyweight import get_flyweight_stats
28
28
  from .pattern_detector import get_detector
29
29
  from .performance_monitor import get_monitor, get_performance_summary
30
30
 
@@ -536,3 +536,7 @@ def export_metrics(format: str = 'json') -> Union[Dict[str, Any], str]:
536
536
  Exported metrics
537
537
  """
538
538
  return get_metrics_collector().export_metrics(format)
539
+
540
+
541
+ # Usability aliases (Priority #2: Clean, intuitive API)
542
+ Metrics = StrategyMetricsCollector
@@ -10,7 +10,7 @@ selection with sophisticated heuristics.
10
10
  Company: eXonware.com
11
11
  Author: Eng. Muhammad AlShehri
12
12
  Email: connect@exonware.com
13
- Version: 0.0.1.21
13
+ Version: 0.0.1.23
14
14
  Generation Date: 07-Sep-2025
15
15
  """
16
16
 
@@ -24,7 +24,7 @@ from exonware.xwsystem import get_logger
24
24
 
25
25
  logger = get_logger(__name__)
26
26
 
27
- from ..defs import NodeMode, EdgeMode, NodeTrait, EdgeTrait
27
+ from ...defs import NodeMode, EdgeMode, NodeTrait, EdgeTrait
28
28
 
29
29
 
30
30
 
@@ -9,7 +9,7 @@ This enables data-driven strategy selection and performance tuning.
9
9
  Company: eXonware.com
10
10
  Author: Eng. Muhammad AlShehri
11
11
  Email: connect@exonware.com
12
- Version: 0.0.1.21
12
+ Version: 0.0.1.23
13
13
  Generation Date: 07-Sep-2025
14
14
  """
15
15
 
@@ -23,7 +23,7 @@ from exonware.xwsystem import get_logger
23
23
 
24
24
  logger = get_logger(__name__)
25
25
 
26
- from ..defs import NodeMode, EdgeMode
26
+ from ...defs import NodeMode, EdgeMode
27
27
 
28
28
 
29
29
 
@@ -485,3 +485,7 @@ def get_strategy_recommendations(strategy_id: str) -> List[PerformanceRecommenda
485
485
  List of recommendations
486
486
  """
487
487
  return get_monitor().generate_recommendations(strategy_id)
488
+
489
+
490
+ # Usability aliases (Priority #2: Clean, intuitive API)
491
+ PerformanceMonitor = StrategyPerformanceMonitor
@@ -6,7 +6,7 @@ Patterns module for xwnode.
6
6
  Company: eXonware.com
7
7
  Author: Eng. Muhammad AlShehri
8
8
  Email: connect@exonware.com
9
- Version: 0.0.1.21
9
+ Version: 0.0.1.23
10
10
  """
11
11
 
12
12
  # Import and export main components
@@ -18,9 +18,7 @@ _current_dir = Path(__file__).parent
18
18
  for _file in _current_dir.glob('*.py'):
19
19
  if _file.name != '__init__.py' and not _file.name.startswith('_'):
20
20
  _module_name = _file.stem
21
- try:
22
- globals()[_module_name] = importlib.import_module(f'.{_module_name}', package=__name__)
23
- except ImportError:
24
- pass
21
+ # Direct import - no fallback allowed
22
+ globals()[_module_name] = importlib.import_module(f'.{_module_name}', package=__name__)
25
23
 
26
24
  __all__ = []
@@ -16,7 +16,7 @@ from exonware.xwsystem import get_logger
16
16
 
17
17
  logger = get_logger(__name__)
18
18
 
19
- from ..defs import NodeMode, EdgeMode, NodeTrait, EdgeTrait, NODE_STRATEGY_METADATA, EDGE_STRATEGY_METADATA
19
+ from ...defs import NodeMode, EdgeMode, NodeTrait, EdgeTrait, NODE_STRATEGY_METADATA, EDGE_STRATEGY_METADATA
20
20
 
21
21
 
22
22
  @dataclass
@@ -10,7 +10,7 @@ configuration, which is especially important for high-throughput applications.
10
10
  Company: eXonware.com
11
11
  Author: Eng. Muhammad AlShehri
12
12
  Email: connect@exonware.com
13
- Version: 0.0.1.21
13
+ Version: 0.0.1.23
14
14
  Generation Date: 07-Sep-2025
15
15
  """
16
16
 
@@ -23,7 +23,7 @@ from exonware.xwsystem import get_logger
23
23
 
24
24
  logger = get_logger(__name__)
25
25
 
26
- from ..defs import NodeMode, EdgeMode, NodeTrait, EdgeTrait
26
+ from ...defs import NodeMode, EdgeMode, NodeTrait, EdgeTrait
27
27
  from ...nodes.strategies.base import ANodeStrategy
28
28
  from ...edges.strategies.base import AEdgeStrategy
29
29
 
@@ -326,3 +326,7 @@ def get_flyweight_cache_info() -> Dict[str, Any]:
326
326
  Cache information dictionary
327
327
  """
328
328
  return get_flyweight().get_cache_info()
329
+
330
+
331
+ # Usability aliases (Priority #2: Clean, intuitive API)
332
+ Flyweight = StrategyFlyweight
@@ -13,8 +13,9 @@ from exonware.xwsystem import get_logger
13
13
 
14
14
  logger = get_logger(__name__)
15
15
 
16
- from ..defs import NodeMode, EdgeMode, NodeTrait, EdgeTrait, NODE_STRATEGY_METADATA, EDGE_STRATEGY_METADATA, QueryMode, QueryTrait
17
- from ..errors import XWNodeStrategyError, XWNodeError
16
+ from ...defs import NodeMode, EdgeMode, NodeTrait, EdgeTrait, NODE_STRATEGY_METADATA, EDGE_STRATEGY_METADATA
17
+ # Note: QueryMode and QueryTrait are in xwquery.defs module
18
+ from ...errors import XWNodeStrategyError, XWNodeError
18
19
 
19
20
 
20
21
  class StrategyRegistry:
@@ -37,128 +38,222 @@ class StrategyRegistry:
37
38
 
38
39
  # Register default strategies
39
40
  self._register_default_strategies()
40
- self._register_default_query_strategies()
41
41
 
42
42
  def _register_default_strategies(self):
43
43
  """Register default strategy implementations."""
44
44
  # Import default strategies
45
- from .impls.edge_adj_list import xAdjListStrategy
46
- from .impls.edge_adj_matrix import xAdjMatrixStrategy
47
- from .impls.edge_csr import xCSRStrategy
48
- from .impls.edge_dynamic_adj_list import xDynamicAdjListStrategy
49
- from .impls.edge_temporal_edgeset import xTemporalEdgeSetStrategy
50
- from .impls.edge_hyperedge_set import xHyperEdgeSetStrategy
51
- from .impls.edge_rtree import xRTreeStrategy
52
- from .impls.edge_flow_network import xFlowNetworkStrategy
53
- from .impls.edge_neural_graph import xNeuralGraphStrategy
54
- from .impls.edge_csc import xCSCStrategy
55
- from .impls.edge_bidir_wrapper import xBidirWrapperStrategy
56
- from .impls.edge_quadtree import xQuadtreeStrategy
57
- from .impls.edge_coo import xCOOStrategy
58
- from .impls.edge_octree import xOctreeStrategy
59
- from .impls.edge_property_store import xEdgePropertyStoreStrategy
60
- from .impls.edge_tree_graph_basic import xTreeGraphBasicStrategy
61
- from .impls.edge_weighted_graph import xWeightedGraphStrategy
45
+ from ...edges.strategies.adj_list import AdjListStrategy
46
+ from ...edges.strategies.adj_matrix import AdjMatrixStrategy
47
+ from ...edges.strategies.csr import CSRStrategy
48
+ from ...edges.strategies.dynamic_adj_list import DynamicAdjListStrategy
49
+ from ...edges.strategies.temporal_edgeset import TemporalEdgeSetStrategy
50
+ from ...edges.strategies.hyperedge_set import HyperEdgeSetStrategy
51
+ from ...edges.strategies.rtree import RTreeStrategy
52
+ from ...edges.strategies.flow_network import FlowNetworkStrategy
53
+ from ...edges.strategies.neural_graph import NeuralGraphStrategy
54
+ from ...edges.strategies.csc import CSCStrategy
55
+ from ...edges.strategies.bidir_wrapper import BidirWrapperStrategy
56
+ from ...edges.strategies.quadtree import QuadTreeStrategy
57
+ from ...edges.strategies.coo import COOStrategy
58
+ from ...edges.strategies.octree import OctreeStrategy
59
+ from ...edges.strategies.edge_property_store import EdgePropertyStoreStrategy
60
+ from ...edges.strategies.tree_graph_basic import TreeGraphBasicStrategy
61
+ from ...edges.strategies.weighted_graph import WeightedGraphStrategy
62
62
 
63
63
  # Import new strategy implementations
64
- from ...nodes.strategies.node_hash_map import xHashMapStrategy
65
- from ...nodes.strategies.node_array_list import xArrayListStrategy
66
- from ...nodes.strategies.node_trie import xTrieStrategy
67
- from ...nodes.strategies.node_heap import xHeapStrategy
68
- from ...nodes.strategies.node_btree import xBTreeStrategy
69
- from ...nodes.strategies.node_union_find import xUnionFindStrategy
70
- from ...nodes.strategies.node_segment_tree import xSegmentTreeStrategy
71
- from ...nodes.strategies.node_lsm_tree import xLSMTreeStrategy
72
- from ...nodes.strategies.node_fenwick_tree import xFenwickTreeStrategy
73
- from ...nodes.strategies.node_set_hash import xSetHashStrategy
74
- from ...nodes.strategies.node_bloom_filter import xBloomFilterStrategy
75
- from ...nodes.strategies.node_cuckoo_hash import xCuckooHashStrategy
76
- from ...nodes.strategies.node_bitmap import xBitmapStrategy
77
- from ...nodes.strategies.node_roaring_bitmap import xRoaringBitmapStrategy
78
- from ...nodes.strategies.node_suffix_array import xSuffixArrayStrategy
79
- from ...nodes.strategies.node_aho_corasick import xAhoCorasickStrategy
80
- from ...nodes.strategies.node_count_min_sketch import xCountMinSketchStrategy
81
- from ...nodes.strategies.node_hyperloglog import xHyperLogLogStrategy
82
- from ...nodes.strategies.node_set_tree import xSetTreeStrategy
83
- from ...nodes.strategies.node_linked_list import xLinkedListStrategy
84
- from ...nodes.strategies.node_ordered_map import xOrderedMapStrategy
85
- from ...nodes.strategies.node_radix_trie import xRadixTrieStrategy
86
- from ...nodes.strategies.node_patricia import xPatriciaStrategy
87
- from ...nodes.strategies.node_b_plus_tree import xBPlusTreeStrategy
88
- from ...nodes.strategies.node_persistent_tree import xPersistentTreeStrategy
89
- from ...nodes.strategies.node_cow_tree import xCOWTreeStrategy
90
- from ...nodes.strategies.node_skip_list import xSkipListStrategy
91
- from ...nodes.strategies.node_red_black_tree import xRedBlackTreeStrategy
92
- from ...nodes.strategies.node_avl_tree import xAVLTreeStrategy
93
- from ...nodes.strategies.node_treap import xTreapStrategy
94
- from ...nodes.strategies.node_splay_tree import xSplayTreeStrategy
95
- from ...nodes.strategies.node_ordered_map_balanced import xOrderedMapBalancedStrategy
96
- from ...nodes.strategies.node_bitset_dynamic import xBitsetDynamicStrategy
97
- from .impls.edge_block_adj_matrix import xBlockAdjMatrixStrategy
64
+ from ...nodes.strategies.hash_map import HashMapStrategy
65
+ from ...nodes.strategies.array_list import ArrayListStrategy
66
+ from ...nodes.strategies.trie import TrieStrategy
67
+ from ...nodes.strategies.heap import HeapStrategy
68
+ from ...nodes.strategies.b_tree import BTreeStrategy
69
+ from ...nodes.strategies.union_find import UnionFindStrategy
70
+ from ...nodes.strategies.segment_tree import SegmentTreeStrategy
71
+ from ...nodes.strategies.lsm_tree import LSMTreeStrategy
72
+ from ...nodes.strategies.fenwick_tree import FenwickTreeStrategy
73
+ from ...nodes.strategies.set_hash import SetHashStrategy
74
+ from ...nodes.strategies.bloom_filter import BloomFilterStrategy
75
+ from ...nodes.strategies.cuckoo_hash import CuckooHashStrategy
76
+ from ...nodes.strategies.bitmap import BitmapStrategy
77
+ from ...nodes.strategies.roaring_bitmap import RoaringBitmapStrategy
78
+ from ...nodes.strategies.suffix_array import SuffixArrayStrategy
79
+ from ...nodes.strategies.aho_corasick import AhoCorasickStrategy
80
+ from ...nodes.strategies.count_min_sketch import CountMinSketchStrategy
81
+ from ...nodes.strategies.hyperloglog import HyperLogLogStrategy
82
+ from ...nodes.strategies.set_tree import SetTreeStrategy
83
+ from ...nodes.strategies.linked_list import LinkedListStrategy
84
+ from ...nodes.strategies.ordered_map import OrderedMapStrategy
85
+ from ...nodes.strategies.radix_trie import RadixTrieStrategy
86
+ from ...nodes.strategies.patricia import PatriciaStrategy
87
+ from ...nodes.strategies.b_plus_tree import BPlusTreeStrategy
88
+ from ...nodes.strategies.persistent_tree import PersistentTreeStrategy
89
+ from ...nodes.strategies.cow_tree import COWTreeStrategy
90
+ from ...nodes.strategies.skip_list import SkipListStrategy
91
+ from ...nodes.strategies.red_black_tree import RedBlackTreeStrategy
92
+ from ...nodes.strategies.avl_tree import AVLTreeStrategy
93
+ from ...nodes.strategies.treap import TreapStrategy
94
+ from ...nodes.strategies.splay_tree import SplayTreeStrategy
95
+ from ...nodes.strategies.ordered_map_balanced import OrderedMapBalancedStrategy
96
+ from ...nodes.strategies.bitset_dynamic import BitsetDynamicStrategy
97
+ from ...edges.strategies.block_adj_matrix import BlockAdjMatrixStrategy
98
+
99
+ # Import linear data structure strategies
100
+ from ...nodes.strategies.stack import StackStrategy
101
+ from ...nodes.strategies.queue import QueueStrategy
102
+ from ...nodes.strategies.priority_queue import PriorityQueueStrategy
103
+ from ...nodes.strategies.deque import DequeStrategy
104
+
105
+ # Import matrix and graph strategies
106
+ from ...nodes.strategies.sparse_matrix import SparseMatrixStrategy
107
+ from ...nodes.strategies.adjacency_list import AdjacencyListStrategy
108
+
109
+ # Import NEW node strategies
110
+ from ...nodes.strategies.art import ARTStrategy
111
+ from ...nodes.strategies.bw_tree import BwTreeStrategy
112
+ from ...nodes.strategies.hamt import HAMTStrategy
113
+ from ...nodes.strategies.masstree import MasstreeStrategy
114
+ from ...nodes.strategies.extendible_hash import ExtendibleHashStrategy
115
+ from ...nodes.strategies.linear_hash import LinearHashStrategy
116
+ from ...nodes.strategies.t_tree import TTreeStrategy
117
+ from ...nodes.strategies.learned_index import LearnedIndexStrategy
118
+
119
+ # Import NEW edge strategies
120
+ from ...edges.strategies.incidence_matrix import IncidenceMatrixStrategy
121
+ from ...edges.strategies.edge_list import EdgeListStrategy
122
+ from ...edges.strategies.compressed_graph import CompressedGraphStrategy
98
123
 
99
124
  # Import data interchange optimized strategy
100
- from ...nodes.strategies.node_xdata_optimized import DataInterchangeOptimizedStrategy
125
+ from ...nodes.strategies.data_interchange_optimized import DataInterchangeOptimizedStrategy
101
126
 
102
127
  # Register tree-graph hybrid strategies
103
- from ...nodes.strategies.node_tree_graph_hybrid import TreeGraphHybridStrategy
128
+ from ...nodes.strategies.tree_graph_hybrid import TreeGraphHybridStrategy
104
129
  self.register_node_strategy(NodeMode.TREE_GRAPH_HYBRID, TreeGraphHybridStrategy)
105
130
 
106
131
  # Register edge strategies
107
- self.register_edge_strategy(EdgeMode.ADJ_LIST, xAdjListStrategy)
108
- self.register_edge_strategy(EdgeMode.ADJ_MATRIX, xAdjMatrixStrategy)
109
- self.register_edge_strategy(EdgeMode.CSR, xCSRStrategy)
110
- self.register_edge_strategy(EdgeMode.DYNAMIC_ADJ_LIST, xDynamicAdjListStrategy)
111
- self.register_edge_strategy(EdgeMode.TEMPORAL_EDGESET, xTemporalEdgeSetStrategy)
112
- self.register_edge_strategy(EdgeMode.HYPEREDGE_SET, xHyperEdgeSetStrategy)
113
- self.register_edge_strategy(EdgeMode.R_TREE, xRTreeStrategy)
114
- self.register_edge_strategy(EdgeMode.FLOW_NETWORK, xFlowNetworkStrategy)
115
- self.register_edge_strategy(EdgeMode.NEURAL_GRAPH, xNeuralGraphStrategy)
116
- self.register_edge_strategy(EdgeMode.CSC, xCSCStrategy)
117
- self.register_edge_strategy(EdgeMode.BIDIR_WRAPPER, xBidirWrapperStrategy)
118
- self.register_edge_strategy(EdgeMode.QUADTREE, xQuadtreeStrategy)
119
- self.register_edge_strategy(EdgeMode.COO, xCOOStrategy)
120
- self.register_edge_strategy(EdgeMode.OCTREE, xOctreeStrategy)
121
- self.register_edge_strategy(EdgeMode.EDGE_PROPERTY_STORE, xEdgePropertyStoreStrategy)
122
- self.register_edge_strategy(EdgeMode.TREE_GRAPH_BASIC, xTreeGraphBasicStrategy)
123
- self.register_edge_strategy(EdgeMode.WEIGHTED_GRAPH, xWeightedGraphStrategy)
132
+ self.register_edge_strategy(EdgeMode.ADJ_LIST, AdjListStrategy)
133
+ self.register_edge_strategy(EdgeMode.ADJ_MATRIX, AdjMatrixStrategy)
134
+ self.register_edge_strategy(EdgeMode.CSR, CSRStrategy)
135
+ self.register_edge_strategy(EdgeMode.DYNAMIC_ADJ_LIST, DynamicAdjListStrategy)
136
+ self.register_edge_strategy(EdgeMode.TEMPORAL_EDGESET, TemporalEdgeSetStrategy)
137
+ self.register_edge_strategy(EdgeMode.HYPEREDGE_SET, HyperEdgeSetStrategy)
138
+ self.register_edge_strategy(EdgeMode.R_TREE, RTreeStrategy)
139
+ self.register_edge_strategy(EdgeMode.FLOW_NETWORK, FlowNetworkStrategy)
140
+ self.register_edge_strategy(EdgeMode.NEURAL_GRAPH, NeuralGraphStrategy)
141
+ self.register_edge_strategy(EdgeMode.CSC, CSCStrategy)
142
+ self.register_edge_strategy(EdgeMode.BIDIR_WRAPPER, BidirWrapperStrategy)
143
+ self.register_edge_strategy(EdgeMode.QUADTREE, QuadTreeStrategy)
144
+ self.register_edge_strategy(EdgeMode.COO, COOStrategy)
145
+ self.register_edge_strategy(EdgeMode.OCTREE, OctreeStrategy)
146
+ self.register_edge_strategy(EdgeMode.EDGE_PROPERTY_STORE, EdgePropertyStoreStrategy)
147
+ self.register_edge_strategy(EdgeMode.TREE_GRAPH_BASIC, TreeGraphBasicStrategy)
148
+ self.register_edge_strategy(EdgeMode.WEIGHTED_GRAPH, WeightedGraphStrategy)
149
+
150
+ # Register advanced edge strategies
151
+ from ...edges.strategies.k2_tree import K2TreeStrategy
152
+ from ...edges.strategies.bv_graph import BVGraphStrategy
153
+ from ...edges.strategies.hnsw import HNSWStrategy
154
+ from ...edges.strategies.euler_tour import EulerTourStrategy
155
+ from ...edges.strategies.link_cut import LinkCutStrategy
156
+ from ...edges.strategies.hop2_labels import Hop2LabelsStrategy
157
+ from ...edges.strategies.graphblas import GraphBLASStrategy
158
+ from ...edges.strategies.roaring_adj import RoaringAdjStrategy
159
+ from ...edges.strategies.multiplex import MultiplexStrategy
160
+ from ...edges.strategies.bitemporal import BitemporalStrategy
161
+
162
+ self.register_edge_strategy(EdgeMode.K2_TREE, K2TreeStrategy)
163
+ self.register_edge_strategy(EdgeMode.BV_GRAPH, BVGraphStrategy)
164
+ self.register_edge_strategy(EdgeMode.HNSW, HNSWStrategy)
165
+ self.register_edge_strategy(EdgeMode.EULER_TOUR, EulerTourStrategy)
166
+ self.register_edge_strategy(EdgeMode.LINK_CUT, LinkCutStrategy)
167
+ self.register_edge_strategy(EdgeMode.HOP2_LABELS, Hop2LabelsStrategy)
168
+ self.register_edge_strategy(EdgeMode.GRAPHBLAS, GraphBLASStrategy)
169
+ self.register_edge_strategy(EdgeMode.ROARING_ADJ, RoaringAdjStrategy)
170
+ self.register_edge_strategy(EdgeMode.MULTIPLEX, MultiplexStrategy)
171
+ self.register_edge_strategy(EdgeMode.BITEMPORAL, BitemporalStrategy)
124
172
 
125
173
  # Register new node strategies
126
- self.register_node_strategy(NodeMode.HASH_MAP, xHashMapStrategy)
127
- self.register_node_strategy(NodeMode.ARRAY_LIST, xArrayListStrategy)
128
- self.register_node_strategy(NodeMode.TRIE, xTrieStrategy)
129
- self.register_node_strategy(NodeMode.HEAP, xHeapStrategy)
130
- self.register_node_strategy(NodeMode.B_TREE, xBTreeStrategy)
131
- self.register_node_strategy(NodeMode.UNION_FIND, xUnionFindStrategy)
132
- self.register_node_strategy(NodeMode.SEGMENT_TREE, xSegmentTreeStrategy)
133
- self.register_node_strategy(NodeMode.LSM_TREE, xLSMTreeStrategy)
134
- self.register_node_strategy(NodeMode.FENWICK_TREE, xFenwickTreeStrategy)
135
- self.register_node_strategy(NodeMode.SET_HASH, xSetHashStrategy)
136
- self.register_node_strategy(NodeMode.BLOOM_FILTER, xBloomFilterStrategy)
137
- self.register_node_strategy(NodeMode.CUCKOO_HASH, xCuckooHashStrategy)
138
- self.register_node_strategy(NodeMode.BITMAP, xBitmapStrategy)
139
- self.register_node_strategy(NodeMode.ROARING_BITMAP, xRoaringBitmapStrategy)
140
- self.register_node_strategy(NodeMode.SUFFIX_ARRAY, xSuffixArrayStrategy)
141
- self.register_node_strategy(NodeMode.AHO_CORASICK, xAhoCorasickStrategy)
142
- self.register_node_strategy(NodeMode.COUNT_MIN_SKETCH, xCountMinSketchStrategy)
143
- self.register_node_strategy(NodeMode.HYPERLOGLOG, xHyperLogLogStrategy)
144
- self.register_node_strategy(NodeMode.SET_TREE, xSetTreeStrategy)
145
- self.register_node_strategy(NodeMode.LINKED_LIST, xLinkedListStrategy)
146
- self.register_node_strategy(NodeMode.ORDERED_MAP, xOrderedMapStrategy)
147
- self.register_node_strategy(NodeMode.RADIX_TRIE, xRadixTrieStrategy)
148
- self.register_node_strategy(NodeMode.PATRICIA, xPatriciaStrategy)
149
- self.register_node_strategy(NodeMode.B_PLUS_TREE, xBPlusTreeStrategy)
150
- self.register_node_strategy(NodeMode.PERSISTENT_TREE, xPersistentTreeStrategy)
151
- self.register_node_strategy(NodeMode.COW_TREE, xCOWTreeStrategy)
152
- self.register_node_strategy(NodeMode.SKIP_LIST, xSkipListStrategy)
153
- self.register_node_strategy(NodeMode.RED_BLACK_TREE, xRedBlackTreeStrategy)
154
- self.register_node_strategy(NodeMode.AVL_TREE, xAVLTreeStrategy)
155
- self.register_node_strategy(NodeMode.TREAP, xTreapStrategy)
156
- self.register_node_strategy(NodeMode.SPLAY_TREE, xSplayTreeStrategy)
157
- self.register_node_strategy(NodeMode.ORDERED_MAP_BALANCED, xOrderedMapBalancedStrategy)
158
- self.register_node_strategy(NodeMode.BITSET_DYNAMIC, xBitsetDynamicStrategy)
174
+ self.register_node_strategy(NodeMode.HASH_MAP, HashMapStrategy)
175
+ self.register_node_strategy(NodeMode.ARRAY_LIST, ArrayListStrategy)
176
+ self.register_node_strategy(NodeMode.TRIE, TrieStrategy)
177
+ self.register_node_strategy(NodeMode.HEAP, HeapStrategy)
178
+ self.register_node_strategy(NodeMode.B_TREE, BTreeStrategy)
179
+ self.register_node_strategy(NodeMode.UNION_FIND, UnionFindStrategy)
180
+ self.register_node_strategy(NodeMode.SEGMENT_TREE, SegmentTreeStrategy)
181
+ self.register_node_strategy(NodeMode.LSM_TREE, LSMTreeStrategy)
182
+ self.register_node_strategy(NodeMode.FENWICK_TREE, FenwickTreeStrategy)
183
+ self.register_node_strategy(NodeMode.SET_HASH, SetHashStrategy)
184
+ self.register_node_strategy(NodeMode.BLOOM_FILTER, BloomFilterStrategy)
185
+ self.register_node_strategy(NodeMode.CUCKOO_HASH, CuckooHashStrategy)
186
+ self.register_node_strategy(NodeMode.BITMAP, BitmapStrategy)
187
+ self.register_node_strategy(NodeMode.ROARING_BITMAP, RoaringBitmapStrategy)
188
+ self.register_node_strategy(NodeMode.SUFFIX_ARRAY, SuffixArrayStrategy)
189
+ self.register_node_strategy(NodeMode.AHO_CORASICK, AhoCorasickStrategy)
190
+ self.register_node_strategy(NodeMode.COUNT_MIN_SKETCH, CountMinSketchStrategy)
191
+ self.register_node_strategy(NodeMode.HYPERLOGLOG, HyperLogLogStrategy)
192
+ self.register_node_strategy(NodeMode.SET_TREE, SetTreeStrategy)
193
+ self.register_node_strategy(NodeMode.LINKED_LIST, LinkedListStrategy)
194
+ self.register_node_strategy(NodeMode.ORDERED_MAP, OrderedMapStrategy)
195
+ self.register_node_strategy(NodeMode.RADIX_TRIE, RadixTrieStrategy)
196
+ self.register_node_strategy(NodeMode.PATRICIA, PatriciaStrategy)
197
+ self.register_node_strategy(NodeMode.B_PLUS_TREE, BPlusTreeStrategy)
198
+ self.register_node_strategy(NodeMode.PERSISTENT_TREE, PersistentTreeStrategy)
199
+ self.register_node_strategy(NodeMode.COW_TREE, COWTreeStrategy)
200
+ self.register_node_strategy(NodeMode.SKIP_LIST, SkipListStrategy)
201
+ self.register_node_strategy(NodeMode.RED_BLACK_TREE, RedBlackTreeStrategy)
202
+ self.register_node_strategy(NodeMode.AVL_TREE, AVLTreeStrategy)
203
+ self.register_node_strategy(NodeMode.TREAP, TreapStrategy)
204
+ self.register_node_strategy(NodeMode.SPLAY_TREE, SplayTreeStrategy)
205
+ self.register_node_strategy(NodeMode.ORDERED_MAP_BALANCED, OrderedMapBalancedStrategy)
206
+ self.register_node_strategy(NodeMode.BITSET_DYNAMIC, BitsetDynamicStrategy)
207
+
208
+ # Register linear data structure strategies
209
+ self.register_node_strategy(NodeMode.STACK, StackStrategy)
210
+ self.register_node_strategy(NodeMode.QUEUE, QueueStrategy)
211
+ self.register_node_strategy(NodeMode.PRIORITY_QUEUE, PriorityQueueStrategy)
212
+ self.register_node_strategy(NodeMode.DEQUE, DequeStrategy)
213
+
214
+ # Register matrix and graph strategies
215
+ self.register_node_strategy(NodeMode.SPARSE_MATRIX, SparseMatrixStrategy)
216
+ self.register_node_strategy(NodeMode.ADJACENCY_LIST, AdjacencyListStrategy)
217
+
218
+ # Register NEW node strategies
219
+ self.register_node_strategy(NodeMode.ART, ARTStrategy)
220
+ self.register_node_strategy(NodeMode.BW_TREE, BwTreeStrategy)
221
+ self.register_node_strategy(NodeMode.HAMT, HAMTStrategy)
222
+ self.register_node_strategy(NodeMode.MASSTREE, MasstreeStrategy)
223
+ self.register_node_strategy(NodeMode.EXTENDIBLE_HASH, ExtendibleHashStrategy)
224
+ self.register_node_strategy(NodeMode.LINEAR_HASH, LinearHashStrategy)
225
+ self.register_node_strategy(NodeMode.T_TREE, TTreeStrategy)
226
+ self.register_node_strategy(NodeMode.LEARNED_INDEX, LearnedIndexStrategy)
227
+
228
+ # Register data interchange optimized strategy
229
+ self.register_node_strategy(NodeMode.DATA_INTERCHANGE_OPTIMIZED, DataInterchangeOptimizedStrategy)
230
+
231
+ # Register advanced specialized node strategies
232
+ from ...nodes.strategies.veb_tree import VebTreeStrategy
233
+ from ...nodes.strategies.dawg import DawgStrategy
234
+ from ...nodes.strategies.hopscotch_hash import HopscotchHashStrategy
235
+ from ...nodes.strategies.interval_tree import IntervalTreeStrategy
236
+ from ...nodes.strategies.kd_tree import KdTreeStrategy
237
+ from ...nodes.strategies.rope import RopeStrategy
238
+ from ...nodes.strategies.crdt_map import CRDTMapStrategy
239
+ from ...nodes.strategies.bloomier_filter import BloomierFilterStrategy
240
+
241
+ self.register_node_strategy(NodeMode.VEB_TREE, VebTreeStrategy)
242
+ self.register_node_strategy(NodeMode.DAWG, DawgStrategy)
243
+ self.register_node_strategy(NodeMode.HOPSCOTCH_HASH, HopscotchHashStrategy)
244
+ self.register_node_strategy(NodeMode.INTERVAL_TREE, IntervalTreeStrategy)
245
+ self.register_node_strategy(NodeMode.KD_TREE, KdTreeStrategy)
246
+ self.register_node_strategy(NodeMode.ROPE, RopeStrategy)
247
+ self.register_node_strategy(NodeMode.CRDT_MAP, CRDTMapStrategy)
248
+ self.register_node_strategy(NodeMode.BLOOMIER_FILTER, BloomierFilterStrategy)
159
249
 
160
250
  # Edge strategies
161
- self.register_edge_strategy(EdgeMode.BLOCK_ADJ_MATRIX, xBlockAdjMatrixStrategy)
251
+ self.register_edge_strategy(EdgeMode.BLOCK_ADJ_MATRIX, BlockAdjMatrixStrategy)
252
+
253
+ # Register NEW edge strategies
254
+ self.register_edge_strategy(EdgeMode.INCIDENCE_MATRIX, IncidenceMatrixStrategy)
255
+ self.register_edge_strategy(EdgeMode.EDGE_LIST, EdgeListStrategy)
256
+ self.register_edge_strategy(EdgeMode.COMPRESSED_GRAPH, CompressedGraphStrategy)
162
257
 
163
258
  # Register data interchange optimized strategy factory
164
259
  # Note: This will be used by strategy manager when DATA_INTERCHANGE_OPTIMIZED preset is detected
@@ -166,87 +261,11 @@ class StrategyRegistry:
166
261
 
167
262
  logger.info("✅ Registered default strategies")
168
263
 
169
- def _register_default_query_strategies(self):
170
- """Register default query strategy implementations."""
171
- # Import query strategies
172
- from ...queries.strategies.sql import SQLStrategy
173
- from ...queries.strategies.graphql import GraphQLStrategy
174
- from ...queries.strategies.cypher import CypherStrategy
175
- from ...queries.strategies.sparql import SPARQLStrategy
176
- from ...queries.strategies.json_query import JSONQueryStrategy
177
- from ...queries.strategies.xml_query import XMLQueryStrategy
178
- from ...queries.strategies.xpath import XPathStrategy
179
- from ...queries.strategies.xquery import XQueryStrategy
180
- from ...queries.strategies.jq import JQStrategy
181
- from ...queries.strategies.jmespath import JMESPathStrategy
182
- from ...queries.strategies.jsoniq import JSONiqStrategy
183
- from ...queries.strategies.gremlin import GremlinStrategy
184
- from ...queries.strategies.elastic_dsl import ElasticDSLStrategy
185
- from ...queries.strategies.eql import EQLStrategy
186
- from ...queries.strategies.flux import FluxStrategy
187
- from ...queries.strategies.promql import PromQLStrategy
188
- from ...queries.strategies.logql import LogQLStrategy
189
- # from ...queries.strategies.spl import SPLStrategy # TODO: Implement SPL strategy
190
- from ...queries.strategies.kql import KQLStrategy
191
- from ...queries.strategies.cql import CQLStrategy
192
- from ...queries.strategies.n1ql import N1QLStrategy
193
- from ...queries.strategies.hiveql import HiveQLStrategy
194
- from ...queries.strategies.pig import PigStrategy
195
- from ...queries.strategies.mql import MQLStrategy
196
- from ...queries.strategies.partiql import PartiQLStrategy
197
- from ...queries.strategies.linq import LINQStrategy
198
- from ...queries.strategies.hql import HQLStrategy
199
- from ...queries.strategies.datalog import DatalogStrategy
200
- # from ...queries.strategies.ksql import KSQLStrategy # TODO: Implement KSQL strategy
201
- from ...queries.strategies.gql import GQLStrategy
202
- # from ...queries.strategies.trino_sql import TrinoSQLStrategy # TODO: Implement TrinoSQL strategy
203
- # from ...queries.strategies.bigquery_sql import BigQuerySQLStrategy # TODO: Implement BigQuerySQL strategy
204
- # from ...queries.strategies.snowflake_sql import SnowflakeSQLStrategy # TODO: Implement SnowflakeSQL strategy
205
- # from ...queries.strategies.lucene import LuceneStrategy # TODO: Implement Lucene strategy
206
-
207
- # Register query strategies
208
- self.register_query_strategy("SQL", SQLStrategy)
209
- self.register_query_strategy("GRAPHQL", GraphQLStrategy)
210
- self.register_query_strategy("CYPHER", CypherStrategy)
211
- self.register_query_strategy("SPARQL", SPARQLStrategy)
212
- self.register_query_strategy("JSON_QUERY", JSONQueryStrategy)
213
- self.register_query_strategy("XML_QUERY", XMLQueryStrategy)
214
- self.register_query_strategy("XPATH", XPathStrategy)
215
- self.register_query_strategy("XQUERY", XQueryStrategy)
216
- self.register_query_strategy("JQ", JQStrategy)
217
- self.register_query_strategy("JMESPATH", JMESPathStrategy)
218
- self.register_query_strategy("JSONIQ", JSONiqStrategy)
219
- self.register_query_strategy("GREMLIN", GremlinStrategy)
220
- self.register_query_strategy("ELASTIC_DSL", ElasticDSLStrategy)
221
- self.register_query_strategy("EQL", EQLStrategy)
222
- self.register_query_strategy("FLUX", FluxStrategy)
223
- self.register_query_strategy("PROMQL", PromQLStrategy)
224
- self.register_query_strategy("LOGQL", LogQLStrategy)
225
- # self.register_query_strategy("SPL", SPLStrategy) # TODO: Implement SPL strategy
226
- self.register_query_strategy("KQL", KQLStrategy)
227
- self.register_query_strategy("CQL", CQLStrategy)
228
- self.register_query_strategy("N1QL", N1QLStrategy)
229
- self.register_query_strategy("HIVEQL", HiveQLStrategy)
230
- self.register_query_strategy("PIG", PigStrategy)
231
- self.register_query_strategy("MQL", MQLStrategy)
232
- self.register_query_strategy("PARTIQL", PartiQLStrategy)
233
- self.register_query_strategy("LINQ", LINQStrategy)
234
- self.register_query_strategy("HQL", HQLStrategy)
235
- self.register_query_strategy("DATALOG", DatalogStrategy)
236
- # self.register_query_strategy("KSQL", KSQLStrategy) # TODO: Implement KSQL strategy
237
- self.register_query_strategy("GQL", GQLStrategy)
238
- # self.register_query_strategy("TRINO_SQL", TrinoSQLStrategy) # TODO: Implement TrinoSQL strategy
239
- # self.register_query_strategy("BIGQUERY_SQL", BigQuerySQLStrategy) # TODO: Implement BigQuerySQL strategy
240
- # self.register_query_strategy("SNOWFLAKE_SQL", SnowflakeSQLStrategy) # TODO: Implement SnowflakeSQL strategy
241
- # self.register_query_strategy("LUCENE", LuceneStrategy) # TODO: Implement Lucene strategy
242
-
243
- logger.info("✅ Registered default query strategies")
244
-
245
264
  def register_data_interchange_optimized_factory(self):
246
265
  """Register special factory for DATA_INTERCHANGE_OPTIMIZED preset handling."""
247
266
  # We'll store this in a special attribute for the strategy manager to use
248
267
  def data_interchange_factory(**options):
249
- from ...nodes.strategies.node_xdata_optimized import DataInterchangeOptimizedStrategy
268
+ from ...nodes.strategies.data_interchange_optimized import DataInterchangeOptimizedStrategy
250
269
  return DataInterchangeOptimizedStrategy(NodeTrait.INDEXED, **options)
251
270
 
252
271
  self._data_interchange_optimized_factory = data_interchange_factory
@@ -6,21 +6,35 @@ Utils module for xwnode.
6
6
  Company: eXonware.com
7
7
  Author: Eng. Muhammad AlShehri
8
8
  Email: connect@exonware.com
9
- Version: 0.0.1.21
9
+ Version: 0.0.1.23
10
10
  """
11
11
 
12
12
  # Import and export main components
13
13
  from pathlib import Path
14
14
  import importlib
15
15
 
16
- # Auto-discover and import all modules
17
- _current_dir = Path(__file__).parent
18
- for _file in _current_dir.glob('*.py'):
19
- if _file.name != '__init__.py' and not _file.name.startswith('_'):
20
- _module_name = _file.stem
21
- try:
22
- globals()[_module_name] = importlib.import_module(f'.{_module_name}', package=__name__)
23
- except ImportError:
24
- pass
16
+ # Import all utilities from utils.py
17
+ from .utils import (
18
+ PathParser, TrieNode, UnionFind, MinHeap,
19
+ recursive_to_native, is_sequential_numeric_keys, calculate_structural_hash,
20
+ validate_traits, PerformanceTracker, ObjectPool,
21
+ create_path_parser, create_performance_tracker, create_object_pool,
22
+ create_basic_metrics, create_basic_backend_info,
23
+ is_list_like, safe_to_native_conversion, create_strategy_logger,
24
+ validate_strategy_options, create_size_tracker, update_size_tracker,
25
+ create_access_tracker, record_access, get_access_metrics
26
+ )
25
27
 
26
- __all__ = []
28
+ # Import all from simple.py
29
+ from .simple import *
30
+
31
+ __all__ = [
32
+ 'PathParser', 'TrieNode', 'UnionFind', 'MinHeap',
33
+ 'recursive_to_native', 'is_sequential_numeric_keys', 'calculate_structural_hash',
34
+ 'validate_traits', 'PerformanceTracker', 'ObjectPool',
35
+ 'create_path_parser', 'create_performance_tracker', 'create_object_pool',
36
+ 'create_basic_metrics', 'create_basic_backend_info',
37
+ 'is_list_like', 'safe_to_native_conversion', 'create_strategy_logger',
38
+ 'validate_strategy_options', 'create_size_tracker', 'update_size_tracker',
39
+ 'create_access_tracker', 'record_access', 'get_access_metrics'
40
+ ]
@@ -3,7 +3,7 @@ Simple node strategy implementation.
3
3
  """
4
4
 
5
5
  from typing import Any, Iterator, Optional, List, Dict, Union
6
- from ..contracts import iNodeStrategy, NodeTrait
6
+ from ...contracts import iNodeStrategy, NodeTrait
7
7
 
8
8
 
9
9
  class SimpleNodeStrategy(iNodeStrategy):
exonware/xwnode/config.py CHANGED
@@ -11,14 +11,9 @@ import threading
11
11
  from dataclasses import dataclass, fields
12
12
  from typing import Optional
13
13
 
14
- # Assuming xSystem is in the path. If not, this will gracefully be handled.
15
- try:
16
- from exonware.xwsystem import get_logger
17
- logger = get_logger('xwnode.config')
18
- except (ImportError, TypeError):
19
- # Fallback logger if xwsystem is not available
20
- import logging
21
- logger = logging.getLogger('xwnode.config')
14
+ # Direct import - xwsystem is a required dependency
15
+ from exonware.xwsystem import get_logger
16
+ logger = get_logger('xwnode.config')
22
17
 
23
18
  from .errors import XWNodeValueError
24
19