relationalai 1.0.0a3__py3-none-any.whl → 1.0.0a5__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 (118) hide show
  1. relationalai/config/config.py +47 -21
  2. relationalai/config/connections/__init__.py +5 -2
  3. relationalai/config/connections/duckdb.py +2 -2
  4. relationalai/config/connections/local.py +31 -0
  5. relationalai/config/connections/snowflake.py +0 -1
  6. relationalai/config/external/raiconfig_converter.py +235 -0
  7. relationalai/config/external/raiconfig_models.py +202 -0
  8. relationalai/config/external/utils.py +31 -0
  9. relationalai/config/shims.py +1 -0
  10. relationalai/semantics/__init__.py +10 -8
  11. relationalai/semantics/backends/sql/sql_compiler.py +1 -4
  12. relationalai/semantics/experimental/__init__.py +0 -0
  13. relationalai/semantics/experimental/builder.py +295 -0
  14. relationalai/semantics/experimental/builtins.py +154 -0
  15. relationalai/semantics/frontend/base.py +67 -42
  16. relationalai/semantics/frontend/core.py +34 -6
  17. relationalai/semantics/frontend/front_compiler.py +209 -37
  18. relationalai/semantics/frontend/pprint.py +6 -2
  19. relationalai/semantics/metamodel/__init__.py +7 -0
  20. relationalai/semantics/metamodel/metamodel.py +2 -0
  21. relationalai/semantics/metamodel/metamodel_analyzer.py +58 -16
  22. relationalai/semantics/metamodel/pprint.py +6 -1
  23. relationalai/semantics/metamodel/rewriter.py +11 -7
  24. relationalai/semantics/metamodel/typer.py +116 -41
  25. relationalai/semantics/reasoners/__init__.py +11 -0
  26. relationalai/semantics/reasoners/graph/__init__.py +35 -0
  27. relationalai/semantics/reasoners/graph/core.py +9028 -0
  28. relationalai/semantics/std/__init__.py +30 -10
  29. relationalai/semantics/std/aggregates.py +641 -12
  30. relationalai/semantics/std/common.py +146 -13
  31. relationalai/semantics/std/constraints.py +71 -1
  32. relationalai/semantics/std/datetime.py +904 -21
  33. relationalai/semantics/std/decimals.py +143 -2
  34. relationalai/semantics/std/floats.py +57 -4
  35. relationalai/semantics/std/integers.py +98 -4
  36. relationalai/semantics/std/math.py +857 -35
  37. relationalai/semantics/std/numbers.py +216 -20
  38. relationalai/semantics/std/re.py +213 -5
  39. relationalai/semantics/std/strings.py +437 -44
  40. relationalai/shims/executor.py +60 -52
  41. relationalai/shims/fixtures.py +85 -0
  42. relationalai/shims/helpers.py +26 -2
  43. relationalai/shims/hoister.py +28 -9
  44. relationalai/shims/mm2v0.py +204 -173
  45. relationalai/tools/cli/cli.py +192 -10
  46. relationalai/tools/cli/components/progress_reader.py +1 -1
  47. relationalai/tools/cli/docs.py +394 -0
  48. relationalai/tools/debugger.py +11 -4
  49. relationalai/tools/qb_debugger.py +435 -0
  50. relationalai/tools/typer_debugger.py +1 -2
  51. relationalai/util/dataclasses.py +3 -5
  52. relationalai/util/docutils.py +1 -2
  53. relationalai/util/error.py +2 -5
  54. relationalai/util/python.py +23 -0
  55. relationalai/util/runtime.py +1 -2
  56. relationalai/util/schema.py +2 -4
  57. relationalai/util/structures.py +4 -2
  58. relationalai/util/tracing.py +8 -2
  59. {relationalai-1.0.0a3.dist-info → relationalai-1.0.0a5.dist-info}/METADATA +8 -5
  60. {relationalai-1.0.0a3.dist-info → relationalai-1.0.0a5.dist-info}/RECORD +118 -95
  61. {relationalai-1.0.0a3.dist-info → relationalai-1.0.0a5.dist-info}/WHEEL +1 -1
  62. v0/relationalai/__init__.py +1 -1
  63. v0/relationalai/clients/client.py +52 -18
  64. v0/relationalai/clients/exec_txn_poller.py +122 -0
  65. v0/relationalai/clients/local.py +23 -8
  66. v0/relationalai/clients/resources/azure/azure.py +36 -11
  67. v0/relationalai/clients/resources/snowflake/__init__.py +4 -4
  68. v0/relationalai/clients/resources/snowflake/cli_resources.py +12 -1
  69. v0/relationalai/clients/resources/snowflake/direct_access_resources.py +124 -100
  70. v0/relationalai/clients/resources/snowflake/engine_service.py +381 -0
  71. v0/relationalai/clients/resources/snowflake/engine_state_handlers.py +35 -29
  72. v0/relationalai/clients/resources/snowflake/error_handlers.py +43 -2
  73. v0/relationalai/clients/resources/snowflake/snowflake.py +277 -179
  74. v0/relationalai/clients/resources/snowflake/use_index_poller.py +8 -0
  75. v0/relationalai/clients/types.py +5 -0
  76. v0/relationalai/errors.py +19 -1
  77. v0/relationalai/semantics/lqp/algorithms.py +173 -0
  78. v0/relationalai/semantics/lqp/builtins.py +199 -2
  79. v0/relationalai/semantics/lqp/executor.py +68 -37
  80. v0/relationalai/semantics/lqp/ir.py +28 -2
  81. v0/relationalai/semantics/lqp/model2lqp.py +215 -45
  82. v0/relationalai/semantics/lqp/passes.py +13 -658
  83. v0/relationalai/semantics/lqp/rewrite/__init__.py +12 -0
  84. v0/relationalai/semantics/lqp/rewrite/algorithm.py +385 -0
  85. v0/relationalai/semantics/lqp/rewrite/constants_to_vars.py +70 -0
  86. v0/relationalai/semantics/lqp/rewrite/deduplicate_vars.py +104 -0
  87. v0/relationalai/semantics/lqp/rewrite/eliminate_data.py +108 -0
  88. v0/relationalai/semantics/lqp/rewrite/extract_keys.py +25 -3
  89. v0/relationalai/semantics/lqp/rewrite/period_math.py +77 -0
  90. v0/relationalai/semantics/lqp/rewrite/quantify_vars.py +65 -31
  91. v0/relationalai/semantics/lqp/rewrite/unify_definitions.py +317 -0
  92. v0/relationalai/semantics/lqp/utils.py +11 -1
  93. v0/relationalai/semantics/lqp/validators.py +14 -1
  94. v0/relationalai/semantics/metamodel/builtins.py +2 -1
  95. v0/relationalai/semantics/metamodel/compiler.py +2 -1
  96. v0/relationalai/semantics/metamodel/dependency.py +12 -3
  97. v0/relationalai/semantics/metamodel/executor.py +11 -1
  98. v0/relationalai/semantics/metamodel/factory.py +2 -2
  99. v0/relationalai/semantics/metamodel/helpers.py +7 -0
  100. v0/relationalai/semantics/metamodel/ir.py +3 -2
  101. v0/relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +30 -20
  102. v0/relationalai/semantics/metamodel/rewrite/flatten.py +50 -13
  103. v0/relationalai/semantics/metamodel/rewrite/format_outputs.py +9 -3
  104. v0/relationalai/semantics/metamodel/typer/checker.py +6 -4
  105. v0/relationalai/semantics/metamodel/typer/typer.py +4 -3
  106. v0/relationalai/semantics/metamodel/visitor.py +4 -3
  107. v0/relationalai/semantics/reasoners/optimization/solvers_dev.py +1 -1
  108. v0/relationalai/semantics/reasoners/optimization/solvers_pb.py +336 -86
  109. v0/relationalai/semantics/rel/compiler.py +2 -1
  110. v0/relationalai/semantics/rel/executor.py +3 -2
  111. v0/relationalai/semantics/tests/lqp/__init__.py +0 -0
  112. v0/relationalai/semantics/tests/lqp/algorithms.py +345 -0
  113. v0/relationalai/tools/cli.py +339 -186
  114. v0/relationalai/tools/cli_controls.py +216 -67
  115. v0/relationalai/tools/cli_helpers.py +410 -6
  116. v0/relationalai/util/format.py +5 -2
  117. {relationalai-1.0.0a3.dist-info → relationalai-1.0.0a5.dist-info}/entry_points.txt +0 -0
  118. {relationalai-1.0.0a3.dist-info → relationalai-1.0.0a5.dist-info}/top_level.txt +0 -0
@@ -1,78 +1,90 @@
1
1
  relationalai/__init__.py,sha256=hHhZc1h-IDj0pzPF67763g0a4Pdh7W-4GQpyqL60dec,152
2
2
  relationalai/config/__init__.py,sha256=QL7MxBN7xy50h4Sqg3jotuyg-6EisCEtJCHCWQrL1ME,1524
3
- relationalai/config/config.py,sha256=CUBkOYWu3IgCAa4oHVwEozfMbZgAX3hENo-Va2gsdIs,10477
3
+ relationalai/config/config.py,sha256=qHfyEvICXk9BPJa24Fxfxhf9BGnRysWpwLW0J5cS2n4,11529
4
4
  relationalai/config/config_fields.py,sha256=Gskc1Ugsi4xowepDlma1HNaYdQ_wS2RiMpUaG6aNdv4,4081
