relationalai 0.12.9__py3-none-any.whl → 0.12.11__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.
- relationalai/__init__.py +9 -0
- relationalai/clients/__init__.py +2 -2
- relationalai/clients/local.py +571 -0
- relationalai/debugging.py +5 -2
- relationalai/semantics/__init__.py +2 -2
- relationalai/semantics/internal/__init__.py +2 -2
- relationalai/semantics/internal/internal.py +24 -7
- relationalai/semantics/lqp/README.md +34 -0
- relationalai/semantics/lqp/constructors.py +2 -1
- relationalai/semantics/lqp/executor.py +13 -2
- relationalai/semantics/lqp/ir.py +4 -0
- relationalai/semantics/lqp/model2lqp.py +41 -2
- relationalai/semantics/lqp/passes.py +6 -4
- relationalai/semantics/lqp/rewrite/__init__.py +2 -0
- relationalai/semantics/lqp/rewrite/annotate_constraints.py +55 -0
- relationalai/semantics/lqp/rewrite/extract_keys.py +22 -3
- relationalai/semantics/lqp/rewrite/functional_dependencies.py +42 -10
- relationalai/semantics/lqp/rewrite/quantify_vars.py +14 -0
- relationalai/semantics/lqp/validators.py +3 -0
- relationalai/semantics/metamodel/builtins.py +5 -0
- relationalai/semantics/metamodel/rewrite/flatten.py +10 -4
- relationalai/semantics/metamodel/typer/typer.py +13 -0
- relationalai/semantics/metamodel/types.py +2 -1
- relationalai/semantics/reasoners/graph/core.py +44 -53
- relationalai/tools/debugger.py +4 -2
- relationalai/tools/qb_debugger.py +5 -3
- {relationalai-0.12.9.dist-info → relationalai-0.12.11.dist-info}/METADATA +2 -2
- {relationalai-0.12.9.dist-info → relationalai-0.12.11.dist-info}/RECORD +31 -28
- {relationalai-0.12.9.dist-info → relationalai-0.12.11.dist-info}/WHEEL +0 -0
- {relationalai-0.12.9.dist-info → relationalai-0.12.11.dist-info}/entry_points.txt +0 -0
- {relationalai-0.12.9.dist-info → relationalai-0.12.11.dist-info}/licenses/LICENSE +0 -0
|
@@ -20,7 +20,7 @@ from relationalai.semantics import (
|
|
|
20
20
|
count, sum, avg,
|
|
21
21
|
)
|
|
22
22
|
from relationalai.docutils import include_in_docs
|
|
23
|
-
from relationalai.semantics.internal import annotations
|
|
23
|
+
from relationalai.semantics.internal import annotations, AnyEntity
|
|
24
24
|
from relationalai.semantics.internal import internal as builder_internal # For primitive graph algorithms.
|
|
25
25
|
from relationalai.semantics.std.math import abs, isnan, isinf, maximum, natural_log, sqrt
|
|
26
26
|
from relationalai.semantics.std.integers import int64
|
|
@@ -158,7 +158,7 @@ class Graph():
|
|
|
158
158
|
f"but is a `{type(weighted).__name__}`."
|
|
159
159
|
)
|
|
160
160
|
assert isinstance(model, Model), (
|
|
161
|
-
"The `model` argument must be a `
|
|
161
|
+
"The `model` argument must be a `relationalai.semantics.Model`, "
|
|
162
162
|
f"but is a `{type(model).__name__}`."
|
|
163
163
|
)
|
|
164
164
|
self.directed = directed
|
|
@@ -355,7 +355,7 @@ class Graph():
|
|
|
355
355
|
@cached_property
|
|
356
356
|
def Node(self) -> Concept:
|
|
357
357
|
"""Lazily define and cache the self.Node concept."""
|
|
358
|
-
_Node = self._user_node_concept or self._model.Concept(self._NodeConceptStr)
|
|
358
|
+
_Node = self._user_node_concept or self._model.Concept(self._NodeConceptStr, extends=[AnyEntity])
|
|
359
359
|
_Node.annotate(annotations.track("graphs", "Node"))
|
|
360
360
|
return _Node
|
|
361
361
|
|
|
@@ -2304,14 +2304,14 @@ class Graph():
|
|
|
2304
2304
|
# neighbor_a_rel = self._neighbor_of(node_subset_from)
|
|
2305
2305
|
#
|
|
2306
2306
|
# domain_w = Relationship(f"{{node:{self._NodeConceptStr}}} is the domain of `w` in `common_neighbor(u, v, w)`")
|
|
2307
|
-
#
|
|
2308
|
-
# where(neighbor_a_rel(node_x, node_y)).define(domain_w(node_y))
|
|
2307
|
+
# where(neighbor_a_rel(node_a, node_b)).define(domain_w(node_b))
|
|
2309
2308
|
# neighbor_b_rel = self._neighbor_of(domain_w)
|
|
2310
2309
|
#
|
|
2311
2310
|
# node_constraint = []
|
|
2312
2311
|
#
|
|
2313
|
-
# #
|
|
2314
|
-
# #
|
|
2312
|
+
# # For this case only, we reverse the args of `neighbor_b_rel()`, which
|
|
2313
|
+
# # is allowed by the symmetry of `neighbor`, in order to take advantage
|
|
2314
|
+
# # of domain constraint on `neighbor_b_rel()`.
|
|
2315
2315
|
# where(
|
|
2316
2316
|
# *node_constraint,
|
|
2317
2317
|
# neighbor_a_rel(node_a, neighbor_node),
|
|
@@ -2748,15 +2748,15 @@ class Graph():
|
|
|
2748
2748
|
if node_subset is None:
|
|
2749
2749
|
# No constraint - use cached count_inneighbor relationship and all nodes
|
|
2750
2750
|
count_inneighbor_rel = self._count_inneighbor
|
|
2751
|
-
|
|
2751
|
+
node_constraint = []
|
|
2752
2752
|
else:
|
|
2753
2753
|
# Constrained to nodes in the subset - use constrained count_inneighbor relationship
|
|
2754
2754
|
count_inneighbor_rel = self._count_inneighbor_of(node_subset)
|
|
2755
|
-
|
|
2755
|
+
node_constraint = [node_subset(self.Node)]
|
|
2756
2756
|
|
|
2757
2757
|
# Apply the same indegree logic for both cases
|
|
2758
2758
|
where(
|
|
2759
|
-
|
|
2759
|
+
*node_constraint,
|
|
2760
2760
|
_indegree := where(count_inneighbor_rel(self.Node, Integer)).select(Integer) | 0,
|
|
2761
2761
|
).define(_indegree_rel(self.Node, _indegree))
|
|
2762
2762
|
|
|
@@ -2933,15 +2933,15 @@ class Graph():
|
|
|
2933
2933
|
if node_subset is None:
|
|
2934
2934
|
# No constraint - use cached count_outneighbor relationship and all nodes
|
|
2935
2935
|
count_outneighbor_rel = self._count_outneighbor
|
|
2936
|
-
|
|
2936
|
+
node_constraint = []
|
|
2937
2937
|
else:
|
|
2938
2938
|
# Constrained to nodes in the subset - use constrained count_outneighbor relationship
|
|
2939
2939
|
count_outneighbor_rel = self._count_outneighbor_of(node_subset)
|
|
2940
|
-
|
|
2940
|
+
node_constraint = [node_subset(self.Node)]
|
|
2941
2941
|
|
|
2942
2942
|
# Apply the same outdegree logic for both cases
|
|
2943
2943
|
where(
|
|
2944
|
-
|
|
2944
|
+
*node_constraint,
|
|
2945
2945
|
_outdegree := where(count_outneighbor_rel(self.Node, Integer)).select(Integer) | 0,
|
|
2946
2946
|
).define(_outdegree_rel(self.Node, _outdegree))
|
|
2947
2947
|
|
|
@@ -3099,12 +3099,12 @@ class Graph():
|
|
|
3099
3099
|
node, neighbor, weight = self.Node.ref(), self.Node.ref(), Float.ref()
|
|
3100
3100
|
|
|
3101
3101
|
if node_subset is None:
|
|
3102
|
-
node_constraint =
|
|
3102
|
+
node_constraint = [] # No constraint on nodes.
|
|
3103
3103
|
else:
|
|
3104
|
-
node_constraint = node_subset(node) # Nodes constrained to given subset.
|
|
3104
|
+
node_constraint = [node_subset(node)] # Nodes constrained to given subset.
|
|
3105
3105
|
|
|
3106
3106
|
where(
|
|
3107
|
-
node_constraint,
|
|
3107
|
+
*node_constraint,
|
|
3108
3108
|
weighted_degree_no_loops := sum(neighbor, weight).per(node).where(
|
|
3109
3109
|
self._weight(node, neighbor, weight),
|
|
3110
3110
|
node != neighbor,
|
|
@@ -3172,7 +3172,7 @@ class Graph():
|
|
|
3172
3172
|
>>> define(n1, n2, n3)
|
|
3173
3173
|
>>> define(
|
|
3174
3174
|
... Edge.new(src=n1, dst=n2, weight=1.0),
|
|
3175
|
-
... Edge.new(src=n2, dst=n1, weight
|
|
3175
|
+
... Edge.new(src=n2, dst=n1, weight=0.0),
|
|
3176
3176
|
... Edge.new(src=n2, dst=n3, weight=1.0),
|
|
3177
3177
|
... )
|
|
3178
3178
|
>>>
|
|
@@ -3186,7 +3186,7 @@ class Graph():
|
|
|
3186
3186
|
... ).inspect()
|
|
3187
3187
|
▰▰▰▰ Setup complete
|
|
3188
3188
|
id node_weighted_indegree
|
|
3189
|
-
0 1
|
|
3189
|
+
0 1 0.0
|
|
3190
3190
|
1 2 1.0
|
|
3191
3191
|
2 3 1.0
|
|
3192
3192
|
>>>
|
|
@@ -3218,9 +3218,6 @@ class Graph():
|
|
|
3218
3218
|
weighted_outdegree
|
|
3219
3219
|
|
|
3220
3220
|
"""
|
|
3221
|
-
# TODO: It looks like the weights in the example in the docstring above
|
|
3222
|
-
# are holdovers from a version of the library that did not disallow
|
|
3223
|
-
# negative weights. Need to update the example to use only non-negative weights.
|
|
3224
3221
|
if of is None:
|
|
3225
3222
|
return self._weighted_indegree
|
|
3226
3223
|
else:
|
|
@@ -3251,20 +3248,15 @@ class Graph():
|
|
|
3251
3248
|
# Choose the appropriate node set
|
|
3252
3249
|
if node_subset is None:
|
|
3253
3250
|
# No constraint - use all nodes
|
|
3254
|
-
|
|
3251
|
+
node_constraint = []
|
|
3255
3252
|
else:
|
|
3256
3253
|
# Constrained to nodes in the subset
|
|
3257
|
-
|
|
3258
|
-
# TODO: In a future cleanup pass, replace `node_set` with a `node_constraint`
|
|
3259
|
-
# that replaces the `node_set(self.Node)` in the where clause below,
|
|
3260
|
-
# and generates only `self.Node` (rather than `self.Node(self.Node)`)
|
|
3261
|
-
# in the `subset is None` case. This applies to a couple other
|
|
3262
|
-
# degree-of type relations as well.
|
|
3254
|
+
node_constraint = [node_subset(self.Node)]
|
|
3263
3255
|
|
|
3264
3256
|
# Apply the weighted indegree logic for both cases
|
|
3265
3257
|
src, inweight = self.Node.ref(), Float.ref()
|
|
3266
3258
|
where(
|
|
3267
|
-
|
|
3259
|
+
*node_constraint,
|
|
3268
3260
|
_weighted_indegree := sum(src, inweight).per(self.Node).where(self._weight(src, self.Node, inweight)) | 0.0,
|
|
3269
3261
|
).define(_weighted_indegree_rel(self.Node, _weighted_indegree))
|
|
3270
3262
|
|
|
@@ -3324,7 +3316,7 @@ class Graph():
|
|
|
3324
3316
|
>>> define(n1, n2, n3)
|
|
3325
3317
|
>>> define(
|
|
3326
3318
|
... Edge.new(src=n1, dst=n2, weight=1.0),
|
|
3327
|
-
... Edge.new(src=n2, dst=n1, weight
|
|
3319
|
+
... Edge.new(src=n2, dst=n1, weight=0.0),
|
|
3328
3320
|
... Edge.new(src=n2, dst=n3, weight=1.0),
|
|
3329
3321
|
... )
|
|
3330
3322
|
>>>
|
|
@@ -3339,7 +3331,7 @@ class Graph():
|
|
|
3339
3331
|
▰▰▰▰ Setup complete
|
|
3340
3332
|
id node_weighted_outdegree
|
|
3341
3333
|
0 1 1.0
|
|
3342
|
-
1 2
|
|
3334
|
+
1 2 1.0
|
|
3343
3335
|
2 3 0.0
|
|
3344
3336
|
>>>
|
|
3345
3337
|
>>> # 4. Use 'of' parameter to constrain the set of nodes to compute weighted outdegree of
|
|
@@ -3355,7 +3347,7 @@ class Graph():
|
|
|
3355
3347
|
▰▰▰▰ Setup complete
|
|
3356
3348
|
id node_weighted_outdegree
|
|
3357
3349
|
0 1 1.0
|
|
3358
|
-
1 2
|
|
3350
|
+
1 2 1.0
|
|
3359
3351
|
|
|
3360
3352
|
Notes
|
|
3361
3353
|
-----
|
|
@@ -3404,15 +3396,15 @@ class Graph():
|
|
|
3404
3396
|
# Choose the appropriate node set
|
|
3405
3397
|
if node_subset is None:
|
|
3406
3398
|
# No constraint - use all nodes
|
|
3407
|
-
|
|
3399
|
+
node_constraint = []
|
|
3408
3400
|
else:
|
|
3409
3401
|
# Constrained to nodes in the subset
|
|
3410
|
-
|
|
3402
|
+
node_constraint = [node_subset(self.Node)]
|
|
3411
3403
|
|
|
3412
3404
|
# Apply the weighted outdegree logic for both cases
|
|
3413
3405
|
dst, outweight = self.Node.ref(), Float.ref()
|
|
3414
3406
|
where(
|
|
3415
|
-
|
|
3407
|
+
*node_constraint,
|
|
3416
3408
|
_weighted_outdegree := sum(dst, outweight).per(self.Node).where(self._weight(self.Node, dst, outweight)) | 0.0,
|
|
3417
3409
|
).define(_weighted_outdegree_rel(self.Node, _weighted_outdegree))
|
|
3418
3410
|
|
|
@@ -4537,12 +4529,12 @@ class Graph():
|
|
|
4537
4529
|
_triangle_count_rel = self._model.Relationship(f"{{node:{self._NodeConceptStr}}} belongs to {{count:Integer}} triangles")
|
|
4538
4530
|
|
|
4539
4531
|
if node_subset is None:
|
|
4540
|
-
node_constraint =
|
|
4532
|
+
node_constraint = [] # No constraint on nodes.
|
|
4541
4533
|
else:
|
|
4542
|
-
node_constraint = node_subset(self.Node) # Nodes constrained to given subset.
|
|
4534
|
+
node_constraint = [node_subset(self.Node)] # Nodes constrained to given subset.
|
|
4543
4535
|
|
|
4544
4536
|
where(
|
|
4545
|
-
node_constraint,
|
|
4537
|
+
*node_constraint,
|
|
4546
4538
|
_count := self._nonzero_triangle_count_fragment(self.Node) | 0
|
|
4547
4539
|
).define(_triangle_count_rel(self.Node, _count))
|
|
4548
4540
|
|
|
@@ -4819,16 +4811,16 @@ class Graph():
|
|
|
4819
4811
|
if node_subset is None:
|
|
4820
4812
|
degree_no_self_rel = self._degree_no_self
|
|
4821
4813
|
triangle_count_rel = self._triangle_count
|
|
4822
|
-
node_constraint =
|
|
4814
|
+
node_constraint = [] # No constraint on nodes.
|
|
4823
4815
|
else:
|
|
4824
4816
|
degree_no_self_rel = self._degree_no_self_of(node_subset)
|
|
4825
4817
|
triangle_count_rel = self._triangle_count_of(node_subset)
|
|
4826
|
-
node_constraint = node_subset(node) # Nodes constrained to given subset.
|
|
4818
|
+
node_constraint = [node_subset(node)] # Nodes constrained to given subset.
|
|
4827
4819
|
|
|
4828
4820
|
degree_no_self = Integer.ref()
|
|
4829
4821
|
triangle_count = Integer.ref()
|
|
4830
4822
|
where(
|
|
4831
|
-
node_constraint,
|
|
4823
|
+
*node_constraint,
|
|
4832
4824
|
_lcc := where(
|
|
4833
4825
|
degree_no_self_rel(node, degree_no_self),
|
|
4834
4826
|
triangle_count_rel(node, triangle_count),
|
|
@@ -4866,12 +4858,12 @@ class Graph():
|
|
|
4866
4858
|
node, neighbor = self.Node.ref(), self.Node.ref()
|
|
4867
4859
|
|
|
4868
4860
|
if node_subset is None:
|
|
4869
|
-
node_constraint =
|
|
4861
|
+
node_constraint = [] # No constraint on nodes.
|
|
4870
4862
|
else:
|
|
4871
|
-
node_constraint = node_subset(node) # Nodes constrained to given subset.
|
|
4863
|
+
node_constraint = [node_subset(node)] # Nodes constrained to given subset.
|
|
4872
4864
|
|
|
4873
4865
|
where(
|
|
4874
|
-
node_constraint,
|
|
4866
|
+
*node_constraint,
|
|
4875
4867
|
_dns := count(neighbor).per(node).where(self._no_loop_edge(node, neighbor)) | 0,
|
|
4876
4868
|
).define(_degree_no_self_rel(node, _dns))
|
|
4877
4869
|
|
|
@@ -7296,7 +7288,7 @@ class Graph():
|
|
|
7296
7288
|
|
|
7297
7289
|
# TODO: Optimization opportunity. In some of the cases below
|
|
7298
7290
|
# (unweighted in particular), the node_constraint is redundant with
|
|
7299
|
-
# the constraints baked into the
|
|
7291
|
+
# the constraints baked into the _count_outneighbor_of and
|
|
7300
7292
|
# _outneighbor_of relationships. The join with node_constraint
|
|
7301
7293
|
# could be eliminated in those cases. Possibly also relevant to
|
|
7302
7294
|
# other domain-constrained relations.
|
|
@@ -7366,19 +7358,18 @@ class Graph():
|
|
|
7366
7358
|
# Define cosine similarity logic for both weighted and unweighted cases.
|
|
7367
7359
|
if not self.weighted:
|
|
7368
7360
|
# Unweighted case: use count of common outneighbors.
|
|
7369
|
-
|
|
7361
|
+
count_outneighbor_u, count_outneighbor_v = Integer.ref(), Integer.ref()
|
|
7370
7362
|
common_outneighbor_node = self.Node.ref()
|
|
7371
|
-
score = Float.ref()
|
|
7372
7363
|
|
|
7373
7364
|
where(
|
|
7374
7365
|
*node_constraints,
|
|
7375
|
-
count_outneighbor_u_rel(node_u,
|
|
7376
|
-
count_outneighbor_v_rel(node_v,
|
|
7366
|
+
count_outneighbor_u_rel(node_u, count_outneighbor_u),
|
|
7367
|
+
count_outneighbor_v_rel(node_v, count_outneighbor_v),
|
|
7377
7368
|
c_common := count(common_outneighbor_node).per(node_u, node_v).where(
|
|
7378
7369
|
outneighbor_u_rel(node_u, common_outneighbor_node),
|
|
7379
7370
|
outneighbor_v_rel(node_v, common_outneighbor_node),
|
|
7380
7371
|
),
|
|
7381
|
-
score := c_common / sqrt(
|
|
7372
|
+
score := c_common / sqrt(count_outneighbor_u * count_outneighbor_v),
|
|
7382
7373
|
).define(
|
|
7383
7374
|
_cosine_similarity_rel(node_u, node_v, score)
|
|
7384
7375
|
)
|
|
@@ -8186,13 +8177,13 @@ class Graph():
|
|
|
8186
8177
|
neighbor_node = self.Node.ref()
|
|
8187
8178
|
if node_subset is not None:
|
|
8188
8179
|
neighbor_rel = self._neighbor_of(node_subset)
|
|
8189
|
-
node_constraint = node_subset(self.Node)
|
|
8180
|
+
node_constraint = [node_subset(self.Node)]
|
|
8190
8181
|
else:
|
|
8191
8182
|
neighbor_rel = self._neighbor
|
|
8192
|
-
node_constraint =
|
|
8183
|
+
node_constraint = []
|
|
8193
8184
|
|
|
8194
8185
|
where(
|
|
8195
|
-
node_constraint,
|
|
8186
|
+
*node_constraint,
|
|
8196
8187
|
not_(neighbor_rel(self.Node, neighbor_node))
|
|
8197
8188
|
).define(_isolated_node_rel(self.Node))
|
|
8198
8189
|
|
relationalai/tools/debugger.py
CHANGED
|
@@ -3,6 +3,8 @@ import re
|
|
|
3
3
|
from nicegui import ui
|
|
4
4
|
import json
|
|
5
5
|
|
|
6
|
+
from relationalai.debugging import DEBUG_LOG_FILE
|
|
7
|
+
|
|
6
8
|
|
|
7
9
|
last_mod_time = None
|
|
8
10
|
current_json_objects = []
|
|
@@ -141,12 +143,12 @@ def poll():
|
|
|
141
143
|
global current_json_objects
|
|
142
144
|
# Check the last modification time of the file
|
|
143
145
|
try:
|
|
144
|
-
mod_time = os.path.getmtime(
|
|
146
|
+
mod_time = os.path.getmtime(DEBUG_LOG_FILE)
|
|
145
147
|
if last_mod_time is None or mod_time > last_mod_time:
|
|
146
148
|
last_mod_time = mod_time
|
|
147
149
|
# File has changed, read and parse the new content
|
|
148
150
|
new_objects = []
|
|
149
|
-
with open(
|
|
151
|
+
with open(DEBUG_LOG_FILE, 'r') as file:
|
|
150
152
|
for line in file:
|
|
151
153
|
try:
|
|
152
154
|
# Parse each JSON object and add it to the list
|
|
@@ -3,6 +3,8 @@ import re
|
|
|
3
3
|
from nicegui import ui
|
|
4
4
|
import json
|
|
5
5
|
|
|
6
|
+
from relationalai.debugging import DEBUG_LOG_FILE
|
|
7
|
+
|
|
6
8
|
#--------------------------------------------------
|
|
7
9
|
# Terminal nodes
|
|
8
10
|
#--------------------------------------------------
|
|
@@ -12,7 +14,7 @@ TERMINAL_NODES = [
|
|
|
12
14
|
]
|
|
13
15
|
|
|
14
16
|
#--------------------------------------------------
|
|
15
|
-
#
|
|
17
|
+
# Debug log helpers
|
|
16
18
|
#--------------------------------------------------
|
|
17
19
|
|
|
18
20
|
class SpanNode:
|
|
@@ -344,11 +346,11 @@ def poll():
|
|
|
344
346
|
global current_json_objects
|
|
345
347
|
# Check the last modification time of the file
|
|
346
348
|
try:
|
|
347
|
-
mod_time = os.path.getmtime(
|
|
349
|
+
mod_time = os.path.getmtime(DEBUG_LOG_FILE)
|
|
348
350
|
if last_mod_time is None or mod_time > last_mod_time:
|
|
349
351
|
last_mod_time = mod_time
|
|
350
352
|
# File has changed, read and parse the new content
|
|
351
|
-
with open(
|
|
353
|
+
with open(DEBUG_LOG_FILE, 'r') as file:
|
|
352
354
|
content = file.read()
|
|
353
355
|
if content:
|
|
354
356
|
new_tree = parse_jsonl_to_tree(content)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: relationalai
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.11
|
|
4
4
|
Summary: RelationalAI Library and CLI
|
|
5
5
|
Author-email: RelationalAI <support@relational.ai>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -11,7 +11,7 @@ Requires-Dist: colorama
|
|
|
11
11
|
Requires-Dist: cryptography
|
|
12
12
|
Requires-Dist: gravis
|
|
13
13
|
Requires-Dist: inquirerpy
|
|
14
|
-
Requires-Dist: lqp==0.1.
|
|
14
|
+
Requires-Dist: lqp==0.1.19
|
|
15
15
|
Requires-Dist: nicegui==2.16.1
|
|
16
16
|
Requires-Dist: numpy<2
|
|
17
17
|
Requires-Dist: opentelemetry-api
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
relationalai/__init__.py,sha256=
|
|
1
|
+
relationalai/__init__.py,sha256=TxQjYI8QhbHBXvQa4ktMlBbFbgMqGd0-KrlYPvB334Q,8146
|
|
2
2
|
relationalai/compiler.py,sha256=5LZY8AyqadkTLSe_xoJ3J9iXOmetz5YQn9EjJKk8XeQ,6411
|
|
3
|
-
relationalai/debugging.py,sha256=
|
|
3
|
+
relationalai/debugging.py,sha256=wqGly2Yji4ErdV9F_S1Bny35SiGqI3C7S-hap7B8yUs,11997
|
|
4
4
|
relationalai/dependencies.py,sha256=tL113efcISkJUiDXYHmRdU_usdD7gmee-VRHA7N4EFA,16574
|
|
5
5
|
relationalai/docutils.py,sha256=1gVv9mk0ytdMB2W7_NvslJefmSQtTOg8LHTCDcGCjyE,1554
|
|
6
6
|
relationalai/dsl.py,sha256=UJr93X8kwnnyUY-kjPzp_jhsp2pYBUnDfu8mhNXPNII,66116
|
|
@@ -18,7 +18,7 @@ relationalai/auth/jwt_generator.py,sha256=bQY2-EhvKcidamWB4tiRO8VVl_5bH0GC9Y6ySH
|
|
|
18
18
|
relationalai/auth/oauth_callback_server.py,sha256=vbcpz77n_WKMDZ4sac6IYyrpxScR0DHlf5VFHMwjHGg,3908
|
|
19
19
|
relationalai/auth/token_handler.py,sha256=d5aueGEiK6BmzkxSab3reCdkhtjdphb0CeecyvvNaQU,19443
|
|
20
20
|
relationalai/auth/util.py,sha256=oXOUwW5gaBhEV5v5A-q2ME1VnfjfRWswvRlXW4oBYpk,1116
|
|
21
|
-
relationalai/clients/__init__.py,sha256
|
|
21
|
+
relationalai/clients/__init__.py,sha256=-LHT6vQmleYqAaNerV0OdHy56-s4nxFSmZFsQXfgnrI,318
|
|
22
22
|
relationalai/clients/azure.py,sha256=6tYHxKVN2fHMIDV7J_EHZD9WntkYh2IreMRMqlq1Bhg,20634
|
|
23
23
|
relationalai/clients/cache_store.py,sha256=A-qd11wcwN3TkIqvlN0_iFUU3aEjJal3T2pqFBwkkzQ,3966
|
|
24
24
|
relationalai/clients/client.py,sha256=4SSunUwuFEcRFXOPYotpSLDPr0CKuwJ4335W0DesR90,35792
|
|
@@ -26,6 +26,7 @@ relationalai/clients/config.py,sha256=hERaKjc3l4kd-kf0l-NUOHrWunCn8gmFWpuE0j3ScJ
|
|
|
26
26
|
relationalai/clients/direct_access_client.py,sha256=VGjQ7wzduxCo04BkxSZjlPAgqK-aBc32zIXcMfAzzSU,6436
|
|
27
27
|
relationalai/clients/export_procedure.py.jinja,sha256=nhvVcs5hQyWExFDuROQbi1VyYzOCa_ZIRPR2KzZwDtI,10582
|
|
28
28
|
relationalai/clients/hash_util.py,sha256=pZVR1FX3q4G_19p_r6wpIR2tIM8_WUlfAR7AVZJjIYM,1495
|
|
29
|
+
relationalai/clients/local.py,sha256=uX1Or2WO0juDuqa6TCCvm3G2ieP6p0PtYp_jfrCMlVc,23577
|
|
29
30
|
relationalai/clients/profile_polling.py,sha256=pUH7WKH4nYDD0SlQtg3wsWdj0K7qt6nZqUw8jTthCBs,2565
|
|
30
31
|
relationalai/clients/result_helpers.py,sha256=wDSD02Ngx6W-YQqBIGKnpXD4Ju3pA1e9Nz6ORRI6SRI,17808
|
|
31
32
|
relationalai/clients/snowflake.py,sha256=QPJrRolINDkjZb8xyuvaLJIWOEYXdeALLSNqIAAXUEY,166006
|
|
@@ -294,41 +295,43 @@ relationalai/loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
294
295
|
relationalai/loaders/csv.py,sha256=SyzLDQb46Y0QGdahxkp1_mII3NhxCkyCWNwQUielXXs,7743
|
|
295
296
|
relationalai/loaders/loader.py,sha256=FExfWHYyOPv_5f17N4wEIqRRWBPGfC13XvD791Ik93Y,7180
|
|
296
297
|
relationalai/loaders/types.py,sha256=w4kvPMpuRoz2ckOCakHrSvtXLetVsQHLi4V3up8hzig,619
|
|
297
|
-
relationalai/semantics/__init__.py,sha256=
|
|
298
|
+
relationalai/semantics/__init__.py,sha256=SnJCjUGj-y9e5-75jxLsiZRM_xLmhOVaZwmgxtscinI,935
|
|
298
299
|
relationalai/semantics/designs/query_builder/identify_by.md,sha256=AsbusFqT6YB44-iEGfuH4GVOxf1ZjxkpFovvWPMJHuI,4877
|
|
299
300
|
relationalai/semantics/devtools/__init__.py,sha256=hckMw2EtrVBiE71ABXX8bWPdI-6DV9uHqkhYG_nl8S4,85
|
|
300
301
|
relationalai/semantics/devtools/benchmark_lqp.py,sha256=btySKVtUUNBuPY-l6DrkbRNlvZcNXrKUqdvo_Hqsc98,21242
|
|
301
302
|
relationalai/semantics/devtools/compilation_manager.py,sha256=XBqG_nYWtK3s_J6MeCmkLqy3qm7l778zDAhH7DEO91g,11169
|
|
302
303
|
relationalai/semantics/devtools/extract_lqp.py,sha256=gxI3EvPUTPAkwgnkCKAkEm2vA6QkLfoM8AXXiVz0c34,3696
|
|
303
|
-
relationalai/semantics/internal/__init__.py,sha256=
|
|
304
|
+
relationalai/semantics/internal/__init__.py,sha256=BS0WE1GbT-HpQ5p_zMr9Fcvph562WMvMQNI9czfKNt0,798
|
|
304
305
|
relationalai/semantics/internal/annotations.py,sha256=PkrRN-gHO2ksh1hDKB1VVIB39dONvLdTd8_Y0rCR3fE,367
|
|
305
|
-
relationalai/semantics/internal/internal.py,sha256=
|
|
306
|
+
relationalai/semantics/internal/internal.py,sha256=U3FV4jgWRJGFPk7ZwPzOQl_YMHcwBFH6kXrxJNs5OjA,150750
|
|
306
307
|
relationalai/semantics/internal/snowflake.py,sha256=8D6WYDFKtt8R-sc9o1Oxgtl6Xwehs2Txw_lKNBid7UA,13467
|
|
308
|
+
relationalai/semantics/lqp/README.md,sha256=9DsEL81q5z49YteGzLPBs_HhpZS1vO--MOBlQpCkI_Q,1116
|
|
307
309
|
relationalai/semantics/lqp/__init__.py,sha256=XgcQZxK-zz_LqPDVtwREhsIvjTuUIt4BZhIedCeMY-s,48
|
|
308
310
|
relationalai/semantics/lqp/builtins.py,sha256=IWRYJ1J-HGEQqBn8QVOyjZvgEiq6W9tZ0nBLdHz5wjA,576
|
|
309
311
|
relationalai/semantics/lqp/compiler.py,sha256=oOGlN03NVvltKN5KSDOqvb0TsAER_igUe9CnOcHAuoY,943
|
|
310
|
-
relationalai/semantics/lqp/constructors.py,sha256=
|
|
311
|
-
relationalai/semantics/lqp/executor.py,sha256=
|
|
312
|
+
relationalai/semantics/lqp/constructors.py,sha256=bGFUv3tLCJD8lGOSGRAPntTBOgczio96_Gn49YoHpl0,2363
|
|
313
|
+
relationalai/semantics/lqp/executor.py,sha256=GuPiSJpLaMYqjZOlVEFLOUilyuLcfkQgZ62UoxMpvtM,21597
|
|
312
314
|
relationalai/semantics/lqp/intrinsics.py,sha256=oKPIcW8PYgU-yPTO21iSF00RBsFKPFFP5MICe6izjKk,871
|
|
313
|
-
relationalai/semantics/lqp/ir.py,sha256=
|
|
314
|
-
relationalai/semantics/lqp/model2lqp.py,sha256=
|
|
315
|
-
relationalai/semantics/lqp/passes.py,sha256=
|
|
315
|
+
relationalai/semantics/lqp/ir.py,sha256=6W9mUH0W7u5eIfF1S3o33uSOfQuM3UcqEkxrxpr1X_8,1867
|
|
316
|
+
relationalai/semantics/lqp/model2lqp.py,sha256=PTe2PtHioWAclu6tdkCu5iGaHJxPIe7zIG1Ew72qxDo,36957
|
|
317
|
+
relationalai/semantics/lqp/passes.py,sha256=i5LrS92Wn-Aa6Hase4UXlogUEGL_tUYHNAYDr16CVw0,28540
|
|
316
318
|
relationalai/semantics/lqp/pragmas.py,sha256=FzzldrJEAZ1AIcEw6D-FfaVg3CoahRYgPCFo7xHfg1g,375
|
|
317
319
|
relationalai/semantics/lqp/primitives.py,sha256=9Hjow-Yp06jt0xatuUrH1dw0ErnzknIr9K0TB_AwdjU,11029
|
|
318
320
|
relationalai/semantics/lqp/result_helpers.py,sha256=oYpLoTBnzsiyOVIWA2rLMHlgs7P7BoEkqthQ2aMosnk,10123
|
|
319
321
|
relationalai/semantics/lqp/types.py,sha256=3TZ61ybwNV8lDyUMujZIWNFz3Fgn4uifsJb8ExfoMDg,4508
|
|
320
322
|
relationalai/semantics/lqp/utils.py,sha256=iOoS-f8kyFjrgAnpK4cWDvAA-WmPgDRggSKUXm_JdTc,6317
|
|
321
|
-
relationalai/semantics/lqp/validators.py,sha256=
|
|
322
|
-
relationalai/semantics/lqp/rewrite/__init__.py,sha256=
|
|
323
|
+
relationalai/semantics/lqp/validators.py,sha256=FlKMKclHj0L71QUtl0aqKknqksSWM-di4N9bjGDJvnY,1561
|
|
324
|
+
relationalai/semantics/lqp/rewrite/__init__.py,sha256=V9ERED9qdh4VvY9Ud_M8Zn8lhVANdOGIgW03l55sGj0,492
|
|
325
|
+
relationalai/semantics/lqp/rewrite/annotate_constraints.py,sha256=W0_pQYWuq7ocEWNp5rWnq7YjRuJwsEHan1gIrAiRCXU,2201
|
|
323
326
|
relationalai/semantics/lqp/rewrite/cdc.py,sha256=I6DeMOZScx-3UAVoSCMn9cuOgLzwdvJVKNwsgFa6R_k,10390
|
|
324
327
|
relationalai/semantics/lqp/rewrite/extract_common.py,sha256=sbihURqk4wtc1ekDWXWltq9LrO42XTLfOHl5D6nT5vw,18371
|
|
325
|
-
relationalai/semantics/lqp/rewrite/extract_keys.py,sha256=
|
|
328
|
+
relationalai/semantics/lqp/rewrite/extract_keys.py,sha256=iSbwGQG9p8j-erknEwl2pZkunJEpXTlnL9ohr4KVS8M,19317
|
|
326
329
|
relationalai/semantics/lqp/rewrite/function_annotations.py,sha256=9ZzLASvXh_OgQ04eup0AyoMIh2HxWHkoRETLm1-XtWs,4660
|
|
327
|
-
relationalai/semantics/lqp/rewrite/functional_dependencies.py,sha256=
|
|
328
|
-
relationalai/semantics/lqp/rewrite/quantify_vars.py,sha256=
|
|
330
|
+
relationalai/semantics/lqp/rewrite/functional_dependencies.py,sha256=4oQcVQtAGDqY850B1bNszigQopf6y9Y_CaUyWx42PtM,12718
|
|
331
|
+
relationalai/semantics/lqp/rewrite/quantify_vars.py,sha256=bOowgQ45zmP0HOhsTlE92WdVBCTXSkszcCYbPMeIibw,12004
|
|
329
332
|
relationalai/semantics/lqp/rewrite/splinter.py,sha256=oeDjP_F2PVLVexAKFn8w7CLtO9oy-R-tS2IOmzw_Ujk,3199
|
|
330
333
|
relationalai/semantics/metamodel/__init__.py,sha256=I-XqQAGycD0nKkKYvnF3G9d0QK_1LIM4xXICw8g8fBA,805
|
|
331
|
-
relationalai/semantics/metamodel/builtins.py,sha256=
|
|
334
|
+
relationalai/semantics/metamodel/builtins.py,sha256=O26klqMH4ud5nqb2Os6ISsxaPsCj5X1eVKD5RuGUmtA,38657
|
|
332
335
|
relationalai/semantics/metamodel/compiler.py,sha256=XBsAnbFwgZ_TcRry6yXGWLyw_MaO2WJDp1EnC_ubhps,4525
|
|
333
336
|
relationalai/semantics/metamodel/dataflow.py,sha256=wfj1tARrR4yEAaTwUTrAcxEcz81VkUal4U_AX1esovk,3929
|
|
334
337
|
relationalai/semantics/metamodel/dependency.py,sha256=iJLx-w_zqde7CtbGcXxLxZBdUKZYl7AUykezPI9ccck,33926
|
|
@@ -336,23 +339,23 @@ relationalai/semantics/metamodel/executor.py,sha256=_pm--QNvAjd-GgiMKMrpkPZ2eE0H
|
|
|
336
339
|
relationalai/semantics/metamodel/factory.py,sha256=Vk3ASwWan08mfGehoOOwMixuU_mEbG2vNl8JLSCJ2OU,12581
|
|
337
340
|
relationalai/semantics/metamodel/helpers.py,sha256=aeXWkS-iKfLqqXtlMjQZyqIIiIsG9dqP4cQA3cUmM08,15403
|
|
338
341
|
relationalai/semantics/metamodel/ir.py,sha256=4Xl3oc92Q7_s33axtrZUXr-GL8VGJsKc7yaSNcO6jXY,33578
|
|
339
|
-
relationalai/semantics/metamodel/types.py,sha256=
|
|
342
|
+
relationalai/semantics/metamodel/types.py,sha256=9ErIkHgsTcPgsoEet-meiftLs4W1MJb-G1H_1EzFfLY,11557
|
|
340
343
|
relationalai/semantics/metamodel/util.py,sha256=cmSmeww34JVMqcFudwVAY820IPM2ETSELJylwJ3GRJk,16654
|
|
341
344
|
relationalai/semantics/metamodel/visitor.py,sha256=DFY0DACLhxlZ0e4p0vWqbK6ZJr_GWEvH66CU_HVuoTk,35527
|
|
342
345
|
relationalai/semantics/metamodel/rewrite/__init__.py,sha256=9ONWFSdMPHkWpObDMSljt8DywhpFf4Ehsq1aT3fTPt8,344
|
|
343
346
|
relationalai/semantics/metamodel/rewrite/discharge_constraints.py,sha256=0v613BqCLlo4sgWuZjcLSxxakp3d34mYWbG4ldhzGno,1949
|
|
344
347
|
relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py,sha256=ZXX190gCKXhdB-Iyi4MGowc4FS9P0PIJTtTT0LrTr6A,7970
|
|
345
348
|
relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py,sha256=vQ0-7t_GORskB1ZG50KuzM4phm6YNPvehfFn3v_LbgI,3354
|
|
346
|
-
relationalai/semantics/metamodel/rewrite/flatten.py,sha256=
|
|
349
|
+
relationalai/semantics/metamodel/rewrite/flatten.py,sha256=SWvDA3NJqU0ZEJ3kzaXaJ6ZC9xeHuZ8Ju9S1jxU1Nyc,22189
|
|
347
350
|
relationalai/semantics/metamodel/rewrite/format_outputs.py,sha256=n0IxC3RL3UMly6MWsq342EGfL2yGj3vOgVG_wg7kt-o,6225
|
|
348
351
|
relationalai/semantics/metamodel/typer/__init__.py,sha256=E3ydmhWRdm-cAqWsNR24_Qd3NcwiHx8ElO2tzNysAXc,143
|
|
349
352
|
relationalai/semantics/metamodel/typer/checker.py,sha256=frY0gilDO6skbDiYFiIpDUOWyt9s9jAJsRBs848DcG0,19184
|
|
350
|
-
relationalai/semantics/metamodel/typer/typer.py,sha256=
|
|
353
|
+
relationalai/semantics/metamodel/typer/typer.py,sha256=6yyLfGXPuh71TbAvK4I9AkMI4Ap5LlHhhMuDYWzj6Dw,62774
|
|
351
354
|
relationalai/semantics/reasoners/__init__.py,sha256=cLrGNKFX859EdPjk2n6MdYLvueaFtTEnfVYnBriQMfI,303
|
|
352
355
|
relationalai/semantics/reasoners/experimental/__init__.py,sha256=ZWXb3Oun7m_G2c3ijKnqxbEsAzTMVa7ciBXjdi4dCNI,144
|
|
353
356
|
relationalai/semantics/reasoners/graph/README.md,sha256=QgKEXTllp5PO-yK8oDfMx1PNTYF2uVoneMRKsWTY5GU,23953
|
|
354
357
|
relationalai/semantics/reasoners/graph/__init__.py,sha256=jSXR6J05SQZdjxQ5Y-ovqFqGTAXCOWeQDcvpfoBYgDA,1282
|
|
355
|
-
relationalai/semantics/reasoners/graph/core.py,sha256=
|
|
358
|
+
relationalai/semantics/reasoners/graph/core.py,sha256=2ZzGTWlS-IUTqVcdVx0w_GrgxIyppCvHsls1uBjFe4Q,399524
|
|
356
359
|
relationalai/semantics/reasoners/graph/design/beyond_demand_transform.md,sha256=Givh0W6B6Hlow6TpmK-8adpEYd8b3O_WmdgMOQIyKs0,55749
|
|
357
360
|
relationalai/semantics/reasoners/graph/tests/README.md,sha256=XbauTzt6VA_YEOcrlZwsu4WOW5UoWV8M6F57wmxe5QU,1023
|
|
358
361
|
relationalai/semantics/reasoners/optimization/__init__.py,sha256=lpavly1Qa3VKvLgrbpp-tsxY9hcqHL6buxuekgKPakw,2212
|
|
@@ -408,12 +411,12 @@ relationalai/tools/cli.py,sha256=EBrPdJQsltUQGClQTYaEDVmEmm4w_UGdb8fT_DKIeOQ,770
|
|
|
408
411
|
relationalai/tools/cli_controls.py,sha256=84K0sjfsVwqi9C8ZlpvPi6XZPhjyW-R06Pir9Ex_Xtg,70468
|
|
409
412
|
relationalai/tools/cli_helpers.py,sha256=r-gJnWnb3d6yIn_ccyp3qx_Vpqh-FINCFMyPBVCA-Jg,14041
|
|
410
413
|
relationalai/tools/constants.py,sha256=A8Qz0CPs2cRUs5xaZ-Y7BCyvqmI6RLvipzwLDYZ3_PU,4505
|
|
411
|
-
relationalai/tools/debugger.py,sha256=
|
|
414
|
+
relationalai/tools/debugger.py,sha256=iWO1tMJud3dXHIkrjdZ5Temp0MR2AwN5_QGDt-ddmcs,6934
|
|
412
415
|
relationalai/tools/debugger_client.py,sha256=g9vBaeJLKVq6vW63W-KKSaPJ--g5Wuf4LcIuYRA_pk4,3729
|
|
413
416
|
relationalai/tools/debugger_server.py,sha256=UXVMtbmvgp7IqN9TzVnUvPj-TVrb6GzJOJ2z15Al9YU,9880
|
|
414
417
|
relationalai/tools/dev.py,sha256=ZFYbBj25Wf5iy6womAEkLF5RD6O0vZLAOUPQgPcKkS8,22931
|
|
415
418
|
relationalai/tools/notes,sha256=5ufkUHNktVRvQayBVktn2rLgDBapAEKxKJxQ20tRjpA,263
|
|
416
|
-
relationalai/tools/qb_debugger.py,sha256=
|
|
419
|
+
relationalai/tools/qb_debugger.py,sha256=A9SyD1z77Ocsxm42XhUl-QspDylEtBe5K_Khxnq3Xhs,16373
|
|
417
420
|
relationalai/tools/query_utils.py,sha256=SevPuWHZUjHc4A-RbyiJN0oWAVQGGo72UM3Saj29DwY,821
|
|
418
421
|
relationalai/tools/snapshot_viewer.py,sha256=60DW41X4NpjxmPjf1B8mG3oIocHMLLNEbThIdJavi_o,28779
|
|
419
422
|
relationalai/util/__init__.py,sha256=FcHFPzeyDcQwENQg2KA70lBsFx5TtN7xo0quy_cJDQI,208
|
|
@@ -439,8 +442,8 @@ frontend/debugger/dist/index.html,sha256=0wIQ1Pm7BclVV1wna6Mj8OmgU73B9rSEGPVX-Wo
|
|
|
439
442
|
frontend/debugger/dist/assets/favicon-Dy0ZgA6N.png,sha256=tPXOEhOrM4tJyZVJQVBO_yFgNAlgooY38ZsjyrFstgg,620
|
|
440
443
|
frontend/debugger/dist/assets/index-Cssla-O7.js,sha256=MxgIGfdKQyBWgufck1xYggQNhW5nj6BPjCF6Wleo-f0,298886
|
|
441
444
|
frontend/debugger/dist/assets/index-DlHsYx1V.css,sha256=21pZtAjKCcHLFjbjfBQTF6y7QmOic-4FYaKNmwdNZVE,60141
|
|
442
|
-
relationalai-0.12.
|
|
443
|
-
relationalai-0.12.
|
|
444
|
-
relationalai-0.12.
|
|
445
|
-
relationalai-0.12.
|
|
446
|
-
relationalai-0.12.
|
|
445
|
+
relationalai-0.12.11.dist-info/METADATA,sha256=Gaq2yLT7R1yQ5rf6a7IwR1fWRaFaZ-sMLV5cMdQmeWg,2563
|
|
446
|
+
relationalai-0.12.11.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
447
|
+
relationalai-0.12.11.dist-info/entry_points.txt,sha256=fo_oLFJih3PUgYuHXsk7RnCjBm9cqRNR--ab6DgI6-0,88
|
|
448
|
+
relationalai-0.12.11.dist-info/licenses/LICENSE,sha256=pPyTVXFYhirkEW9VsnHIgUjT0Vg8_xsE6olrF5SIgpc,11343
|
|
449
|
+
relationalai-0.12.11.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|