exonware-xwnode 0.0.1.12__py3-none-any.whl → 0.0.1.14__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 +1 -1
- exonware/xwnode/base.py +1 -1
- exonware/xwnode/common/__init__.py +20 -0
- exonware/xwnode/common/management/__init__.py +26 -0
- exonware/xwnode/{strategies → common/management}/manager.py +2 -2
- exonware/xwnode/common/monitoring/__init__.py +26 -0
- exonware/xwnode/{strategies → common/monitoring}/metrics.py +2 -2
- exonware/xwnode/{strategies → common/monitoring}/pattern_detector.py +2 -2
- exonware/xwnode/{strategies → common/monitoring}/performance_monitor.py +2 -2
- exonware/xwnode/common/patterns/__init__.py +26 -0
- exonware/xwnode/{strategies → common/patterns}/advisor.py +1 -1
- exonware/xwnode/{strategies → common/patterns}/flyweight.py +4 -4
- exonware/xwnode/{strategies → common/patterns}/registry.py +109 -112
- exonware/xwnode/common/utils/__init__.py +26 -0
- exonware/xwnode/{strategies/edges → edges/strategies}/__init__.py +1 -1
- exonware/xwnode/{strategies/edges → edges/strategies}/base.py +3 -3
- exonware/xwnode/facade.py +4 -3
- exonware/xwnode/{strategies/nodes → nodes/strategies}/__init__.py +1 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/adjacency_list.py +7 -2
- exonware/xwnode/{strategies/nodes → nodes/strategies}/aho_corasick.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/array_list.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/base.py +24 -4
- exonware/xwnode/nodes/strategies/contracts.py +116 -0
- exonware/xwnode/{strategies/nodes → nodes/strategies}/deque.py +7 -2
- exonware/xwnode/{strategies/nodes → nodes/strategies}/hash_map.py +4 -0
- exonware/xwnode/{strategies/nodes → nodes/strategies}/heap.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/linked_list.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_aho_corasick.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_array_list.py +4 -0
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_avl_tree.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_b_plus_tree.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_bitmap.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_bitset_dynamic.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_bloom_filter.py +4 -0
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_btree.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_count_min_sketch.py +4 -0
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_cow_tree.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_fenwick_tree.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_hash_map.py +4 -0
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_heap.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_hyperloglog.py +4 -0
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_linked_list.py +4 -0
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_lsm_tree.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_ordered_map.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_ordered_map_balanced.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_patricia.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_persistent_tree.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_radix_trie.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_red_black_tree.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_roaring_bitmap.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_segment_tree.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_set_hash.py +4 -0
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_set_tree.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_skip_list.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_splay_tree.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_suffix_array.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_treap.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_tree_graph_hybrid.py +4 -0
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_trie.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_union_find.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/node_xdata_optimized.py +4 -0
- exonware/xwnode/{strategies/nodes → nodes/strategies}/priority_queue.py +7 -2
- exonware/xwnode/{strategies/nodes → nodes/strategies}/queue.py +7 -2
- exonware/xwnode/{strategies/nodes → nodes/strategies}/sparse_matrix.py +7 -2
- exonware/xwnode/{strategies/nodes → nodes/strategies}/stack.py +7 -2
- exonware/xwnode/{strategies/nodes → nodes/strategies}/trie.py +6 -1
- exonware/xwnode/{strategies/nodes → nodes/strategies}/union_find.py +6 -1
- exonware/xwnode/queries/executors/__init__.py +47 -0
- exonware/xwnode/queries/executors/advanced/__init__.py +37 -0
- exonware/xwnode/queries/executors/advanced/aggregate_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/ask_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/construct_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/describe_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/for_loop_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/foreach_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/join_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/let_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/mutation_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/options_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/pipe_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/subscribe_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/subscription_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/union_executor.py +50 -0
- exonware/xwnode/queries/executors/advanced/window_executor.py +51 -0
- exonware/xwnode/queries/executors/advanced/with_cte_executor.py +50 -0
- exonware/xwnode/queries/executors/aggregation/__init__.py +21 -0
- exonware/xwnode/queries/executors/aggregation/avg_executor.py +50 -0
- exonware/xwnode/queries/executors/aggregation/count_executor.py +38 -0
- exonware/xwnode/queries/executors/aggregation/distinct_executor.py +50 -0
- exonware/xwnode/queries/executors/aggregation/group_executor.py +50 -0
- exonware/xwnode/queries/executors/aggregation/having_executor.py +50 -0
- exonware/xwnode/queries/executors/aggregation/max_executor.py +50 -0
- exonware/xwnode/queries/executors/aggregation/min_executor.py +50 -0
- exonware/xwnode/queries/executors/aggregation/sum_executor.py +50 -0
- exonware/xwnode/queries/executors/aggregation/summarize_executor.py +50 -0
- exonware/xwnode/queries/executors/array/__init__.py +9 -0
- exonware/xwnode/queries/executors/array/indexing_executor.py +51 -0
- exonware/xwnode/queries/executors/array/slicing_executor.py +51 -0
- exonware/xwnode/queries/executors/base.py +257 -0
- exonware/xwnode/queries/executors/capability_checker.py +204 -0
- exonware/xwnode/queries/executors/contracts.py +166 -0
- exonware/xwnode/queries/executors/core/__init__.py +17 -0
- exonware/xwnode/queries/executors/core/create_executor.py +96 -0
- exonware/xwnode/queries/executors/core/delete_executor.py +99 -0
- exonware/xwnode/queries/executors/core/drop_executor.py +100 -0
- exonware/xwnode/queries/executors/core/insert_executor.py +39 -0
- exonware/xwnode/queries/executors/core/select_executor.py +152 -0
- exonware/xwnode/queries/executors/core/update_executor.py +102 -0
- exonware/xwnode/queries/executors/data/__init__.py +13 -0
- exonware/xwnode/queries/executors/data/alter_executor.py +50 -0
- exonware/xwnode/queries/executors/data/load_executor.py +50 -0
- exonware/xwnode/queries/executors/data/merge_executor.py +50 -0
- exonware/xwnode/queries/executors/data/store_executor.py +50 -0
- exonware/xwnode/queries/executors/engine.py +221 -0
- exonware/xwnode/queries/executors/errors.py +68 -0
- exonware/xwnode/queries/executors/filtering/__init__.py +25 -0
- exonware/xwnode/queries/executors/filtering/between_executor.py +80 -0
- exonware/xwnode/queries/executors/filtering/filter_executor.py +79 -0
- exonware/xwnode/queries/executors/filtering/has_executor.py +70 -0
- exonware/xwnode/queries/executors/filtering/in_executor.py +70 -0
- exonware/xwnode/queries/executors/filtering/like_executor.py +76 -0
- exonware/xwnode/queries/executors/filtering/optional_executor.py +76 -0
- exonware/xwnode/queries/executors/filtering/range_executor.py +80 -0
- exonware/xwnode/queries/executors/filtering/term_executor.py +77 -0
- exonware/xwnode/queries/executors/filtering/values_executor.py +71 -0
- exonware/xwnode/queries/executors/filtering/where_executor.py +44 -0
- exonware/xwnode/queries/executors/graph/__init__.py +15 -0
- exonware/xwnode/queries/executors/graph/in_traverse_executor.py +51 -0
- exonware/xwnode/queries/executors/graph/match_executor.py +51 -0
- exonware/xwnode/queries/executors/graph/out_executor.py +51 -0
- exonware/xwnode/queries/executors/graph/path_executor.py +51 -0
- exonware/xwnode/queries/executors/graph/return_executor.py +51 -0
- exonware/xwnode/queries/executors/ordering/__init__.py +9 -0
- exonware/xwnode/queries/executors/ordering/by_executor.py +50 -0
- exonware/xwnode/queries/executors/ordering/order_executor.py +51 -0
- exonware/xwnode/queries/executors/projection/__init__.py +9 -0
- exonware/xwnode/queries/executors/projection/extend_executor.py +50 -0
- exonware/xwnode/queries/executors/projection/project_executor.py +50 -0
- exonware/xwnode/queries/executors/registry.py +173 -0
- exonware/xwnode/queries/executors/types.py +93 -0
- exonware/xwnode/{strategies/queries → queries/strategies}/__init__.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/base.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/cql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/cypher.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/datalog.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/elastic_dsl.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/eql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/flux.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/gql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/graphql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/gremlin.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/hiveql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/hql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/jmespath.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/jq.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/json_query.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/jsoniq.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/kql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/linq.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/logql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/mql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/n1ql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/partiql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/pig.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/promql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/sparql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/sql.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/xml_query.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/xpath.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/xquery.py +1 -1
- exonware/xwnode/{strategies/queries → queries/strategies}/xwnode_executor.py +1 -1
- exonware/xwnode/{strategies/queries/xwquery_strategy.py → queries/strategies/xwquery.py} +1 -1
- exonware/xwnode/strategies/__init__.py +8 -8
- exonware/xwnode/version.py +3 -3
- {exonware_xwnode-0.0.1.12.dist-info → exonware_xwnode-0.0.1.14.dist-info}/METADATA +2 -2
- exonware_xwnode-0.0.1.14.dist-info/RECORD +209 -0
- exonware/xwnode/strategies/impls/__init__.py +0 -13
- exonware/xwnode/strategies/nodes/_base_node.py +0 -307
- exonware_xwnode-0.0.1.12.dist-info/RECORD +0 -132
- /exonware/xwnode/{strategies → common/management}/migration.py +0 -0
- /exonware/xwnode/{strategies → common/utils}/simple.py +0 -0
- /exonware/xwnode/{strategies → common/utils}/utils.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/_base_edge.py +0 -0
- /exonware/xwnode/{strategies/edges → edges/strategies}/adj_list.py +0 -0
- /exonware/xwnode/{strategies/edges → edges/strategies}/adj_matrix.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_adj_list.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_adj_matrix.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_bidir_wrapper.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_block_adj_matrix.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_coo.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_csc.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_csr.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_dynamic_adj_list.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_flow_network.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_hyperedge_set.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_neural_graph.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_octree.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_property_store.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_quadtree.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_rtree.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_temporal_edgeset.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_tree_graph_basic.py +0 -0
- /exonware/xwnode/{strategies/impls → edges/strategies}/edge_weighted_graph.py +0 -0
- /exonware/xwnode/{strategies/impls → nodes/strategies}/_base_node.py +0 -0
- /exonware/xwnode/{strategies/nodes → nodes/strategies}/node_cuckoo_hash.py +0 -0
- {exonware_xwnode-0.0.1.12.dist-info → exonware_xwnode-0.0.1.14.dist-info}/WHEEL +0 -0
- {exonware_xwnode-0.0.1.12.dist-info → exonware_xwnode-0.0.1.14.dist-info}/licenses/LICENSE +0 -0
@@ -1,307 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
Abstract Node Strategy Interface
|
3
|
-
|
4
|
-
This module defines the abstract base class that all node strategies must implement
|
5
|
-
in the strategy system.
|
6
|
-
"""
|
7
|
-
|
8
|
-
from abc import ABC, abstractmethod
|
9
|
-
from typing import Any, Dict, List, Optional, Iterator, Union
|
10
|
-
from ...types import NodeMode, NodeTrait
|
11
|
-
from ...errors import XWNodeUnsupportedCapabilityError
|
12
|
-
|
13
|
-
|
14
|
-
class aNodeStrategy(ABC):
|
15
|
-
"""
|
16
|
-
Abstract base class for all node strategies.
|
17
|
-
|
18
|
-
This abstract base class defines the contract that all node strategy
|
19
|
-
implementations must follow, ensuring consistency and interoperability.
|
20
|
-
"""
|
21
|
-
|
22
|
-
def __init__(self, mode: NodeMode, traits: NodeTrait = NodeTrait.NONE, **options):
|
23
|
-
"""Initialize the abstract node strategy."""
|
24
|
-
self.mode = mode
|
25
|
-
self.traits = traits
|
26
|
-
self.options = options
|
27
|
-
self._data: Dict[str, Any] = {}
|
28
|
-
self._size = 0
|
29
|
-
|
30
|
-
# Validate traits compatibility with mode
|
31
|
-
self._validate_traits()
|
32
|
-
|
33
|
-
def _validate_traits(self) -> None:
|
34
|
-
"""Validate that the requested traits are compatible with this strategy."""
|
35
|
-
supported_traits = self.get_supported_traits()
|
36
|
-
unsupported = self.traits & ~supported_traits
|
37
|
-
if unsupported != NodeTrait.NONE:
|
38
|
-
unsupported_names = [trait.name for trait in NodeTrait if trait in unsupported]
|
39
|
-
raise ValueError(f"Strategy {self.mode.name} does not support traits: {unsupported_names}")
|
40
|
-
|
41
|
-
def get_supported_traits(self) -> NodeTrait:
|
42
|
-
"""Get the traits supported by this strategy implementation."""
|
43
|
-
# Default implementation - subclasses should override
|
44
|
-
return NodeTrait.NONE
|
45
|
-
|
46
|
-
def has_trait(self, trait: NodeTrait) -> bool:
|
47
|
-
"""Check if this strategy has a specific trait."""
|
48
|
-
return bool(self.traits & trait)
|
49
|
-
|
50
|
-
def require_trait(self, trait: NodeTrait, operation: str = "operation") -> None:
|
51
|
-
"""Require a specific trait for an operation."""
|
52
|
-
if not self.has_trait(trait):
|
53
|
-
from ...errors import UnsupportedCapabilityError
|
54
|
-
raise UnsupportedCapabilityError(f"{operation} requires {trait.name} capability")
|
55
|
-
|
56
|
-
# ============================================================================
|
57
|
-
# CORE OPERATIONS (Required)
|
58
|
-
# ============================================================================
|
59
|
-
|
60
|
-
@abstractmethod
|
61
|
-
def put(self, key: Any, value: Any = None) -> None:
|
62
|
-
"""
|
63
|
-
Store a key-value pair.
|
64
|
-
|
65
|
-
Args:
|
66
|
-
key: The key to store
|
67
|
-
value: The value to associate with the key
|
68
|
-
"""
|
69
|
-
pass
|
70
|
-
|
71
|
-
@abstractmethod
|
72
|
-
def get(self, key: Any, default: Any = None) -> Any:
|
73
|
-
"""
|
74
|
-
Retrieve a value by key.
|
75
|
-
|
76
|
-
Args:
|
77
|
-
key: The key to look up
|
78
|
-
default: Default value if key not found
|
79
|
-
|
80
|
-
Returns:
|
81
|
-
The value associated with the key, or default if not found
|
82
|
-
"""
|
83
|
-
pass
|
84
|
-
|
85
|
-
@abstractmethod
|
86
|
-
def delete(self, key: Any) -> bool:
|
87
|
-
"""
|
88
|
-
Remove a key-value pair.
|
89
|
-
|
90
|
-
Args:
|
91
|
-
key: The key to remove
|
92
|
-
|
93
|
-
Returns:
|
94
|
-
True if key was found and removed, False otherwise
|
95
|
-
"""
|
96
|
-
pass
|
97
|
-
|
98
|
-
@abstractmethod
|
99
|
-
def has(self, key: Any) -> bool:
|
100
|
-
"""
|
101
|
-
Check if a key exists.
|
102
|
-
|
103
|
-
Args:
|
104
|
-
key: The key to check
|
105
|
-
|
106
|
-
Returns:
|
107
|
-
True if key exists, False otherwise
|
108
|
-
"""
|
109
|
-
pass
|
110
|
-
|
111
|
-
@abstractmethod
|
112
|
-
def __len__(self) -> int:
|
113
|
-
"""Get the number of key-value pairs."""
|
114
|
-
pass
|
115
|
-
|
116
|
-
@abstractmethod
|
117
|
-
def keys(self) -> Iterator[Any]:
|
118
|
-
"""Get an iterator over all keys."""
|
119
|
-
pass
|
120
|
-
|
121
|
-
@abstractmethod
|
122
|
-
def values(self) -> Iterator[Any]:
|
123
|
-
"""Get an iterator over all values."""
|
124
|
-
pass
|
125
|
-
|
126
|
-
@abstractmethod
|
127
|
-
def items(self) -> Iterator[tuple[Any, Any]]:
|
128
|
-
"""Get an iterator over all key-value pairs."""
|
129
|
-
pass
|
130
|
-
|
131
|
-
# ============================================================================
|
132
|
-
# CAPABILITY-BASED OPERATIONS (Optional)
|
133
|
-
# ============================================================================
|
134
|
-
|
135
|
-
def get_ordered(self, start: Any = None, end: Any = None) -> List[tuple[Any, Any]]:
|
136
|
-
"""
|
137
|
-
Get items in order (requires ORDERED trait).
|
138
|
-
|
139
|
-
Args:
|
140
|
-
start: Start key (inclusive)
|
141
|
-
end: End key (exclusive)
|
142
|
-
|
143
|
-
Returns:
|
144
|
-
List of (key, value) pairs in order
|
145
|
-
|
146
|
-
Raises:
|
147
|
-
UnsupportedCapabilityError: If ORDERED trait not supported
|
148
|
-
"""
|
149
|
-
if NodeTrait.ORDERED not in self.traits:
|
150
|
-
raise XWNodeUnsupportedCapabilityError("ORDERED", self.mode.name, [str(t) for t in self.traits])
|
151
|
-
|
152
|
-
# Default implementation for ordered strategies
|
153
|
-
items = list(self.items())
|
154
|
-
if start is not None:
|
155
|
-
items = [(k, v) for k, v in items if k >= start]
|
156
|
-
if end is not None:
|
157
|
-
items = [(k, v) for k, v in items if k < end]
|
158
|
-
return items
|
159
|
-
|
160
|
-
def get_with_prefix(self, prefix: str) -> List[tuple[Any, Any]]:
|
161
|
-
"""
|
162
|
-
Get items with given prefix (requires HIERARCHICAL trait).
|
163
|
-
|
164
|
-
Args:
|
165
|
-
prefix: The prefix to match
|
166
|
-
|
167
|
-
Returns:
|
168
|
-
List of (key, value) pairs with matching prefix
|
169
|
-
|
170
|
-
Raises:
|
171
|
-
UnsupportedCapabilityError: If HIERARCHICAL trait not supported
|
172
|
-
"""
|
173
|
-
if NodeTrait.HIERARCHICAL not in self.traits:
|
174
|
-
raise XWNodeUnsupportedCapabilityError("HIERARCHICAL", self.mode.name, [str(t) for t in self.traits])
|
175
|
-
|
176
|
-
# Default implementation for hierarchical strategies
|
177
|
-
return [(k, v) for k, v in self.items() if str(k).startswith(prefix)]
|
178
|
-
|
179
|
-
def get_priority(self) -> Optional[tuple[Any, Any]]:
|
180
|
-
"""
|
181
|
-
Get highest priority item (requires PRIORITY trait).
|
182
|
-
|
183
|
-
Returns:
|
184
|
-
(key, value) pair with highest priority, or None if empty
|
185
|
-
|
186
|
-
Raises:
|
187
|
-
UnsupportedCapabilityError: If PRIORITY trait not supported
|
188
|
-
"""
|
189
|
-
if NodeTrait.PRIORITY not in self.traits:
|
190
|
-
raise XWNodeUnsupportedCapabilityError("PRIORITY", self.mode.name, [str(t) for t in self.traits])
|
191
|
-
|
192
|
-
# Default implementation for priority strategies
|
193
|
-
if not self._data:
|
194
|
-
return None
|
195
|
-
return min(self.items(), key=lambda x: x[0])
|
196
|
-
|
197
|
-
def get_weighted(self, key: Any) -> float:
|
198
|
-
"""
|
199
|
-
Get weight for a key (requires WEIGHTED trait).
|
200
|
-
|
201
|
-
Args:
|
202
|
-
key: The key to get weight for
|
203
|
-
|
204
|
-
Returns:
|
205
|
-
Weight value for the key
|
206
|
-
|
207
|
-
Raises:
|
208
|
-
UnsupportedCapabilityError: If WEIGHTED trait not supported
|
209
|
-
"""
|
210
|
-
if NodeTrait.WEIGHTED not in self.traits:
|
211
|
-
raise XWNodeUnsupportedCapabilityError("WEIGHTED", self.mode.name, [str(t) for t in self.traits])
|
212
|
-
|
213
|
-
# Default implementation for weighted strategies
|
214
|
-
return self._data.get(key, {}).get('weight', 1.0)
|
215
|
-
|
216
|
-
# ============================================================================
|
217
|
-
# STRATEGY METADATA
|
218
|
-
# ============================================================================
|
219
|
-
|
220
|
-
def capabilities(self) -> NodeTrait:
|
221
|
-
"""Get the capabilities supported by this strategy."""
|
222
|
-
return self.traits
|
223
|
-
|
224
|
-
def backend_info(self) -> Dict[str, Any]:
|
225
|
-
"""Get information about the backend implementation."""
|
226
|
-
return {
|
227
|
-
"mode": self.mode.name,
|
228
|
-
"traits": str(self.traits),
|
229
|
-
"size": len(self),
|
230
|
-
"options": self.options.copy()
|
231
|
-
}
|
232
|
-
|
233
|
-
def metrics(self) -> Dict[str, Any]:
|
234
|
-
"""Get performance metrics for this strategy."""
|
235
|
-
return {
|
236
|
-
"size": len(self),
|
237
|
-
"mode": self.mode.name,
|
238
|
-
"traits": str(self.traits)
|
239
|
-
}
|
240
|
-
|
241
|
-
# ============================================================================
|
242
|
-
# FACTORY METHODS
|
243
|
-
# ============================================================================
|
244
|
-
|
245
|
-
@classmethod
|
246
|
-
def create_from_data(cls, data: Any) -> 'aNodeStrategy':
|
247
|
-
"""
|
248
|
-
Create a new strategy instance from data.
|
249
|
-
|
250
|
-
Args:
|
251
|
-
data: The data to create the strategy from
|
252
|
-
|
253
|
-
Returns:
|
254
|
-
A new strategy instance containing the data
|
255
|
-
"""
|
256
|
-
instance = cls()
|
257
|
-
if isinstance(data, dict):
|
258
|
-
for key, value in data.items():
|
259
|
-
instance.put(key, value)
|
260
|
-
elif isinstance(data, (list, tuple)):
|
261
|
-
for i, value in enumerate(data):
|
262
|
-
instance.put(i, value)
|
263
|
-
else:
|
264
|
-
# For primitive values, store as root value
|
265
|
-
instance.put('_value', data)
|
266
|
-
return instance
|
267
|
-
|
268
|
-
# ============================================================================
|
269
|
-
# UTILITY METHODS
|
270
|
-
# ============================================================================
|
271
|
-
|
272
|
-
def clear(self) -> None:
|
273
|
-
"""Clear all data."""
|
274
|
-
self._data.clear()
|
275
|
-
self._size = 0
|
276
|
-
|
277
|
-
def __contains__(self, key: Any) -> bool:
|
278
|
-
"""Check if key exists."""
|
279
|
-
return self.has(key)
|
280
|
-
|
281
|
-
def __getitem__(self, key: Any) -> Any:
|
282
|
-
"""Get value by key."""
|
283
|
-
return self.get(key)
|
284
|
-
|
285
|
-
def __setitem__(self, key: Any, value: Any) -> None:
|
286
|
-
"""Set value by key."""
|
287
|
-
self.put(key, value)
|
288
|
-
|
289
|
-
def __delitem__(self, key: Any) -> None:
|
290
|
-
"""Delete key."""
|
291
|
-
if not self.delete(key):
|
292
|
-
raise KeyError(key)
|
293
|
-
|
294
|
-
def __iter__(self) -> Iterator[Any]:
|
295
|
-
"""Iterate over keys."""
|
296
|
-
return self.keys()
|
297
|
-
|
298
|
-
def __str__(self) -> str:
|
299
|
-
"""String representation."""
|
300
|
-
return f"{self.__class__.__name__}(mode={self.mode.name}, size={len(self)})"
|
301
|
-
|
302
|
-
def __repr__(self) -> str:
|
303
|
-
"""Detailed string representation."""
|
304
|
-
return f"{self.__class__.__name__}(mode={self.mode.name}, traits={self.traits}, size={len(self)})"
|
305
|
-
|
306
|
-
|
307
|
-
|
@@ -1,132 +0,0 @@
|
|
1
|
-
exonware/__init__.py,sha256=Vi5DAJ4T6FJohu_fUfJaDnf3crA_7yDjWfCZVZMlTZk,324
|
2
|
-
exonware/xwnode/__init__.py,sha256=4pxs28AdzEN1hGLs7ljH4t0YdzwLSjRJukRY2f5JCTc,3814
|
3
|
-
exonware/xwnode/base.py,sha256=VUKA1SX_w-bY6GclC93S6OZOc5roctzzcfBmv1XLC68,23830
|
4
|
-
exonware/xwnode/config.py,sha256=Kt8oFMhLmb-3rZdxWle-_Z3PGJj04XhZUp7K9FUnxN0,5707
|
5
|
-
exonware/xwnode/contracts.py,sha256=UHVk-7RWt-hVPJlRKVU8MnC9yE6QDAxzXji3f3UN4RE,20693
|
6
|
-
exonware/xwnode/errors.py,sha256=JZCrGdK31LlrE5cY1_s5Jb6x7zsBF0WUiE2PCWfIdNk,18396
|
7
|
-
exonware/xwnode/facade.py,sha256=rccyUyT5Gj9DgTY8DSfq8Ae7GGGq5Z5OtepPU1ENy8I,16029
|
8
|
-
exonware/xwnode/types.py,sha256=uioV6DW9nnQ0p3ZIdhYNQ5XtbQB2_INIljUkeCZox9o,34471
|
9
|
-
exonware/xwnode/version.py,sha256=STJKugNKyqorci-VuYL4keM4h4L9B_K77pEjgk7rT_c,2379
|
10
|
-
exonware/xwnode/strategies/__init__.py,sha256=_Ywl_Mq1Ucz3TZteuWO3B4vy7Ird7iCWAAXXVadXcc8,7568
|
11
|
-
exonware/xwnode/strategies/advisor.py,sha256=NIDK8S-nV69-V0Hur7e4Z1Ao1Gnia_d6SRBc1gxoJ9U,18184
|
12
|
-
exonware/xwnode/strategies/flyweight.py,sha256=FZHLsHYFIPQQNwBrwsHYysMxevM5KW4zk3EdARa9rmE,11316
|
13
|
-
exonware/xwnode/strategies/manager.py,sha256=9hlCDblaxasdAwGXO-vdEyG0V7NvUPjTiA3SUxk-BFM,33902
|
14
|
-
exonware/xwnode/strategies/metrics.py,sha256=j3V1duSZ2_tHH7dEeL3NCVwEb96XNzjYaymkt8_LJmc,19447
|
15
|
-
exonware/xwnode/strategies/migration.py,sha256=w_YEpNiVtYBA50mGvfTVyLFz-GViyT5Adzmvlp8P4gk,20181
|
16
|
-
exonware/xwnode/strategies/pattern_detector.py,sha256=5ncMOVUw1QJHrD4yo5dNANfDed_jeLsU_mWpND4Wtxo,21661
|
17
|
-
exonware/xwnode/strategies/performance_monitor.py,sha256=AqLW9k13DZILxn8Fa4JMmf1k67GESBiodREsANJfs-c,17467
|
18
|
-
exonware/xwnode/strategies/registry.py,sha256=4GJua8Wnha7Yzq2jBm73GBa8XvQhzsfqUY5omTTxc7U,28733
|
19
|
-
exonware/xwnode/strategies/simple.py,sha256=3hylQDJ9CRSIKdu3sc3qYJa2bQlVo7AlMQ3a0THNLxs,9079
|
20
|
-
exonware/xwnode/strategies/utils.py,sha256=ma_C5Xpgpo0053jEWqzco4-KNyBOWanJhKvQ3Masq84,17554
|
21
|
-
exonware/xwnode/strategies/edges/__init__.py,sha256=se25WUDZfWx37jNS3OKubhlsLAd9XumnQTGJyU7MnkI,771
|
22
|
-
exonware/xwnode/strategies/edges/adj_list.py,sha256=RdvQayElMahOa239urnWqwQVkui8phj-0fsyI8FsUvM,8162
|
23
|
-
exonware/xwnode/strategies/edges/adj_matrix.py,sha256=pAsW5s264WvwUEYX7Ezgl-DW87kP8V6LZeDOuVXevqU,14744
|
24
|
-
exonware/xwnode/strategies/edges/base.py,sha256=AjEviyy3IJY3fMCgDMfxFvo5OFb72hddqAMMYmBQ-_w,6207
|
25
|
-
exonware/xwnode/strategies/impls/__init__.py,sha256=gQYeyN0Uz-AudFdUPCsFGYFGMu67wHS0XtuXbCHILQc,244
|
26
|
-
exonware/xwnode/strategies/impls/_base_edge.py,sha256=hmOEL3M0wz95h6FrcTBf9dzSiwemRuNyNH9bgk27AY8,13602
|
27
|
-
exonware/xwnode/strategies/impls/_base_node.py,sha256=TE7ND2qSQnruJ01h1JtLI3WIzoJiLPdJnan5HeFWvwA,10270
|
28
|
-
exonware/xwnode/strategies/impls/edge_adj_list.py,sha256=_QvMiSnX5Zt4pUqu6O06IceDTCKB8sOMBs5XYWte3Co,13986
|
29
|
-
exonware/xwnode/strategies/impls/edge_adj_matrix.py,sha256=Iyb2TCI7n9xCH-ZwQVZQLrJV_6MOIwKz1iECLA2rhVU,17551
|
30
|
-
exonware/xwnode/strategies/impls/edge_bidir_wrapper.py,sha256=wSv4XMVoBjjuAb9m22t5ZG3_XSynJYwmeUQe7fnLFQ0,18050
|
31
|
-
exonware/xwnode/strategies/impls/edge_block_adj_matrix.py,sha256=2TVJhSFyxqvbgPNNHnFhqsgD4ETzKS0IOS5lBEaDfok,21142
|
32
|
-
exonware/xwnode/strategies/impls/edge_coo.py,sha256=o9unqJeOuT5skhr4OSNCRTtGnvdsBSK6F8iFEQkGv_g,19970
|
33
|
-
exonware/xwnode/strategies/impls/edge_csc.py,sha256=wYtxoE7_-Ulaxhk9L8oq9VZbD4dZ1tCNESijY-wydU4,16781
|
34
|
-
exonware/xwnode/strategies/impls/edge_csr.py,sha256=My4-weNwJ9SS6cVr_aoEz2hZOJltRB23DakTEEHr90o,18634
|
35
|
-
exonware/xwnode/strategies/impls/edge_dynamic_adj_list.py,sha256=gl9CpS02LAqzNrZ7nhVWNE5iBTYLRw1SlSUrmZEXfoY,19668
|
36
|
-
exonware/xwnode/strategies/impls/edge_flow_network.py,sha256=Fgy36PBGuR-47SrNat7cc7SdDUSppScAY7bJ8m6uqJg,21473
|
37
|
-
exonware/xwnode/strategies/impls/edge_hyperedge_set.py,sha256=oYEtaen8pXX9fIKClTP9wxJ7aqTOJ_hS68WlHkw8Vf4,20764
|
38
|
-
exonware/xwnode/strategies/impls/edge_neural_graph.py,sha256=wFoYGdxh3wV2P0KmbKGkAmUyLmRtdXB_dYlGQVBYlmc,25117
|
39
|
-
exonware/xwnode/strategies/impls/edge_octree.py,sha256=NxNxaVQze97IZvkPGSkp7cuIZSj1XZ7VpEdfiLmH9YA,22969
|
40
|
-
exonware/xwnode/strategies/impls/edge_property_store.py,sha256=s5e70_soYYSZIqjBXU_zWY9FXI_bQjFmZzknu6qPQr0,25630
|
41
|
-
exonware/xwnode/strategies/impls/edge_quadtree.py,sha256=Br8v3F0Pi5G8T1UA_3IXQ6cvNQ1oJOOYAZ9GeQ2f_M8,20149
|
42
|
-
exonware/xwnode/strategies/impls/edge_rtree.py,sha256=0xGjjAzhno_PmCr-fc1JQCb1SVyLyE_J20CEYKDy118,31454
|
43
|
-
exonware/xwnode/strategies/impls/edge_temporal_edgeset.py,sha256=RjGu_u6C8sr4U7Oc4PhmxxvXMH7dycOpBVE4N1yO1qY,22127
|
44
|
-
exonware/xwnode/strategies/impls/edge_tree_graph_basic.py,sha256=GjQAT1kAcOw8eCqsIKbr7NJpXM2_FWCXk_XJN1fAlaE,9996
|
45
|
-
exonware/xwnode/strategies/impls/edge_weighted_graph.py,sha256=1w9qBMUgOf_s0bAXryXOZe_XrBOLpdofYCQNZguJfZs,16508
|
46
|
-
exonware/xwnode/strategies/nodes/__init__.py,sha256=YMVKzCrYUOWDL8taFMHtYjhKQqfe5B14jn1GfobSXXM,1197
|
47
|
-
exonware/xwnode/strategies/nodes/_base_node.py,sha256=TE7ND2qSQnruJ01h1JtLI3WIzoJiLPdJnan5HeFWvwA,10270
|
48
|
-
exonware/xwnode/strategies/nodes/adjacency_list.py,sha256=ftrdilIYIagAe0oiEekLISTiEpKfjrgWQoCZ6lF7QGc,8941
|
49
|
-
exonware/xwnode/strategies/nodes/aho_corasick.py,sha256=V4FFQ4BybB83UVEf9ftxyeWn6KOsNAj9emyHzj_qp8M,12408
|
50
|
-
exonware/xwnode/strategies/nodes/array_list.py,sha256=M7xCvjeqQvLHQSmgGVSudOLdpWNQ_Vph5CAsEHzesas,7076
|
51
|
-
exonware/xwnode/strategies/nodes/base.py,sha256=u_xQcNWRa5Dlibtu1PKEIqAOq5-6kLX5staSMEYUuoI,8936
|
52
|
-
exonware/xwnode/strategies/nodes/deque.py,sha256=ITyDbWYRJmyP_l0mVihAFP_Gd1vlVtXmopSyTobc4js,6382
|
53
|
-
exonware/xwnode/strategies/nodes/hash_map.py,sha256=sDZy4Rw9OWD9FNZEGHzf8vUUF3rsP3aMkyqbIhMlrHs,4489
|
54
|
-
exonware/xwnode/strategies/nodes/heap.py,sha256=IimQiSiIvrncwiQ37M_UmW_8XwDf-2bgV6wodiLi_4k,10334
|
55
|
-
exonware/xwnode/strategies/nodes/linked_list.py,sha256=UdbVpSrXtb0KI7aLLbaWy4m02BiS4rxgJxV_1uR33q4,7764
|
56
|
-
exonware/xwnode/strategies/nodes/node_aho_corasick.py,sha256=tBkIihgzwZFSsLZJwkuLKBm1OF0UMP8C7PV4v4OY3XQ,18567
|
57
|
-
exonware/xwnode/strategies/nodes/node_array_list.py,sha256=Ny39_KqDZrxmWd2axU_jYJRD36csiz2lW2DwW5XRTGU,6036
|
58
|
-
exonware/xwnode/strategies/nodes/node_avl_tree.py,sha256=yo6CI_fdE4bmLv4b8a37xYol-52tkkrBVNbPURswjv8,12830
|
59
|
-
exonware/xwnode/strategies/nodes/node_b_plus_tree.py,sha256=8f_Qt5OupULH3We0aNDEpbJOwzmlXISBGJLjxw5hkdM,18867
|
60
|
-
exonware/xwnode/strategies/nodes/node_bitmap.py,sha256=bh8SpeA2g8246hM3cchRcbYS1LFWlUUFjmOOGD6fx-Y,15060
|
61
|
-
exonware/xwnode/strategies/nodes/node_bitset_dynamic.py,sha256=gqWvwzQJoCMCkzBF9h3BjKAZrF4toFlLLqbFf_XrPyI,18843
|
62
|
-
exonware/xwnode/strategies/nodes/node_bloom_filter.py,sha256=wl8Gb-SZjtBvpVleiKLI0T99fyz7uXkPhTo-7ybyJFQ,13205
|
63
|
-
exonware/xwnode/strategies/nodes/node_btree.py,sha256=GrOhmp18VcEOhGZ1B5V41XSQIe5QleJjpmvNNwh7Fq0,12254
|
64
|
-
exonware/xwnode/strategies/nodes/node_count_min_sketch.py,sha256=i1Nw2c_UcgxokkhKRQhn7_xV63G9xZYenMHmKhu8sAY,17916
|
65
|
-
exonware/xwnode/strategies/nodes/node_cow_tree.py,sha256=Dd3mj_GPJQvxyjJDE8xtfHfRKuZP4LiujE7rjUbV_t0,17109
|
66
|
-
exonware/xwnode/strategies/nodes/node_cuckoo_hash.py,sha256=HkwLYMfzDxBZ-UhLviBmU1v2yo1R-0sCqGkl3_ugHDQ,14958
|
67
|
-
exonware/xwnode/strategies/nodes/node_fenwick_tree.py,sha256=GXZQQmvf1hxqvD_srijmfz8E9orsIw7sqUW6CRSWNwI,10714
|
68
|
-
exonware/xwnode/strategies/nodes/node_hash_map.py,sha256=zCgcWJrYix5CQglNHb3-Hen80Ci1GkErLAMD6hnK4Oo,8667
|
69
|
-
exonware/xwnode/strategies/nodes/node_heap.py,sha256=GXr9XtcyjmMRkozizPBzg4YH79iFqC3ALFjYlQ7x-VA,6906
|
70
|
-
exonware/xwnode/strategies/nodes/node_hyperloglog.py,sha256=XyUApNd6C07_C8czNQGUEqilo3WCfhiT1BgEZEoRdX4,14840
|
71
|
-
exonware/xwnode/strategies/nodes/node_linked_list.py,sha256=b9kBKSkR3DnTuVeID1okmu0fsin5vS7hnoCDfF6rORc,13436
|
72
|
-
exonware/xwnode/strategies/nodes/node_lsm_tree.py,sha256=u_0dF9OYZ8PC_tYKQdBSxOrFM2dZjEi_tLseYQE-GE4,14743
|
73
|
-
exonware/xwnode/strategies/nodes/node_ordered_map.py,sha256=A_HliRy-kGE1ffWdnzFZu0Z-kmirzq1b_72fYUmXIUI,14513
|
74
|
-
exonware/xwnode/strategies/nodes/node_ordered_map_balanced.py,sha256=IWLUtU_1mCK8oZkSww61FNKzOTrPemzti9fXjn_XtpU,20495
|
75
|
-
exonware/xwnode/strategies/nodes/node_patricia.py,sha256=N7kesjteKI9Su33emZxL_lmN9tGY2z2eP6wsPfKGGwY,18683
|
76
|
-
exonware/xwnode/strategies/nodes/node_persistent_tree.py,sha256=RRcx6UKXdLbPOuNkJoM12V_C2XDO8yw98cfbb6a8WBI,14338
|
77
|
-
exonware/xwnode/strategies/nodes/node_radix_trie.py,sha256=ygtXpv4dRsykNvHn4LaScqHgGGIArzTykUuhgMNL_z8,17129
|
78
|
-
exonware/xwnode/strategies/nodes/node_red_black_tree.py,sha256=rkEGR_LzPwfR7D2mKVv6LyscNmAkwdWMY6sI0pIGo7I,17693
|
79
|
-
exonware/xwnode/strategies/nodes/node_roaring_bitmap.py,sha256=vgHGS_eU1jWcRMBwti5wt14lYEvilcRGfLOVqTV50IQ,20432
|
80
|
-
exonware/xwnode/strategies/nodes/node_segment_tree.py,sha256=1kVO0zJbkibGWOrYMK1aKvbPB2VpyTM_tU8s41dESgY,10767
|
81
|
-
exonware/xwnode/strategies/nodes/node_set_hash.py,sha256=kX3m8PWUuI3obsnNSIHHpe7ttCcvG1crW8PVo0AP4nM,13302
|
82
|
-
exonware/xwnode/strategies/nodes/node_set_tree.py,sha256=KD33G-VvOSgqOx1exGNGnk15t7RC-LGYH9otcwHS5Ks,15851
|
83
|
-
exonware/xwnode/strategies/nodes/node_skip_list.py,sha256=EsVOCii9qILZuCDf41FOGAHkU4jesKPF7lNPdClbWVQ,11354
|
84
|
-
exonware/xwnode/strategies/nodes/node_splay_tree.py,sha256=lyaevu3mF5ItXU0jUcM8ANMlWi6YjF5AyJ1USJ-Dtag,13180
|
85
|
-
exonware/xwnode/strategies/nodes/node_suffix_array.py,sha256=_roNIfPAH_kRYk_0Iz-1EExk4z-7Hwe-KDg26Z_-Ako,16877
|
86
|
-
exonware/xwnode/strategies/nodes/node_treap.py,sha256=7JMSw6WIBXaLSGyPG278L_yDsIab_yA6uJUX12eEG5c,13790
|
87
|
-
exonware/xwnode/strategies/nodes/node_tree_graph_hybrid.py,sha256=iPO1RyzTTU6YYe5E1bhTB1L4Q1nEH449XSTujhr2sbs,53680
|
88
|
-
exonware/xwnode/strategies/nodes/node_trie.py,sha256=tzp4AmFhp6TMB94W78hlMsKxGyOrblq29UuFA-qOgDU,8571
|
89
|
-
exonware/xwnode/strategies/nodes/node_union_find.py,sha256=URFotyf9i4C2xYSC9-zOVTQ6lqLplwkgYuFYhFKUtfM,7163
|
90
|
-
exonware/xwnode/strategies/nodes/node_xdata_optimized.py,sha256=zM16B4X3FXpTeG4iKhnKG9aweuQB3vj_bNh_S406wBI,14418
|
91
|
-
exonware/xwnode/strategies/nodes/priority_queue.py,sha256=NWye9qfvyO7Gnq6U2DD2F4xNqqRtJ9zwUGUpC5rbtLA,7821
|
92
|
-
exonware/xwnode/strategies/nodes/queue.py,sha256=9Ja6cLsKSGRKhNUr2A4vOeHnGi5x66-Cqe_RxZKKU8g,5282
|
93
|
-
exonware/xwnode/strategies/nodes/sparse_matrix.py,sha256=4rIB4kxLViorGBDHEm3w5GcDIs8UPtQLBUVZgscu7yk,7141
|
94
|
-
exonware/xwnode/strategies/nodes/stack.py,sha256=2dm7vea9H6rczDaIiMTUy-lWYxfjZQ-bS11TiWAATpY,5049
|
95
|
-
exonware/xwnode/strategies/nodes/trie.py,sha256=y4eCbuHGaLWR3ZlJgxs28sctYV-nPJ322_00S2mX-0g,8989
|
96
|
-
exonware/xwnode/strategies/nodes/union_find.py,sha256=xY2qlgcd6MbwClhjP_ap0JRgNCe7KfXo39pXL_B3RJg,10279
|
97
|
-
exonware/xwnode/strategies/queries/__init__.py,sha256=owo_-AvdZK3VdrRU22jXmjga_tU78_SOZyk8UBXGPQs,617
|
98
|
-
exonware/xwnode/strategies/queries/base.py,sha256=TWeRSl3O5XVlUVKlf_ufALuYoUCgdPMOaNt6cCnBgB4,8357
|
99
|
-
exonware/xwnode/strategies/queries/cql.py,sha256=Yx3bRzSj3AxWi6CdI4MesLbELCDjTLbjq6uhrchbCHw,7524
|
100
|
-
exonware/xwnode/strategies/queries/cypher.py,sha256=mRrEKPSVGS0BdeZd6RKVns7Oaar2tHT6VBoJHyvDC8c,6560
|
101
|
-
exonware/xwnode/strategies/queries/datalog.py,sha256=j2H7vynFQIK-pEiIZrz-Iafwyd8A3WIglJsN2dzunOQ,2740
|
102
|
-
exonware/xwnode/strategies/queries/elastic_dsl.py,sha256=75Hs2GgqpafdgmbMg2ihJ40z_x27q8x8wF-aj7z6j6s,2771
|
103
|
-
exonware/xwnode/strategies/queries/eql.py,sha256=mRK_SQ38x_PSymdH-mUgci0cTvyfoi0HUyL2mC2DYfM,2685
|
104
|
-
exonware/xwnode/strategies/queries/flux.py,sha256=VKThk77wPII3Vx7KYfZG1JSda_1xSGpr4eyKUmxlBDU,2747
|
105
|
-
exonware/xwnode/strategies/queries/gql.py,sha256=HASkLV7LRhrMbuA8MMDM6tMWSVvmRQNjm3DljCsBQZ4,2409
|
106
|
-
exonware/xwnode/strategies/queries/graphql.py,sha256=MaWYdvm5zHXt6Op3fHlCrJHiJ2bZ2JFr8U1pHPIWXd4,7402
|
107
|
-
exonware/xwnode/strategies/queries/gremlin.py,sha256=kVJ4QhiNz0_wOsA_7yO6TjFR9vHCanCxsxW1Uu3rtzc,6850
|
108
|
-
exonware/xwnode/strategies/queries/hiveql.py,sha256=ruUYyKTeRF4saYQ_odBa9hejqrnxLlBbK-mpsTB1OKU,7813
|
109
|
-
exonware/xwnode/strategies/queries/hql.py,sha256=ycTZd__Zgyr8YauVKskN_dchQmO1BeuDn3Cc2Qtf0L0,2692
|
110
|
-
exonware/xwnode/strategies/queries/jmespath.py,sha256=15VaeT7K1496TyAtpk0juCPH8UtFtJ-PuRA6MWR2dQQ,7963
|
111
|
-
exonware/xwnode/strategies/queries/jq.py,sha256=D7gIMHTBbnQWkHHwDKRhVeycc0DLoobk-ZUX_baYdCk,2333
|
112
|
-
exonware/xwnode/strategies/queries/json_query.py,sha256=mGW6y8g6MWjl2ou0T-EIARH8hAT1TT1W24t-GkCAMwc,2306
|
113
|
-
exonware/xwnode/strategies/queries/jsoniq.py,sha256=p_sz6zxz1nOSf8L7p8-VI6o2PW0fl21ltTw0OHTHF54,8162
|
114
|
-
exonware/xwnode/strategies/queries/kql.py,sha256=dOw7HpU_GDjydmwKmg4nkdm0FFHlH8RjcggwhN-zbAc,2671
|
115
|
-
exonware/xwnode/strategies/queries/linq.py,sha256=1kcQ5w9tnjQm0dl7JyZNnwDGruZ1PWgkxPWRGjnN2m4,7994
|
116
|
-
exonware/xwnode/strategies/queries/logql.py,sha256=tlPH5XEQ5Fm_HVEP2BKuC5FLV7oUHkuQ_qaV0j2-bTw,2744
|
117
|
-
exonware/xwnode/strategies/queries/mql.py,sha256=c3oTkzHJ5BqwL1lxd8icTNVGtkYGXONKEsUH6a52USw,2554
|
118
|
-
exonware/xwnode/strategies/queries/n1ql.py,sha256=wPjWyi2_os2V4F59fZbHx-65ajsInX4OuYzKOm7QFU8,7852
|
119
|
-
exonware/xwnode/strategies/queries/partiql.py,sha256=UIeYH7DwmUo6lJA6Y9nktOZjzV-mLFrVxEtdQMPgSwM,2717
|
120
|
-
exonware/xwnode/strategies/queries/pig.py,sha256=0oAFo0oxRlS_M71m-hq2qBm0U2Bh3bK7aopNBu0etEk,8530
|
121
|
-
exonware/xwnode/strategies/queries/promql.py,sha256=SW2V_gATxk_y76OlVM8mDrBBkpg-A1nuxixA0MF-VFI,2714
|
122
|
-
exonware/xwnode/strategies/queries/sparql.py,sha256=0UgpPl9gfyg5mZPDFjeCRBo1RgganVsU14uI2Jj_tOU,7443
|
123
|
-
exonware/xwnode/strategies/queries/sql.py,sha256=aNUSE_dCcrOVbtB9sSRh2AnLdq2GVxZ6p10D_30G2_8,10212
|
124
|
-
exonware/xwnode/strategies/queries/xml_query.py,sha256=-0e-Slk6QZlG46zvAAF77YAfqhr4Bk6Bg8gb-X_3bpM,2329
|
125
|
-
exonware/xwnode/strategies/queries/xpath.py,sha256=Ofau8Kmq9iKk2Uc4PHY_XYdMlYEL_iRmonz_bBZphH4,9120
|
126
|
-
exonware/xwnode/strategies/queries/xquery.py,sha256=8mAdVGjc0AOY0UPi_BU6vF-XqEiKetJtb6np0f-bASc,8692
|
127
|
-
exonware/xwnode/strategies/queries/xwnode_executor.py,sha256=8iEjfwGaH6NYCrjf3e49hFE_4EzYfLt50FKuEur1sx4,12191
|
128
|
-
exonware/xwnode/strategies/queries/xwquery_strategy.py,sha256=JSjgI8hx8p_deblUm1br6-6oj_-Cf0znPomyxc3GyPI,16193
|
129
|
-
exonware_xwnode-0.0.1.12.dist-info/METADATA,sha256=8HJxldH_5uqOEy45YHfSnb5mVCpuO38_1FwSeYH_C24,5790
|
130
|
-
exonware_xwnode-0.0.1.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
131
|
-
exonware_xwnode-0.0.1.12.dist-info/licenses/LICENSE,sha256=w42ohoEUfhyT0NgiivAL4fWg2AMRLGnfXPMAR4EO-MU,1094
|
132
|
-
exonware_xwnode-0.0.1.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|