5
- relationalai/config/shims.py,sha256=Xoqvie0Rlc7Qr3FvipPdcDiGwHJmFk3m5TQ_vNRPZgA,14
6
- relationalai/config/connections/__init__.py,sha256=5709qbuJxqg2WedSoejpdDrXpvwowG_xDS8adoexeOA,1171
5
+ relationalai/config/shims.py,sha256=YM3rtPNpRSrQomRw5xNSekU5Da3dcYbxxzGryQt7RME,41
6
+ relationalai/config/connections/__init__.py,sha256=IJmAj6oHB4CoBaczJ3tJ7DstsPyneejPtgNLixLnis0,1301
7
7
  relationalai/config/connections/base.py,sha256=9DkPLosMc9yb6uFFks_FP_e-47K5wMD14tW_cJ05s_A,759
8
- relationalai/config/connections/duckdb.py,sha256=PhhJXARTJf2ObQa9CYMJlZMGohMNCg879cKHvUr1M5Q,891
9
- relationalai/config/connections/snowflake.py,sha256=-FG9gc4sswbfhcx-_w-Vohscu74g9ioaCsjYz1qd-HY,8836
8
+ relationalai/config/connections/duckdb.py,sha256=o7nSxr8z_LjBkeHCadMcvg1lHDcwli1okVLwoT7OO7A,959
9
+ relationalai/config/connections/local.py,sha256=V59aIrkX6dkDrsrf2LkOIctGHXHAHI7rZLHNFKr8nCM,1013
10
+ relationalai/config/connections/snowflake.py,sha256=NqFgoq5evRONjNvAqe4OlzNyQaY3SsJz3HMyv6LfgCM,8787
10
11
  relationalai/config/external/__init__.py,sha256=Go7xvb2IfVwmxVfcyTSeUKHTpKoe9Am4fYR4Ic7d_TM,486
11
12
  relationalai/config/external/dbt_converter.py,sha256=xYxZOkmGk9ZmRbmqZ65OkmLjGLYMBBXCdYX5lO199WM,3045
12
13
  relationalai/config/external/dbt_models.py,sha256=Px_C5nID_3te3o1wfsYJjrKkZcTPUYWvsV46sJe7yIc,2459
14
+ relationalai/config/external/raiconfig_converter.py,sha256=UrWcKwcdFQuywtRDjzdDkGEdrfHrkWgaxsOBcHr3q0w,8065
15
+ relationalai/config/external/raiconfig_models.py,sha256=6WV43IaD7eraNyeaHIS13ua6VdycQn_jOTCLGaUqqcs,6698
13
16
  relationalai/config/external/snowflake_converter.py,sha256=Vnaqgazd-XwZybqbOU2YK3qYf0if-KwdTORaP0xTff4,1280
14
17
  relationalai/config/external/snowflake_models.py,sha256=6hCaVMdhESxbW-HF0-s51Z4WIc97bS1FrZRKZ4DXE6A,2681
15
- relationalai/config/external/utils.py,sha256=IJsZUCLI4Y2erETERQKcd-Alo4wNMTi1AHkdb92Z-n0,422
16
- relationalai/semantics/__init__.py,sha256=N3rTlD4oIyIkCqTNNWWUjQbJMyEbot6XNR_NvmtiyDo,4340
18
+ relationalai/config/external/utils.py,sha256=IvAQPG9i8NqL_O9a5DpbDdtgiZi8D5vWPPHdFAuEK3Y,1281
19
+ relationalai/semantics/__init__.py,sha256=JSfPOUjMsFFUnOQXPo1p0EwhiUFT4J2Fvgjo0ICmC1Y,4607
17
20
  relationalai/semantics/backends/lqp/annotations.py,sha256=TUk_fuXyBWs7H4BHx-4jZGonSD8MdgPswt-D2k7QC-4,390
18
- relationalai/semantics/backends/sql/sql_compiler.py,sha256=p_1YjROlcmu0kwvI32qUWAmMQntp_A6H3_vgGDDLiQk,10628
21
+ relationalai/semantics/backends/sql/sql_compiler.py,sha256=HhfxLwDYenfPl3YMhfeSlFnQF7r6clP2qkBWydtKgJ8,10522
22
+ relationalai/semantics/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ relationalai/semantics/experimental/builder.py,sha256=E-AbFNfSm_fE7llZ71FvY2n-_SwhoDEOapFXDxFi308,10806
24
+ relationalai/semantics/experimental/builtins.py,sha256=NJVhM4aN6Au8Ceunwr5D4untug_hwqqkzjx_57qgGBM,4790
19
25
  relationalai/semantics/frontend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- relationalai/semantics/frontend/base.py,sha256=yUBeXvF0cRYzKk4sTSh7Ja5PUSwEszvyuQjT1E25Cjc,65783
21
- relationalai/semantics/frontend/core.py,sha256=mwPG9HxQWrh77O5n7j_M9lt96gTyYsoUE_BFz7qcfXw,7396
22
- relationalai/semantics/frontend/front_compiler.py,sha256=q84SDS1AQllKSnZya1k8gUG_SD12zIl9QbWIU9zFliU,57403
23
- relationalai/semantics/frontend/pprint.py,sha256=IMkKwkZs3ohOIjYUIjT10poa1L39F_PrLdSjV-D4wpk,14977
24
- relationalai/semantics/metamodel/__init__.py,sha256=mISE8niHeEAD6QjX8pi_apFfMIVCZ7dGeCXFGtFPTvk,364
26
+ relationalai/semantics/frontend/base.py,sha256=25gU8GtL4KF70ouRXqmvnIdujA_hyKH5qrIRoGyAiN4,66804
27
+ relationalai/semantics/frontend/core.py,sha256=b5Yyne1MzZO01ebOTeN3Zt1o40HHz6kWqkWuykSkc-s,8383
28
+ relationalai/semantics/frontend/front_compiler.py,sha256=8f5mI0NRSOQVScCX11V4G3-ogYTomlzCBiXj6as33zY,64988
29
+ relationalai/semantics/frontend/pprint.py,sha256=iAHBrYm7PoFWgcx5GSuLCD7hoBlOGjnNbKXg9MloV1A,15178
30
+ relationalai/semantics/metamodel/__init__.py,sha256=VH3T5AbEYDGKUJXyYpvNDhkSTEoK4uSRayYRA-1goOU,793
25
31
  relationalai/semantics/metamodel/builtins.py,sha256=rmeVdjw3kDSsx7TjpnFpy8W6OrHuUV1GQwazWhaWrG0,7009
26
- relationalai/semantics/metamodel/metamodel.py,sha256=TgIufxJslJZkf5_RleTU19i2h0DTW6CodSYqwyVcLEc,13899
27
- relationalai/semantics/metamodel/metamodel_analyzer.py,sha256=tusDRO2az1yiF951SDg-cHOaNQ1M7qw1HG1cxV3YuxU,16228
32
+ relationalai/semantics/metamodel/metamodel.py,sha256=srK8C6pRz_xVRGAsi5PuId3Mu-qypOoMRfH3uZ3Xa6s,13985
33
+ relationalai/semantics/metamodel/metamodel_analyzer.py,sha256=vB3WCHhHgAdlt4kS9B_QM3uPqAToH9Wq84l6le4p0JA,17572
28
34
  relationalai/semantics/metamodel/metamodel_compiler.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- relationalai/semantics/metamodel/pprint.py,sha256=65t7tZTfBP2qOlKShYM8nwrbsiS3gKaCYkUJepu0a2o,15684
