relationalai 0.12.7__py3-none-any.whl → 0.12.9__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 (33) hide show
  1. relationalai/clients/snowflake.py +37 -5
  2. relationalai/clients/use_index_poller.py +11 -1
  3. relationalai/semantics/internal/internal.py +29 -7
  4. relationalai/semantics/lqp/compiler.py +1 -1
  5. relationalai/semantics/lqp/constructors.py +6 -0
  6. relationalai/semantics/lqp/executor.py +23 -38
  7. relationalai/semantics/lqp/intrinsics.py +4 -3
  8. relationalai/semantics/lqp/model2lqp.py +6 -12
  9. relationalai/semantics/lqp/passes.py +4 -2
  10. relationalai/semantics/lqp/rewrite/__init__.py +2 -1
  11. relationalai/semantics/lqp/rewrite/function_annotations.py +91 -56
  12. relationalai/semantics/lqp/rewrite/functional_dependencies.py +282 -0
  13. relationalai/semantics/metamodel/builtins.py +6 -0
  14. relationalai/semantics/metamodel/rewrite/__init__.py +2 -1
  15. relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +1 -1
  16. relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py +9 -9
  17. relationalai/semantics/metamodel/rewrite/flatten.py +18 -149
  18. relationalai/semantics/metamodel/rewrite/format_outputs.py +165 -0
  19. relationalai/semantics/reasoners/graph/core.py +98 -70
  20. relationalai/semantics/reasoners/optimization/__init__.py +55 -10
  21. relationalai/semantics/reasoners/optimization/common.py +63 -8
  22. relationalai/semantics/reasoners/optimization/solvers_dev.py +39 -33
  23. relationalai/semantics/reasoners/optimization/solvers_pb.py +1033 -385
  24. relationalai/semantics/rel/compiler.py +21 -2
  25. relationalai/semantics/tests/test_snapshot_abstract.py +3 -0
  26. relationalai/tools/cli.py +10 -0
  27. relationalai/tools/cli_controls.py +15 -0
  28. relationalai/util/otel_handler.py +10 -4
  29. {relationalai-0.12.7.dist-info → relationalai-0.12.9.dist-info}/METADATA +1 -1
  30. {relationalai-0.12.7.dist-info → relationalai-0.12.9.dist-info}/RECORD +33 -31
  31. {relationalai-0.12.7.dist-info → relationalai-0.12.9.dist-info}/WHEEL +0 -0
  32. {relationalai-0.12.7.dist-info → relationalai-0.12.9.dist-info}/entry_points.txt +0 -0
  33. {relationalai-0.12.7.dist-info → relationalai-0.12.9.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, FunctionAnnotations, QuantifyVars, Splinter
14
+ from ..metamodel.rewrite import (Flatten, ExtractNestedLogicals, DNFUnionSplitter, DischargeConstraints, FormatOutputs)
15
+ from ..lqp.rewrite import CDC, ExtractCommon, ExtractKeys, FunctionAnnotations, QuantifyVars, Splinter, SplitMultiCheckRequires
16
16
 
17
17
  import math
18
18
 
@@ -24,6 +24,7 @@ import math
24
24
  class Compiler(c.Compiler):
25
25
  def __init__(self):
26
26
  super().__init__([
27
+ SplitMultiCheckRequires(),
27
28
  FunctionAnnotations(),
28
29
  DischargeConstraints(),
29
30
  Checker(),
@@ -33,6 +34,7 @@ class Compiler(c.Compiler):
33
34
  DNFUnionSplitter(),
34
35
  ExtractKeys(),
35
36
  ExtractCommon(),
37
+ FormatOutputs(),
36
38
  Flatten(),
37
39
  Splinter(),
38
40
  QuantifyVars(),
@@ -695,7 +697,24 @@ class ModelToRel:
695
697
  rel_annos = cast(Tuple[rel.Annotation, ...], self.handle_list(filtered_annos))
696
698
  return rel_annos
697
699
 
700
+ # standard handling mistreats the integer arg of ranked `@function(:checked, k)`
701
+ def handle_ranked_function_annotation(self, n: ir.Annotation):
702
+ assert n.relation == bt.function_ranked and len(n.args) == 2
703
+ checked_lit = n.args[0]
704
+ rank_lit = n.args[1]
705
+ assert isinstance(checked_lit, ir.Literal) and isinstance(rank_lit, ir.Literal)
706
+ checked = rel.MetaValue(checked_lit.value)
707
+ rank = rank_lit.value
708
+ return rel.Annotation(
709
+ n.relation.name,
710
+ (checked, rank)
711
+ )
712
+
698
713
  def handle_annotation(self, n: ir.Annotation):
714
+ # special treatment for (ranked) @function(:checked, k)
715
+ if n.relation == bt.function_ranked:
716
+ return self.handle_ranked_function_annotation(n)
717
+
699
718
  # we know that annotations won't have vars, so we can ignore that type warning
700
719
  return rel.Annotation(
701
720
  n.relation.name,
@@ -2,6 +2,7 @@ import logging
2
2
  import os
3
3
  import uuid
4
4
  import sys
5
+ import datetime
5
6
  from abc import abstractmethod, ABC
6
7
 
7
8
  from relationalai.semantics.tests.logging import Capturer
@@ -47,6 +48,8 @@ class AbstractSnapshotTest(ABC):
47
48
  'use_sql': use_sql,
48
49
  'reasoner.rule.use_lqp': use_lqp,
49
50
  'keep_model': False,
51
+ # fix the current time to keep snapshots stable
52
+ 'datetime_now': datetime.datetime.fromisoformat("2025-12-01T12:00:00+00:00"),
50
53
  }
51
54
  if use_direct_access:
52
55
  # for direct access we can not use user/password authentication
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()
@@ -20,6 +20,7 @@ from relationalai.debugging import logger, Span, filter_span_attrs, otel_traceid
20
20
  from relationalai.clients.snowflake import Resources
21
21
 
22
22
  MAX_PAYLOAD_SIZE = 25*1024 # 25KB
23
+ MAX_ATTRIBUTE_LENGTH = 1000
23
24
  _otel_initialized = False
24
25
 
25
26
 
@@ -44,8 +45,6 @@ class CachedSpanExporter(SpanExporter):
44
45
 
45
46
  def get_spans(self):
46
47
  return self.spans
47
-
48
-
49
48
  class NativeAppSpanExporter(SpanExporter):
50
49
  def __init__(self, resource:Resources, app_name:str):
51
50
  self.resource = resource
@@ -252,6 +251,12 @@ def encode_otlp_attribute(k, v):
252
251
  try:
253
252
  valueObj = {}
254
253
  if isinstance(v, str):
254
+ # Truncate metamodel attribute value if it's too large
255
+ if k == "metamodel" and len(v) > MAX_ATTRIBUTE_LENGTH:
256
+ original_length = len(v)
257
+ v = v[:MAX_ATTRIBUTE_LENGTH] + f"... (truncated from {original_length} chars)"
258
+ logging.warning(f"{k} attribute truncated from {original_length} to {MAX_ATTRIBUTE_LENGTH} characters")
259
+
255
260
  valueObj = {
256
261
  "stringValue": html.escape(v).replace("\n", "; ")
257
262
  }
@@ -369,7 +374,7 @@ def encode_spans_to_otlp_json(spans: Sequence[ReadableSpan], max_bytes: int) ->
369
374
  except Exception as e:
370
375
  logging.warning(f"Error encoding resource to OTLP JSON: {e}")
371
376
  return "", spans # Return the unencoded spans if resource encoding fails
372
-
377
+
373
378
  # TODO encode pyrel version for real
374
379
  header_str = f'{{"resourceSpans": [{{"resource":{resource_str}, "scopeSpans": [{{"scope":{{"name":"pyrel", "version":"v0.4.0"}},"spans":['
375
380
  footer_str = ']}]}]}'
@@ -378,7 +383,7 @@ def encode_spans_to_otlp_json(spans: Sequence[ReadableSpan], max_bytes: int) ->
378
383
  encoded_spans = []
379
384
  for span in spans:
380
385
  try:
381
- span_str = encode_span_to_otlp_json(span)
386
+ span_str = encode_span_to_otlp_json(span)
382
387
  except Exception as e:
383
388
  logging.warning(f"Error encoding span {span}: {e}")
384
389
  continue # Skip this span if encoding fails
@@ -460,6 +465,7 @@ def enable_otel_export(client_resources: Resources, app_name):
460
465
  if _otel_initialized:
461
466
  logging.warning("OTel already initialized, skipping.")
462
467
  return
468
+
463
469
  _otel_initialized = True
464
470
 
465
471
  if TRACE_PROVIDER is None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: relationalai
3
- Version: 0.12.7
3
+ Version: 0.12.9
4
4
  Summary: RelationalAI Library and CLI
5
5
  Author-email: RelationalAI <support@relational.ai>
6
6
  License-File: LICENSE
@@ -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=nlEQG6HlvDe5TCVT5PIm_wo-Y_ymtFnqrcSsPINJufw,164008
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=OFeTJ3fF98UoVk6MA8v8ri8WPbmmCquyA4T8MD_T1Xc,46398
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
@@ -302,32 +302,33 @@ 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=xobU6wWXpgbcG1lQIO1fkgnSx7YzQ_Dqsqf7lBD9QuA,149008
305
+ relationalai/semantics/internal/internal.py,sha256=hElTyxtnTfNsmX9kJZ2I5yU4yA3udFyu2xk-qq8G3T0,149986
306
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
- relationalai/semantics/lqp/compiler.py,sha256=Nury1gPw_-Oi_mqT1-rhr13L4UmyIP2BGuotbuklQKA,949
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
309
+ relationalai/semantics/lqp/compiler.py,sha256=oOGlN03NVvltKN5KSDOqvb0TsAER_igUe9CnOcHAuoY,943
310
+ relationalai/semantics/lqp/constructors.py,sha256=KWXW3OxpZE8E-OYYjrjE_uFAXRekuGHn0TNSPPQyY7g,2336
311
+ relationalai/semantics/lqp/executor.py,sha256=7Jk2eKlGZ0H4wXInjnHKZehDVGOq09W6zY1mFALwIyE,21160
312
+ relationalai/semantics/lqp/intrinsics.py,sha256=oKPIcW8PYgU-yPTO21iSF00RBsFKPFFP5MICe6izjKk,871
313
313
  relationalai/semantics/lqp/ir.py,sha256=DUw0ltul0AS9CRjntNlmllWTwXpxMyYg4iJ9t7NFYMA,1791
314
- relationalai/semantics/lqp/model2lqp.py,sha256=4uydEMJhdp0yRC5bIsanXRCiVicEtmavQ_cwsiW7ouA,35414
315
- relationalai/semantics/lqp/passes.py,sha256=tK77lajdpvjs_lAFuBwd_A6XCXrwYK6k4Y_-jOHK2Yc,28431
314
+ relationalai/semantics/lqp/model2lqp.py,sha256=mtxXXOMWTMrLYyB84x0OqdmwAACfQ7au1IhiKZ2_lqY,35262
315
+ relationalai/semantics/lqp/passes.py,sha256=WNVuGxf1jU-UYyoEW5XvnREwJ-NW4_iMECW-Gaphaq8,28531
316
316
  relationalai/semantics/lqp/pragmas.py,sha256=FzzldrJEAZ1AIcEw6D-FfaVg3CoahRYgPCFo7xHfg1g,375
317
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
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=AR3JvxNMnUuGFcbu1qXEutnnYkex3XT64rSdjehjfR4,355
322
+ relationalai/semantics/lqp/rewrite/__init__.py,sha256=3LxYHZm6-vaqs-5Co9DQ8awxk838f5huiR5OEaLc8Ww,411
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/function_annotations.py,sha256=otnxjxnVI3ByvPKdyG1SlGBaEKBej-9_M8Xc5GBtOeE,3523
326
+ relationalai/semantics/lqp/rewrite/function_annotations.py,sha256=9ZzLASvXh_OgQ04eup0AyoMIh2HxWHkoRETLm1-XtWs,4660
327
+ relationalai/semantics/lqp/rewrite/functional_dependencies.py,sha256=pQo7a7oS1wsep3ObdxPPaV962RlR0iBWzBmd7lCzCvQ,11564
327
328
  relationalai/semantics/lqp/rewrite/quantify_vars.py,sha256=wYMEXzCW_D_Y_1rSLvuAAqw9KN1oIOn_vIMxELzRVb4,11568
328
329
  relationalai/semantics/lqp/rewrite/splinter.py,sha256=oeDjP_F2PVLVexAKFn8w7CLtO9oy-R-tS2IOmzw_Ujk,3199
329
330
  relationalai/semantics/metamodel/__init__.py,sha256=I-XqQAGycD0nKkKYvnF3G9d0QK_1LIM4xXICw8g8fBA,805
330
- relationalai/semantics/metamodel/builtins.py,sha256=gDM3DSKlZA1Orq7oqOn33Dm9-J3yHpDAe9Y2ea-zQsk,37940
331
+ relationalai/semantics/metamodel/builtins.py,sha256=lW8VdaSICyr8gxhFzaE-fD8wHSLBuErDOzntEC9FNL0,38407
331
332
  relationalai/semantics/metamodel/compiler.py,sha256=XBsAnbFwgZ_TcRry6yXGWLyw_MaO2WJDp1EnC_ubhps,4525
332
333
  relationalai/semantics/metamodel/dataflow.py,sha256=wfj1tARrR4yEAaTwUTrAcxEcz81VkUal4U_AX1esovk,3929
333
334
  relationalai/semantics/metamodel/dependency.py,sha256=iJLx-w_zqde7CtbGcXxLxZBdUKZYl7AUykezPI9ccck,33926
@@ -338,11 +339,12 @@ relationalai/semantics/metamodel/ir.py,sha256=4Xl3oc92Q7_s33axtrZUXr-GL8VGJsKc7y
338
339
  relationalai/semantics/metamodel/types.py,sha256=m3NolF3B_fBSnkQKA9o1feEawaW7RhR-t6W9OSxSFfc,11492
339
340
  relationalai/semantics/metamodel/util.py,sha256=cmSmeww34JVMqcFudwVAY820IPM2ETSELJylwJ3GRJk,16654
340
341
  relationalai/semantics/metamodel/visitor.py,sha256=DFY0DACLhxlZ0e4p0vWqbK6ZJr_GWEvH66CU_HVuoTk,35527
341
- relationalai/semantics/metamodel/rewrite/__init__.py,sha256=aPgZuRGpULwPVWtENUEHmGBSNAEsxz1i0t257IOCO-E,285
342
+ relationalai/semantics/metamodel/rewrite/__init__.py,sha256=9ONWFSdMPHkWpObDMSljt8DywhpFf4Ehsq1aT3fTPt8,344
342
343
  relationalai/semantics/metamodel/rewrite/discharge_constraints.py,sha256=0v613BqCLlo4sgWuZjcLSxxakp3d34mYWbG4ldhzGno,1949
343
- relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py,sha256=dlyD868Pg424BLowY4A0gOmSziSy1U-dYGXZEE3SW8E,7956
344
- relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py,sha256=0aKMoniIzq-uAm1iItRQEUxGGDYVnT8pWZxFXWlOk50,3366
345
- relationalai/semantics/metamodel/rewrite/flatten.py,sha256=W3zoUWY2UVOO_d-vyLZYb4y61wcM99ceJJFCuz_Rz-Q,27891
344
+ relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py,sha256=ZXX190gCKXhdB-Iyi4MGowc4FS9P0PIJTtTT0LrTr6A,7970
345
+ relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py,sha256=vQ0-7t_GORskB1ZG50KuzM4phm6YNPvehfFn3v_LbgI,3354
346
+ relationalai/semantics/metamodel/rewrite/flatten.py,sha256=uw7pKBGdrGqGYZU9NewAjvqRuhJk7As49hA_Wcwfp2k,21918
347
+ relationalai/semantics/metamodel/rewrite/format_outputs.py,sha256=n0IxC3RL3UMly6MWsq342EGfL2yGj3vOgVG_wg7kt-o,6225
346
348
  relationalai/semantics/metamodel/typer/__init__.py,sha256=E3ydmhWRdm-cAqWsNR24_Qd3NcwiHx8ElO2tzNysAXc,143
347
349
  relationalai/semantics/metamodel/typer/checker.py,sha256=frY0gilDO6skbDiYFiIpDUOWyt9s9jAJsRBs848DcG0,19184
348
350
  relationalai/semantics/metamodel/typer/typer.py,sha256=7kD5o08Q1bv9M5aUn9diDM5AfiuiRYi37xplqcVyLT8,62363
@@ -350,16 +352,16 @@ relationalai/semantics/reasoners/__init__.py,sha256=cLrGNKFX859EdPjk2n6MdYLvueaF
350
352
  relationalai/semantics/reasoners/experimental/__init__.py,sha256=ZWXb3Oun7m_G2c3ijKnqxbEsAzTMVa7ciBXjdi4dCNI,144
351
353
  relationalai/semantics/reasoners/graph/README.md,sha256=QgKEXTllp5PO-yK8oDfMx1PNTYF2uVoneMRKsWTY5GU,23953
352
354
  relationalai/semantics/reasoners/graph/__init__.py,sha256=jSXR6J05SQZdjxQ5Y-ovqFqGTAXCOWeQDcvpfoBYgDA,1282
353
- relationalai/semantics/reasoners/graph/core.py,sha256=_5bE-8JYKjfJYuRZ6fYqKKuvOxHc1ZwQwOFFWeWlgcM,397902
355
+ relationalai/semantics/reasoners/graph/core.py,sha256=CBerRlgcNoiur8kIJTRnLFllibK7pBFrfViY1yfRXfI,400039
354
356
  relationalai/semantics/reasoners/graph/design/beyond_demand_transform.md,sha256=Givh0W6B6Hlow6TpmK-8adpEYd8b3O_WmdgMOQIyKs0,55749
355
357
  relationalai/semantics/reasoners/graph/tests/README.md,sha256=XbauTzt6VA_YEOcrlZwsu4WOW5UoWV8M6F57wmxe5QU,1023
356
- relationalai/semantics/reasoners/optimization/__init__.py,sha256=ceDYhGtFuewYGILKcjpuNHnTaCK2qc7pmJEsDWUfrEo,598
357
- relationalai/semantics/reasoners/optimization/common.py,sha256=TVa9n9n97BwfMyYOTt895kkNiNkEX8WbaqReYM1PkuQ,1107
358
- relationalai/semantics/reasoners/optimization/solvers_dev.py,sha256=BjFcEfmqmdxM6jnd34pt1AlkrdwHd_HapqpB2oIvNP4,24142
359
- relationalai/semantics/reasoners/optimization/solvers_pb.py,sha256=ryNARpyph3uvr1dhWb7pNU3uuxuL1FLZZiTqFcr3Xf8,22148
358
+ relationalai/semantics/reasoners/optimization/__init__.py,sha256=lpavly1Qa3VKvLgrbpp-tsxY9hcqHL6buxuekgKPakw,2212
359
+ relationalai/semantics/reasoners/optimization/common.py,sha256=V0c9eGHJKI-gt0X-q9o0bIkgBCdWFdjWq2NQITKwmXg,3124
360
+ relationalai/semantics/reasoners/optimization/solvers_dev.py,sha256=lbw3c8Z6PlHRDm7TdAhICPShlGoab9uR_4uacMPvpBw,24493
361
+ relationalai/semantics/reasoners/optimization/solvers_pb.py,sha256=ESwraHU9c4NCEVRZ16tnBZsUCmJg7lUhy-v0-GGq0qo,48000
360
362
  relationalai/semantics/rel/__init__.py,sha256=pMlVTC_TbQ45mP1LpzwFBBgPxpKc0H3uJDvvDXEWzvs,55
361
363
  relationalai/semantics/rel/builtins.py,sha256=kQToiELc4NnvCmXyFtu9CsGZNdTQtSzTB-nuyIfQcsM,1562
362
- relationalai/semantics/rel/compiler.py,sha256=Sb2z_NlT96glclJ-w0wlpEH4RKBGEaCc_OOk3gORztk,42215
364
+ relationalai/semantics/rel/compiler.py,sha256=-gyu_kL1p4Z-SXI2fwLXSbGfUy-ejQcKVrc66rVvOyg,43044
363
365
  relationalai/semantics/rel/executor.py,sha256=v-yHl9R8AV0AA2xnm5YZDzue83pr8j2Q97Ky1MKkU70,17309
364
366
  relationalai/semantics/rel/rel.py,sha256=9I_V6dQ83QRaLzq04Tt-KjBWhmNxNO3tFzeornBK4zc,15738
365
367
  relationalai/semantics/rel/rel_utils.py,sha256=EH-NBROA4vIJXajLKniapt4Dxt7cXSqY4NEjD-wD8Mc,9566
@@ -389,7 +391,7 @@ relationalai/semantics/std/std.py,sha256=Ql27y2Rs0d1kluktWi-t6_M_uYIxQUfO94GjlVf
389
391
  relationalai/semantics/std/strings.py,sha256=Q_7kvx5dud6gppNURHOi4SMvgZNPRuWwEKDIPSEIOJI,2702
390
392
  relationalai/semantics/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
391
393
  relationalai/semantics/tests/logging.py,sha256=oJTrUS_Bq6WxqqO8QLtrjdkUB02Uu5erZ7FTl__-lNY,1432
392
- relationalai/semantics/tests/test_snapshot_abstract.py,sha256=1xJmyRPlC6ywPytFUh8V-TFqndAzlo5v0XggRTJBcys,6131
394
+ relationalai/semantics/tests/test_snapshot_abstract.py,sha256=ob_5p43CQzz9nfB7Q9W1geKqwNmLyUmQx-mpJfTOwhg,6305
393
395
  relationalai/semantics/tests/test_snapshot_base.py,sha256=vlqqSyQf_IsDb7feDnkiHZKSCsJqDq0Ep4V3CKtKWns,466
394
396
  relationalai/semantics/tests/utils.py,sha256=h4GPNCJGmAWvwskGWxc523BtFEd2ayff4zfBNHapoCo,1825
395
397
  relationalai/std/__init__.py,sha256=U8-DpdOcxeGXVSf3LqJl9mSXKztNgB9iwropQcXp960,2178
@@ -402,8 +404,8 @@ relationalai/std/re.py,sha256=7B0dPaYyEdIlEgZfDzs7HJ_MTqccYTfIZieqst6MHbk,4457
402
404
  relationalai/std/strings.py,sha256=vHvex_W5GHhhsVws6Dfyl4w1EHdbDE3nPjT09DnpvSE,4260
403
405
  relationalai/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
404
406
  relationalai/tools/cleanup_snapshots.py,sha256=s1q1ophi1RmiTZ9QQolQ6q1K9ZwseCaOuDtI1Rm99MQ,3434
405
- relationalai/tools/cli.py,sha256=jaUyqq7PYdey7vx7jpAZtHxfixX4np3aMEUKNTFrlc4,76528
406
- relationalai/tools/cli_controls.py,sha256=NdODpsrqr77N2cbAAJ_fUJqVZYiG4pCht4gQoEaErP0,69944
407
+ relationalai/tools/cli.py,sha256=EBrPdJQsltUQGClQTYaEDVmEmm4w_UGdb8fT_DKIeOQ,77017
408
+ relationalai/tools/cli_controls.py,sha256=84K0sjfsVwqi9C8ZlpvPi6XZPhjyW-R06Pir9Ex_Xtg,70468
407
409
  relationalai/tools/cli_helpers.py,sha256=r-gJnWnb3d6yIn_ccyp3qx_Vpqh-FINCFMyPBVCA-Jg,14041
408
410
  relationalai/tools/constants.py,sha256=A8Qz0CPs2cRUs5xaZ-Y7BCyvqmI6RLvipzwLDYZ3_PU,4505
409
411
  relationalai/tools/debugger.py,sha256=yb03qO8ENHG2rBOPOF-rPKHGrJmaNy6iWXijg6T0dUI,6881
@@ -421,7 +423,7 @@ relationalai/util/format.py,sha256=fLRovumUa2cu0_2gy3O5vaEbpND4p9_IIgr-vDaIGDc,3
421
423
  relationalai/util/graph.py,sha256=eT8s0yCiJIu6D1T1fjZsLSPCcuQb2Mzl6qnljtQ5TuA,1504
422
424
  relationalai/util/list_databases.py,sha256=xJZGHzE0VLaDItWo5XvQSx75OwV045h2rjCBBnhNB3o,152
423
425
  relationalai/util/otel_configuration.py,sha256=SV1SFqdKm8q-OD1TsmiIB0x5VxtAFsBRyTwD8zNtnQc,1066
424
- relationalai/util/otel_handler.py,sha256=G1om5NxMvOjc6GDS4_Qf5aVGt1EVqRnkhfmZPcc6ZUg,17681
426
+ relationalai/util/otel_handler.py,sha256=2h3ROnra798RRRPLTlEBxEcj-jXXk1ri_l10RAFaiWk,18109
425
427
  relationalai/util/snowflake_handler.py,sha256=8HUo6eU5wPxa6m_EocYuEZD_XpVIh9EqBnGwaS06Usw,2942
426
428
  relationalai/util/span_format_test.py,sha256=1rU-M3RXhRt8vCX6rtuIJogEVkB164N3qiKcTmb-sl8,1345
427
429
  relationalai/util/span_tracker.py,sha256=SKj4UB43clUxWShq3lFChl3dZ4JGRhcnY_xAh-7Xzvg,7888
@@ -437,8 +439,8 @@ frontend/debugger/dist/index.html,sha256=0wIQ1Pm7BclVV1wna6Mj8OmgU73B9rSEGPVX-Wo
437
439
  frontend/debugger/dist/assets/favicon-Dy0ZgA6N.png,sha256=tPXOEhOrM4tJyZVJQVBO_yFgNAlgooY38ZsjyrFstgg,620
438
440
  frontend/debugger/dist/assets/index-Cssla-O7.js,sha256=MxgIGfdKQyBWgufck1xYggQNhW5nj6BPjCF6Wleo-f0,298886
439
441
  frontend/debugger/dist/assets/index-DlHsYx1V.css,sha256=21pZtAjKCcHLFjbjfBQTF6y7QmOic-4FYaKNmwdNZVE,60141
440
- relationalai-0.12.7.dist-info/METADATA,sha256=mGeTSUrL68WnZM_zIElyoIkqwYGERi6HT6E0ur3mZxQ,2562
441
- relationalai-0.12.7.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
442
- relationalai-0.12.7.dist-info/entry_points.txt,sha256=fo_oLFJih3PUgYuHXsk7RnCjBm9cqRNR--ab6DgI6-0,88
443
- relationalai-0.12.7.dist-info/licenses/LICENSE,sha256=pPyTVXFYhirkEW9VsnHIgUjT0Vg8_xsE6olrF5SIgpc,11343
444
- relationalai-0.12.7.dist-info/RECORD,,
442
+ relationalai-0.12.9.dist-info/METADATA,sha256=r7ebl7OUAHSnHZxFdPUL8woKPut0wWKjJ6Z1wvHc6Ko,2562
443
+ relationalai-0.12.9.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
444
+ relationalai-0.12.9.dist-info/entry_points.txt,sha256=fo_oLFJih3PUgYuHXsk7RnCjBm9cqRNR--ab6DgI6-0,88
445
+ relationalai-0.12.9.dist-info/licenses/LICENSE,sha256=pPyTVXFYhirkEW9VsnHIgUjT0Vg8_xsE6olrF5SIgpc,11343
446
+ relationalai-0.12.9.dist-info/RECORD,,