exonware-xwnode 0.0.1.22__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.
- exonware/__init__.py +1 -1
- exonware/xwnode/__init__.py +18 -5
- exonware/xwnode/add_strategy_types.py +165 -0
- exonware/xwnode/common/__init__.py +1 -1
- exonware/xwnode/common/graph/__init__.py +30 -0
- exonware/xwnode/common/graph/caching.py +131 -0
- exonware/xwnode/common/graph/contracts.py +100 -0
- exonware/xwnode/common/graph/errors.py +44 -0
- exonware/xwnode/common/graph/indexing.py +260 -0
- exonware/xwnode/common/graph/manager.py +568 -0
- exonware/xwnode/common/management/__init__.py +3 -5
- exonware/xwnode/common/management/manager.py +2 -2
- exonware/xwnode/common/management/migration.py +3 -3
- exonware/xwnode/common/monitoring/__init__.py +3 -5
- exonware/xwnode/common/monitoring/metrics.py +6 -2
- exonware/xwnode/common/monitoring/pattern_detector.py +1 -1
- exonware/xwnode/common/monitoring/performance_monitor.py +5 -1
- exonware/xwnode/common/patterns/__init__.py +3 -5
- exonware/xwnode/common/patterns/flyweight.py +5 -1
- exonware/xwnode/common/patterns/registry.py +202 -183
- exonware/xwnode/common/utils/__init__.py +25 -11
- exonware/xwnode/common/utils/simple.py +1 -1
- exonware/xwnode/config.py +3 -8
- exonware/xwnode/contracts.py +4 -105
- exonware/xwnode/defs.py +413 -159
- exonware/xwnode/edges/strategies/__init__.py +86 -4
- exonware/xwnode/edges/strategies/_base_edge.py +2 -2
- exonware/xwnode/edges/strategies/adj_list.py +287 -121
- exonware/xwnode/edges/strategies/adj_matrix.py +316 -222
- exonware/xwnode/edges/strategies/base.py +1 -1
- exonware/xwnode/edges/strategies/{edge_bidir_wrapper.py → bidir_wrapper.py} +45 -4
- exonware/xwnode/edges/strategies/bitemporal.py +520 -0
- exonware/xwnode/edges/strategies/{edge_block_adj_matrix.py → block_adj_matrix.py} +77 -6
- exonware/xwnode/edges/strategies/bv_graph.py +664 -0
- exonware/xwnode/edges/strategies/compressed_graph.py +217 -0
- exonware/xwnode/edges/strategies/{edge_coo.py → coo.py} +46 -4
- exonware/xwnode/edges/strategies/{edge_csc.py → csc.py} +45 -4
- exonware/xwnode/edges/strategies/{edge_csr.py → csr.py} +94 -12
- exonware/xwnode/edges/strategies/{edge_dynamic_adj_list.py → dynamic_adj_list.py} +46 -4
- exonware/xwnode/edges/strategies/edge_list.py +168 -0
- exonware/xwnode/edges/strategies/edge_property_store.py +2 -2
- exonware/xwnode/edges/strategies/euler_tour.py +560 -0
- exonware/xwnode/edges/strategies/{edge_flow_network.py → flow_network.py} +2 -2
- exonware/xwnode/edges/strategies/graphblas.py +449 -0
- exonware/xwnode/edges/strategies/hnsw.py +637 -0
- exonware/xwnode/edges/strategies/hop2_labels.py +467 -0
- exonware/xwnode/edges/strategies/{edge_hyperedge_set.py → hyperedge_set.py} +2 -2
- exonware/xwnode/edges/strategies/incidence_matrix.py +250 -0
- exonware/xwnode/edges/strategies/k2_tree.py +613 -0
- exonware/xwnode/edges/strategies/link_cut.py +626 -0
- exonware/xwnode/edges/strategies/multiplex.py +532 -0
- exonware/xwnode/edges/strategies/{edge_neural_graph.py → neural_graph.py} +2 -2
- exonware/xwnode/edges/strategies/{edge_octree.py → octree.py} +69 -11
- exonware/xwnode/edges/strategies/{edge_quadtree.py → quadtree.py} +66 -10
- exonware/xwnode/edges/strategies/roaring_adj.py +438 -0
- exonware/xwnode/edges/strategies/{edge_rtree.py → rtree.py} +43 -5
- exonware/xwnode/edges/strategies/{edge_temporal_edgeset.py → temporal_edgeset.py} +24 -5
- exonware/xwnode/edges/strategies/{edge_tree_graph_basic.py → tree_graph_basic.py} +78 -7
- exonware/xwnode/edges/strategies/{edge_weighted_graph.py → weighted_graph.py} +188 -10
- exonware/xwnode/errors.py +3 -6
- exonware/xwnode/facade.py +20 -20
- exonware/xwnode/nodes/strategies/__init__.py +29 -9
- exonware/xwnode/nodes/strategies/adjacency_list.py +650 -177
- exonware/xwnode/nodes/strategies/aho_corasick.py +358 -183
- exonware/xwnode/nodes/strategies/array_list.py +36 -3
- exonware/xwnode/nodes/strategies/art.py +581 -0
- exonware/xwnode/nodes/strategies/{node_avl_tree.py → avl_tree.py} +77 -6
- exonware/xwnode/nodes/strategies/{node_b_plus_tree.py → b_plus_tree.py} +81 -40
- exonware/xwnode/nodes/strategies/{node_btree.py → b_tree.py} +79 -9
- exonware/xwnode/nodes/strategies/base.py +469 -98
- exonware/xwnode/nodes/strategies/{node_bitmap.py → bitmap.py} +12 -12
- exonware/xwnode/nodes/strategies/{node_bitset_dynamic.py → bitset_dynamic.py} +11 -11
- exonware/xwnode/nodes/strategies/{node_bloom_filter.py → bloom_filter.py} +15 -2
- exonware/xwnode/nodes/strategies/bloomier_filter.py +519 -0
- exonware/xwnode/nodes/strategies/bw_tree.py +531 -0
- exonware/xwnode/nodes/strategies/contracts.py +1 -1
- exonware/xwnode/nodes/strategies/{node_count_min_sketch.py → count_min_sketch.py} +3 -2
- exonware/xwnode/nodes/strategies/{node_cow_tree.py → cow_tree.py} +135 -13
- exonware/xwnode/nodes/strategies/crdt_map.py +629 -0
- exonware/xwnode/nodes/strategies/{node_cuckoo_hash.py → cuckoo_hash.py} +2 -2
- exonware/xwnode/nodes/strategies/{node_xdata_optimized.py → data_interchange_optimized.py} +21 -4
- exonware/xwnode/nodes/strategies/dawg.py +876 -0
- exonware/xwnode/nodes/strategies/deque.py +321 -153
- exonware/xwnode/nodes/strategies/extendible_hash.py +93 -0
- exonware/xwnode/nodes/strategies/{node_fenwick_tree.py → fenwick_tree.py} +111 -19
- exonware/xwnode/nodes/strategies/hamt.py +403 -0
- exonware/xwnode/nodes/strategies/hash_map.py +354 -67
- exonware/xwnode/nodes/strategies/heap.py +105 -5
- exonware/xwnode/nodes/strategies/hopscotch_hash.py +525 -0
- exonware/xwnode/nodes/strategies/{node_hyperloglog.py → hyperloglog.py} +6 -5
- exonware/xwnode/nodes/strategies/interval_tree.py +742 -0
- exonware/xwnode/nodes/strategies/kd_tree.py +703 -0
- exonware/xwnode/nodes/strategies/learned_index.py +533 -0
- exonware/xwnode/nodes/strategies/linear_hash.py +93 -0
- exonware/xwnode/nodes/strategies/linked_list.py +316 -119
- exonware/xwnode/nodes/strategies/{node_lsm_tree.py → lsm_tree.py} +219 -15
- exonware/xwnode/nodes/strategies/masstree.py +130 -0
- exonware/xwnode/nodes/strategies/{node_persistent_tree.py → persistent_tree.py} +149 -9
- exonware/xwnode/nodes/strategies/priority_queue.py +544 -132
- exonware/xwnode/nodes/strategies/queue.py +249 -120
- exonware/xwnode/nodes/strategies/{node_red_black_tree.py → red_black_tree.py} +183 -72
- exonware/xwnode/nodes/strategies/{node_roaring_bitmap.py → roaring_bitmap.py} +19 -6
- exonware/xwnode/nodes/strategies/rope.py +717 -0
- exonware/xwnode/nodes/strategies/{node_segment_tree.py → segment_tree.py} +106 -106
- exonware/xwnode/nodes/strategies/{node_set_hash.py → set_hash.py} +30 -29
- exonware/xwnode/nodes/strategies/{node_skip_list.py → skip_list.py} +74 -6
- exonware/xwnode/nodes/strategies/sparse_matrix.py +427 -131
- exonware/xwnode/nodes/strategies/{node_splay_tree.py → splay_tree.py} +55 -6
- exonware/xwnode/nodes/strategies/stack.py +244 -112
- exonware/xwnode/nodes/strategies/{node_suffix_array.py → suffix_array.py} +5 -1
- exonware/xwnode/nodes/strategies/t_tree.py +94 -0
- exonware/xwnode/nodes/strategies/{node_treap.py → treap.py} +75 -6
- exonware/xwnode/nodes/strategies/{node_tree_graph_hybrid.py → tree_graph_hybrid.py} +46 -5
- exonware/xwnode/nodes/strategies/trie.py +153 -9
- exonware/xwnode/nodes/strategies/union_find.py +111 -5
- exonware/xwnode/nodes/strategies/veb_tree.py +856 -0
- exonware/xwnode/strategies/__init__.py +5 -51
- exonware/xwnode/version.py +3 -3
- {exonware_xwnode-0.0.1.22.dist-info → exonware_xwnode-0.0.1.23.dist-info}/METADATA +23 -3
- exonware_xwnode-0.0.1.23.dist-info/RECORD +130 -0
- exonware/xwnode/edges/strategies/edge_adj_list.py +0 -353
- exonware/xwnode/edges/strategies/edge_adj_matrix.py +0 -445
- exonware/xwnode/nodes/strategies/_base_node.py +0 -307
- exonware/xwnode/nodes/strategies/node_aho_corasick.py +0 -525
- exonware/xwnode/nodes/strategies/node_array_list.py +0 -179
- exonware/xwnode/nodes/strategies/node_hash_map.py +0 -273
- exonware/xwnode/nodes/strategies/node_heap.py +0 -196
- exonware/xwnode/nodes/strategies/node_linked_list.py +0 -413
- exonware/xwnode/nodes/strategies/node_trie.py +0 -257
- exonware/xwnode/nodes/strategies/node_union_find.py +0 -192
- exonware/xwnode/queries/executors/__init__.py +0 -47
- exonware/xwnode/queries/executors/advanced/__init__.py +0 -37
- exonware/xwnode/queries/executors/advanced/aggregate_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/ask_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/construct_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/describe_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/for_loop_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/foreach_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/join_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/let_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/mutation_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/options_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/pipe_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/subscribe_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/subscription_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/union_executor.py +0 -50
- exonware/xwnode/queries/executors/advanced/window_executor.py +0 -51
- exonware/xwnode/queries/executors/advanced/with_cte_executor.py +0 -50
- exonware/xwnode/queries/executors/aggregation/__init__.py +0 -21
- exonware/xwnode/queries/executors/aggregation/avg_executor.py +0 -50
- exonware/xwnode/queries/executors/aggregation/count_executor.py +0 -38
- exonware/xwnode/queries/executors/aggregation/distinct_executor.py +0 -50
- exonware/xwnode/queries/executors/aggregation/group_executor.py +0 -50
- exonware/xwnode/queries/executors/aggregation/having_executor.py +0 -50
- exonware/xwnode/queries/executors/aggregation/max_executor.py +0 -50
- exonware/xwnode/queries/executors/aggregation/min_executor.py +0 -50
- exonware/xwnode/queries/executors/aggregation/sum_executor.py +0 -50
- exonware/xwnode/queries/executors/aggregation/summarize_executor.py +0 -50
- exonware/xwnode/queries/executors/array/__init__.py +0 -9
- exonware/xwnode/queries/executors/array/indexing_executor.py +0 -51
- exonware/xwnode/queries/executors/array/slicing_executor.py +0 -51
- exonware/xwnode/queries/executors/base.py +0 -257
- exonware/xwnode/queries/executors/capability_checker.py +0 -204
- exonware/xwnode/queries/executors/contracts.py +0 -166
- exonware/xwnode/queries/executors/core/__init__.py +0 -17
- exonware/xwnode/queries/executors/core/create_executor.py +0 -96
- exonware/xwnode/queries/executors/core/delete_executor.py +0 -99
- exonware/xwnode/queries/executors/core/drop_executor.py +0 -100
- exonware/xwnode/queries/executors/core/insert_executor.py +0 -39
- exonware/xwnode/queries/executors/core/select_executor.py +0 -152
- exonware/xwnode/queries/executors/core/update_executor.py +0 -102
- exonware/xwnode/queries/executors/data/__init__.py +0 -13
- exonware/xwnode/queries/executors/data/alter_executor.py +0 -50
- exonware/xwnode/queries/executors/data/load_executor.py +0 -50
- exonware/xwnode/queries/executors/data/merge_executor.py +0 -50
- exonware/xwnode/queries/executors/data/store_executor.py +0 -50
- exonware/xwnode/queries/executors/defs.py +0 -93
- exonware/xwnode/queries/executors/engine.py +0 -221
- exonware/xwnode/queries/executors/errors.py +0 -68
- exonware/xwnode/queries/executors/filtering/__init__.py +0 -25
- exonware/xwnode/queries/executors/filtering/between_executor.py +0 -80
- exonware/xwnode/queries/executors/filtering/filter_executor.py +0 -79
- exonware/xwnode/queries/executors/filtering/has_executor.py +0 -70
- exonware/xwnode/queries/executors/filtering/in_executor.py +0 -70
- exonware/xwnode/queries/executors/filtering/like_executor.py +0 -76
- exonware/xwnode/queries/executors/filtering/optional_executor.py +0 -76
- exonware/xwnode/queries/executors/filtering/range_executor.py +0 -80
- exonware/xwnode/queries/executors/filtering/term_executor.py +0 -77
- exonware/xwnode/queries/executors/filtering/values_executor.py +0 -71
- exonware/xwnode/queries/executors/filtering/where_executor.py +0 -44
- exonware/xwnode/queries/executors/graph/__init__.py +0 -15
- exonware/xwnode/queries/executors/graph/in_traverse_executor.py +0 -51
- exonware/xwnode/queries/executors/graph/match_executor.py +0 -51
- exonware/xwnode/queries/executors/graph/out_executor.py +0 -51
- exonware/xwnode/queries/executors/graph/path_executor.py +0 -51
- exonware/xwnode/queries/executors/graph/return_executor.py +0 -51
- exonware/xwnode/queries/executors/ordering/__init__.py +0 -9
- exonware/xwnode/queries/executors/ordering/by_executor.py +0 -50
- exonware/xwnode/queries/executors/ordering/order_executor.py +0 -51
- exonware/xwnode/queries/executors/projection/__init__.py +0 -9
- exonware/xwnode/queries/executors/projection/extend_executor.py +0 -50
- exonware/xwnode/queries/executors/projection/project_executor.py +0 -50
- exonware/xwnode/queries/executors/registry.py +0 -173
- exonware/xwnode/queries/parsers/__init__.py +0 -26
- exonware/xwnode/queries/parsers/base.py +0 -86
- exonware/xwnode/queries/parsers/contracts.py +0 -46
- exonware/xwnode/queries/parsers/errors.py +0 -53
- exonware/xwnode/queries/parsers/sql_param_extractor.py +0 -318
- exonware/xwnode/queries/strategies/__init__.py +0 -24
- exonware/xwnode/queries/strategies/base.py +0 -236
- exonware/xwnode/queries/strategies/cql.py +0 -201
- exonware/xwnode/queries/strategies/cypher.py +0 -181
- exonware/xwnode/queries/strategies/datalog.py +0 -70
- exonware/xwnode/queries/strategies/elastic_dsl.py +0 -70
- exonware/xwnode/queries/strategies/eql.py +0 -70
- exonware/xwnode/queries/strategies/flux.py +0 -70
- exonware/xwnode/queries/strategies/gql.py +0 -70
- exonware/xwnode/queries/strategies/graphql.py +0 -240
- exonware/xwnode/queries/strategies/gremlin.py +0 -181
- exonware/xwnode/queries/strategies/hiveql.py +0 -214
- exonware/xwnode/queries/strategies/hql.py +0 -70
- exonware/xwnode/queries/strategies/jmespath.py +0 -219
- exonware/xwnode/queries/strategies/jq.py +0 -66
- exonware/xwnode/queries/strategies/json_query.py +0 -66
- exonware/xwnode/queries/strategies/jsoniq.py +0 -248
- exonware/xwnode/queries/strategies/kql.py +0 -70
- exonware/xwnode/queries/strategies/linq.py +0 -238
- exonware/xwnode/queries/strategies/logql.py +0 -70
- exonware/xwnode/queries/strategies/mql.py +0 -68
- exonware/xwnode/queries/strategies/n1ql.py +0 -210
- exonware/xwnode/queries/strategies/partiql.py +0 -70
- exonware/xwnode/queries/strategies/pig.py +0 -215
- exonware/xwnode/queries/strategies/promql.py +0 -70
- exonware/xwnode/queries/strategies/sparql.py +0 -220
- exonware/xwnode/queries/strategies/sql.py +0 -275
- exonware/xwnode/queries/strategies/xml_query.py +0 -66
- exonware/xwnode/queries/strategies/xpath.py +0 -223
- exonware/xwnode/queries/strategies/xquery.py +0 -258
- exonware/xwnode/queries/strategies/xwnode_executor.py +0 -332
- exonware/xwnode/queries/strategies/xwquery.py +0 -456
- exonware_xwnode-0.0.1.22.dist-info/RECORD +0 -214
- /exonware/xwnode/nodes/strategies/{node_ordered_map.py → ordered_map.py} +0 -0
- /exonware/xwnode/nodes/strategies/{node_ordered_map_balanced.py → ordered_map_balanced.py} +0 -0
- /exonware/xwnode/nodes/strategies/{node_patricia.py → patricia.py} +0 -0
- /exonware/xwnode/nodes/strategies/{node_radix_trie.py → radix_trie.py} +0 -0
- /exonware/xwnode/nodes/strategies/{node_set_tree.py → set_tree.py} +0 -0
- {exonware_xwnode-0.0.1.22.dist-info → exonware_xwnode-0.0.1.23.dist-info}/WHEEL +0 -0
- {exonware_xwnode-0.0.1.22.dist-info → exonware_xwnode-0.0.1.23.dist-info}/licenses/LICENSE +0 -0
@@ -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.
|
12
|
+
Version: 0.0.1.23
|
13
13
|
Generation Date: 07-Sep-2025
|
14
14
|
"""
|
15
15
|
|
@@ -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.
|
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
|
-
|
22
|
-
|
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__ = []
|
@@ -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.
|
13
|
+
Version: 0.0.1.23
|
14
14
|
Generation Date: 07-Sep-2025
|
15
15
|
"""
|
16
16
|
|
@@ -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,7 +13,8 @@ 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
|
16
|
+
from ...defs import NodeMode, EdgeMode, NodeTrait, EdgeTrait, NODE_STRATEGY_METADATA, EDGE_STRATEGY_METADATA
|
17
|
+
# Note: QueryMode and QueryTrait are in xwquery.defs module
|
17
18
|
from ...errors import XWNodeStrategyError, XWNodeError
|
18
19
|
|
19
20
|
|
@@ -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 .
|
46
|
-
from .
|
47
|
-
from .
|
48
|
-
from .
|
49
|
-
from .
|
50
|
-
from .
|
51
|
-
from .
|
52
|
-
from .
|
53
|
-
from .
|
54
|
-
from .
|
55
|
-
from .
|
56
|
-
from .
|
57
|
-
from .
|
58
|
-
from .
|
59
|
-
from .
|
60
|
-
from .
|
61
|
-
from .
|
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.
|
65
|
-
from ...nodes.strategies.
|
66
|
-
from ...nodes.strategies.
|
67
|
-
from ...nodes.strategies.
|
68
|
-
from ...nodes.strategies.
|
69
|
-
from ...nodes.strategies.
|
70
|
-
from ...nodes.strategies.
|
71
|
-
from ...nodes.strategies.
|
72
|
-
from ...nodes.strategies.
|
73
|
-
from ...nodes.strategies.
|
74
|
-
from ...nodes.strategies.
|
75
|
-
from ...nodes.strategies.
|
76
|
-
from ...nodes.strategies.
|
77
|
-
from ...nodes.strategies.
|
78
|
-
from ...nodes.strategies.
|
79
|
-
from ...nodes.strategies.
|
80
|
-
from ...nodes.strategies.
|
81
|
-
from ...nodes.strategies.
|
82
|
-
from ...nodes.strategies.
|
83
|
-
from ...nodes.strategies.
|
84
|
-
from ...nodes.strategies.
|
85
|
-
from ...nodes.strategies.
|
86
|
-
from ...nodes.strategies.
|
87
|
-
from ...nodes.strategies.
|
88
|
-
from ...nodes.strategies.
|
89
|
-
from ...nodes.strategies.
|
90
|
-
from ...nodes.strategies.
|
91
|
-
from ...nodes.strategies.
|
92
|
-
from ...nodes.strategies.
|
93
|
-
from ...nodes.strategies.
|
94
|
-
from ...nodes.strategies.
|
95
|
-
from ...nodes.strategies.
|
96
|
-
from ...nodes.strategies.
|
97
|
-
from .
|
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.
|
125
|
+
from ...nodes.strategies.data_interchange_optimized import DataInterchangeOptimizedStrategy
|
101
126
|
|
102
127
|
# Register tree-graph hybrid strategies
|
103
|
-
from ...nodes.strategies.
|
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,
|
108
|
-
self.register_edge_strategy(EdgeMode.ADJ_MATRIX,
|
109
|
-
self.register_edge_strategy(EdgeMode.CSR,
|
110
|
-
self.register_edge_strategy(EdgeMode.DYNAMIC_ADJ_LIST,
|
111
|
-
self.register_edge_strategy(EdgeMode.TEMPORAL_EDGESET,
|
112
|
-
self.register_edge_strategy(EdgeMode.HYPEREDGE_SET,
|
113
|
-
self.register_edge_strategy(EdgeMode.R_TREE,
|
114
|
-
self.register_edge_strategy(EdgeMode.FLOW_NETWORK,
|
115
|
-
self.register_edge_strategy(EdgeMode.NEURAL_GRAPH,
|
116
|
-
self.register_edge_strategy(EdgeMode.CSC,
|
117
|
-
self.register_edge_strategy(EdgeMode.BIDIR_WRAPPER,
|
118
|
-
self.register_edge_strategy(EdgeMode.QUADTREE,
|
119
|
-
self.register_edge_strategy(EdgeMode.COO,
|
120
|
-
self.register_edge_strategy(EdgeMode.OCTREE,
|
121
|
-
self.register_edge_strategy(EdgeMode.EDGE_PROPERTY_STORE,
|
122
|
-
self.register_edge_strategy(EdgeMode.TREE_GRAPH_BASIC,
|
123
|
-
self.register_edge_strategy(EdgeMode.WEIGHTED_GRAPH,
|
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,
|
127
|
-
self.register_node_strategy(NodeMode.ARRAY_LIST,
|
128
|
-
self.register_node_strategy(NodeMode.TRIE,
|
129
|
-
self.register_node_strategy(NodeMode.HEAP,
|
130
|
-
self.register_node_strategy(NodeMode.B_TREE,
|
131
|
-
self.register_node_strategy(NodeMode.UNION_FIND,
|
132
|
-
self.register_node_strategy(NodeMode.SEGMENT_TREE,
|
133
|
-
self.register_node_strategy(NodeMode.LSM_TREE,
|
134
|
-
self.register_node_strategy(NodeMode.FENWICK_TREE,
|
135
|
-
self.register_node_strategy(NodeMode.SET_HASH,
|
136
|
-
self.register_node_strategy(NodeMode.BLOOM_FILTER,
|
137
|
-
self.register_node_strategy(NodeMode.CUCKOO_HASH,
|
138
|
-
self.register_node_strategy(NodeMode.BITMAP,
|
139
|
-
self.register_node_strategy(NodeMode.ROARING_BITMAP,
|
140
|
-
self.register_node_strategy(NodeMode.SUFFIX_ARRAY,
|
141
|
-
self.register_node_strategy(NodeMode.AHO_CORASICK,
|
142
|
-
self.register_node_strategy(NodeMode.COUNT_MIN_SKETCH,
|
143
|
-
self.register_node_strategy(NodeMode.HYPERLOGLOG,
|
144
|
-
self.register_node_strategy(NodeMode.SET_TREE,
|
145
|
-
self.register_node_strategy(NodeMode.LINKED_LIST,
|
146
|
-
self.register_node_strategy(NodeMode.ORDERED_MAP,
|
147
|
-
self.register_node_strategy(NodeMode.RADIX_TRIE,
|
148
|
-
self.register_node_strategy(NodeMode.PATRICIA,
|
149
|
-
self.register_node_strategy(NodeMode.B_PLUS_TREE,
|
150
|
-
self.register_node_strategy(NodeMode.PERSISTENT_TREE,
|
151
|
-
self.register_node_strategy(NodeMode.COW_TREE,
|
152
|
-
self.register_node_strategy(NodeMode.SKIP_LIST,
|
153
|
-
self.register_node_strategy(NodeMode.RED_BLACK_TREE,
|
154
|
-
self.register_node_strategy(NodeMode.AVL_TREE,
|
155
|
-
self.register_node_strategy(NodeMode.TREAP,
|
156
|
-
self.register_node_strategy(NodeMode.SPLAY_TREE,
|
157
|
-
self.register_node_strategy(NodeMode.ORDERED_MAP_BALANCED,
|
158
|
-
self.register_node_strategy(NodeMode.BITSET_DYNAMIC,
|
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,
|
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.
|
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.
|
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
|
-
#
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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
|
-
|
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
|
+
]
|
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
|
-
#
|
15
|
-
|
16
|
-
|
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
|
|