30
- relationalai/semantics/metamodel/rewriter.py,sha256=CEkYxsyFPF-nEHktJxwzOY6RQzo9Nr4Welhw2YDq9q8,8313
31
- relationalai/semantics/metamodel/typer.py,sha256=Q35spCuIRMGE2BslgWiyZvQWb3Z0VzCx1YF_Lzk1Sts,55268
32
- relationalai/semantics/std/__init__.py,sha256=_cbDmeCT634GtdGJ0CqgfJw6pFaJR0ajR3B_bWCr_9A,2627
33
- relationalai/semantics/std/aggregates.py,sha256=uCwoBLmuRBBq9lTf5ACD3yosvtp5Wi8IQUCF_dKWS80,6259
34
- relationalai/semantics/std/common.py,sha256=raWuvX2u4juKPU0BKtqF5xvJSDjKHF1BWQVFioBmOf8,1658
35
- relationalai/semantics/std/constraints.py,sha256=ePaVEWdlmO1AkawC-QaOKzXw2j2YUFD_-2bstBN8Rto,1587
36
- relationalai/semantics/std/datetime.py,sha256=p2pKTWqARsc5SytfPdnXp9J6Ot4IsSCfGIvfIUJe5NM,21529
37
- relationalai/semantics/std/decimals.py,sha256=tkYGiOyLuzJPTXb8bHHlx7bA0e_FnVFGyFkzaFzGsdc,1863
38
- relationalai/semantics/std/floats.py,sha256=UpHkgMeUdvqu_pRAlay_KOqWb0e-uz3SK51sH4kNAWQ,490
39
- relationalai/semantics/std/integers.py,sha256=YxNk-pLtbYtuBVr2BTzdAmhiNxkZJW3wwHDYLk63wfo,1053
40
- relationalai/semantics/std/math.py,sha256=fYLJ7Z8DocylQ5PSA4ZKuhVezNg2RqIdmxDcyc3sYcI,10248
41
- relationalai/semantics/std/numbers.py,sha256=AcmESbBXIQDkDL6YGZXYKmpo7uyYD1or7suyD3IBn_8,2979
42
- relationalai/semantics/std/re.py,sha256=xMuQY5sG3fEL1efHDNFnVpnXVkDJMmDVUEbHiPr1oqA,4375
43
- relationalai/semantics/std/strings.py,sha256=w0k06gDfyMS6GODPjhG0gl2SkJ0aH5aYezS8jG9jsU8,5617
35
+ relationalai/semantics/metamodel/pprint.py,sha256=ppAo6E2Yy1-we5LLRB6rLtIYU1dn_grTj_4VrXc9Qk4,15991
36
+ relationalai/semantics/metamodel/rewriter.py,sha256=Sxc7bfvMqk75HtiH1HW0oYKQmsPe7kg9XR7jp0pAtj4,8425
37
+ relationalai/semantics/metamodel/typer.py,sha256=t7IggtMNmQ_grpGKrduW_PKpbfKDSc9fIwXjKUjv_Vg,59168
38
+ relationalai/semantics/reasoners/__init__.py,sha256=gCe4uT0gqhS-PwgCXZa0UArg33uN1b4sUfN5fDi62GY,411
39
+ relationalai/semantics/reasoners/graph/__init__.py,sha256=mGw6vD-5jD2eFSAmioqKtGWr1Nc3O1ArSYN26Y8mCSs,1185
40
+ relationalai/semantics/reasoners/graph/core.py,sha256=NjCZAhEd7YajWJVOgBfvzyKmVYUf_bCrw_CLHIOY5wU,400973
41
+ relationalai/semantics/std/__init__.py,sha256=aLdx7CbYoXIKef5oenaJidAUtk3I4uzNakb48W1eyK8,3853
42
+ relationalai/semantics/std/aggregates.py,sha256=lvf10yXSePhSFRSNGUMpzYkVgUuVkck4ZAcVSmH4bp0,22015
43
+ relationalai/semantics/std/common.py,sha256=0dUq07pQn0cm2W5fo2Tz49O88KszU2YkjpoVAqRGwmQ,4483
44
+ relationalai/semantics/std/constraints.py,sha256=9RplToBUebtMxlYo8IdR_UbfCUPwZY9SMnpEHEzC1ss,3239
45
+ relationalai/semantics/std/datetime.py,sha256=FGkDS7x6JsobBXB0cX5CYNH5s4lWdFbmJ1kKCjB8juI,43932
46
+ relationalai/semantics/std/decimals.py,sha256=y5px20yKuio-tQ9HQdt-Mc-WS6NrtBsu9t_X3UoQoAc,5122
47
+ relationalai/semantics/std/floats.py,sha256=0pgH38PfHYWtvCNyRY6ShilXQQ9tdwNJpPJXuhMdC7g,1569
48
+ relationalai/semantics/std/integers.py,sha256=pfvb7oVwEksMo-DhmhRwoh7aTy22rfzPLaowqt-lYMM,3013
49
+ relationalai/semantics/std/math.py,sha256=SjawZGWG3HlhqCS_IWIQQdiFx8V8ONgp0sZJwAgGJm8,26959
50
+ relationalai/semantics/std/numbers.py,sha256=2SSa0JYVPyjK1LhKrBpP9ZF_B-P90i9WSATWJnILbes,6884
51
+ relationalai/semantics/std/re.py,sha256=EFxK0bECYDaQootjlXICcbH-DtO2xUY5N1iSEULOkHs,9406
52
+ relationalai/semantics/std/strings.py,sha256=000ZyNu7uoWgaCz_449McvlQneHjgLnlxJLgfDDxvnE,13958
44
53
  relationalai/shims/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
- relationalai/shims/executor.py,sha256=LtpBx74mhbJ1bCUVvetDlk5iDAEi_x-wNZ6iq5WPW2s,7531
46
- relationalai/shims/helpers.py,sha256=1v6D-wDq3nCwDz4egdGUeleRC0fK6wfo9fIQIeQCfZA,4508
47
- relationalai/shims/hoister.py,sha256=YXXi9pWpKQ7Sd5DzRVl_78z4OYCoKzFfIMMp6OIN3EM,8797
48
- relationalai/shims/mm2v0.py,sha256=_fqEfd6b3sVwmkuozfggoopRdNeqbsrtJgj8b9Teij8,63957
49
- relationalai/tools/debugger.py,sha256=B8QIE1-WFdfkiPoFFn1yztr9t6yf5PI32Y9Y9XzQOJk,10798
50
- relationalai/tools/typer_debugger.py,sha256=__oLODEBwgt6pYIn1jgIPlenFmiK7iqXfTY_mozHxXA,3182
54
+ relationalai/shims/executor.py,sha256=iWfdSz6QGMSFv9Yec5G_WrA8NT59P00PdbhE4fMHf3M,8642
55
+ relationalai/shims/fixtures.py,sha256=64zldbxKiNHnldgJWQS7VtuX9iREBhn5fO_kosKv8Ko,3643
56
+ relationalai/shims/helpers.py,sha256=7GuDfpMvmFCU4Yp1E42Q1uFya4GFZDPh56KqO2mNEU0,5151
57
+ relationalai/shims/hoister.py,sha256=_iqBgKn3QQJwRz6I74V2zJpsJ5B_p8zdRO1iRAjBdT0,10351
58
+ relationalai/shims/mm2v0.py,sha256=xTYB_Byd8mkPF1B4ojjmVtUgSglYFIHMJxW-zP2oPW4,67213
59
+ relationalai/tools/debugger.py,sha256=2gzFmpCE2S40tVyGo5tde0omIWOe-PlUhU04foMjt6I,10848
60
+ relationalai/tools/qb_debugger.py,sha256=F62owRRePkz7ysEmAHYNje_ple8eYNYAehWRDuinm0A,17259
61
+ relationalai/tools/typer_debugger.py,sha256=EgkAgrA8U14gnkSbLBOSZRyV54mWXHqbcR0-PeYh6gs,3193
51
62
  relationalai/tools/cli/__init__.py,sha256=jkIlp7wftUuSIlczwZD4_siT5cs6mzpsNGrQ_kMkLZ4,74
52
- relationalai/tools/cli/cli.py,sha256=aNXpFb-8GaBjv1J8qk32EeRXu4bDuBnlVsVkNasnfvw,2278
63
+ relationalai/tools/cli/cli.py,sha256=DWyVt0eiRLJ_eFlUoEWYILqlVZWcsKbki76S7G8YlJ8,7568
53
64
  relationalai/tools/cli/config_template.py,sha256=l52KOI3ZBkhtM9V7EQSUOEddHVdMnjl21hPnnQSwdBE,949
54
65
  relationalai/tools/cli/dev.py,sha256=1GjfjTLi4BXbV5fXKlF5g1bc8-YsA9oKOBSntquBd8g,340
66
+ relationalai/tools/cli/docs.py,sha256=GSUMHVqHMzrpYw1wOHTKfbkZW-dozRfzoKpgb2o4wvQ,12648
55
67
  relationalai/tools/cli/components/__init__.py,sha256=H91hUt3lohr6kAVGOHgTKpDgwRc2Ka4a-iw2domfm5o,143
56
- relationalai/tools/cli/components/progress_reader.py,sha256=mrAFI4p1T7tgDNd_S9QAF9QXuF5RlWGSg5fzQY1_MRY,56767
68
+ relationalai/tools/cli/components/progress_reader.py,sha256=bpY7b6s9TL8ag-SSFYPwieYIgOPtK_8Iz0HpJOJ5qQ8,56811
57
69
  relationalai/tools/cli/components/utils.py,sha256=n_st7K3B8bDLsi8rjYgilPtx7TJRcU5xZlauGUrjyv8,1700
58
- relationalai/util/dataclasses.py,sha256=hPK0jCA_Q0q-4uY03dMQYGx5L9L_kjd3RaqoAvh_SC8,1675
59
- relationalai/util/docutils.py,sha256=w2l5caKL0pUj1CG8wWKmPxYlVIJHDPr3Ni398DooeIQ,1192
60
- relationalai/util/error.py,sha256=jK7dbkGXe7XhoOucGSeJ-5d4c_ypGsMIOUGCg6lGwRw,8479
70
+ relationalai/util/dataclasses.py,sha256=5tSPv4NX2Q1rNu0hBGyI9PG5NvBwWXEUfUgAIFQQ_NI,1593
71
+ relationalai/util/docutils.py,sha256=vElM5rsPlkRJKA4fnVCq7IuKCCzPsI6v09mzo-avIg0,1159
72
+ relationalai/util/error.py,sha256=e3EuvkatJ8D7DlmGCN62Hsv418Gfv6SuDIXrzMpSlkI,8309
61
73
  relationalai/util/format.py,sha256=77K2VCQSq6E_HswKe_86lcod0J3DKW_KE08JzbUqLQ0,1897
62
74
  relationalai/util/naming.py,sha256=pH8qyrUGc9hbMk54yw79UiWbPGzJlLV-HUncrexdWqE,5481
