relationalai 0.12.6__py3-none-any.whl → 0.12.8__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/clients/snowflake.py +48 -7
- relationalai/clients/use_index_poller.py +11 -1
- relationalai/early_access/lqp/constructors/__init__.py +2 -2
- relationalai/early_access/metamodel/rewrite/__init__.py +2 -2
- relationalai/semantics/internal/internal.py +1 -4
- relationalai/semantics/internal/snowflake.py +14 -1
- relationalai/semantics/lqp/constructors.py +0 -5
- relationalai/semantics/lqp/executor.py +34 -10
- relationalai/semantics/lqp/intrinsics.py +2 -2
- relationalai/semantics/lqp/model2lqp.py +10 -7
- relationalai/semantics/lqp/passes.py +29 -9
- relationalai/semantics/lqp/primitives.py +15 -15
- relationalai/semantics/lqp/rewrite/__init__.py +2 -2
- relationalai/semantics/lqp/rewrite/{fd_constraints.py → function_annotations.py} +4 -4
- relationalai/semantics/lqp/utils.py +17 -13
- relationalai/semantics/metamodel/builtins.py +1 -0
- relationalai/semantics/metamodel/rewrite/__init__.py +2 -1
- relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +1 -1
- relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py +5 -6
- relationalai/semantics/metamodel/rewrite/flatten.py +18 -149
- relationalai/semantics/metamodel/rewrite/format_outputs.py +165 -0
- relationalai/semantics/reasoners/graph/core.py +98 -70
- relationalai/semantics/reasoners/optimization/__init__.py +55 -10
- relationalai/semantics/reasoners/optimization/common.py +63 -8
- relationalai/semantics/reasoners/optimization/solvers_dev.py +39 -33
- relationalai/semantics/reasoners/optimization/solvers_pb.py +1033 -385
- relationalai/semantics/rel/compiler.py +4 -3
- relationalai/semantics/rel/executor.py +30 -8
- relationalai/semantics/snowflake/__init__.py +2 -2
- relationalai/semantics/sql/executor/snowflake.py +6 -2
- relationalai/semantics/tests/test_snapshot_abstract.py +5 -4
- relationalai/tools/cli.py +10 -0
- relationalai/tools/cli_controls.py +15 -0
- {relationalai-0.12.6.dist-info → relationalai-0.12.8.dist-info}/METADATA +2 -2
- {relationalai-0.12.6.dist-info → relationalai-0.12.8.dist-info}/RECORD +38 -37
- {relationalai-0.12.6.dist-info → relationalai-0.12.8.dist-info}/WHEEL +0 -0
- {relationalai-0.12.6.dist-info → relationalai-0.12.8.dist-info}/entry_points.txt +0 -0
- {relationalai-0.12.6.dist-info → relationalai-0.12.8.dist-info}/licenses/LICENSE +0 -0
|
@@ -11,8 +11,8 @@ from relationalai.semantics.metamodel.util import OrderedSet, group_by, NameCach
|
|
|
11
11
|
|
|
12
12
|
from relationalai.semantics.rel import rel, rel_utils as u, builtins as rel_bt
|
|
13
13
|
|
|
14
|
-
from ..metamodel.rewrite import (Flatten, ExtractNestedLogicals, DNFUnionSplitter, DischargeConstraints)
|
|
15
|
-
from ..lqp.rewrite import CDC, ExtractCommon, ExtractKeys,
|
|
14
|
+
from ..metamodel.rewrite import (Flatten, ExtractNestedLogicals, DNFUnionSplitter, DischargeConstraints, FormatOutputs)
|
|
15
|
+
from ..lqp.rewrite import CDC, ExtractCommon, ExtractKeys, FunctionAnnotations, QuantifyVars, Splinter
|
|
16
16
|
|
|
17
17
|
import math
|
|
18
18
|
|
|
@@ -24,7 +24,7 @@ import math
|
|
|
24
24
|
class Compiler(c.Compiler):
|
|
25
25
|
def __init__(self):
|
|
26
26
|
super().__init__([
|
|
27
|
-
|
|
27
|
+
FunctionAnnotations(),
|
|
28
28
|
DischargeConstraints(),
|
|
29
29
|
Checker(),
|
|
30
30
|
CDC(), # specialize to physical relations before extracting nested and typing
|
|
@@ -33,6 +33,7 @@ class Compiler(c.Compiler):
|
|
|
33
33
|
DNFUnionSplitter(),
|
|
34
34
|
ExtractKeys(),
|
|
35
35
|
ExtractCommon(),
|
|
36
|
+
FormatOutputs(),
|
|
36
37
|
Flatten(),
|
|
37
38
|
Splinter(),
|
|
38
39
|
QuantifyVars(),
|
|
@@ -7,13 +7,13 @@ import textwrap
|
|
|
7
7
|
import uuid
|
|
8
8
|
|
|
9
9
|
from pandas import DataFrame
|
|
10
|
-
from typing import Any, Optional, Literal
|
|
10
|
+
from typing import Any, Optional, Literal, TYPE_CHECKING
|
|
11
11
|
from snowflake.snowpark import Session
|
|
12
12
|
import relationalai as rai
|
|
13
13
|
|
|
14
14
|
from relationalai import debugging
|
|
15
15
|
from relationalai.clients import result_helpers
|
|
16
|
-
from relationalai.clients.util import IdentityParser
|
|
16
|
+
from relationalai.clients.util import IdentityParser, escape_for_f_string
|
|
17
17
|
from relationalai.clients.snowflake import APP_NAME
|
|
18
18
|
from relationalai.semantics.metamodel import ir, executor as e, factory as f
|
|
19
19
|
from relationalai.semantics.rel import Compiler
|
|
@@ -21,6 +21,8 @@ from relationalai.clients.config import Config
|
|
|
21
21
|
from relationalai.tools.constants import USE_DIRECT_ACCESS, Generation, QUERY_ATTRIBUTES_HEADER
|
|
22
22
|
from relationalai.tools.query_utils import prepare_metadata_for_headers
|
|
23
23
|
|
|
24
|
+
if TYPE_CHECKING:
|
|
25
|
+
from relationalai.semantics.snowflake import Table
|
|
24
26
|
|
|
25
27
|
class RelExecutor(e.Executor):
|
|
26
28
|
"""Executes Rel code using the RAI client."""
|
|
@@ -160,12 +162,13 @@ class RelExecutor(e.Executor):
|
|
|
160
162
|
elif len(all_errors) > 1:
|
|
161
163
|
raise errors.RAIExceptionSet(all_errors)
|
|
162
164
|
|
|
163
|
-
def _export(self, raw_code: str,
|
|
165
|
+
def _export(self, raw_code: str, dest: Table, actual_cols: list[str], declared_cols: list[str], update:bool, headers: dict[str, Any] | None = None):
|
|
164
166
|
_exec = self.resources._exec
|
|
165
167
|
output_table = "out" + str(uuid.uuid4()).replace("-", "_")
|
|
166
168
|
txn_id = None
|
|
167
169
|
artifacts = None
|
|
168
|
-
dest_database, dest_schema, dest_table, _ = IdentityParser(
|
|
170
|
+
dest_database, dest_schema, dest_table, _ = IdentityParser(dest._fqn, require_all_parts=True).to_list()
|
|
171
|
+
dest_fqn = dest._fqn
|
|
169
172
|
assert self.resources._session
|
|
170
173
|
with debugging.span("transaction"):
|
|
171
174
|
try:
|
|
@@ -189,6 +192,26 @@ class RelExecutor(e.Executor):
|
|
|
189
192
|
fields.append(field)
|
|
190
193
|
names = ", ".join(fields)
|
|
191
194
|
if not update:
|
|
195
|
+
|
|
196
|
+
createTableLogic = f"""
|
|
197
|
+
CREATE TABLE {dest_fqn} AS
|
|
198
|
+
SELECT {names}
|
|
199
|
+
FROM {APP_NAME}.results.{output_table};
|
|
200
|
+
"""
|
|
201
|
+
if dest._is_iceberg:
|
|
202
|
+
assert dest._iceberg_config is not None
|
|
203
|
+
external_volume_clause = ""
|
|
204
|
+
if dest._iceberg_config.external_volume:
|
|
205
|
+
external_volume_clause = f"EXTERNAL_VOLUME = '{dest._iceberg_config.external_volume}'"
|
|
206
|
+
createTableLogic = f"""
|
|
207
|
+
CREATE ICEBERG TABLE {dest_fqn}
|
|
208
|
+
CATALOG = "SNOWFLAKE"
|
|
209
|
+
{external_volume_clause}
|
|
210
|
+
AS
|
|
211
|
+
SELECT {names}
|
|
212
|
+
FROM {APP_NAME}.results.{output_table};
|
|
213
|
+
"""
|
|
214
|
+
|
|
192
215
|
_exec(f"""
|
|
193
216
|
BEGIN
|
|
194
217
|
-- Check if table exists
|
|
@@ -210,9 +233,7 @@ class RelExecutor(e.Executor):
|
|
|
210
233
|
ELSE
|
|
211
234
|
-- Create table based on the SELECT
|
|
212
235
|
EXECUTE IMMEDIATE '
|
|
213
|
-
|
|
214
|
-
SELECT {names}
|
|
215
|
-
FROM {APP_NAME}.results.{output_table};
|
|
236
|
+
{escape_for_f_string(createTableLogic)}
|
|
216
237
|
';
|
|
217
238
|
END IF;
|
|
218
239
|
CALL {APP_NAME}.api.drop_result_table('{output_table}');
|
|
@@ -252,7 +273,7 @@ class RelExecutor(e.Executor):
|
|
|
252
273
|
return artifacts
|
|
253
274
|
|
|
254
275
|
def execute(self, model: ir.Model, task: ir.Task, format: Literal["pandas", "snowpark"] = "pandas",
|
|
255
|
-
|
|
276
|
+
export_to: Optional[Table] = None, update: bool = False, meta: dict[str, Any] | None = None) -> Any:
|
|
256
277
|
# Format meta as headers
|
|
257
278
|
json_meta = prepare_metadata_for_headers(meta)
|
|
258
279
|
headers = {QUERY_ATTRIBUTES_HEADER: json_meta} if json_meta else {}
|
|
@@ -316,6 +337,7 @@ class RelExecutor(e.Executor):
|
|
|
316
337
|
else:
|
|
317
338
|
assert cols
|
|
318
339
|
# The result cols should be a superset of the actual cols.
|
|
340
|
+
result_cols = export_to._col_names
|
|
319
341
|
if result_cols is not None:
|
|
320
342
|
assert all(col in result_cols or col in extra_cols for col in cols)
|
|
321
343
|
else:
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
from relationalai.semantics.internal.snowflake import Table, is_direct_access_enabled
|
|
1
|
+
from relationalai.semantics.internal.snowflake import Table, is_direct_access_enabled, IcebergConfig
|
|
2
2
|
|
|
3
|
-
__all__ = ["Table", "is_direct_access_enabled"]
|
|
3
|
+
__all__ = ["Table", "is_direct_access_enabled", "IcebergConfig"]
|
|
@@ -6,7 +6,7 @@ import uuid
|
|
|
6
6
|
import relationalai as rai
|
|
7
7
|
import pandas as pd
|
|
8
8
|
|
|
9
|
-
from typing import Any, Union, Optional, Literal
|
|
9
|
+
from typing import Any, Union, Optional, Literal, TYPE_CHECKING
|
|
10
10
|
from snowflake.snowpark import Session
|
|
11
11
|
|
|
12
12
|
from .. import Compiler
|
|
@@ -18,6 +18,10 @@ from relationalai.semantics.metamodel.visitor import collect_by_type
|
|
|
18
18
|
from relationalai.semantics.metamodel.typer import typer
|
|
19
19
|
from relationalai.tools.constants import USE_DIRECT_ACCESS
|
|
20
20
|
|
|
21
|
+
if TYPE_CHECKING:
|
|
22
|
+
from relationalai.semantics.snowflake import Table
|
|
23
|
+
|
|
24
|
+
|
|
21
25
|
class SnowflakeExecutor(e.Executor):
|
|
22
26
|
"""Executes SQL using the RAI client."""
|
|
23
27
|
|
|
@@ -61,7 +65,7 @@ class SnowflakeExecutor(e.Executor):
|
|
|
61
65
|
return self._provider
|
|
62
66
|
|
|
63
67
|
def execute(self, model: ir.Model, task: ir.Task, format:Literal["pandas", "snowpark"]="pandas",
|
|
64
|
-
|
|
68
|
+
export_to: Optional[Table] = None,
|
|
65
69
|
update: bool = False, meta: dict[str, Any] | None = None) -> Union[pd.DataFrame, Any]:
|
|
66
70
|
""" Execute the SQL query directly. """
|
|
67
71
|
|
|
@@ -19,7 +19,7 @@ class AbstractSnapshotTest(ABC):
|
|
|
19
19
|
provider:Provider = cast(SFProvider, Provider()) # type: ignore
|
|
20
20
|
|
|
21
21
|
def run_snapshot_test(self, snapshot, script_path, db_schema=None, use_sql=False, use_lqp=True, use_rel=False,
|
|
22
|
-
use_direct_access=False, e2e=False, use_csv=True):
|
|
22
|
+
use_direct_access=False, e2e=False, use_csv=True, e2e_only=False):
|
|
23
23
|
# Resolve use_lqp
|
|
24
24
|
use_lqp = use_lqp and (not use_rel) # use_rel overrides because use_lqp is default.
|
|
25
25
|
|
|
@@ -83,13 +83,14 @@ class AbstractSnapshotTest(ABC):
|
|
|
83
83
|
export_exists = not dry_run and self.is_export_exists(export_fqn)
|
|
84
84
|
# match snapshots
|
|
85
85
|
self.assert_match_snapshots(script_path, snapshot, handler, export_exists, export_fqn, use_sql=use_sql,
|
|
86
|
-
use_lqp=use_lqp, e2e=e2e, use_csv=use_csv)
|
|
86
|
+
use_lqp=use_lqp, e2e=e2e, use_csv=use_csv, e2e_only=e2e_only)
|
|
87
87
|
# cleanup resources created during a test run
|
|
88
88
|
self.cleanup(export_exists, export_fqn)
|
|
89
89
|
|
|
90
90
|
def assert_match_snapshots(self, script_path, snapshot, handler, export_exists=False, export_fqn=None, use_sql=False,
|
|
91
|
-
use_lqp=True, e2e=False, use_csv=True):
|
|
92
|
-
|
|
91
|
+
use_lqp=True, e2e=False, use_csv=True, e2e_only=False):
|
|
92
|
+
if not e2e_only:
|
|
93
|
+
self.assert_match_internal_results_snapshots(snapshot, handler, use_sql, use_lqp)
|
|
93
94
|
if e2e:
|
|
94
95
|
self.assert_match_results_snapshots(script_path, snapshot, handler)
|
|
95
96
|
if export_fqn and export_exists:
|
relationalai/tools/cli.py
CHANGED
|
@@ -242,6 +242,16 @@ def snowflake_flow(cfg:config.Config):
|
|
|
242
242
|
)
|
|
243
243
|
cfg.set("engine_size", engine_size)
|
|
244
244
|
|
|
245
|
+
# init SF specific configuration
|
|
246
|
+
if not pyrel_config or cfg.get("data_freshness_mins", None) is None:
|
|
247
|
+
data_freshness_mins = controls.number(
|
|
248
|
+
"How often should data in RAI be refreshed (minutes)?\n(30 minutes recommended for development, otherwise 0 for data to refreshed on each program execution):",
|
|
249
|
+
default=30,
|
|
250
|
+
min_allowed=0,
|
|
251
|
+
float_allowed=False,
|
|
252
|
+
)
|
|
253
|
+
cfg.set("data_freshness_mins", int(data_freshness_mins))
|
|
254
|
+
|
|
245
255
|
return account
|
|
246
256
|
|
|
247
257
|
def mfa_passcode_flow(cfg:config.Config):
|
|
@@ -332,6 +332,21 @@ def password(message:str, default:str|None = None, validator:Callable|None = Non
|
|
|
332
332
|
except KeyboardInterrupt:
|
|
333
333
|
return abort()
|
|
334
334
|
|
|
335
|
+
def number(message:str, default:float|int|None = None, validator:Callable|None = None, invalid_message:str|None = None, **kwargs) -> float|int:
|
|
336
|
+
if not invalid_message:
|
|
337
|
+
invalid_message = "Invalid input"
|
|
338
|
+
try:
|
|
339
|
+
return inquirer.number(
|
|
340
|
+
message,
|
|
341
|
+
default=default or 0,
|
|
342
|
+
keybindings=default_bindings,
|
|
343
|
+
validate=validator,
|
|
344
|
+
invalid_message=invalid_message,
|
|
345
|
+
**kwargs
|
|
346
|
+
).execute()
|
|
347
|
+
except KeyboardInterrupt:
|
|
348
|
+
return abort()
|
|
349
|
+
|
|
335
350
|
def file(message: str, start_path:Path|None = None, allow_freeform=False, **kwargs) -> str|None:
|
|
336
351
|
try:
|
|
337
352
|
return FuzzyFile(message, start_path, allow_freeform=allow_freeform, max_height=8, border=True, style=STYLE, **kwargs).execute()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: relationalai
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.8
|
|
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.18
|
|
15
15
|
Requires-Dist: nicegui==2.16.1
|
|
16
16
|
Requires-Dist: numpy<2
|
|
17
17
|
Requires-Dist: opentelemetry-api
|
|
@@ -28,9 +28,9 @@ relationalai/clients/export_procedure.py.jinja,sha256=nhvVcs5hQyWExFDuROQbi1VyYz
|
|
|
28
28
|
relationalai/clients/hash_util.py,sha256=pZVR1FX3q4G_19p_r6wpIR2tIM8_WUlfAR7AVZJjIYM,1495
|
|
29
29
|
relationalai/clients/profile_polling.py,sha256=pUH7WKH4nYDD0SlQtg3wsWdj0K7qt6nZqUw8jTthCBs,2565
|
|
30
30
|
relationalai/clients/result_helpers.py,sha256=wDSD02Ngx6W-YQqBIGKnpXD4Ju3pA1e9Nz6ORRI6SRI,17808
|
|
31
|
-
relationalai/clients/snowflake.py,sha256=
|
|
31
|
+
relationalai/clients/snowflake.py,sha256=QPJrRolINDkjZb8xyuvaLJIWOEYXdeALLSNqIAAXUEY,166006
|
|
32
32
|
relationalai/clients/types.py,sha256=eNo6akcMTbnBFbBbHd5IgVeY-zuAgtXlOs8Bo1SWmVU,2890
|
|
33
|
-
relationalai/clients/use_index_poller.py,sha256=
|
|
33
|
+
relationalai/clients/use_index_poller.py,sha256=rrkg35xiHqY0-2dZlPkgixEGENrIrl7bf_2TboX_qew,46794
|
|
34
34
|
relationalai/clients/util.py,sha256=NJC8fnrWHR01NydwESPSetIHRWf7jQJURYpaWJjmDyE,12311
|
|
35
35
|
relationalai/early_access/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
36
|
relationalai/early_access/builder/__init__.py,sha256=mrR-aGLPquUGc_e9-DOkVCCCo8QRE5A56GTTtgILNa4,993
|
|
@@ -163,7 +163,7 @@ relationalai/early_access/dsl/types/values.py,sha256=zP6Ovf3H9RZFFPsPcEdZ1GdfHCl
|
|
|
163
163
|
relationalai/early_access/graphs/__init__.py,sha256=4s2waMnXWG3lRF_jii9CaveOYQluJwq1GK3NV1se8d8,304
|
|
164
164
|
relationalai/early_access/lqp/__init__.py,sha256=D6Au6H1oIPO_x5AuV8Of90JvD5845AWygyqlAfBX2ks,319
|
|
165
165
|
relationalai/early_access/lqp/compiler/__init__.py,sha256=AaxiWct-ZXLr8nIRn2ybcM-wSGGVLC3lsWaJVPPR2R8,279
|
|
166
|
-
relationalai/early_access/lqp/constructors/__init__.py,sha256=
|
|
166
|
+
relationalai/early_access/lqp/constructors/__init__.py,sha256=ylitkCoQlTe0tWOVX9CiYya_fj1SnQhmK3O4ksBxOqk,525
|
|
167
167
|
relationalai/early_access/lqp/executor/__init__.py,sha256=4H2krSmtTJX97rBN5ugIc7EoUQ96gzC9kmcZXS5EMbw,285
|
|
168
168
|
relationalai/early_access/lqp/ir/__init__.py,sha256=80dggZVWTlnIqbHOC9fmunlRO2-We2eTDPyilLVCTCA,313
|
|
169
169
|
relationalai/early_access/lqp/passes/__init__.py,sha256=QsW1mzsMTTC7LTDIVW3bQJKvrNzwdwUz5JpBdbPjOtM,277
|
|
@@ -179,7 +179,7 @@ relationalai/early_access/metamodel/dependency/__init__.py,sha256=bkrnbq8aRMwCPD
|
|
|
179
179
|
relationalai/early_access/metamodel/factory/__init__.py,sha256=_boK2qJ4v_JVFn4OelJx3GTA3X48Yc5yCxq_DxG6fUs,946
|
|
180
180
|
relationalai/early_access/metamodel/helpers/__init__.py,sha256=bkEbkPFhvcVhnwRAAJxEUMWlI5r3iYuyTIDINfY1frs,320
|
|
181
181
|
relationalai/early_access/metamodel/ir/__init__.py,sha256=1oJzbPkQrRf5Cng51u1rZUa_sxIzSaSE4m6pvnHTUfE,571
|
|
182
|
-
relationalai/early_access/metamodel/rewrite/__init__.py,sha256=
|
|
182
|
+
relationalai/early_access/metamodel/rewrite/__init__.py,sha256=k7dbum8RWzcped7GuSP77wunBD7nNeop89M4KiU06l8,354
|
|
183
183
|
relationalai/early_access/metamodel/typer/__init__.py,sha256=va6-xIBBh3B28O5JEUeXsu38FcZPTDTQuym4BDrshmw,123
|
|
184
184
|
relationalai/early_access/metamodel/typer/typer/__init__.py,sha256=gUfw_Zkk_wq1iycTp7yrOxpZJs5GctvsLmatlmKlcFM,432
|
|
185
185
|
relationalai/early_access/metamodel/types/__init__.py,sha256=M7KDNQyO7uA_p_U_IRT3jYaOzhVVDm5MBjgQdxZqWsY,741
|
|
@@ -302,32 +302,32 @@ relationalai/semantics/devtools/compilation_manager.py,sha256=XBqG_nYWtK3s_J6MeC
|
|
|
302
302
|
relationalai/semantics/devtools/extract_lqp.py,sha256=gxI3EvPUTPAkwgnkCKAkEm2vA6QkLfoM8AXXiVz0c34,3696
|
|
303
303
|
relationalai/semantics/internal/__init__.py,sha256=JXrpFaL-fdZrvKpWTEn1UoLXITOoTGnAYwmgeiglhSk,774
|
|
304
304
|
relationalai/semantics/internal/annotations.py,sha256=PkrRN-gHO2ksh1hDKB1VVIB39dONvLdTd8_Y0rCR3fE,367
|
|
305
|
-
relationalai/semantics/internal/internal.py,sha256=
|
|
306
|
-
relationalai/semantics/internal/snowflake.py,sha256=
|
|
305
|
+
relationalai/semantics/internal/internal.py,sha256=xobU6wWXpgbcG1lQIO1fkgnSx7YzQ_Dqsqf7lBD9QuA,149008
|
|
306
|
+
relationalai/semantics/internal/snowflake.py,sha256=8D6WYDFKtt8R-sc9o1Oxgtl6Xwehs2Txw_lKNBid7UA,13467
|
|
307
307
|
relationalai/semantics/lqp/__init__.py,sha256=XgcQZxK-zz_LqPDVtwREhsIvjTuUIt4BZhIedCeMY-s,48
|
|
308
308
|
relationalai/semantics/lqp/builtins.py,sha256=IWRYJ1J-HGEQqBn8QVOyjZvgEiq6W9tZ0nBLdHz5wjA,576
|
|
309
309
|
relationalai/semantics/lqp/compiler.py,sha256=Nury1gPw_-Oi_mqT1-rhr13L4UmyIP2BGuotbuklQKA,949
|
|
310
|
-
relationalai/semantics/lqp/constructors.py,sha256=
|
|
311
|
-
relationalai/semantics/lqp/executor.py,sha256=
|
|
312
|
-
relationalai/semantics/lqp/intrinsics.py,sha256=
|
|
310
|
+
relationalai/semantics/lqp/constructors.py,sha256=iYpi6G8diBUNVITwj7-lfNob_kRqdM7eBTpx5uJcQ7s,2124
|
|
311
|
+
relationalai/semantics/lqp/executor.py,sha256=LoExKB3NuF9JdkUqsshAAfbQS3E_OwSyTD_R0wjd7zM,21728
|
|
312
|
+
relationalai/semantics/lqp/intrinsics.py,sha256=5d6z_C-5Anc97p4Jrlgt7og9gGei5N48EDRrnYXz4CA,842
|
|
313
313
|
relationalai/semantics/lqp/ir.py,sha256=DUw0ltul0AS9CRjntNlmllWTwXpxMyYg4iJ9t7NFYMA,1791
|
|
314
|
-
relationalai/semantics/lqp/model2lqp.py,sha256=
|
|
315
|
-
relationalai/semantics/lqp/passes.py,sha256=
|
|
314
|
+
relationalai/semantics/lqp/model2lqp.py,sha256=4uydEMJhdp0yRC5bIsanXRCiVicEtmavQ_cwsiW7ouA,35414
|
|
315
|
+
relationalai/semantics/lqp/passes.py,sha256=R83UEed22yM3MnWgSv2maY94wgblM2r8JhTZ2fWswIU,28471
|
|
316
316
|
relationalai/semantics/lqp/pragmas.py,sha256=FzzldrJEAZ1AIcEw6D-FfaVg3CoahRYgPCFo7xHfg1g,375
|
|
317
|
-
relationalai/semantics/lqp/primitives.py,sha256=
|
|
317
|
+
relationalai/semantics/lqp/primitives.py,sha256=9Hjow-Yp06jt0xatuUrH1dw0ErnzknIr9K0TB_AwdjU,11029
|
|
318
318
|
relationalai/semantics/lqp/result_helpers.py,sha256=oYpLoTBnzsiyOVIWA2rLMHlgs7P7BoEkqthQ2aMosnk,10123
|
|
319
319
|
relationalai/semantics/lqp/types.py,sha256=3TZ61ybwNV8lDyUMujZIWNFz3Fgn4uifsJb8ExfoMDg,4508
|
|
320
|
-
relationalai/semantics/lqp/utils.py,sha256=
|
|
320
|
+
relationalai/semantics/lqp/utils.py,sha256=iOoS-f8kyFjrgAnpK4cWDvAA-WmPgDRggSKUXm_JdTc,6317
|
|
321
321
|
relationalai/semantics/lqp/validators.py,sha256=YO_ciSgEVNILWUbkxIagKpIxI4oqV0fRSTO2Ok0rPJk,1526
|
|
322
|
-
relationalai/semantics/lqp/rewrite/__init__.py,sha256=
|
|
322
|
+
relationalai/semantics/lqp/rewrite/__init__.py,sha256=AR3JvxNMnUuGFcbu1qXEutnnYkex3XT64rSdjehjfR4,355
|
|
323
323
|
relationalai/semantics/lqp/rewrite/cdc.py,sha256=I6DeMOZScx-3UAVoSCMn9cuOgLzwdvJVKNwsgFa6R_k,10390
|
|
324
324
|
relationalai/semantics/lqp/rewrite/extract_common.py,sha256=sbihURqk4wtc1ekDWXWltq9LrO42XTLfOHl5D6nT5vw,18371
|
|
325
325
|
relationalai/semantics/lqp/rewrite/extract_keys.py,sha256=dSr5SVkYmrhiR0XPY5eRAnWD66dcZYgXdilXcERv634,18682
|
|
326
|
-
relationalai/semantics/lqp/rewrite/
|
|
326
|
+
relationalai/semantics/lqp/rewrite/function_annotations.py,sha256=otnxjxnVI3ByvPKdyG1SlGBaEKBej-9_M8Xc5GBtOeE,3523
|
|
327
327
|
relationalai/semantics/lqp/rewrite/quantify_vars.py,sha256=wYMEXzCW_D_Y_1rSLvuAAqw9KN1oIOn_vIMxELzRVb4,11568
|
|
328
328
|
relationalai/semantics/lqp/rewrite/splinter.py,sha256=oeDjP_F2PVLVexAKFn8w7CLtO9oy-R-tS2IOmzw_Ujk,3199
|
|
329
329
|
relationalai/semantics/metamodel/__init__.py,sha256=I-XqQAGycD0nKkKYvnF3G9d0QK_1LIM4xXICw8g8fBA,805
|
|
330
|
-
relationalai/semantics/metamodel/builtins.py,sha256=
|
|
330
|
+
relationalai/semantics/metamodel/builtins.py,sha256=vMe0Lytebk0e0M6US82-gvg6j8wGy6YtdAIBy1m2-HA,38047
|
|
331
331
|
relationalai/semantics/metamodel/compiler.py,sha256=XBsAnbFwgZ_TcRry6yXGWLyw_MaO2WJDp1EnC_ubhps,4525
|
|
332
332
|
relationalai/semantics/metamodel/dataflow.py,sha256=wfj1tARrR4yEAaTwUTrAcxEcz81VkUal4U_AX1esovk,3929
|
|
333
333
|
relationalai/semantics/metamodel/dependency.py,sha256=iJLx-w_zqde7CtbGcXxLxZBdUKZYl7AUykezPI9ccck,33926
|
|
@@ -338,11 +338,12 @@ relationalai/semantics/metamodel/ir.py,sha256=4Xl3oc92Q7_s33axtrZUXr-GL8VGJsKc7y
|
|
|
338
338
|
relationalai/semantics/metamodel/types.py,sha256=m3NolF3B_fBSnkQKA9o1feEawaW7RhR-t6W9OSxSFfc,11492
|
|
339
339
|
relationalai/semantics/metamodel/util.py,sha256=cmSmeww34JVMqcFudwVAY820IPM2ETSELJylwJ3GRJk,16654
|
|
340
340
|
relationalai/semantics/metamodel/visitor.py,sha256=DFY0DACLhxlZ0e4p0vWqbK6ZJr_GWEvH66CU_HVuoTk,35527
|
|
341
|
-
relationalai/semantics/metamodel/rewrite/__init__.py,sha256=
|
|
341
|
+
relationalai/semantics/metamodel/rewrite/__init__.py,sha256=9ONWFSdMPHkWpObDMSljt8DywhpFf4Ehsq1aT3fTPt8,344
|
|
342
342
|
relationalai/semantics/metamodel/rewrite/discharge_constraints.py,sha256=0v613BqCLlo4sgWuZjcLSxxakp3d34mYWbG4ldhzGno,1949
|
|
343
|
-
relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py,sha256=
|
|
344
|
-
relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py,sha256=
|
|
345
|
-
relationalai/semantics/metamodel/rewrite/flatten.py,sha256=
|
|
343
|
+
relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py,sha256=ZXX190gCKXhdB-Iyi4MGowc4FS9P0PIJTtTT0LrTr6A,7970
|
|
344
|
+
relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py,sha256=M5sSsyM2KKtz6ZD0zXT7bwTsJA_bgPJupu6TwnHLdmE,3341
|
|
345
|
+
relationalai/semantics/metamodel/rewrite/flatten.py,sha256=uw7pKBGdrGqGYZU9NewAjvqRuhJk7As49hA_Wcwfp2k,21918
|
|
346
|
+
relationalai/semantics/metamodel/rewrite/format_outputs.py,sha256=n0IxC3RL3UMly6MWsq342EGfL2yGj3vOgVG_wg7kt-o,6225
|
|
346
347
|
relationalai/semantics/metamodel/typer/__init__.py,sha256=E3ydmhWRdm-cAqWsNR24_Qd3NcwiHx8ElO2tzNysAXc,143
|
|
347
348
|
relationalai/semantics/metamodel/typer/checker.py,sha256=frY0gilDO6skbDiYFiIpDUOWyt9s9jAJsRBs848DcG0,19184
|
|
348
349
|
relationalai/semantics/metamodel/typer/typer.py,sha256=7kD5o08Q1bv9M5aUn9diDM5AfiuiRYi37xplqcVyLT8,62363
|
|
@@ -350,27 +351,27 @@ relationalai/semantics/reasoners/__init__.py,sha256=cLrGNKFX859EdPjk2n6MdYLvueaF
|
|
|
350
351
|
relationalai/semantics/reasoners/experimental/__init__.py,sha256=ZWXb3Oun7m_G2c3ijKnqxbEsAzTMVa7ciBXjdi4dCNI,144
|
|
351
352
|
relationalai/semantics/reasoners/graph/README.md,sha256=QgKEXTllp5PO-yK8oDfMx1PNTYF2uVoneMRKsWTY5GU,23953
|
|
352
353
|
relationalai/semantics/reasoners/graph/__init__.py,sha256=jSXR6J05SQZdjxQ5Y-ovqFqGTAXCOWeQDcvpfoBYgDA,1282
|
|
353
|
-
relationalai/semantics/reasoners/graph/core.py,sha256=
|
|
354
|
+
relationalai/semantics/reasoners/graph/core.py,sha256=CBerRlgcNoiur8kIJTRnLFllibK7pBFrfViY1yfRXfI,400039
|
|
354
355
|
relationalai/semantics/reasoners/graph/design/beyond_demand_transform.md,sha256=Givh0W6B6Hlow6TpmK-8adpEYd8b3O_WmdgMOQIyKs0,55749
|
|
355
356
|
relationalai/semantics/reasoners/graph/tests/README.md,sha256=XbauTzt6VA_YEOcrlZwsu4WOW5UoWV8M6F57wmxe5QU,1023
|
|
356
|
-
relationalai/semantics/reasoners/optimization/__init__.py,sha256=
|
|
357
|
-
relationalai/semantics/reasoners/optimization/common.py,sha256=
|
|
358
|
-
relationalai/semantics/reasoners/optimization/solvers_dev.py,sha256=
|
|
359
|
-
relationalai/semantics/reasoners/optimization/solvers_pb.py,sha256=
|
|
357
|
+
relationalai/semantics/reasoners/optimization/__init__.py,sha256=lpavly1Qa3VKvLgrbpp-tsxY9hcqHL6buxuekgKPakw,2212
|
|
358
|
+
relationalai/semantics/reasoners/optimization/common.py,sha256=V0c9eGHJKI-gt0X-q9o0bIkgBCdWFdjWq2NQITKwmXg,3124
|
|
359
|
+
relationalai/semantics/reasoners/optimization/solvers_dev.py,sha256=lbw3c8Z6PlHRDm7TdAhICPShlGoab9uR_4uacMPvpBw,24493
|
|
360
|
+
relationalai/semantics/reasoners/optimization/solvers_pb.py,sha256=ESwraHU9c4NCEVRZ16tnBZsUCmJg7lUhy-v0-GGq0qo,48000
|
|
360
361
|
relationalai/semantics/rel/__init__.py,sha256=pMlVTC_TbQ45mP1LpzwFBBgPxpKc0H3uJDvvDXEWzvs,55
|
|
361
362
|
relationalai/semantics/rel/builtins.py,sha256=kQToiELc4NnvCmXyFtu9CsGZNdTQtSzTB-nuyIfQcsM,1562
|
|
362
|
-
relationalai/semantics/rel/compiler.py,sha256=
|
|
363
|
-
relationalai/semantics/rel/executor.py,sha256=
|
|
363
|
+
relationalai/semantics/rel/compiler.py,sha256=7KmZ0X2DwsXoH5DwSYeqSFMUdBvrKUNRZX4e-hEBixg,42259
|
|
364
|
+
relationalai/semantics/rel/executor.py,sha256=v-yHl9R8AV0AA2xnm5YZDzue83pr8j2Q97Ky1MKkU70,17309
|
|
364
365
|
relationalai/semantics/rel/rel.py,sha256=9I_V6dQ83QRaLzq04Tt-KjBWhmNxNO3tFzeornBK4zc,15738
|
|
365
366
|
relationalai/semantics/rel/rel_utils.py,sha256=EH-NBROA4vIJXajLKniapt4Dxt7cXSqY4NEjD-wD8Mc,9566
|
|
366
|
-
relationalai/semantics/snowflake/__init__.py,sha256=
|
|
367
|
+
relationalai/semantics/snowflake/__init__.py,sha256=wRvLb8sQ_SvoY6DEPKpMz6sdSJbrbgyQJVcHAPoSlAw,166
|
|
367
368
|
relationalai/semantics/sql/__init__.py,sha256=59uuKmQOFUzwlYwc7anSuwhQ45bJTYVmd9nOJXr9mQs,80
|
|
368
369
|
relationalai/semantics/sql/compiler.py,sha256=FFcaZYg64bY3HzAk5JugmHced8h2H8eqG4MsIqoDqTM,129171
|
|
369
370
|
relationalai/semantics/sql/sql.py,sha256=7nUnm0RbHlOGSGQbnFrgzPYdmnoppifQ5jylR5Wtgcc,17122
|
|
370
371
|
relationalai/semantics/sql/executor/__init__.py,sha256=F3HqQPJVP9wgV3rkwI5jy1_QBCD_3qj2IGxbdT_pX9k,120
|
|
371
372
|
relationalai/semantics/sql/executor/duck_db.py,sha256=laI0jquMNNhj1pcFlaqxYAvvnCmSuvzzkibfjMz7liY,1909
|
|
372
373
|
relationalai/semantics/sql/executor/result_helpers.py,sha256=kVfspHHuzyq4SNklrtvhYte1wqRFzct-dAKin_lOmR4,3215
|
|
373
|
-
relationalai/semantics/sql/executor/snowflake.py,sha256=
|
|
374
|
+
relationalai/semantics/sql/executor/snowflake.py,sha256=ctbSssn91f6cV-_sPGizjkRn7vw_Lcqgd4Ai9S-DTFk,5912
|
|
374
375
|
relationalai/semantics/sql/rewrite/__init__.py,sha256=AT1WR0rqQHQ7E06NLoVym0zrZpBVPqK85uRFNJUTDp4,254
|
|
375
376
|
relationalai/semantics/sql/rewrite/denormalize.py,sha256=gPF0s1edthoHfuBIdS9-hnEaX5RFYBdtOlK5iAfB5CA,9040
|
|
376
377
|
relationalai/semantics/sql/rewrite/double_negation.py,sha256=QXynhjwfPW52Hpdo78VWPNk2TXe_mMTWYN470in51z8,1710
|
|
@@ -389,7 +390,7 @@ relationalai/semantics/std/std.py,sha256=Ql27y2Rs0d1kluktWi-t6_M_uYIxQUfO94GjlVf
|
|
|
389
390
|
relationalai/semantics/std/strings.py,sha256=Q_7kvx5dud6gppNURHOi4SMvgZNPRuWwEKDIPSEIOJI,2702
|
|
390
391
|
relationalai/semantics/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
391
392
|
relationalai/semantics/tests/logging.py,sha256=oJTrUS_Bq6WxqqO8QLtrjdkUB02Uu5erZ7FTl__-lNY,1432
|
|
392
|
-
relationalai/semantics/tests/test_snapshot_abstract.py,sha256=
|
|
393
|
+
relationalai/semantics/tests/test_snapshot_abstract.py,sha256=1xJmyRPlC6ywPytFUh8V-TFqndAzlo5v0XggRTJBcys,6131
|
|
393
394
|
relationalai/semantics/tests/test_snapshot_base.py,sha256=vlqqSyQf_IsDb7feDnkiHZKSCsJqDq0Ep4V3CKtKWns,466
|
|
394
395
|
relationalai/semantics/tests/utils.py,sha256=h4GPNCJGmAWvwskGWxc523BtFEd2ayff4zfBNHapoCo,1825
|
|
395
396
|
relationalai/std/__init__.py,sha256=U8-DpdOcxeGXVSf3LqJl9mSXKztNgB9iwropQcXp960,2178
|
|
@@ -402,8 +403,8 @@ relationalai/std/re.py,sha256=7B0dPaYyEdIlEgZfDzs7HJ_MTqccYTfIZieqst6MHbk,4457
|
|
|
402
403
|
relationalai/std/strings.py,sha256=vHvex_W5GHhhsVws6Dfyl4w1EHdbDE3nPjT09DnpvSE,4260
|
|
403
404
|
relationalai/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
404
405
|
relationalai/tools/cleanup_snapshots.py,sha256=s1q1ophi1RmiTZ9QQolQ6q1K9ZwseCaOuDtI1Rm99MQ,3434
|
|
405
|
-
relationalai/tools/cli.py,sha256=
|
|
406
|
-
relationalai/tools/cli_controls.py,sha256=
|
|
406
|
+
relationalai/tools/cli.py,sha256=EBrPdJQsltUQGClQTYaEDVmEmm4w_UGdb8fT_DKIeOQ,77017
|
|
407
|
+
relationalai/tools/cli_controls.py,sha256=84K0sjfsVwqi9C8ZlpvPi6XZPhjyW-R06Pir9Ex_Xtg,70468
|
|
407
408
|
relationalai/tools/cli_helpers.py,sha256=r-gJnWnb3d6yIn_ccyp3qx_Vpqh-FINCFMyPBVCA-Jg,14041
|
|
408
409
|
relationalai/tools/constants.py,sha256=A8Qz0CPs2cRUs5xaZ-Y7BCyvqmI6RLvipzwLDYZ3_PU,4505
|
|
409
410
|
relationalai/tools/debugger.py,sha256=yb03qO8ENHG2rBOPOF-rPKHGrJmaNy6iWXijg6T0dUI,6881
|
|
@@ -437,8 +438,8 @@ frontend/debugger/dist/index.html,sha256=0wIQ1Pm7BclVV1wna6Mj8OmgU73B9rSEGPVX-Wo
|
|
|
437
438
|
frontend/debugger/dist/assets/favicon-Dy0ZgA6N.png,sha256=tPXOEhOrM4tJyZVJQVBO_yFgNAlgooY38ZsjyrFstgg,620
|
|
438
439
|
frontend/debugger/dist/assets/index-Cssla-O7.js,sha256=MxgIGfdKQyBWgufck1xYggQNhW5nj6BPjCF6Wleo-f0,298886
|
|
439
440
|
frontend/debugger/dist/assets/index-DlHsYx1V.css,sha256=21pZtAjKCcHLFjbjfBQTF6y7QmOic-4FYaKNmwdNZVE,60141
|
|
440
|
-
relationalai-0.12.
|
|
441
|
-
relationalai-0.12.
|
|
442
|
-
relationalai-0.12.
|
|
443
|
-
relationalai-0.12.
|
|
444
|
-
relationalai-0.12.
|
|
441
|
+
relationalai-0.12.8.dist-info/METADATA,sha256=IGBDWxQWGYGQR1ZF-oDVSz-fj12UiuZrqdg7MgngzSA,2562
|
|
442
|
+
relationalai-0.12.8.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
443
|
+
relationalai-0.12.8.dist-info/entry_points.txt,sha256=fo_oLFJih3PUgYuHXsk7RnCjBm9cqRNR--ab6DgI6-0,88
|
|
444
|
+
relationalai-0.12.8.dist-info/licenses/LICENSE,sha256=pPyTVXFYhirkEW9VsnHIgUjT0Vg8_xsE6olrF5SIgpc,11343
|
|
445
|
+
relationalai-0.12.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|