exonware-xwnode 0.0.1.13__py3-none-any.whl → 0.0.1.15__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 (213) hide show
  1. exonware/__init__.py +1 -1
  2. exonware/xwnode/__init__.py +1 -1
  3. exonware/xwnode/base.py +1 -1
  4. exonware/xwnode/common/__init__.py +20 -0
  5. exonware/xwnode/common/management/__init__.py +26 -0
  6. exonware/xwnode/{strategies → common/management}/manager.py +2 -2
  7. exonware/xwnode/common/monitoring/__init__.py +26 -0
  8. exonware/xwnode/{strategies → common/monitoring}/metrics.py +2 -2
  9. exonware/xwnode/{strategies → common/monitoring}/pattern_detector.py +2 -2
  10. exonware/xwnode/{strategies → common/monitoring}/performance_monitor.py +2 -2
  11. exonware/xwnode/common/patterns/__init__.py +26 -0
  12. exonware/xwnode/{strategies → common/patterns}/advisor.py +1 -1
  13. exonware/xwnode/{strategies → common/patterns}/flyweight.py +4 -4
  14. exonware/xwnode/{strategies → common/patterns}/registry.py +109 -112
  15. exonware/xwnode/common/utils/__init__.py +26 -0
  16. exonware/xwnode/{strategies/edges → edges/strategies}/__init__.py +1 -1
  17. exonware/xwnode/{strategies/edges → edges/strategies}/base.py +3 -3
  18. exonware/xwnode/facade.py +4 -3
  19. exonware/xwnode/{strategies/nodes → nodes/strategies}/__init__.py +1 -1
  20. exonware/xwnode/{strategies/nodes → nodes/strategies}/adjacency_list.py +7 -2
  21. exonware/xwnode/{strategies/nodes → nodes/strategies}/aho_corasick.py +6 -1
  22. exonware/xwnode/{strategies/nodes → nodes/strategies}/array_list.py +6 -1
  23. exonware/xwnode/{strategies/nodes → nodes/strategies}/base.py +24 -4
  24. exonware/xwnode/nodes/strategies/contracts.py +116 -0
  25. exonware/xwnode/{strategies/nodes → nodes/strategies}/deque.py +7 -2
  26. exonware/xwnode/{strategies/nodes → nodes/strategies}/hash_map.py +4 -0
  27. exonware/xwnode/{strategies/nodes → nodes/strategies}/heap.py +6 -1
  28. exonware/xwnode/{strategies/nodes → nodes/strategies}/linked_list.py +6 -1
  29. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_aho_corasick.py +6 -1
  30. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_array_list.py +4 -0
  31. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_avl_tree.py +6 -1
  32. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_b_plus_tree.py +6 -1
  33. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_bitmap.py +6 -1
  34. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_bitset_dynamic.py +6 -1
  35. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_bloom_filter.py +4 -0
  36. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_btree.py +6 -1
  37. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_count_min_sketch.py +4 -0
  38. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_cow_tree.py +6 -1
  39. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_fenwick_tree.py +6 -1
  40. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_hash_map.py +4 -0
  41. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_heap.py +6 -1
  42. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_hyperloglog.py +4 -0
  43. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_linked_list.py +4 -0
  44. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_lsm_tree.py +6 -1
  45. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_ordered_map.py +6 -1
  46. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_ordered_map_balanced.py +6 -1
  47. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_patricia.py +6 -1
  48. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_persistent_tree.py +6 -1
  49. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_radix_trie.py +6 -1
  50. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_red_black_tree.py +6 -1
  51. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_roaring_bitmap.py +6 -1
  52. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_segment_tree.py +6 -1
  53. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_set_hash.py +4 -0
  54. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_set_tree.py +6 -1
  55. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_skip_list.py +6 -1
  56. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_splay_tree.py +6 -1
  57. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_suffix_array.py +6 -1
  58. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_treap.py +6 -1
  59. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_tree_graph_hybrid.py +4 -0
  60. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_trie.py +6 -1
  61. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_union_find.py +6 -1
  62. exonware/xwnode/{strategies/nodes → nodes/strategies}/node_xdata_optimized.py +4 -0
  63. exonware/xwnode/{strategies/nodes → nodes/strategies}/priority_queue.py +7 -2
  64. exonware/xwnode/{strategies/nodes → nodes/strategies}/queue.py +7 -2
  65. exonware/xwnode/{strategies/nodes → nodes/strategies}/sparse_matrix.py +7 -2
  66. exonware/xwnode/{strategies/nodes → nodes/strategies}/stack.py +7 -2
  67. exonware/xwnode/{strategies/nodes → nodes/strategies}/trie.py +6 -1
  68. exonware/xwnode/{strategies/nodes → nodes/strategies}/union_find.py +6 -1
  69. exonware/xwnode/queries/executors/__init__.py +47 -0
  70. exonware/xwnode/queries/executors/advanced/__init__.py +37 -0
  71. exonware/xwnode/queries/executors/advanced/aggregate_executor.py +50 -0
  72. exonware/xwnode/queries/executors/advanced/ask_executor.py +50 -0
  73. exonware/xwnode/queries/executors/advanced/construct_executor.py +50 -0
  74. exonware/xwnode/queries/executors/advanced/describe_executor.py +50 -0
  75. exonware/xwnode/queries/executors/advanced/for_loop_executor.py +50 -0
  76. exonware/xwnode/queries/executors/advanced/foreach_executor.py +50 -0
  77. exonware/xwnode/queries/executors/advanced/join_executor.py +50 -0
  78. exonware/xwnode/queries/executors/advanced/let_executor.py +50 -0
  79. exonware/xwnode/queries/executors/advanced/mutation_executor.py +50 -0
  80. exonware/xwnode/queries/executors/advanced/options_executor.py +50 -0
  81. exonware/xwnode/queries/executors/advanced/pipe_executor.py +50 -0
  82. exonware/xwnode/queries/executors/advanced/subscribe_executor.py +50 -0
  83. exonware/xwnode/queries/executors/advanced/subscription_executor.py +50 -0
  84. exonware/xwnode/queries/executors/advanced/union_executor.py +50 -0
  85. exonware/xwnode/queries/executors/advanced/window_executor.py +51 -0
  86. exonware/xwnode/queries/executors/advanced/with_cte_executor.py +50 -0
  87. exonware/xwnode/queries/executors/aggregation/__init__.py +21 -0
  88. exonware/xwnode/queries/executors/aggregation/avg_executor.py +50 -0
  89. exonware/xwnode/queries/executors/aggregation/count_executor.py +38 -0
  90. exonware/xwnode/queries/executors/aggregation/distinct_executor.py +50 -0
  91. exonware/xwnode/queries/executors/aggregation/group_executor.py +50 -0
  92. exonware/xwnode/queries/executors/aggregation/having_executor.py +50 -0
  93. exonware/xwnode/queries/executors/aggregation/max_executor.py +50 -0
  94. exonware/xwnode/queries/executors/aggregation/min_executor.py +50 -0
  95. exonware/xwnode/queries/executors/aggregation/sum_executor.py +50 -0
  96. exonware/xwnode/queries/executors/aggregation/summarize_executor.py +50 -0
  97. exonware/xwnode/queries/executors/array/__init__.py +9 -0
  98. exonware/xwnode/queries/executors/array/indexing_executor.py +51 -0
  99. exonware/xwnode/queries/executors/array/slicing_executor.py +51 -0
  100. exonware/xwnode/queries/executors/base.py +257 -0
  101. exonware/xwnode/queries/executors/capability_checker.py +204 -0
  102. exonware/xwnode/queries/executors/contracts.py +166 -0
  103. exonware/xwnode/queries/executors/core/__init__.py +17 -0
  104. exonware/xwnode/queries/executors/core/create_executor.py +96 -0
  105. exonware/xwnode/queries/executors/core/delete_executor.py +99 -0
  106. exonware/xwnode/queries/executors/core/drop_executor.py +100 -0
  107. exonware/xwnode/queries/executors/core/insert_executor.py +39 -0
  108. exonware/xwnode/queries/executors/core/select_executor.py +152 -0
  109. exonware/xwnode/queries/executors/core/update_executor.py +102 -0
  110. exonware/xwnode/queries/executors/data/__init__.py +13 -0
  111. exonware/xwnode/queries/executors/data/alter_executor.py +50 -0
  112. exonware/xwnode/queries/executors/data/load_executor.py +50 -0
  113. exonware/xwnode/queries/executors/data/merge_executor.py +50 -0
  114. exonware/xwnode/queries/executors/data/store_executor.py +50 -0
  115. exonware/xwnode/queries/executors/engine.py +221 -0
  116. exonware/xwnode/queries/executors/errors.py +68 -0
  117. exonware/xwnode/queries/executors/filtering/__init__.py +25 -0
  118. exonware/xwnode/queries/executors/filtering/between_executor.py +80 -0
  119. exonware/xwnode/queries/executors/filtering/filter_executor.py +79 -0
  120. exonware/xwnode/queries/executors/filtering/has_executor.py +70 -0
  121. exonware/xwnode/queries/executors/filtering/in_executor.py +70 -0
  122. exonware/xwnode/queries/executors/filtering/like_executor.py +76 -0
  123. exonware/xwnode/queries/executors/filtering/optional_executor.py +76 -0
  124. exonware/xwnode/queries/executors/filtering/range_executor.py +80 -0
  125. exonware/xwnode/queries/executors/filtering/term_executor.py +77 -0
  126. exonware/xwnode/queries/executors/filtering/values_executor.py +71 -0
  127. exonware/xwnode/queries/executors/filtering/where_executor.py +44 -0
  128. exonware/xwnode/queries/executors/graph/__init__.py +15 -0
  129. exonware/xwnode/queries/executors/graph/in_traverse_executor.py +51 -0
  130. exonware/xwnode/queries/executors/graph/match_executor.py +51 -0
  131. exonware/xwnode/queries/executors/graph/out_executor.py +51 -0
  132. exonware/xwnode/queries/executors/graph/path_executor.py +51 -0
  133. exonware/xwnode/queries/executors/graph/return_executor.py +51 -0
  134. exonware/xwnode/queries/executors/ordering/__init__.py +9 -0
  135. exonware/xwnode/queries/executors/ordering/by_executor.py +50 -0
  136. exonware/xwnode/queries/executors/ordering/order_executor.py +51 -0
  137. exonware/xwnode/queries/executors/projection/__init__.py +9 -0
  138. exonware/xwnode/queries/executors/projection/extend_executor.py +50 -0
  139. exonware/xwnode/queries/executors/projection/project_executor.py +50 -0
  140. exonware/xwnode/queries/executors/registry.py +173 -0
  141. exonware/xwnode/queries/executors/types.py +93 -0
  142. exonware/xwnode/queries/parsers/__init__.py +26 -0
  143. exonware/xwnode/queries/parsers/base.py +86 -0
  144. exonware/xwnode/queries/parsers/contracts.py +46 -0
  145. exonware/xwnode/queries/parsers/errors.py +53 -0
  146. exonware/xwnode/queries/parsers/sql_param_extractor.py +318 -0
  147. exonware/xwnode/{strategies/queries → queries/strategies}/__init__.py +1 -1
  148. exonware/xwnode/{strategies/queries → queries/strategies}/base.py +1 -1
  149. exonware/xwnode/{strategies/queries → queries/strategies}/cql.py +1 -1
  150. exonware/xwnode/{strategies/queries → queries/strategies}/cypher.py +1 -1
  151. exonware/xwnode/{strategies/queries → queries/strategies}/datalog.py +1 -1
  152. exonware/xwnode/{strategies/queries → queries/strategies}/elastic_dsl.py +1 -1
  153. exonware/xwnode/{strategies/queries → queries/strategies}/eql.py +1 -1
  154. exonware/xwnode/{strategies/queries → queries/strategies}/flux.py +1 -1
  155. exonware/xwnode/{strategies/queries → queries/strategies}/gql.py +1 -1
  156. exonware/xwnode/{strategies/queries → queries/strategies}/graphql.py +1 -1
  157. exonware/xwnode/{strategies/queries → queries/strategies}/gremlin.py +1 -1
  158. exonware/xwnode/{strategies/queries → queries/strategies}/hiveql.py +1 -1
  159. exonware/xwnode/{strategies/queries → queries/strategies}/hql.py +1 -1
  160. exonware/xwnode/{strategies/queries → queries/strategies}/jmespath.py +1 -1
  161. exonware/xwnode/{strategies/queries → queries/strategies}/jq.py +1 -1
  162. exonware/xwnode/{strategies/queries → queries/strategies}/json_query.py +1 -1
  163. exonware/xwnode/{strategies/queries → queries/strategies}/jsoniq.py +1 -1
  164. exonware/xwnode/{strategies/queries → queries/strategies}/kql.py +1 -1
  165. exonware/xwnode/{strategies/queries → queries/strategies}/linq.py +1 -1
  166. exonware/xwnode/{strategies/queries → queries/strategies}/logql.py +1 -1
  167. exonware/xwnode/{strategies/queries → queries/strategies}/mql.py +1 -1
  168. exonware/xwnode/{strategies/queries → queries/strategies}/n1ql.py +1 -1
  169. exonware/xwnode/{strategies/queries → queries/strategies}/partiql.py +1 -1
  170. exonware/xwnode/{strategies/queries → queries/strategies}/pig.py +1 -1
  171. exonware/xwnode/{strategies/queries → queries/strategies}/promql.py +1 -1
  172. exonware/xwnode/{strategies/queries → queries/strategies}/sparql.py +1 -1
  173. exonware/xwnode/{strategies/queries → queries/strategies}/sql.py +1 -1
  174. exonware/xwnode/{strategies/queries → queries/strategies}/xml_query.py +1 -1
  175. exonware/xwnode/{strategies/queries → queries/strategies}/xpath.py +1 -1
  176. exonware/xwnode/{strategies/queries → queries/strategies}/xquery.py +1 -1
  177. exonware/xwnode/{strategies/queries → queries/strategies}/xwnode_executor.py +1 -1
  178. exonware/xwnode/{strategies/queries → queries/strategies}/xwquery.py +43 -11
  179. exonware/xwnode/strategies/__init__.py +8 -8
  180. exonware/xwnode/version.py +3 -3
  181. {exonware_xwnode-0.0.1.13.dist-info → exonware_xwnode-0.0.1.15.dist-info}/METADATA +2 -3
  182. exonware_xwnode-0.0.1.15.dist-info/RECORD +214 -0
  183. exonware/xwnode/strategies/impls/__init__.py +0 -13
  184. exonware/xwnode/strategies/nodes/_base_node.py +0 -307
  185. exonware_xwnode-0.0.1.13.dist-info/RECORD +0 -132
  186. /exonware/xwnode/{strategies → common/management}/migration.py +0 -0
  187. /exonware/xwnode/{strategies → common/utils}/simple.py +0 -0
  188. /exonware/xwnode/{strategies → common/utils}/utils.py +0 -0
  189. /exonware/xwnode/{strategies/impls → edges/strategies}/_base_edge.py +0 -0
  190. /exonware/xwnode/{strategies/edges → edges/strategies}/adj_list.py +0 -0
  191. /exonware/xwnode/{strategies/edges → edges/strategies}/adj_matrix.py +0 -0
  192. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_adj_list.py +0 -0
  193. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_adj_matrix.py +0 -0
  194. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_bidir_wrapper.py +0 -0
  195. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_block_adj_matrix.py +0 -0
  196. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_coo.py +0 -0
  197. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_csc.py +0 -0
  198. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_csr.py +0 -0
  199. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_dynamic_adj_list.py +0 -0
  200. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_flow_network.py +0 -0
  201. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_hyperedge_set.py +0 -0
  202. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_neural_graph.py +0 -0
  203. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_octree.py +0 -0
  204. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_property_store.py +0 -0
  205. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_quadtree.py +0 -0
  206. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_rtree.py +0 -0
  207. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_temporal_edgeset.py +0 -0
  208. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_tree_graph_basic.py +0 -0
  209. /exonware/xwnode/{strategies/impls → edges/strategies}/edge_weighted_graph.py +0 -0
  210. /exonware/xwnode/{strategies/impls → nodes/strategies}/_base_node.py +0 -0
  211. /exonware/xwnode/{strategies/nodes → nodes/strategies}/node_cuckoo_hash.py +0 -0
  212. {exonware_xwnode-0.0.1.13.dist-info → exonware_xwnode-0.0.1.15.dist-info}/WHEEL +0 -0
  213. {exonware_xwnode-0.0.1.13.dist-info → exonware_xwnode-0.0.1.15.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=snwuFlh_IpNOFLmsW5Oblh0wdELoYfd_RfSMU3zI3FE,324
2
- exonware/xwnode/__init__.py,sha256=LhJVUzDRKBgMKH9K7cdrW9yC9phNvoXr8nkDbK-Iyj8,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=FBV5_bvQ488rOUJyMCcwlZluX3pJhH1n7UJybDlo39M,16029
8
- exonware/xwnode/types.py,sha256=uioV6DW9nnQ0p3ZIdhYNQ5XtbQB2_INIljUkeCZox9o,34471
9
- exonware/xwnode/version.py,sha256=FEeu7LTKyjbs4greNDHfIbyktJcnCM-8qjxMaB5f6Tw,2379
10
- exonware/xwnode/strategies/__init__.py,sha256=Yz6fOZiYZztIxba9aarJSyjKcV_9st2t14d5FADTK_E,7568
11
- exonware/xwnode/strategies/advisor.py,sha256=NIDK8S-nV69-V0Hur7e4Z1Ao1Gnia_d6SRBc1gxoJ9U,18184
12
- exonware/xwnode/strategies/flyweight.py,sha256=MsDwzPSyme-dFhzMsYoocCcOZPTmaOVfZieWw18HpZU,11316
13
- exonware/xwnode/strategies/manager.py,sha256=Gij4p0BijGq9P3bDgJcbtksNJCLn86FM6TkcEv7TNyk,33902
14
- exonware/xwnode/strategies/metrics.py,sha256=xAi8Et3OpOzOto1pQ28MgI_VPJDzftBa8vXOpIMLdOE,19447
15
- exonware/xwnode/strategies/migration.py,sha256=w_YEpNiVtYBA50mGvfTVyLFz-GViyT5Adzmvlp8P4gk,20181
16
- exonware/xwnode/strategies/pattern_detector.py,sha256=b3-T5FZ6CLpvry7lQMDp2IfBx_TPTvNFMeqT3LoeFtI,21661
17
- exonware/xwnode/strategies/performance_monitor.py,sha256=WwpE4X9QM1RkNEDCxewzViow1fzPc7jmClwdJsUc7_U,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=jywpbrwN2aKziTLMK_0H42nP1ewhtocVaX0ueH70Ato,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=qMaCf-lfnernKXPK-WJ4r4ITv9y0rKI1kYoq4cvX100,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=UeU5fohSdZMYwE1w48rtnNMN_fwh8J1jgCeI3zKQ8w0,1197
47
- exonware/xwnode/strategies/nodes/_base_node.py,sha256=TE7ND2qSQnruJ01h1JtLI3WIzoJiLPdJnan5HeFWvwA,10270
48
- exonware/xwnode/strategies/nodes/adjacency_list.py,sha256=yFWGyOd1l5lFMxunXPaT7RCI2t_ofO4DccaliVl9OxU,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=SOgdEsiFJNhF42FsjCYNTx79UF-pPOX2eRqI5Vh1JmA,8936
52
- exonware/xwnode/strategies/nodes/deque.py,sha256=U2Yd9mMOtQyG1hdl-g_xriDD8_sWMNaJ9Uh-SgZOYxI,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=Gj6hHgn8ZtEG5-Yf_xIt1ab1kNYUYYrzZI7POh08jAs,7821
92
- exonware/xwnode/strategies/nodes/queue.py,sha256=gPrc-DQd3fCrImA5U5PEwtS7IaltNVVj_eptDl-zqYE,5282
93
- exonware/xwnode/strategies/nodes/sparse_matrix.py,sha256=ApL_i2xX_Bv0kc_hrixFL5pFrjJm5JCW8MD06EbEdM4,7141
94
- exonware/xwnode/strategies/nodes/stack.py,sha256=0B5hNwDze54El2I-7qpul5y6SItVBhC2nPi4F4_BDFo,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=hLXVLqLcxuxlwXHURUurHGb52_rwcYYN7KwDNszNnUw,617
98
- exonware/xwnode/strategies/queries/base.py,sha256=XxCiyYIOOPifR5TBYWhvNZ6Vd4MzH9qAzfHkeO_KFkc,8357
99
- exonware/xwnode/strategies/queries/cql.py,sha256=hdky076s1E5aFbB783P-cPOY-fnYe60ZOccIMKtZoQM,7524
100
- exonware/xwnode/strategies/queries/cypher.py,sha256=-reuUEL7QckfOVdUzU50DHO8b3BNeDalZheSrueHDLA,6560
101
- exonware/xwnode/strategies/queries/datalog.py,sha256=Km6xMOTJ-gyH2A82mnYhfoUH849SFcJgZvAMgq6S4TA,2740
102
- exonware/xwnode/strategies/queries/elastic_dsl.py,sha256=Y8vlEtYC8rfHuY3KGoQgMi24FKRnZ5T0GBTN7YX-aH4,2771
103
- exonware/xwnode/strategies/queries/eql.py,sha256=i-OzGKDyG6PPnoh1JGTYB6203CRxfC6s94maKssKwbo,2685
104
- exonware/xwnode/strategies/queries/flux.py,sha256=bjGidrUcu1rCDZfznbPFYTv56YEgKyNB9Fmq-AgDV7o,2747
105
- exonware/xwnode/strategies/queries/gql.py,sha256=gaMug2DxnR3tspruHRo38DuN5z7r_RUSulLrPnqM4n8,2409
106
- exonware/xwnode/strategies/queries/graphql.py,sha256=tKgNkRK0-lT0NjV84b0D459pcWQHCN4BP0gQYdvQswk,7402
107
- exonware/xwnode/strategies/queries/gremlin.py,sha256=PiPnN0W67x-vcXUuz0cyAlp8YEvQdt_7PqMqElXAzG4,6850
108
- exonware/xwnode/strategies/queries/hiveql.py,sha256=oROb0vF1C3BYscZDtkxR9HuEpKlzTZHChvl3keUyqVc,7813
109
- exonware/xwnode/strategies/queries/hql.py,sha256=mZ2JidYHj3PLwY_72zKdLhkRNz-lYycEaYjQb_n9pwY,2692
110
- exonware/xwnode/strategies/queries/jmespath.py,sha256=5jvRRZT71jw8iZnrdFD8LoFXpheZVcKK3IXR7QCUbuQ,7963
111
- exonware/xwnode/strategies/queries/jq.py,sha256=SmgZ58Qxv2xuIxf4fCPS6hvAaoo30pzFLA2170ut5Cw,2333
112
- exonware/xwnode/strategies/queries/json_query.py,sha256=0OGgorF6J3SI6yUrpiE4ZDTZXbGVlad79CKfrsk20j4,2306
113
- exonware/xwnode/strategies/queries/jsoniq.py,sha256=vK2uZQQqJVCuucDxnPO1sq1f-awLZ7jRpDcxxD9e8PY,8162
114
- exonware/xwnode/strategies/queries/kql.py,sha256=rv4h2e_2TEeHU9adgGdzeCkmmGbjOezhfKguTAKbi6s,2671
115
- exonware/xwnode/strategies/queries/linq.py,sha256=xohmb6M19hFrNANrFwkNCAh0OXzvGCdO3YBRXB0naR8,7994
116
- exonware/xwnode/strategies/queries/logql.py,sha256=0rkg303PErEj2-1VeaL2ZUaNn1ciZxiJIL0OZlepFBE,2744
117
- exonware/xwnode/strategies/queries/mql.py,sha256=EMUhWaFfJu15Q9PRFM-BJ0b7dYnm_h5s7QxeBUe8fbk,2554
118
- exonware/xwnode/strategies/queries/n1ql.py,sha256=m6L4IQXvdtT0iqNeeguScchE4nax6zyWrJ778PGFvTY,7852
119
- exonware/xwnode/strategies/queries/partiql.py,sha256=AnYAiH8esGvJhg21JkIwHJF7CxEeO8avCmTAxeEJtQk,2717
120
- exonware/xwnode/strategies/queries/pig.py,sha256=5-zj1s0xXGkdLw15jsRnlliKFJeNprokwc_Aj1lV8h4,8530
121
- exonware/xwnode/strategies/queries/promql.py,sha256=SkSv3aYQ253nY0tFohY54LEezpTnPCEHQZYMJSsNB0Q,2714
122
- exonware/xwnode/strategies/queries/sparql.py,sha256=RgzoQIjNQXKRoSW2cWh3ZAqwH20U_Pm-1igpFotLki8,7443
123
- exonware/xwnode/strategies/queries/sql.py,sha256=gEcvijTVqv6uMJRvQVcYGH0XVhAA_Q97DgLRmdHS6Ek,10212
124
- exonware/xwnode/strategies/queries/xml_query.py,sha256=JloTpfrX2ch23wJ8Q-2O52H9KogMZEofT4Gi9KGA0ig,2329
125
- exonware/xwnode/strategies/queries/xpath.py,sha256=tyclYyZ4r9pYSaKiwljomH7Xo5sgfZjiy42ZycJ9fxE,9120
126
- exonware/xwnode/strategies/queries/xquery.py,sha256=s8AG3H1bTki22ViXGFKz_ccsK8mtozeLWle9DOEkO5A,8692
127
- exonware/xwnode/strategies/queries/xwnode_executor.py,sha256=qLa7tTY9HOosM0TUI9-Nm2Bhj7m0C6vBuhmHZ9cSCLo,12191
128
- exonware/xwnode/strategies/queries/xwquery.py,sha256=mIwXZ3nBOVc3NrVL-zth_hEoOVgKCLTjonJq2scZVIw,16193
129
- exonware_xwnode-0.0.1.13.dist-info/METADATA,sha256=29SCq0WB3cCqQOO42zGPx1J2GIoa-KXaw-ONc2-tBvU,5790
130
- exonware_xwnode-0.0.1.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
131
- exonware_xwnode-0.0.1.13.dist-info/licenses/LICENSE,sha256=w42ohoEUfhyT0NgiivAL4fWg2AMRLGnfXPMAR4EO-MU,1094
132
- exonware_xwnode-0.0.1.13.dist-info/RECORD,,
File without changes
File without changes