63
- relationalai/util/python.py,sha256=qrjNv17PGUIZ-grZapdv6h1f9WwbDmZdmf9eYhnzuYc,1474
64
- relationalai/util/runtime.py,sha256=ZaKG2NlBzPYnG4r-8g_8XIWX0w-cz4d7SEcrKyYQQ2E,5354
65
- relationalai/util/schema.py,sha256=8pzpI4eMg1W4rsyBZtrU_AzCuBxNx4m_cX_XR1BFjCI,6490
75
+ relationalai/util/python.py,sha256=FjMEaVq_ZfH9wJYaVKfAk08i_V2_mciwj-zGFlOqrM4,2372
76
+ relationalai/util/runtime.py,sha256=o3hO4KRcnEUsXzesEBnzj8dxlQNx1P0ew6sUvTsFqmQ,5371
77
+ relationalai/util/schema.py,sha256=Uxig6NTkHnjeEe_gqJ7wZ018aWH22EIq3R_egMd-PFo,6392
66
78
  relationalai/util/source.py,sha256=k49NhkCDST4Wa_1xJnEsfG2JZIdADlqzqvHt4FCYfq4,6645
67
- relationalai/util/structures.py,sha256=3QxHkgJSy9oPom6eJX2z1O3pJugINqD5DUjXwoCWwRg,4990
68
- relationalai/util/tracing.py,sha256=peOVe55R3B9gVdXAsVPGZ7_jw0KvYlkito-_5zERYtg,9632
69
- v0/relationalai/__init__.py,sha256=IcozhVGyoDvBaLAbCgGxJ7JBDbgsMhNkEgVzJ2rZFVY,10464
79
+ relationalai/util/structures.py,sha256=dspHvBL1MjmvQf7r29dgnwg69NOVtkwaibv1hdInhh4,5014
80
+ relationalai/util/tracing.py,sha256=KIGDAimnuPV6AS23RfYVoa1MqdH4LQajbkDMtvGc1-Y,9674
81
+ v0/relationalai/__init__.py,sha256=YHaSrc8qPjUa3WT9iKebP-Cha1UIfaLcOIVZcZeLtNk,10465
70
82
  v0/relationalai/compiler.py,sha256=5LZY8AyqadkTLSe_xoJ3J9iXOmetz5YQn9EjJKk8XeQ,6411
71
83
  v0/relationalai/debugging.py,sha256=AuzbwLT1s71tctuIbYNhfWY2vR_opB7ItbmlqFVHgrY,12024
72
84
  v0/relationalai/dependencies.py,sha256=tL113efcISkJUiDXYHmRdU_usdD7gmee-VRHA7N4EFA,16574
73
85
  v0/relationalai/docutils.py,sha256=1gVv9mk0ytdMB2W7_NvslJefmSQtTOg8LHTCDcGCjyE,1554
74
86
  v0/relationalai/dsl.py,sha256=9BdpqzDNcW4717GyxVAYIMZ7ctE_bvXS-5sNLIbXQZ0,66128
75
- v0/relationalai/errors.py,sha256=2rFE3tWDhhZ3GCzG1UNuCkns3xxsscUU6wx_3VvoVWI,95976
87
+ v0/relationalai/errors.py,sha256=dx3H_UvBYFeDXGmYjExBj_mmcXHvgiI_9WExDc5Yq4I,96833
76
88
  v0/relationalai/metagen.py,sha256=o10PNvR_myr_61DC8g6lkB093bFo9qXGUkZKgKyfXiE,26821
77
89
  v0/relationalai/metamodel.py,sha256=P1hliwHd1nYxbXON4LZeaYZD6T6pZm97HgmFBFrWyCk,32886
78
90
  v0/relationalai/rel.py,sha256=ePmAXx4NxOdsPcHNHyGH3Jkp_cB3QzfKu5p_EQSHPh0,38293
@@ -87,26 +99,28 @@ v0/relationalai/auth/oauth_callback_server.py,sha256=vbcpz77n_WKMDZ4sac6IYyrpxSc
87
99
  v0/relationalai/auth/token_handler.py,sha256=d5aueGEiK6BmzkxSab3reCdkhtjdphb0CeecyvvNaQU,19443
88
100
  v0/relationalai/auth/util.py,sha256=oXOUwW5gaBhEV5v5A-q2ME1VnfjfRWswvRlXW4oBYpk,1116
89
101
  v0/relationalai/clients/__init__.py,sha256=LQ_yHsutRMpoW2mOTmOPGF8mrbP0OiV5E68t8uVwDyQ,833
90
- v0/relationalai/clients/client.py,sha256=gk_V9KS7_MM2dLL2OCO7EPLHD9dsRwR6R-30SW8lDwU,35759
102
+ v0/relationalai/clients/client.py,sha256=X79y7pT75XX-IMPdZhO8aiLNNzCA_MdY8g6M2AeCKjY,36709
91
103
  v0/relationalai/clients/config.py,sha256=PriDlD0_VZFV0fEQng6U-F5xjGwz5gC2F5_lM159AjM,24481
92
104
  v0/relationalai/clients/direct_access_client.py,sha256=p3hqjwdiXQQytRke1wIeNRM-HlZLAxH1U6-yPhsPOdQ,6454
105
+ v0/relationalai/clients/exec_txn_poller.py,sha256=zOn5hm9svsO9ircKv-L7115_kudtvC-AASZWnFE4X68,4242
93
106
  v0/relationalai/clients/hash_util.py,sha256=NXVtUFgRokZz-45CwV-r5Z5KvmEXD2dh4ypNOrEWAwY,1501
94
- v0/relationalai/clients/local.py,sha256=vo5ikSWg38l3xQAh9yL--4sMAj_T5Tn7YEZiw7TCH08,23504
107
+ v0/relationalai/clients/local.py,sha256=X_v4h8HNyZEYeyQuoDBfavLuedjCVKg5GvnEtOUn5WM,23952
95
108
  v0/relationalai/clients/profile_polling.py,sha256=c1ixxAOKvy-dDfVqkKENwfcsvBB8jhLA1oT9RIFIrY8,2571
96
109
  v0/relationalai/clients/result_helpers.py,sha256=dgj4mVg7ZsFsVppI98VQjNMdDEBXuBF7BnyNozidmeY,17817
97
- v0/relationalai/clients/types.py,sha256=VU2LRtlnFsBRYdokxUccrsUkEYLE9N62EUiWtA_qdYc,2893
110
+ v0/relationalai/clients/types.py,sha256=V7Rb1f9CU8uXzCB1kki-bke9mMYuslqzQ3_JNNncHpc,3041
98
111
  v0/relationalai/clients/util.py,sha256=Vrw_kr-Oqp_DKTkJ_rTbzpDm4_Z4h8w10T8GUyGLxbA,12323
99
112
  v0/relationalai/clients/resources/__init__.py,sha256=pymn8gB86Q3C2bVoFei0KAL8pX_U04uDY9TE4TKzTBs,260
100
- v0/relationalai/clients/resources/azure/azure.py,sha256=TDapfM5rLoHrPrXg5cUe827m3AO0gSqQjNid1VUlUFo,20631
101
- v0/relationalai/clients/resources/snowflake/__init__.py,sha256=9VR-hSIw4ZSEWisKcWhNEcRVBmBfueXNCTOOfLt-8rs,871
113
+ v0/relationalai/clients/resources/azure/azure.py,sha256=3RQucsot4M8sU4yqeCi5IIeC4BgVFMQm1q9uhWY54W0,21676
114
+ v0/relationalai/clients/resources/snowflake/__init__.py,sha256=kHjuNWr37viTd-n8tNMVo0FGhlKlrStb8_V9yJx_CNw,975
102
115
  v0/relationalai/clients/resources/snowflake/cache_store.py,sha256=A-qd11wcwN3TkIqvlN0_iFUU3aEjJal3T2pqFBwkkzQ,3966
103
- v0/relationalai/clients/resources/snowflake/cli_resources.py,sha256=xTIcCzvgbkxuNAEvzZoRpj0n-js0hZCK30q7IZXztbI,3252
104
- v0/relationalai/clients/resources/snowflake/direct_access_resources.py,sha256=Xvh1e6TxUW2dTSS-9HadrfWVKrxNQ5GikqM4yjohJkM,29849
105
- v0/relationalai/clients/resources/snowflake/engine_state_handlers.py,sha256=SQBu4GfbyABU6xrEV-koivC-ubsVrfCBTF0FEQgJM5g,12054
106
- v0/relationalai/clients/resources/snowflake/error_handlers.py,sha256=581G2xOihUoiPlucC_Z2FOzhKu_swdIc3uORd0yJQuA,8805
116
+ v0/relationalai/clients/resources/snowflake/cli_resources.py,sha256=DjvGyxYLwfCA57FgxpmyBfAyyHIHsbpa-UsoYziEowk,3689
117
+ v0/relationalai/clients/resources/snowflake/direct_access_resources.py,sha256=0aPFqo_hYa38JxWBjQ4ZjGicuLuxDaXhq8RSJLkXK9A,30786
118
+ v0/relationalai/clients/resources/snowflake/engine_service.py,sha256=CYW0RoQjIlEr2w1FeUXwl2gj5o0HoNg9qLmiLo_7rQY,13492
119
+ v0/relationalai/clients/resources/snowflake/engine_state_handlers.py,sha256=gHdqotbNkfAsXQq9XR7aRcsW4QBk7sKAxdra9YS5bsM,12079
120
+ v0/relationalai/clients/resources/snowflake/error_handlers.py,sha256=R5f-3WhOBOFN373BjhkCNLBKVWBIMNPEm2VbAvyvELo,10733
107
121
  v0/relationalai/clients/resources/snowflake/resources_factory.py,sha256=4LGd4IQ6z8hGeGlO1TIjSFJEeUNHutaB7j9q1a9rYfQ,3385
108
- v0/relationalai/clients/resources/snowflake/snowflake.py,sha256=UiSE2jbJVGbe2_UfLI9Gud9aA5SJysuVu3F0McOz95k,133046
109
- v0/relationalai/clients/resources/snowflake/use_index_poller.py,sha256=4lPMgaeuxUdWo-ds_78OJpc7pyogWhSVgGzuTzj13wE,48460
122
+ v0/relationalai/clients/resources/snowflake/snowflake.py,sha256=arbFe2o8ovGkK_ZjasEm28SzLZhgeV4PFRgRWy0RT7E,135188
123
+ v0/relationalai/clients/resources/snowflake/use_index_poller.py,sha256=AE7z2pL4QioPRDL7-O9J4KHSuxbYbRAvd886mZPpCQI,48871
110
124
  v0/relationalai/clients/resources/snowflake/use_index_resources.py,sha256=69PNWHI_uf-Aw_evfwC6j8HLVdjhp84vs8hLkjnhwbg,6462
111
125
  v0/relationalai/clients/resources/snowflake/util.py,sha256=BEnm1B1-nqqHdm41RNxblbb-zqXbtqEGGZmTdAYeN_M,13841
112
126
  v0/relationalai/early_access/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -369,62 +383,69 @@ v0/relationalai/semantics/internal/annotations.py,sha256=PkrRN-gHO2ksh1hDKB1VVIB
369
383
  v0/relationalai/semantics/internal/internal.py,sha256=-juUQ8AL1kAoh6PgpBQJ5Jp3qjwSgjx64s3IKeKXVYk,150821
370
384
  v0/relationalai/semantics/internal/snowflake.py,sha256=rQpxtR8BImj_ulTbmN0PIpMz0CvJrcC0-TPrTxCSa3k,13598
371
385
  v0/relationalai/semantics/lqp/__init__.py,sha256=XgcQZxK-zz_LqPDVtwREhsIvjTuUIt4BZhIedCeMY-s,48
372
- v0/relationalai/semantics/lqp/builtins.py,sha256=Xst9-UxkCAwDqL-hFOby8B3GKh705oidFUjEozxn71Y,585
386
+ v0/relationalai/semantics/lqp/algorithms.py,sha256=bIeabz6chBZ5QOjk6sd7GvF9hZS7XL541TaJqPVDpnc,7162
387
+ v0/relationalai/semantics/lqp/builtins.py,sha256=KHxZeBuGU2ingOD1BbqC8LNdT7qEJNJmoPv9LR17Lzw,7422
373
388
  v0/relationalai/semantics/lqp/compiler.py,sha256=xpGIQAqTMwLi3Vrbe79Yal7O_mfNxpBLioZjqeV2hzc,955
374
389
  v0/relationalai/semantics/lqp/constructors.py,sha256=x7G85vbJzLIXzUCMKVdJVsr4PrcUsAOzCCfvimHLMVU,2366
375
- v0/relationalai/semantics/lqp/executor.py,sha256=3tJVxFsUMdevC-HGYR2BjexC4nBoblUBSf87xlIZ_g0,21469
390
+ v0/relationalai/semantics/lqp/executor.py,sha256=Rv0Jj6UCm9sdw4zeEPP_6yalH8SWYedi8oPCYspNGhU,22613
376
391
  v0/relationalai/semantics/lqp/intrinsics.py,sha256=8kgH4ndYKBCNnoNOn7iWOU0wnMTSiov0kYaKocQ45RY,880
377
- v0/relationalai/semantics/lqp/ir.py,sha256=6W9mUH0W7u5eIfF1S3o33uSOfQuM3UcqEkxrxpr1X_8,1867
378
- v0/relationalai/semantics/lqp/model2lqp.py,sha256=J_QofcYgq_Yb5dhOOP4lXvxsxFMEGHVnaNXoCMK_ak8,38639
379
- v0/relationalai/semantics/lqp/passes.py,sha256=Jwj6VgTU9jyp6oVTqUpFKa7ZjFRbc7HWNLmJiKf389w,28652
392
+ v0/relationalai/semantics/lqp/ir.py,sha256=RHByG_QFkKcrtF9moRpTj9bYUSsHzR0bYcgi8tuVjaU,2257
393
+ v0/relationalai/semantics/lqp/model2lqp.py,sha256=8u4Mm0CgcMBCeCV6CoSgstJDYDNR0dNLAFhdj6rLQ3s,45551
394
+ v0/relationalai/semantics/lqp/passes.py,sha256=41CFshgL32b_IcEtaGqyY9UltUNx-6GLSlqkHXLZM_s,1732
380
395
  v0/relationalai/semantics/lqp/pragmas.py,sha256=FzzldrJEAZ1AIcEw6D-FfaVg3CoahRYgPCFo7xHfg1g,375
381
396
  v0/relationalai/semantics/lqp/primitives.py,sha256=OxdcCx-0528113CrR2Ia-ZE0lewCmOCS1fezPwvmYa0,11044
382
397
  v0/relationalai/semantics/lqp/result_helpers.py,sha256=ArYlBafNL2zB4ipwhQWiwVSOXp3lp0DefICFHxw9_mc,10135
383
398
  v0/relationalai/semantics/lqp/types.py,sha256=g5EhNFOIJ5tpj3-gp_dCYMoiKZQY_5izlZmfksj8fNc,4520
384
- v0/relationalai/semantics/lqp/utils.py,sha256=T9Ic_38iNc9DW3ufdHTMpRSoaFM_Mw_2_VzJzjO1TVE,6329
385
- v0/relationalai/semantics/lqp/validators.py,sha256=-tapIMa9Hq-qlRP_Vr03_jIkH6RTERnSKdWbrxdWbhQ,1564
386
- v0/relationalai/semantics/lqp/rewrite/__init__.py,sha256=V9ERED9qdh4VvY9Ud_M8Zn8lhVANdOGIgW03l55sGj0,492
399
+ v0/relationalai/semantics/lqp/utils.py,sha256=6birr-JVNlN--AijBQ71Hy8r18r9XACZRR3HlNCtElQ,6618
400
+ v0/relationalai/semantics/lqp/validators.py,sha256=SN6OpMkCsGEeTpIp622YU2oop8uprfkcth3HWjjHp1Y,2120
401
+ v0/relationalai/semantics/lqp/rewrite/__init__.py,sha256=UJWaTG_KIE_00kA44KcNqOvqTzbKiUqOs8Lz-7IdVVA,878
402
+ v0/relationalai/semantics/lqp/rewrite/algorithm.py,sha256=wjgyk1l8Mc9N8fpPuqLN9IBAB5pwhcx3Mjw-dhYc4uM,16851
387
403
  v0/relationalai/semantics/lqp/rewrite/annotate_constraints.py,sha256=zOm-OUzWBhk2iMc_eURII1-okIGJ-teDbEcJ30WDjUU,2325
388
404
  v0/relationalai/semantics/lqp/rewrite/cdc.py,sha256=cx_fpQrzkzkeAGHE_kV10nd1-0Jduws6yiIRq650f4c,10412
405
+ v0/relationalai/semantics/lqp/rewrite/constants_to_vars.py,sha256=fRpEWCyEjkryGuFlKQdsVvmO1TaBpgv-MOHw3Gp8IE4,2869
406
+ v0/relationalai/semantics/lqp/rewrite/deduplicate_vars.py,sha256=mDmaJF24qgRMnDTzkzENhlbZNDHQtqSPcTvGMcZXUxE,4364
407
+ v0/relationalai/semantics/lqp/rewrite/eliminate_data.py,sha256=RM9Xd6V4V8KWv2i3OzQdisBxFKXfU0W1JuYWzLedhqQ,4535
389
408
  v0/relationalai/semantics/lqp/rewrite/extract_common.py,sha256=johHGsS9SDDVbonMIE8Ck9rCuidllwdeJZDruW_5kQs,14705
390
- v0/relationalai/semantics/lqp/rewrite/extract_keys.py,sha256=lDO1e5pC_Z-nYMXt5zeLBxWQUjNgkhLMiaRLYkF7ZqU,21070
409
+ v0/relationalai/semantics/lqp/rewrite/extract_keys.py,sha256=8C5te8XWU5JiLpc7WojIVKg0_wyMM-gdlxmJdHQSnQQ,22165
391
410
  v0/relationalai/semantics/lqp/rewrite/function_annotations.py,sha256=WAHpqRVBqpUIDL2MA1aBmyOTvcpH_yfdeWBS1vAEtzA,4675
392
411
  v0/relationalai/semantics/lqp/rewrite/functional_dependencies.py,sha256=LTwMvU19FMdgCG8nJwV2wyiW8Hu9oCj-hIKKSMOYZYE,12727
393
- v0/relationalai/semantics/lqp/rewrite/quantify_vars.py,sha256=3l_pDMc4r-izuE274MP_ffNgZ6g7Rk5ysg3CXqKKlBU,12016
412
+ v0/relationalai/semantics/lqp/rewrite/period_math.py,sha256=QLFea030uDMoKouHgVGqyfHQoqXq7y_zzAtDisyqc1M,3567
413
+ v0/relationalai/semantics/lqp/rewrite/quantify_vars.py,sha256=ayjxUddcT-Is-wVkkSEXLexYMJtrQkTSz5QI2nNJ5hQ,13655
394
414
  v0/relationalai/semantics/lqp/rewrite/splinter.py,sha256=ggZ41OjaT8GA-CgUejbJfR7G6vZB6EmNY-WqyQxgeok,3205
415
+ v0/relationalai/semantics/lqp/rewrite/unify_definitions.py,sha256=FD0lv_ukTVatmc8dkqhToyuIIHX4wOd-vrIjemH0aag,13282
395
416
  v0/relationalai/semantics/metamodel/__init__.py,sha256=I-XqQAGycD0nKkKYvnF3G9d0QK_1LIM4xXICw8g8fBA,805
396
- v0/relationalai/semantics/metamodel/builtins.py,sha256=HN-F5lpnwZiMsl2kBUxdXDSa3LPjVDUIuPF0AbbgqNU,39024
397
- v0/relationalai/semantics/metamodel/compiler.py,sha256=YRRqvA_PJeE02P0IVte4gQtolqgBVu9HEhwOgf4WKuY,4534
417
+ v0/relationalai/semantics/metamodel/builtins.py,sha256=FPSC4n_6ob4Bg4_EdIphpXZIJlZjSTiOUC2SVPLppSU,39154
418
+ v0/relationalai/semantics/metamodel/compiler.py,sha256=NF6MDqVplqPHo19vzj121sG04a1TXQ689MCQfXhTTq4,4578
398
419
  v0/relationalai/semantics/metamodel/dataflow.py,sha256=wfj1tARrR4yEAaTwUTrAcxEcz81VkUal4U_AX1esovk,3929
399
- v0/relationalai/semantics/metamodel/dependency.py,sha256=khgS8DitIYxbgfMeJ5NP-ZCf7zMOagAgpPfQ9IOTzWc,33932
400
- v0/relationalai/semantics/metamodel/executor.py,sha256=IQhslt5B_Qggb4gMGlkObX_19xTh8prV_v9CCB74w2M,2623
401
- v0/relationalai/semantics/metamodel/factory.py,sha256=ECOg7Fg6DJrJDKIzv3TZqhuN4RTQj2-mletwyBG-3SM,12590
402
- v0/relationalai/semantics/metamodel/helpers.py,sha256=G6p6XgqeM9b95D4yUaiq71l5WY40Y1neLgMjqk-ofeU,15409
403
- v0/relationalai/semantics/metamodel/ir.py,sha256=4Xl3oc92Q7_s33axtrZUXr-GL8VGJsKc7yaSNcO6jXY,33578
420
+ v0/relationalai/semantics/metamodel/dependency.py,sha256=B79RbOyfu9SryFi-z9l346kC2PEUcPG3Oa92vVmh8vs,34449
421
+ v0/relationalai/semantics/metamodel/executor.py,sha256=lJC1izReqjk_Q2We4LBCT4PcNACVQeYtpw2-_D-bQYY,3047
422
+ v0/relationalai/semantics/metamodel/factory.py,sha256=PnLhJFgLzRetvh87yxdHvvgKMvhqygxJyVuCBWdWr_I,12645
423
+ v0/relationalai/semantics/metamodel/helpers.py,sha256=ikWR1xZRdYmyIhJZDAGdceycJoQRfmIRU6pL4aa5md8,15687
424
+ v0/relationalai/semantics/metamodel/ir.py,sha256=z0t3ikXem_T2ri2yaeGcK37b2NrJytkHmhbeWhn8Jto,33671
404
425
  v0/relationalai/semantics/metamodel/types.py,sha256=9ErIkHgsTcPgsoEet-meiftLs4W1MJb-G1H_1EzFfLY,11557
405
426
  v0/relationalai/semantics/metamodel/util.py,sha256=-_9UMyLvz6bzAI0paXWLWlbqOcPwI9dKopPwEK3ZZhk,16755
406
- v0/relationalai/semantics/metamodel/visitor.py,sha256=DFY0DACLhxlZ0e4p0vWqbK6ZJr_GWEvH66CU_HVuoTk,35527
427
+ v0/relationalai/semantics/metamodel/visitor.py,sha256=I6Fnyfd1OmjnM7mR8_l_NU1ySQuPBBSIhAQN9FnzBso,35602
407
428
  v0/relationalai/semantics/metamodel/rewrite/__init__.py,sha256=9ONWFSdMPHkWpObDMSljt8DywhpFf4Ehsq1aT3fTPt8,344
408
429
  v0/relationalai/semantics/metamodel/rewrite/discharge_constraints.py,sha256=jilU6ZNaqhoFRwNdxArSfYb3Rbeahig9kDjdYoJR9Q4,1955
409
- v0/relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py,sha256=TZykhhhwkYQsJjNxDac0YY4A6bmzOrNKJwB1LFQOsb4,8001
430
+ v0/relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py,sha256=eyCYWt9GTLxRx92CHRx2hywqzsDwRMoUnDDuhKWSdao,8323
410
431
  v0/relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py,sha256=i5KSANUCtI5Gq03cMiJv0lR4-0M5qc7gu50gsReo72I,3369
411
- v0/relationalai/semantics/metamodel/rewrite/flatten.py,sha256=fi4blz2P1ZE0Y70b29fLS69QXcr-g3HGhDCzaM-C6tk,22846
412
- v0/relationalai/semantics/metamodel/rewrite/format_outputs.py,sha256=MDDa48LFk3M5NF02h18Ej3wgODg8cF2CRFAZiRNZnhk,6240
432
+ v0/relationalai/semantics/metamodel/rewrite/flatten.py,sha256=AzdEgbMToRwU5dUiLlUbhEKmynyuJPG2MFYJ04-Pfws,23934
433
+ v0/relationalai/semantics/metamodel/rewrite/format_outputs.py,sha256=kfiFk9pnHI2SA2hBY4j3iPnRJt39961hP0r7F_QtlQc,6460
413
434
  v0/relationalai/semantics/metamodel/typer/__init__.py,sha256=E3ydmhWRdm-cAqWsNR24_Qd3NcwiHx8ElO2tzNysAXc,143
414
- v0/relationalai/semantics/metamodel/typer/checker.py,sha256=XzvGAZWmJGHuZ0XHGc8-dy9uIWrwZsIWi1v1_4TzKKQ,19190
415
- v0/relationalai/semantics/metamodel/typer/typer.py,sha256=2_eKanWV5xVnAwUlIcbXQMKGA9qH--ARvd5FFfKCztA,62783
435
+ v0/relationalai/semantics/metamodel/typer/checker.py,sha256=apPXkGQw5dGZy5ANyaAdPiV1R321qKaRfh2oz-m7E4Y,19291
436
+ v0/relationalai/semantics/metamodel/typer/typer.py,sha256=lNSz5PzPc5Ju6Gzv-qQq_UPA58GhxMljN60ib3J3mA8,62847
416
437
  v0/relationalai/semantics/reasoners/__init__.py,sha256=SmcmkK5TqMjGzDZjFIbkYwaMuQe9y09NaAyWrIMG60Y,306
417
438
  v0/relationalai/semantics/reasoners/experimental/__init__.py,sha256=ZWXb3Oun7m_G2c3ijKnqxbEsAzTMVa7ciBXjdi4dCNI,144
418
439
  v0/relationalai/semantics/reasoners/graph/__init__.py,sha256=7G6M2c0eBbsxtP9iq7E6y02wBJlD6GxsLeDPAJPJ1MM,1285
419
440
  v0/relationalai/semantics/reasoners/graph/core.py,sha256=Bth2oe5ulItBChZCoFTgP-oPMbnCNp7Ln8G8P5FZlTk,399513
420
441
  v0/relationalai/semantics/reasoners/optimization/__init__.py,sha256=HZlyy3Od7ArXI_HMhWrxrQPnyZGScgiVdmMul51lx7Q,2218
421
442
  v0/relationalai/semantics/reasoners/optimization/common.py,sha256=gmJrJAPNyaBqik2_QaxjCoFPZKqdroxmNXUeoDGwOtY,3130
422
- v0/relationalai/semantics/reasoners/optimization/solvers_dev.py,sha256=MqCvdDk1l_XSBlHd5-XpHVfcvD8INjCNbCttaomv6SY,24517
423
- v0/relationalai/semantics/reasoners/optimization/solvers_pb.py,sha256=1RobVkhUDP0OCRBS7f6MMM8wXQD56y5WKWZEO0fFB6k,48015
443
+ v0/relationalai/semantics/reasoners/optimization/solvers_dev.py,sha256=C5RBunT7cxdquGbf2syfJxmiEYtmV720GJQSDn5R8uA,24501
444
+ v0/relationalai/semantics/reasoners/optimization/solvers_pb.py,sha256=FVfJvHFrx7Gaf6pghNSW-MFMW6qdpQN64YqY1jpX74k,60083
424
445
  v0/relationalai/semantics/rel/__init__.py,sha256=pMlVTC_TbQ45mP1LpzwFBBgPxpKc0H3uJDvvDXEWzvs,55
425
446
  v0/relationalai/semantics/rel/builtins.py,sha256=0M9r5GQb9CnkkbdhO8Psw9TgiZk5CC3z5RMncUa6uuM,1571
426
- v0/relationalai/semantics/rel/compiler.py,sha256=t7gitonfRewTk8IQ53DTqPegytwax1jGu43VgQOqBWA,43062
427
- v0/relationalai/semantics/rel/executor.py,sha256=fJnOb6Lgv32Qrr8V72i4M6ebOuEiqqyOcSuffUok3AI,17660
447
+ v0/relationalai/semantics/rel/compiler.py,sha256=clTgtPxB0c0QtXHmkFiE6WTQj_LdktfBS-xs_Cjs0s4,43017
448
+ v0/relationalai/semantics/rel/executor.py,sha256=bO66bqHFEbzTnEfSnTNBn6Kd3Jix3epDsANsdkGI-O0,17744
428
449
  v0/relationalai/semantics/rel/rel.py,sha256=mQTykcHz63P1w8nhvA8SwYRtIi0LEud19vGrdh0ZrG8,15747
429
450
  v0/relationalai/semantics/rel/rel_utils.py,sha256=B9qR7hUouybwluuo9zUYemv6tWPnDPaV4da-emsTrRQ,9569
430
451
  v0/relationalai/semantics/snowflake/__init__.py,sha256=QRcuGvnK-TeNOWvHpBu5Z4hJHcMRXb5IPOokvLihy1U,169
@@ -456,6 +477,8 @@ v0/relationalai/semantics/tests/logging.py,sha256=oJTrUS_Bq6WxqqO8QLtrjdkUB02Uu5
456
477
  v0/relationalai/semantics/tests/test_snapshot_abstract.py,sha256=Q2rIUhzwVAJMJVoCsBtrCVBYafUR7nTQUxO2bL3ECa8,6336
457
478
  v0/relationalai/semantics/tests/test_snapshot_base.py,sha256=Q2zThxDOp2FrXK4uhV4nStBc_Q2-ML6MJ-dfE-e6R7U,469
458
479
  v0/relationalai/semantics/tests/utils.py,sha256=qcZ5IgU6_vRdKI9yLuoUkBE0Cq0iU6yzPh5HQaH3ttA,1834
480
+ v0/relationalai/semantics/tests/lqp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
481
+ v0/relationalai/semantics/tests/lqp/algorithms.py,sha256=sgIqz9ccW0_8KV2DMjtecAu0eqKlGNTt9xBna4iWwDk,12792
459
482
  v0/relationalai/std/__init__.py,sha256=r-o7hYZip7xe1stQP4R10jFNA_Km1dcFwmr2j7LBF3s,2184
460
483
  v0/relationalai/std/aggregates.py,sha256=TWGrxPnSfl5rkHYbOZ5VDbgBbm6kLKEMl_7gmswA324,1967
461
484
  v0/relationalai/std/dates.py,sha256=aucn2ol97JvkbDWBIg0kjh7d5pslLSxH1KZ25O9p-U0,15049
@@ -466,9 +489,9 @@ v0/relationalai/std/re.py,sha256=7B0dPaYyEdIlEgZfDzs7HJ_MTqccYTfIZieqst6MHbk,445
466
489
  v0/relationalai/std/strings.py,sha256=vHvex_W5GHhhsVws6Dfyl4w1EHdbDE3nPjT09DnpvSE,4260
467
490
  v0/relationalai/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
468
491
  v0/relationalai/tools/cleanup_snapshots.py,sha256=s1q1ophi1RmiTZ9QQolQ6q1K9ZwseCaOuDtI1Rm99MQ,3434
469
- v0/relationalai/tools/cli.py,sha256=7Ads7TGIqqUviVCW1YoVK14chhLu2v2Vr4Zo9GrInNg,76883
470
- v0/relationalai/tools/cli_controls.py,sha256=PgXdmJ7JJxk_yUyhljPBV7A4qbAzvSMvjhybni7bJwo,70474
471
- v0/relationalai/tools/cli_helpers.py,sha256=z6RGKDNwOK8DjWtd-rxiSNdEtnwdF8Kh5d0xV9xtjkI,14449
492
+ v0/relationalai/tools/cli.py,sha256=mCkig7A6UwRcM8BXPfLiMcxVEBcW_yOxVTJTG6p5jkM,84192
493
+ v0/relationalai/tools/cli_controls.py,sha256=WuV4_3nIyQ9-vRkzxj5PsAuO7nlel65Llrp-_frW8w0,76581
494
+ v0/relationalai/tools/cli_helpers.py,sha256=1pDlCGyRU96xlAekVB3WYRmpX420faRb6nDWm5voZm8,30876
472
495
  v0/relationalai/tools/constants.py,sha256=A8Qz0CPs2cRUs5xaZ-Y7BCyvqmI6RLvipzwLDYZ3_PU,4505
473
496
  v0/relationalai/tools/debugger.py,sha256=CiPy3czIR80TfnjGTTpiDSJC2ZlPneAtlddPEMri7Us,6937
474
497
  v0/relationalai/tools/debugger_client.py,sha256=lh2ejDZkAmOBu2qOAdVqH0XnqMKM7azGmXXDpTSoq30,3741
@@ -480,7 +503,7 @@ v0/relationalai/tools/snapshot_viewer.py,sha256=60DW41X4NpjxmPjf1B8mG3oIocHMLLNE
480
503
  v0/relationalai/util/__init__.py,sha256=FcHFPzeyDcQwENQg2KA70lBsFx5TtN7xo0quy_cJDQI,208
481
504
  v0/relationalai/util/clean_up_databases.py,sha256=iOxNx8cEyw0LPOsNerzVU2GWD4buxTQIDUgkOcD-bbc,3123
482
505
  v0/relationalai/util/constants.py,sha256=rq6c1Q5tLIewiG_M_lUtRAbmrKFUUL1jfl_nxU0989M,882
483
- v0/relationalai/util/format.py,sha256=fLRovumUa2cu0_2gy3O5vaEbpND4p9_IIgr-vDaIGDc,3754
506
+ v0/relationalai/util/format.py,sha256=nn0WEQffE-VCvj3HfWfdIL4dWexpW9Eo3QEEHrIceXA,3879
484
507
  v0/relationalai/util/graph.py,sha256=eT8s0yCiJIu6D1T1fjZsLSPCcuQb2Mzl6qnljtQ5TuA,1504
485
508
  v0/relationalai/util/list_databases.py,sha256=dHu9xQkL1MxORrHMqR5E38GybzIjsfayCnFKFKEzXL4,155
486
509
  v0/relationalai/util/otel_configuration.py,sha256=rt6jQsWBevQNMkTBT3RDHR7r-py2O05vRgx4y2XAdZc,1127
@@ -491,8 +514,8 @@ v0/relationalai/util/span_tracker.py,sha256=7vyvEBdI9uCj1dxVZCQT_W5vPMxIzxewrlRR
491
514
  v0/relationalai/util/spans_file_handler.py,sha256=w34WVw19ubtrjPBkKmg0Hb-9MldICmowF1OW85KCJN0,3209
492
515
  v0/relationalai/util/timeout.py,sha256=2o6BVNFnFc-B2j-i1pEkZcQbMRto9ps2emci0XwiA4I,783
493
516
  v0/relationalai/util/tracing_handler.py,sha256=wJQN52PRw8R2XB1_qd-POgfGZStrj9OFL7wa5Xr6SEM,1732
494
- relationalai-1.0.0a3.dist-info/METADATA,sha256=4hBJy9pOGv9uDUiDfIbGTGOX0M_N94_EptAIzzR7csc,1368
495
- relationalai-1.0.0a3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
496
- relationalai-1.0.0a3.dist-info/entry_points.txt,sha256=u_anMN5_VCOQNA5E2mTLT2LWc9r1i-F9yQmy3ZNAAck,91
497
- relationalai-1.0.0a3.dist-info/top_level.txt,sha256=Y9cfzWf-p2omqqmVy_98m287xf0OJbj6OB5RRdkGql4,16
498
- relationalai-1.0.0a3.dist-info/RECORD,,
517
+ relationalai-1.0.0a5.dist-info/METADATA,sha256=h6dBc9_fLMwA8dDDK8IJrhthF0enU8nXXBMhYTQforE,1439
518
+ relationalai-1.0.0a5.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
519
+ relationalai-1.0.0a5.dist-info/entry_points.txt,sha256=u_anMN5_VCOQNA5E2mTLT2LWc9r1i-F9yQmy3ZNAAck,91
520
+ relationalai-1.0.0a5.dist-info/top_level.txt,sha256=Y9cfzWf-p2omqqmVy_98m287xf0OJbj6OB5RRdkGql4,16
521
+ relationalai-1.0.0a5.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -28,8 +28,8 @@ import __main__
28
28
  cfg = clients.config
29
29
 
30
30
  # __version__ = importlib.metadata.version(__package__ or __name__)
31
+ __version__ = '1.0.0a5'
31
32
 
32
- __version__ = '1.0.0a'
33
33
  def Model(
34
34
  name: str,
35
35
  *,
@@ -164,11 +164,18 @@ class ResourcesBase(ABC):
164
164
  pass
165
165
 
166
166
  @abstractmethod
167
- def list_engines(self, state: str|None = None) -> List[Any]:
167
+ def list_engines(
168
+ self,
169
+ state: str | None = None,
170
+ name: str | None = None,
171
+ type: str | None = None,
172
+ size: str | None = None,
173
+ created_by: str | None = None,
174
+ ) -> List[Any]:
168
175
  pass
169
176
 
170
177
  @abstractmethod
171
- def get_engine(self, name: str) -> EngineState | None:
178
+ def get_engine(self, name: str, type: str) -> EngineState | None:
172
179
  pass
173
180
 
174
181
  @abstractmethod
@@ -180,23 +187,31 @@ class ResourcesBase(ABC):
180
187
  pass
181
188
 
182
189
  @abstractmethod
183
- def create_engine(self, name: str, size: str|None, auto_suspend_mins: int|None) -> dict | None:
190
+ def create_engine(
191
+ self,
192
+ name: str,
193
+ type: str | None = None,
194
+ size: str | None = None,
195
+ auto_suspend_mins: int | None = None,
196
+ headers: Dict | None = None,
197
+ settings: dict | None = None,
198
+ ) -> dict | None:
184
199
  pass
185
200
 
186
201
  @abstractmethod
187
- def delete_engine(self, name:str, force:bool=False) -> dict | None:
202
+ def delete_engine(self, name:str, type: str) -> dict | None:
188
203
  pass
189
204
 
190
205
  @abstractmethod
191
- def suspend_engine(self, name: str):
206
+ def suspend_engine(self, name: str, type: str | None = None):
192
207
  pass
193
208
 
194
209
  @abstractmethod
195
- def resume_engine(self, name: str, headers: Dict | None = None) -> dict:
210
+ def resume_engine(self, name: str, type: str | None = None, headers: Dict | None = None) -> dict:
196
211
  pass
197
212
 
198
213
  @abstractmethod
199
- def resume_engine_async(self, name: str) -> dict:
214
+ def resume_engine_async(self, name: str, type: str | None = None, headers: Dict | None = None) -> dict:
200
215
  pass
201
216
 
202
217
  @abstractmethod
@@ -210,7 +225,7 @@ class ResourcesBase(ABC):
210
225
  return engine
211
226
 
212
227
  @abstractmethod
213
- def auto_create_engine_async(self, name: str | None = None) -> str:
228
+ def auto_create_engine_async(self, name: str | None = None, type: str | None = None) -> str:
214
229
  pass
215
230
 
216
231
  _active_engine: EngineState|None = None
@@ -428,14 +443,34 @@ class ProviderBase(ABC):
428
443
 
429
444
  resources: ResourcesBase
430
445
 
431
- def list_engines(self, state: str | None = None):
432
- return self.resources.list_engines(state)
446
+ def list_engines(
447
+ self,
448
+ state: str | None = None,
449
+ name: str | None = None,
450
+ type: str | None = None,
451
+ size: str | None = None,
452
+ created_by: str | None = None,
453
+ ):
454
+ return self.resources.list_engines(state=state, name=name, type=type, size=size, created_by=created_by)
433
455
 
434
- def create_engine(self, name:str, size:str|None=None, auto_suspend_mins:int|None=None):
435
- return self.resources.create_engine(name, size, auto_suspend_mins)
456
+ def create_engine(
457
+ self,
458
+ name: str,
459
+ type: str | None = None,
460
+ size: str | None = None,
461
+ auto_suspend_mins: int | None = None,
462
+ settings: dict | None = None,
463
+ ):
464
+ return self.resources.create_engine(
465
+ name,
466
+ type=type,
467
+ size=size,
468
+ auto_suspend_mins=auto_suspend_mins,
469
+ settings=settings,
470
+ )
436
471
 
437
- def delete_engine(self, name:str):
438
- return self.resources.delete_engine(name)
472
+ def delete_engine(self, name:str, type: str = "LOGIC"):
473
+ return self.resources.delete_engine(name, type)
439
474
 
440
475
  def get_transaction(self, transaction_id:str):
441
476
  return self.resources.get_transaction(transaction_id)
@@ -579,7 +614,6 @@ class Client():
579
614
  self._timed_query(
580
615
  "update_registry",
581
616
  dependencies.generate_update_registry(),
582
- readonly=False,
583
617
  abort_on_error=False,
584
618
  )
585
619
 
@@ -588,7 +622,6 @@ class Client():
588
622
  self._timed_query(
589
623
  "update_packages",
590
624
  dependencies.generate_update_packages(),
591
- readonly=False,
592
625
  abort_on_error=False,
593
626
  )
594
627
  else:
@@ -611,10 +644,11 @@ class Client():
611
644
  finally:
612
645
  self._database = database_name
613
646
 
614
- def _timed_query(self, span_name:str, code: str, readonly=True, abort_on_error=True):
647
+ def _timed_query(self, span_name:str, code: str, abort_on_error=True):
615
648
  with debugging.span(span_name, model=self._database) as end_span:
616
649
  start = time.perf_counter()
617
- res, raw = self._query(code, None, end_span, readonly=readonly, abort_on_error=abort_on_error)
650
+ # NOTE hardcoding to readonly=False, read-only Rel transactions are deprecated.
651
+ res, raw = self._query(code, None, end_span, readonly=False, abort_on_error=abort_on_error)
618
652
  debugging.time(span_name, time.perf_counter() - start, code=code)
619
653
  return res, raw
620
654
 
@@ -0,0 +1,122 @@
1
+ from __future__ import annotations
2
+
3
+ import time
4
+ from typing import Dict, Optional, TYPE_CHECKING
5
+
6
+ from v0.relationalai import debugging
7
+ from v0.relationalai.clients.util import poll_with_specified_overhead
8
+ from v0.relationalai.tools.cli_controls import create_progress
9
+ from v0.relationalai.util.format import format_duration
10
+
11
+ if TYPE_CHECKING:
12
+ from v0.relationalai.clients.resources.snowflake import Resources
13
+
14
+ # Polling behavior constants
15
+ POLL_OVERHEAD_RATE = 0.1 # Overhead rate for exponential backoff
16
+
17
+ # Text color constants
18
+ GREEN_COLOR = '\033[92m'
19
+ GRAY_COLOR = '\033[90m'
20
+ ENDC = '\033[0m'
21
+
22
+
23
+ class ExecTxnPoller:
24
+ """
25
+ Encapsulates the polling logic for exec_async transaction completion.
26
+ """
27
+
28
+ def __init__(
29
+ self,
30
+ print_txn_progress: bool,
31
+ resource: "Resources",
32
+ txn_id: Optional[str] = None,
33
+ headers: Optional[Dict] = None,
34
+ txn_start_time: Optional[float] = None,
35
+ ):
36
+ self.print_txn_progress = print_txn_progress
37
+ self.res = resource
38
+ self.txn_id = txn_id
39
+ self.headers = headers or {}
40
+ self.txn_start_time = txn_start_time or time.time()
41
+
42
+ def __enter__(self) -> ExecTxnPoller:
43
+ if not self.print_txn_progress:
44
+ return self
45
+ self.progress = create_progress(
46
+ description=lambda: self.description_with_timing(),
47
+ success_message="", # We'll handle this ourselves
48
+ leading_newline=False,
49
+ trailing_newline=False,
50
+ show_duration_summary=False,
51
+ )
52
+ self.progress.__enter__()
53
+ return self
54
+
55
+ def __exit__(self, exc_type, exc_value, traceback) -> None:
56
+ if not self.print_txn_progress or self.txn_id is None:
57
+ return
58
+ # Update to success message with duration
59
+ total_duration = time.time() - self.txn_start_time
60
+ txn_id = self.txn_id
61
+ self.progress.update_main_status(
62
+ query_complete_message(txn_id, total_duration)
63
+ )
64
+ self.progress.__exit__(exc_type, exc_value, traceback)
65
+ return
66
+
67
+ def poll(self) -> bool:
68
+ """
69
+ Poll for transaction completion with interactive progress display.
70
+
71
+ Returns:
72
+ True if transaction completed successfully, False otherwise
73
+ """
74
+ if not self.txn_id:
75
+ raise ValueError("Transaction ID must be provided for polling.")
76
+ else:
77
+ txn_id = self.txn_id
78
+
79
+ if self.print_txn_progress:
80
+ # Update the main status to include the new txn_id
81
+ self.progress.update_main_status_fn(
82
+ lambda: self.description_with_timing(txn_id),
83
+ )
84
+
85
+ # Don't show duration summary - we handle our own completion message
86
+ def check_status() -> bool:
87
+ """Check if transaction is complete."""
88
+ finished = self.res._check_exec_async_status(txn_id, headers=self.headers)
89
+ return finished
90
+
91
+ with debugging.span("wait", txn_id=self.txn_id):
92
+ poll_with_specified_overhead(check_status, overhead_rate=POLL_OVERHEAD_RATE)
93
+
94
+
95
+ return True
96
+
97
+ def description_with_timing(self, txn_id: str | None = None) -> str:
98
+ elapsed = time.time() - self.txn_start_time
99
+ if txn_id is None:
100
+ return query_progress_header(elapsed)
101
+ else:
102
+ return query_progress_message(txn_id, elapsed)
103
+
104
+ def query_progress_header(duration: float) -> str:
105
+ # Don't print sub-second decimals, because it updates too fast and is distracting.
106
+ duration_str = format_duration(duration, seconds_decimals=False)
107
+ return f"Evaluating Query... {duration_str:>15}\n"
108
+
109
+ def query_progress_message(id: str, duration: float) -> str:
110
+ return (
111
+ query_progress_header(duration) +
112
+ # Print with whitespace to align with the end of the transaction ID
113
+ f"{GRAY_COLOR}ID: {id}{ENDC}"
114
+ )
115
+
116
+ def query_complete_message(id: str, duration: float, status_header: bool = False) -> str:
117
+ return (
118
+ (f"{GREEN_COLOR}✅ " if status_header else "") +
119
+ # Print with whitespace to align with the end of the transaction ID
120
+ f"Query Complete: {format_duration(duration):>21}\n" +
121
+ f"{GRAY_COLOR}ID: {id}{ENDC}"
122
+ )