relationalai 1.0.0a3__tar.gz → 1.0.0a5__tar.gz

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 (544) hide show
  1. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/PKG-INFO +8 -5
  2. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/README.md +23 -0
  3. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/pyproject.toml +22 -9
  4. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/config.py +47 -21
  5. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/connections/__init__.py +5 -2
  6. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/connections/duckdb.py +2 -2
  7. relationalai-1.0.0a5/src/relationalai/config/connections/local.py +31 -0
  8. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/connections/snowflake.py +0 -1
  9. relationalai-1.0.0a5/src/relationalai/config/external/raiconfig_converter.py +235 -0
  10. relationalai-1.0.0a5/src/relationalai/config/external/raiconfig_models.py +202 -0
  11. relationalai-1.0.0a5/src/relationalai/config/external/utils.py +50 -0
  12. relationalai-1.0.0a5/src/relationalai/config/shims.py +2 -0
  13. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/__init__.py +10 -8
  14. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/backends/sql/sql_compiler.py +1 -4
  15. relationalai-1.0.0a5/src/relationalai/semantics/experimental/builder.py +295 -0
  16. relationalai-1.0.0a5/src/relationalai/semantics/experimental/builtins.py +154 -0
  17. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/frontend/base.py +67 -42
  18. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/frontend/core.py +34 -6
  19. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/frontend/front_compiler.py +209 -37
  20. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/frontend/pprint.py +6 -2
  21. relationalai-1.0.0a5/src/relationalai/semantics/metamodel/__init__.py +13 -0
  22. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/metamodel.py +2 -0
  23. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/metamodel_analyzer.py +58 -16
  24. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/pprint.py +6 -1
  25. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/rewriter.py +11 -7
  26. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/typer.py +116 -41
  27. relationalai-1.0.0a5/src/relationalai/semantics/reasoners/__init__.py +11 -0
  28. relationalai-1.0.0a5/src/relationalai/semantics/reasoners/graph/__init__.py +35 -0
  29. relationalai-1.0.0a5/src/relationalai/semantics/reasoners/graph/core.py +9028 -0
  30. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/std/__init__.py +30 -10
  31. relationalai-1.0.0a5/src/relationalai/semantics/std/aggregates.py +777 -0
  32. relationalai-1.0.0a5/src/relationalai/semantics/std/common.py +177 -0
  33. relationalai-1.0.0a5/src/relationalai/semantics/std/constraints.py +107 -0
  34. relationalai-1.0.0a5/src/relationalai/semantics/std/datetime.py +1360 -0
  35. relationalai-1.0.0a5/src/relationalai/semantics/std/decimals.py +196 -0
  36. relationalai-1.0.0a5/src/relationalai/semantics/std/floats.py +68 -0
  37. relationalai-1.0.0a5/src/relationalai/semantics/std/integers.py +131 -0
  38. relationalai-1.0.0a5/src/relationalai/semantics/std/math.py +1034 -0
  39. relationalai-1.0.0a5/src/relationalai/semantics/std/numbers.py +282 -0
  40. relationalai-1.0.0a5/src/relationalai/semantics/std/re.py +309 -0
  41. relationalai-1.0.0a5/src/relationalai/semantics/std/strings.py +511 -0
  42. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/shims/executor.py +60 -52
  43. relationalai-1.0.0a5/src/relationalai/shims/fixtures.py +85 -0
  44. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/shims/helpers.py +26 -2
  45. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/shims/hoister.py +28 -9
  46. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/shims/mm2v0.py +204 -173
  47. relationalai-1.0.0a5/src/relationalai/tools/cli/cli.py +272 -0
  48. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/cli/components/progress_reader.py +1 -1
  49. relationalai-1.0.0a5/src/relationalai/tools/cli/docs.py +394 -0
  50. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/debugger.py +11 -4
  51. relationalai-1.0.0a5/src/relationalai/tools/qb_debugger.py +435 -0
  52. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/typer_debugger.py +1 -2
  53. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/dataclasses.py +3 -5
  54. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/docutils.py +1 -2
  55. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/error.py +2 -5
  56. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/python.py +23 -0
  57. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/runtime.py +1 -2
  58. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/schema.py +2 -4
  59. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/structures.py +4 -2
  60. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/tracing.py +8 -2
  61. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai.egg-info/PKG-INFO +8 -5
  62. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai.egg-info/SOURCES.txt +23 -0
  63. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai.egg-info/requires.txt +6 -3
  64. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/__init__.py +1 -1
  65. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/client.py +52 -18
  66. relationalai-1.0.0a5/src/v0/relationalai/clients/exec_txn_poller.py +122 -0
  67. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/local.py +23 -8
  68. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/azure/azure.py +36 -11
  69. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/__init__.py +4 -4
  70. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/cli_resources.py +12 -1
  71. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/direct_access_resources.py +124 -100
  72. relationalai-1.0.0a5/src/v0/relationalai/clients/resources/snowflake/engine_service.py +381 -0
  73. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/engine_state_handlers.py +35 -29
  74. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/error_handlers.py +43 -2
  75. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/snowflake.py +277 -179
  76. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/use_index_poller.py +8 -0
  77. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/types.py +5 -0
  78. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/errors.py +19 -1
  79. relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/algorithms.py +173 -0
  80. relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/builtins.py +213 -0
  81. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/executor.py +68 -37
  82. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/ir.py +28 -2
  83. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/model2lqp.py +215 -45
  84. relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/passes.py +35 -0
  85. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/__init__.py +12 -0
  86. relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/rewrite/algorithm.py +385 -0
  87. relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/rewrite/constants_to_vars.py +70 -0
  88. relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/rewrite/deduplicate_vars.py +104 -0
  89. relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/rewrite/eliminate_data.py +108 -0
  90. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/extract_keys.py +25 -3
  91. relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/rewrite/period_math.py +77 -0
  92. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/quantify_vars.py +65 -31
  93. relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/rewrite/unify_definitions.py +317 -0
  94. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/utils.py +11 -1
  95. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/validators.py +14 -1
  96. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/builtins.py +2 -1
  97. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/compiler.py +2 -1
  98. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/dependency.py +12 -3
  99. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/executor.py +11 -1
  100. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/factory.py +2 -2
  101. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/helpers.py +7 -0
  102. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/ir.py +3 -2
  103. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +30 -20
  104. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/rewrite/flatten.py +50 -13
  105. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/rewrite/format_outputs.py +9 -3
  106. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/typer/checker.py +6 -4
  107. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/typer/typer.py +4 -3
  108. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/visitor.py +4 -3
  109. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/optimization/solvers_dev.py +1 -1
  110. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/optimization/solvers_pb.py +336 -86
  111. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/rel/compiler.py +2 -1
  112. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/rel/executor.py +3 -2
  113. relationalai-1.0.0a5/src/v0/relationalai/semantics/tests/lqp/__init__.py +0 -0
  114. relationalai-1.0.0a5/src/v0/relationalai/semantics/tests/lqp/algorithms.py +345 -0
  115. relationalai-1.0.0a5/src/v0/relationalai/tools/__init__.py +0 -0
  116. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/cli.py +339 -186
  117. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/cli_controls.py +216 -67
  118. relationalai-1.0.0a5/src/v0/relationalai/tools/cli_helpers.py +802 -0
  119. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/format.py +5 -2
  120. relationalai-1.0.0a3/src/relationalai/config/external/utils.py +0 -19
  121. relationalai-1.0.0a3/src/relationalai/config/shims.py +0 -1
  122. relationalai-1.0.0a3/src/relationalai/semantics/metamodel/__init__.py +0 -6
  123. relationalai-1.0.0a3/src/relationalai/semantics/std/aggregates.py +0 -148
  124. relationalai-1.0.0a3/src/relationalai/semantics/std/common.py +0 -44
  125. relationalai-1.0.0a3/src/relationalai/semantics/std/constraints.py +0 -37
  126. relationalai-1.0.0a3/src/relationalai/semantics/std/datetime.py +0 -477
  127. relationalai-1.0.0a3/src/relationalai/semantics/std/decimals.py +0 -55
  128. relationalai-1.0.0a3/src/relationalai/semantics/std/floats.py +0 -15
  129. relationalai-1.0.0a3/src/relationalai/semantics/std/integers.py +0 -37
  130. relationalai-1.0.0a3/src/relationalai/semantics/std/math.py +0 -212
  131. relationalai-1.0.0a3/src/relationalai/semantics/std/numbers.py +0 -86
  132. relationalai-1.0.0a3/src/relationalai/semantics/std/re.py +0 -101
  133. relationalai-1.0.0a3/src/relationalai/semantics/std/strings.py +0 -118
  134. relationalai-1.0.0a3/src/relationalai/tools/cli/cli.py +0 -90
  135. relationalai-1.0.0a3/src/v0/relationalai/semantics/lqp/builtins.py +0 -16
  136. relationalai-1.0.0a3/src/v0/relationalai/semantics/lqp/passes.py +0 -680
  137. relationalai-1.0.0a3/src/v0/relationalai/tools/cli_helpers.py +0 -398
  138. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/setup.cfg +0 -0
  139. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/__init__.py +0 -0
  140. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/__init__.py +0 -0
  141. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/config_fields.py +0 -0
  142. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/connections/base.py +0 -0
  143. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/external/__init__.py +0 -0
  144. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/external/dbt_converter.py +0 -0
  145. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/external/dbt_models.py +0 -0
  146. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/external/snowflake_converter.py +0 -0
  147. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/external/snowflake_models.py +0 -0
  148. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/backends/lqp/annotations.py +0 -0
  149. {relationalai-1.0.0a3/src/relationalai/semantics/frontend → relationalai-1.0.0a5/src/relationalai/semantics/experimental}/__init__.py +0 -0
  150. {relationalai-1.0.0a3/src/relationalai/shims → relationalai-1.0.0a5/src/relationalai/semantics/frontend}/__init__.py +0 -0
  151. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/builtins.py +0 -0
  152. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/metamodel_compiler.py +0 -0
  153. {relationalai-1.0.0a3/src/v0/relationalai/analysis → relationalai-1.0.0a5/src/relationalai/shims}/__init__.py +0 -0
  154. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/cli/__init__.py +0 -0
  155. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/cli/components/__init__.py +0 -0
  156. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/cli/components/utils.py +0 -0
  157. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/cli/config_template.py +0 -0
  158. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/cli/dev.py +0 -0
  159. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/format.py +0 -0
  160. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/naming.py +0 -0
  161. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/source.py +0 -0
  162. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai.egg-info/dependency_links.txt +0 -0
  163. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai.egg-info/entry_points.txt +0 -0
  164. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai.egg-info/top_level.txt +0 -0
  165. {relationalai-1.0.0a3/src/v0/relationalai/auth → relationalai-1.0.0a5/src/v0/relationalai/analysis}/__init__.py +0 -0
  166. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/analysis/mechanistic.py +0 -0
  167. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/analysis/whynot.py +0 -0
  168. {relationalai-1.0.0a3/src/v0/relationalai/early_access → relationalai-1.0.0a5/src/v0/relationalai/auth}/__init__.py +0 -0
  169. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/auth/jwt_generator.py +0 -0
  170. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/auth/oauth_callback_server.py +0 -0
  171. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/auth/token_handler.py +0 -0
  172. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/auth/util.py +0 -0
  173. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/__init__.py +0 -0
  174. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/config.py +0 -0
  175. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/direct_access_client.py +0 -0
  176. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/hash_util.py +0 -0
  177. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/profile_polling.py +0 -0
  178. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/__init__.py +0 -0
  179. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/cache_store.py +0 -0
  180. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/resources_factory.py +0 -0
  181. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/use_index_resources.py +0 -0
  182. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/util.py +0 -0
  183. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/result_helpers.py +0 -0
  184. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/util.py +0 -0
  185. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/compiler.py +0 -0
  186. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/debugging.py +0 -0
  187. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/dependencies.py +0 -0
  188. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/docutils.py +0 -0
  189. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/dsl.py +0 -0
  190. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/adapters → relationalai-1.0.0a5/src/v0/relationalai/early_access}/__init__.py +0 -0
  191. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/__init__.py +0 -0
  192. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/builder/__init__.py +0 -0
  193. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/snowflake/__init__.py +0 -0
  194. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/std/__init__.py +0 -0
  195. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/std/decimals/__init__.py +0 -0
  196. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/std/integers/__init__.py +0 -0
  197. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/std/math/__init__.py +0 -0
  198. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/std/strings/__init__.py +0 -0
  199. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/devtools/__init__.py +0 -0
  200. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/devtools/benchmark_lqp/__init__.py +0 -0
  201. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/devtools/extract_lqp/__init__.py +0 -0
  202. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/__init__.py +0 -0
  203. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/adapters/orm → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/adapters}/__init__.py +0 -0
  204. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/adapters/owl → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/adapters/orm}/__init__.py +0 -0
  205. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/adapters/orm/adapter_qb.py +0 -0
  206. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/adapters/orm/model.py +0 -0
  207. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/adapters/orm/parser.py +0 -0
  208. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/bindings → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/adapters/owl}/__init__.py +0 -0
  209. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/adapters/owl/adapter.py +0 -0
  210. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/adapters/owl/model.py +0 -0
  211. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/adapters/owl/parser.py +0 -0
  212. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/bindings/legacy → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/bindings}/__init__.py +0 -0
  213. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/bindings/common.py +0 -0
  214. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/bindings/csv.py +0 -0
  215. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/codegen → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/bindings/legacy}/__init__.py +0 -0
  216. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/bindings/legacy/binding_models.py +0 -0
  217. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/bindings/snowflake.py +0 -0
  218. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/core/temporal → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/codegen}/__init__.py +0 -0
  219. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/codegen/binder.py +0 -0
  220. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/codegen/common.py +0 -0
  221. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/codegen/helpers.py +0 -0
  222. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/codegen/relations.py +0 -0
  223. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/codegen/weaver.py +0 -0
  224. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/constants.py +0 -0
  225. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/__init__.py +0 -0
  226. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/builders/__init__.py +0 -0
  227. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/builders/logic.py +0 -0
  228. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/builders/scalar_constraint.py +0 -0
  229. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/constraints/__init__.py +0 -0
  230. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/constraints/predicate/__init__.py +0 -0
  231. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/constraints/predicate/atomic.py +0 -0
  232. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/constraints/predicate/universal.py +0 -0
  233. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/constraints/scalar.py +0 -0
  234. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/context.py +0 -0
  235. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/cset.py +0 -0
  236. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/exprs/__init__.py +0 -0
  237. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/exprs/relational.py +0 -0
  238. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/exprs/scalar.py +0 -0
  239. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/instances.py +0 -0
  240. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/logic/__init__.py +0 -0
  241. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/logic/aggregation.py +0 -0
  242. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/logic/exists.py +0 -0
  243. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/logic/helper.py +0 -0
  244. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/namespaces.py +0 -0
  245. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/relations.py +0 -0
  246. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/rules.py +0 -0
  247. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/stack.py +0 -0
  248. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/std/__init__.py +0 -0
  249. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/ir → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/core/temporal}/__init__.py +0 -0
  250. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/temporal/recall.py +0 -0
  251. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/__init__.py +0 -0
  252. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/concepts.py +0 -0
  253. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/constrained/__init__.py +0 -0
  254. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/constrained/nominal.py +0 -0
  255. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/constrained/subtype.py +0 -0
  256. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/standard.py +0 -0
  257. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/unconstrained.py +0 -0
  258. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/variables.py +0 -0
  259. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/utils.py +0 -0
  260. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/ontologies → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/ir}/__init__.py +0 -0
  261. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ir/compiler.py +0 -0
  262. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ir/executor.py +0 -0
  263. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/orm → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/ontologies}/__init__.py +0 -0
  264. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/constraints.py +0 -0
  265. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/export.py +0 -0
  266. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/models.py +0 -0
  267. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/python_printer.py +0 -0
  268. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/raw_source.py +0 -0
  269. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/readings.py +0 -0
  270. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/relationships.py +0 -0
  271. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/roles.py +0 -0
  272. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/subtyping.py +0 -0
  273. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/orm/measures → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/orm}/__init__.py +0 -0
  274. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/constraints.py +0 -0
  275. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/physical_metadata → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/orm/measures}/__init__.py +0 -0
  276. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/measures/dimensions.py +0 -0
  277. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/measures/initializer.py +0 -0
  278. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/measures/measure_rules.py +0 -0
  279. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/measures/measures.py +0 -0
  280. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/measures/role_exprs.py +0 -0
  281. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/models.py +0 -0
  282. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/object_oriented_printer.py +0 -0
  283. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/printer.py +0 -0
  284. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/reasoner_errors.py +0 -0
  285. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/reasoners.py +0 -0
  286. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/relations.py +0 -0
  287. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/relationships.py +0 -0
  288. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/types.py +0 -0
  289. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/utils.py +0 -0
  290. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/verb.py +0 -0
  291. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/serialize → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/physical_metadata}/__init__.py +0 -0
  292. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/physical_metadata/tables.py +0 -0
  293. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/relations.py +0 -0
  294. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/rulesets.py +0 -0
  295. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/__init__.py +0 -0
  296. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/builder.py +0 -0
  297. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/comp_names.py +0 -0
  298. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/components.py +0 -0
  299. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/contexts.py +0 -0
  300. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/exprs.py +0 -0
  301. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/fragments.py +0 -0
  302. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/serialization.py +0 -0
  303. {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/snow → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/serialize}/__init__.py +0 -0
  304. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/serialize/binding_model.py +0 -0
  305. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/serialize/exporter.py +0 -0
  306. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/serialize/model.py +0 -0
  307. {relationalai-1.0.0a3/src/v0/relationalai/loaders → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/snow}/__init__.py +0 -0
  308. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/snow/api.py +0 -0
  309. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/snow/common.py +0 -0
  310. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/state_mgmt/__init__.py +0 -0
  311. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/state_mgmt/state_charts.py +0 -0
  312. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/state_mgmt/transitions.py +0 -0
  313. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/types/__init__.py +0 -0
  314. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/types/concepts.py +0 -0
  315. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/types/entities.py +0 -0
  316. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/types/values.py +0 -0
  317. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/utils.py +0 -0
  318. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/graphs/__init__.py +0 -0
  319. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/__init__.py +0 -0
  320. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/compiler/__init__.py +0 -0
  321. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/constructors/__init__.py +0 -0
  322. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/executor/__init__.py +0 -0
  323. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/ir/__init__.py +0 -0
  324. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/passes/__init__.py +0 -0
  325. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/pragmas/__init__.py +0 -0
  326. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/primitives/__init__.py +0 -0
  327. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/types/__init__.py +0 -0
  328. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/utils/__init__.py +0 -0
  329. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/validators/__init__.py +0 -0
  330. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/__init__.py +0 -0
  331. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/builtins/__init__.py +0 -0
  332. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/compiler/__init__.py +0 -0
  333. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/dependency/__init__.py +0 -0
  334. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/factory/__init__.py +0 -0
  335. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/helpers/__init__.py +0 -0
  336. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/ir/__init__.py +0 -0
  337. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/rewrite/__init__.py +0 -0
  338. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/typer/__init__.py +0 -0
  339. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/typer/typer/__init__.py +0 -0
  340. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/types/__init__.py +0 -0
  341. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/util/__init__.py +0 -0
  342. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/visitor/__init__.py +0 -0
  343. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/rel/__init__.py +0 -0
  344. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/rel/executor/__init__.py +0 -0
  345. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/rel/rel_utils/__init__.py +0 -0
  346. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/rel/rewrite/__init__.py +0 -0
  347. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/solvers/__init__.py +0 -0
  348. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/sql/__init__.py +0 -0
  349. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/sql/executor/__init__.py +0 -0
  350. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/sql/rewrite/__init__.py +0 -0
  351. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/tests/__init__.py +0 -0
  352. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/tests/logging/__init__.py +0 -0
  353. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/tests/test_snapshot_base/__init__.py +0 -0
  354. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/tests/utils/__init__.py +0 -0
  355. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/__init__.py +0 -0
  356. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/base.py +0 -0
  357. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/ci.py +0 -0
  358. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/colab.py +0 -0
  359. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/generic.py +0 -0
  360. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/hex.py +0 -0
  361. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/ipython.py +0 -0
  362. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/jupyter.py +0 -0
  363. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/snowbook.py +0 -0
  364. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/terminal.py +0 -0
  365. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/SF.py +0 -0
  366. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/__init__.py +0 -0
  367. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/graphs.py +0 -0
  368. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/inspect.py +0 -0
  369. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/__init__.py +0 -0
  370. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/api.py +0 -0
  371. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/automaton.py +0 -0
  372. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/bridge.py +0 -0
  373. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/compiler.py +0 -0
  374. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/datalog.py +0 -0
  375. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/diagnostics.py +0 -0
  376. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/filter.py +0 -0
  377. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/glushkov.py +0 -0
  378. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/options.py +0 -0
  379. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/rpq.py +0 -0
  380. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/transition.py +0 -0
  381. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/utils.py +0 -0
  382. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/__init__.py +0 -0
  383. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/api.py +0 -0
  384. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/benchmarks/__init__.py +0 -0
  385. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/benchmarks/grid_graph.py +0 -0
  386. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/examples/basic_example.py +0 -0
  387. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/examples/minimal_engine_warmup.py +0 -0
  388. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/examples/movie_example.py +0 -0
  389. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/examples/paths_benchmark.py +0 -0
  390. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/examples/paths_example.py +0 -0
  391. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/examples/pattern_to_automaton.py +0 -0
  392. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/find_paths_via_automaton.py +0 -0
  393. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/graph.py +0 -0
  394. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/__init__.py +0 -0
  395. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/find_paths.py +0 -0
  396. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/one_sided_ball_repetition.py +0 -0
  397. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/one_sided_ball_upto.py +0 -0
  398. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/single.py +0 -0
  399. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/two_sided_balls_repetition.py +0 -0
  400. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/two_sided_balls_upto.py +0 -0
  401. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/usp-old.py +0 -0
  402. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/usp-tuple.py +0 -0
  403. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/usp.py +0 -0
  404. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/product_graph.py +0 -0
  405. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/__init__.py +0 -0
  406. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/automaton.py +0 -0
  407. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/diagnostics.py +0 -0
  408. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/filter.py +0 -0
  409. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/glushkov.py +0 -0
  410. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/rpq.py +0 -0
  411. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/transition.py +0 -0
  412. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_limit_sp_max_length.py +0 -0
  413. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_limit_sp_multiple.py +0 -0
  414. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_limit_sp_single.py +0 -0
  415. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_limit_walks_multiple.py +0 -0
  416. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_limit_walks_single.py +0 -0
  417. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_one_sided_ball_repetition_multiple.py +0 -0
  418. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_one_sided_ball_repetition_single.py +0 -0
  419. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_one_sided_ball_upto_multiple.py +0 -0
  420. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_one_sided_ball_upto_single.py +0 -0
  421. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_single_paths.py +0 -0
  422. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_single_walks.py +0 -0
  423. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_single_walks_undirected.py +0 -0
  424. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_two_sided_balls_repetition_multiple.py +0 -0
  425. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_two_sided_balls_repetition_single.py +0 -0
  426. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_two_sided_balls_upto_multiple.py +0 -0
  427. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_two_sided_balls_upto_single.py +0 -0
  428. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_usp_nsp_multiple.py +0 -0
  429. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_usp_nsp_single.py +0 -0
  430. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tree_agg.py +0 -0
  431. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/utilities/__init__.py +0 -0
  432. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/utilities/iterators.py +0 -0
  433. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/utilities/prefix_sum.py +0 -0
  434. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/utilities/utilities.py +0 -0
  435. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/solvers.py +0 -0
  436. {relationalai-1.0.0a3/src/v0/relationalai/semantics/tests → relationalai-1.0.0a5/src/v0/relationalai/loaders}/__init__.py +0 -0
  437. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/loaders/csv.py +0 -0
  438. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/loaders/loader.py +0 -0
  439. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/loaders/types.py +0 -0
  440. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/metagen.py +0 -0
  441. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/metamodel.py +0 -0
  442. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/rel.py +0 -0
  443. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/rel_emitter.py +0 -0
  444. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/rel_utils.py +0 -0
  445. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/__init__.py +0 -0
  446. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/devtools/__init__.py +0 -0
  447. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/devtools/benchmark_lqp.py +0 -0
  448. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/devtools/compilation_manager.py +0 -0
  449. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/devtools/extract_lqp.py +0 -0
  450. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/internal/__init__.py +0 -0
  451. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/internal/annotations.py +0 -0
  452. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/internal/internal.py +0 -0
  453. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/internal/snowflake.py +0 -0
  454. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/__init__.py +0 -0
  455. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/compiler.py +0 -0
  456. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/constructors.py +0 -0
  457. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/intrinsics.py +0 -0
  458. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/pragmas.py +0 -0
  459. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/primitives.py +0 -0
  460. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/result_helpers.py +0 -0
  461. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/annotate_constraints.py +0 -0
  462. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/cdc.py +0 -0
  463. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/extract_common.py +0 -0
  464. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/function_annotations.py +0 -0
  465. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/functional_dependencies.py +0 -0
  466. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/splinter.py +0 -0
  467. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/types.py +0 -0
  468. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/__init__.py +0 -0
  469. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/dataflow.py +0 -0
  470. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/rewrite/__init__.py +0 -0
  471. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/rewrite/discharge_constraints.py +0 -0
  472. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py +0 -0
  473. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/typer/__init__.py +0 -0
  474. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/types.py +0 -0
  475. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/util.py +0 -0
  476. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/__init__.py +0 -0
  477. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/experimental/__init__.py +0 -0
  478. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/graph/__init__.py +0 -0
  479. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/graph/core.py +0 -0
  480. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/optimization/__init__.py +0 -0
  481. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/optimization/common.py +0 -0
  482. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/rel/__init__.py +0 -0
  483. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/rel/builtins.py +0 -0
  484. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/rel/rel.py +0 -0
  485. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/rel/rel_utils.py +0 -0
  486. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/snowflake/__init__.py +0 -0
  487. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/__init__.py +0 -0
  488. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/compiler.py +0 -0
  489. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/executor/__init__.py +0 -0
  490. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/executor/duck_db.py +0 -0
  491. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/executor/result_helpers.py +0 -0
  492. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/executor/snowflake.py +0 -0
  493. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/rewrite/__init__.py +0 -0
  494. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/rewrite/denormalize.py +0 -0
  495. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/rewrite/double_negation.py +0 -0
  496. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/rewrite/recursive_union.py +0 -0
  497. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/rewrite/sort_output_query.py +0 -0
  498. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/sql.py +0 -0
  499. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/__init__.py +0 -0
  500. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/constraints.py +0 -0
  501. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/datetime.py +0 -0
  502. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/decimals.py +0 -0
  503. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/floats.py +0 -0
  504. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/integers.py +0 -0
  505. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/math.py +0 -0
  506. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/pragmas.py +0 -0
  507. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/re.py +0 -0
  508. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/std.py +0 -0
  509. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/strings.py +0 -0
  510. {relationalai-1.0.0a3/src/v0/relationalai/tools → relationalai-1.0.0a5/src/v0/relationalai/semantics/tests}/__init__.py +0 -0
  511. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/tests/logging.py +0 -0
  512. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/tests/test_snapshot_abstract.py +0 -0
  513. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/tests/test_snapshot_base.py +0 -0
  514. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/tests/utils.py +0 -0
  515. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/__init__.py +0 -0
  516. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/aggregates.py +0 -0
  517. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/dates.py +0 -0
  518. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/graphs.py +0 -0
  519. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/inspect.py +0 -0
  520. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/math.py +0 -0
  521. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/re.py +0 -0
  522. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/strings.py +0 -0
  523. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/cleanup_snapshots.py +0 -0
  524. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/constants.py +0 -0
  525. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/debugger.py +0 -0
  526. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/debugger_client.py +0 -0
  527. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/debugger_server.py +0 -0
  528. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/dev.py +0 -0
  529. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/qb_debugger.py +0 -0
  530. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/query_utils.py +0 -0
  531. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/snapshot_viewer.py +0 -0
  532. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/__init__.py +0 -0
  533. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/clean_up_databases.py +0 -0
  534. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/constants.py +0 -0
  535. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/graph.py +0 -0
  536. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/list_databases.py +0 -0
  537. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/otel_configuration.py +0 -0
  538. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/otel_handler.py +0 -0
  539. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/snowflake_handler.py +0 -0
  540. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/span_format_test.py +0 -0
  541. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/span_tracker.py +0 -0
  542. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/spans_file_handler.py +0 -0
  543. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/timeout.py +0 -0
  544. {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/tracing_handler.py +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: relationalai
3
- Version: 1.0.0a3
3
+ Version: 1.0.0a5
4
4
  Summary: RelationalAI Library and CLI
5
5
  Author-email: RelationalAI <support@relational.ai>
6
- Requires-Python: >=3.10
6
+ Requires-Python: <3.14,>=3.10
7
7
  Description-Content-Type: text/markdown
8
- Requires-Dist: lqp==0.1.19
8
+ Requires-Dist: lqp
9
9
  Requires-Dist: snowflake-connector-python[secure-local-storage]
10
10
  Requires-Dist: snowflake-snowpark-python>=1.38.0
11
11
  Requires-Dist: typing-extensions
@@ -15,10 +15,9 @@ Requires-Dist: numpy<2
15
15
  Requires-Dist: pandas
16
16
  Requires-Dist: colorama
17
17
  Requires-Dist: inquirerpy
18
- Requires-Dist: click==8.2.1
18
+ Requires-Dist: click
19
19
  Requires-Dist: gravis
20
20
  Requires-Dist: toml
21
- Requires-Dist: tomlkit
22
21
  Requires-Dist: requests
23
22
  Requires-Dist: pyarrow
24
23
  Requires-Dist: websockets
@@ -33,8 +32,12 @@ Requires-Dist: pyjwt
33
32
  Requires-Dist: more-itertools
34
33
  Requires-Dist: sqlglot
35
34
  Requires-Dist: pyyaml
35
+ Requires-Dist: confocal
36
36
  Requires-Dist: pydantic<2.12.0,>=2.0.0
37
37
  Requires-Dist: pydantic-settings<2.11.0,>=2.0.0
38
+ Requires-Dist: tomlkit
39
+ Requires-Dist: fastapi
40
+ Requires-Dist: uvicorn[standard]
38
41
  Provides-Extra: dev
39
42
  Requires-Dist: pytest; extra == "dev"
40
43
  Requires-Dist: pytest-cov; extra == "dev"
@@ -15,6 +15,29 @@ make install
15
15
  make sync
16
16
  ```
17
17
 
18
+ ### Running Tests
19
+
20
+ The repository includes two test suites that can be run using Make commands:
21
+
22
+ **Unified tests** (general test suite):
23
+ ```bash
24
+ make test # run all unified tests
25
+ make test unions # run tests matching "q03"
26
+ make test "unions or strings" # run tests matching pattern with spaces
27
+ make test unions --update # run tests and update snapshots
28
+ make test --update # update snapshots for all tests
29
+ ```
30
+
31
+ **TPCH tests** (TPC-H benchmark queries):
32
+ ```bash
33
+ make tpch # run all TPCH tests
34
+ make tpch q01 # run only q01
35
+ make tpch q22 --update # run q22 and update snapshots
36
+ make tpch --update # update snapshots for all TPCH tests
37
+ ```
38
+
39
+ The `--update` flag (or `-u` for short) can be placed before or after the pattern.
40
+
18
41
  ### Docstrings
19
42
 
20
43
  API reference documentation is generated from docstrings in the code.
@@ -1,14 +1,14 @@
1
1
  [project]
2
2
  name = 'relationalai'
3
- version = '1.0.0a3'
3
+ version = '1.0.0a5'
4
4
  description = 'RelationalAI Library and CLI'
5
5
  readme="docs/pypi/README.md"
6
6
  authors = [
7
7
  { name="RelationalAI", email="support@relational.ai" },
8
8
  ]
9
- requires-python = ">= 3.10"
9
+ requires-python = ">= 3.10, <3.14"
10
10
  dependencies = [
11
- "lqp==0.1.19",
11
+ "lqp",
12
12
  "snowflake-connector-python[secure-local-storage]",
13
13
  "snowflake-snowpark-python>=1.38.0",
14
14
  "typing-extensions",
@@ -18,10 +18,9 @@ dependencies = [
18
18
  "pandas",
19
19
  "colorama",
20
20
  "inquirerpy",
21
- "click==8.2.1",
21
+ "click",
22
22
  "gravis",
23
23
  "toml",
24
- "tomlkit",
25
24
  "requests",
26
25
  "pyarrow",
27
26
  "websockets",
@@ -36,10 +35,12 @@ dependencies = [
36
35
  "more-itertools",
37
36
  "sqlglot",
38
37
  "pyyaml",
39
- # TODO: Add back when confocal is published to PyPI
40
- # "confocal @ git+https://github.com/joshuafcole/confocal.git",
38
+ "confocal",
41
39
  "pydantic>=2.0.0,<2.12.0",
42
40
  "pydantic-settings>=2.0.0,<2.11.0",
41
+ "tomlkit",
42
+ "fastapi",
43
+ "uvicorn[standard]",
43
44
  ]
44
45
  [project.optional-dependencies]
45
46
  dev = [
@@ -61,10 +62,22 @@ exclude = []
61
62
 
62
63
  [tool.pyright]
63
64
  include = ["src", "tests", "example"]
64
- exclude = ["**/node_modules", "**/__pycache__", "**/.*"]
65
+ exclude = ["**/node_modules", "**/__pycache__", "**/.*", "src/v0/**", "src/relationalai/shims/**", "tests/unified/tests/dry_run/**", "tests/unified/tests/pragmas/**", "tests/unified/tests/tables/**", "tests/unified/tests/warnings/**", "tests/reasoners/graphs/**", "tests/shims/**", "tests/tpch/**", "tests/unified/test_all.py"]
65
66
  useLibraryCodeForTypes = true
66
67
  reportMissingImports = true
67
68
  reportMissingTypeStubs = false
68
- pythonVersion = "3.10"
69
+ pythonVersion = "3.13"
70
+ venvPath = "."
71
+ venv = ".venv"
69
72
  typeCheckingMode = "standard"
70
73
  reportUnusedExpression = false
74
+
75
+ [tool.pytest.ini_options]
76
+ markers = [
77
+ "experimental: marks tests as experimental/loopy (deselect with '-m \"not experimental\"')",
78
+ ]
79
+ addopts = "-m 'not experimental'"
80
+ filterwarnings = [
81
+ "ignore:Type google\\._upb\\._message\\.MessageMapContainer uses PyType_Spec:DeprecationWarning",
82
+ "ignore:Type google\\._upb\\._message\\.ScalarMapContainer uses PyType_Spec:DeprecationWarning",
83
+ ]
@@ -6,32 +6,28 @@ Main configuration class for PyRel (YAML-based).
6
6
  from __future__ import annotations
7
7
 
8
8
  from abc import ABC
9
- from typing import Any, TypeVar, overload, Literal, TYPE_CHECKING
9
+ from typing import Any, TypeVar, overload, Literal, TYPE_CHECKING, cast
10
10
  from pydantic import Field, model_validator
11
11
  from pydantic_settings import SettingsConfigDict
12
-
13
- try:
14
- from confocal import BaseConfig
15
- except ImportError:
16
- # Confocal not yet published to PyPI - use pydantic_settings as fallback
17
- # Config system not actively used yet, this is just to prevent import errors
18
- from pydantic_settings import BaseSettings as BaseConfig # type: ignore[misc, assignment]
12
+ from confocal import BaseConfig
19
13
 
20
14
  if TYPE_CHECKING:
21
15
  import snowflake.snowpark
22
- import duckdb
16
+ import duckdb # type: ignore[import-not-found]
17
+ import requests
23
18
 
24
- from .connections import ConnectionConfig, BaseConnection, SnowflakeConnection, DuckDBConnection
19
+ from .connections import ConnectionConfig, BaseConnection, SnowflakeConnection, DuckDBConnection, LocalConnection
25
20
  from .config_fields import EngineConfig, DataConfig, CompilerConfig, ModelConfig, ReasonerConfig, DebugConfig
26
21
  from .external.dbt_converter import convert_dbt_to_rai
27
22
  from .external.snowflake_converter import convert_snowflake_to_rai
28
- from .external.utils import find_dbt_profiles_file, find_snowflake_config_file
23
+ from .external.raiconfig_converter import convert_raiconfig_to_rai
24
+ from .external.utils import find_dbt_profiles_file, find_snowflake_config_file, find_raiconfig_toml_file
29
25
 
30
26
  # TypeVar for generic connection retrieval
31
27
  T = TypeVar('T', bound=BaseConnection)
32
28
 
33
29
 
34
- class _Config(BaseConfig, ABC): # type: ignore for now until we publish confocal
30
+ class _Config(BaseConfig, ABC):
35
31
  """Base configuration class with common fields and methods."""
36
32
 
37
33
  active_profile: str | None = Field(
@@ -171,6 +167,8 @@ class _Config(BaseConfig, ABC): # type: ignore for now until we publish confocal
171
167
  connection_class = "SnowflakeConnection"
172
168
  elif isinstance(connection, DuckDBConnection):
173
169
  connection_class = "DuckDBConnection"
170
+ elif isinstance(connection, LocalConnection):
171
+ connection_class = "LocalConnection"
174
172
  else:
175
173
  connection_class = actual_type
176
174
 
@@ -179,18 +177,15 @@ class _Config(BaseConfig, ABC): # type: ignore for now until we publish confocal
179
177
  f"Got: {connection_class} (actual: {actual_type})"
180
178
  )
181
179
 
182
- return connection
183
-
184
- @overload
185
- def get_session(self, connection_type: type[SnowflakeConnection]) -> snowflake.snowpark.Session: ...
180
+ return cast(T, connection)
186
181
 
187
182
  @overload
188
- def get_session(self, connection_type: type[DuckDBConnection]) -> duckdb.DuckDBPyConnection: ...
183
+ def get_session(self) -> snowflake.snowpark.Session | duckdb.DuckDBPyConnection | requests.Session: ...
189
184
 
190
185
  @overload
191
- def get_session(self, connection_type: None = None) -> snowflake.snowpark.Session | duckdb.DuckDBPyConnection: ...
186
+ def get_session(self, connection_type: type[SnowflakeConnection] | type[DuckDBConnection] | type[LocalConnection]) -> snowflake.snowpark.Session | duckdb.DuckDBPyConnection | requests.Session: ...
192
187
 
193
- def get_session(self, connection_type: type[SnowflakeConnection] | type[DuckDBConnection] | None = None) -> snowflake.snowpark.Session | duckdb.DuckDBPyConnection:
188
+ def get_session(self, connection_type: type[SnowflakeConnection] | type[DuckDBConnection] | type[LocalConnection] | None = None) -> snowflake.snowpark.Session | duckdb.DuckDBPyConnection | requests.Session:
194
189
  if connection_type is None:
195
190
  connection = self.get_default_connection()
196
191
  return connection.get_session()
@@ -250,6 +245,35 @@ class ConfigFromDBT(_Config):
250
245
  return convert_dbt_to_rai(data)
251
246
 
252
247
 
248
+ class ConfigFromRAIConfigToml(_Config):
249
+ """Config loaded from deprecated raiconfig.toml (for backwards compatibility)"""
250
+
251
+ source: Literal["raiconfig_toml"] = Field(default="raiconfig_toml", exclude=True)
252
+
253
+ model_config = SettingsConfigDict(
254
+ toml_file=find_raiconfig_toml_file(),
255
+ extra="ignore",
256
+ nested_model_default_partial_update=True,
257
+ )
258
+
259
+ @model_validator(mode='before')
260
+ @classmethod
261
+ def convert_raiconfig_structure(cls, data: Any):
262
+ """Convert deprecated raiconfig.toml format to new format."""
263
+ if not isinstance(data, dict):
264
+ return data
265
+
266
+ # Add deprecation warning
267
+ import warnings
268
+ warnings.warn(
269
+ "raiconfig.toml is deprecated. Please migrate to raiconfig.yaml.",
270
+ DeprecationWarning,
271
+ stacklevel=2
272
+ )
273
+
274
+ return convert_raiconfig_to_rai(data)
275
+
276
+
253
277
  # =============================================================================
254
278
  # Config Factory - Tries each source in order
255
279
  # =============================================================================
@@ -258,11 +282,13 @@ def Config(**data) -> _Config:
258
282
  """
259
283
  Create Config by trying multiple sources in priority order:
260
284
  1. RAIConfig (raiconfig.yaml) - or direct data if provided
261
- 2. ConfigFromSnowflake (config.toml) - only if no data provided
262
- 3. ConfigFromDBT (profiles.yml) - only if no data provided
285
+ 2. ConfigFromRAIConfigToml (raiconfig.toml - DEPRECATED) - only if no data provided
286
+ 3. ConfigFromSnowflake (config.toml) - only if no data provided
287
+ 4. ConfigFromDBT (profiles.yml) - only if no data provided
263
288
  """
264
289
  sources = [
265
290
  ("RAIConfig (raiconfig.yaml)", RAIConfig, True), # passes **data
291
+ ("ConfigFromRAIConfigToml (raiconfig.toml - DEPRECATED)", ConfigFromRAIConfigToml, False),
266
292
  ("ConfigFromSnowflake (config.toml)", ConfigFromSnowflake, False),
267
293
  ("ConfigFromDBT (profiles.yml)", ConfigFromDBT, False),
268
294
  ]
@@ -5,8 +5,9 @@ This module exports:
5
5
  - BaseConnection: Base class for all connections
6
6
  - Snowflake authenticators: UsernamePasswordAuth, UsernamePasswordMFAAuth, etc.
7
7
  - DuckDBConnection: DuckDB connection
8
+ - LocalConnection: Local RAI server connection
8
9
  - SnowflakeConnection: Discriminated union of Snowflake authenticators
9
- - ConnectionConfig: Top-level discriminated union (Snowflake | DuckDB)
10
+ - ConnectionConfig: Top-level discriminated union (Snowflake | DuckDB | Local)
10
11
  """
11
12
 
12
13
  from __future__ import annotations
@@ -26,9 +27,10 @@ from .snowflake import (
26
27
  SnowflakeAuthenticator,
27
28
  )
28
29
  from .duckdb import DuckDBConnection
30
+ from .local import LocalConnection
29
31
 
30
32
  ConnectionConfig = Annotated[
31
- Union[SnowflakeAuthenticator, DuckDBConnection],
33
+ Union[SnowflakeAuthenticator, DuckDBConnection, LocalConnection],
32
34
  Field(discriminator="type")
33
35
  ]
34
36
 
@@ -42,5 +44,6 @@ __all__ = [
42
44
  "ProgrammaticAccessTokenAuth",
43
45
  "SnowflakeConnection",
44
46
  "DuckDBConnection",
47
+ "LocalConnection",
45
48
  "ConnectionConfig",
46
49
  ]
@@ -4,7 +4,7 @@ from typing import Literal, Any, TYPE_CHECKING
4
4
  from pydantic import Field
5
5
 
6
6
  if TYPE_CHECKING:
7
- import duckdb
7
+ import duckdb # type: ignore[import-not-found]
8
8
 
9
9
  from .base import BaseConnection
10
10
 
@@ -17,7 +17,7 @@ class DuckDBConnection(BaseConnection):
17
17
  config: dict[str, Any] | None = Field(None, description="Additional DuckDB configuration options")
18
18
 
19
19
  def get_session(self) -> duckdb.DuckDBPyConnection:
20
- import duckdb
20
+ import duckdb # type: ignore[import-not-found]
21
21
 
22
22
  if self._cached_session is None:
23
23
  self._cached_session = duckdb.connect(
@@ -0,0 +1,31 @@
1
+ """Local server connection configuration."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Literal, TYPE_CHECKING
6
+ from pydantic import Field
7
+
8
+ if TYPE_CHECKING:
9
+ import requests
10
+
11
+ from .base import BaseConnection
12
+
13
+
14
+ class LocalConnection(BaseConnection):
15
+ """Connection to a local RAI server."""
16
+
17
+ type: Literal["local"] = "local"
18
+
19
+ host: str = Field(default="localhost", description="Local server host")
20
+ port: int = Field(default=8010, description="Local server port")
21
+ engine: str | None = Field(default=None, description="Engine name")
22
+
23
+ def get_session(self) -> requests.Session:
24
+ """Return a requests.Session instance for the local server."""
25
+ # Should we migrate to using LocalClient to PyRel V1?
26
+ from v0.relationalai.clients.local import LocalClient # type: ignore[import-not-found]
27
+
28
+ if self._cached_session is None:
29
+ self._cached_session = LocalClient(host=self.host, port=self.port).http_session
30
+
31
+ return self._cached_session
@@ -71,7 +71,6 @@ class UsernamePasswordAuth(SnowflakeConnectionBase):
71
71
  "password": cast(SecretStr, self.password).get_secret_value(),
72
72
  "account": self.account,
73
73
  "warehouse": self.warehouse,
74
- "authenticator": self.authenticator,
75
74
  }
76
75
 
77
76
 
@@ -0,0 +1,235 @@
1
+ """
2
+ Converter for deprecated raiconfig.toml to RAI Config format.
3
+ """
4
+
5
+ from __future__ import annotations
6
+
7
+ from typing import Any
8
+
9
+ from .raiconfig_models import RAIConfigFile, RAIConfigSnowflakeProfile, RAIConfigLocalProfile
10
+
11
+
12
+ # Central field mapping configuration
13
+ # Format: "old_field_name": ("new_section", "new_field_name")
14
+ # where section=None means top-level field
15
+ FIELD_MAPPINGS = {
16
+ # Top-level fields (stay at top level)
17
+ "use_graph_index": (None, "use_graph_index"),
18
+ "use_direct_access": (None, "use_direct_access"),
19
+ "enable_otel_handler": (None, "enable_otel_handler"),
20
+ "use_package_manager": (None, "use_package_manager"),
21
+ "reuse_model": (None, "reuse_model"),
22
+ "skip_invalid_data": (None, "skip_invalid_data"),
23
+
24
+ # Engine fields
25
+ "engine": ("engine", "name"),
26
+ "engine_size": ("engine", "size"),
27
+ "auto_suspend_mins": ("engine", "auto_suspend_mins"),
28
+
29
+ # Data fields
30
+ "wait_for_stream_sync": ("data", "wait_for_stream_sync"),
31
+ "ensure_change_tracking": ("data", "ensure_change_tracking"),
32
+ "data_freshness_mins": ("data", "data_freshness_mins"),
33
+ "query_timeout_mins": ("data", "query_timeout_mins"),
34
+ "download_url_type": ("data", "download_url_type"),
35
+
36
+ # Debug fields
37
+ "debug": ("debug", "enabled"), # Note: maps to "enabled"!
38
+ "show_full_traces": ("debug", "show_full_traces"),
39
+
40
+ # Compiler fields
41
+ "use_monotype_operators": ("compiler", "use_monotype_operators"),
42
+ "show_corerel_errors": ("compiler", "show_corerel_errors"),
43
+ "dry_run": ("compiler", "dry_run"),
44
+ "inspect_df": ("compiler", "inspect_df"),
45
+ "use_value_types": ("compiler", "use_value_types"),
46
+ "debug_hidden_keys": ("compiler", "debug_hidden_keys"),
47
+ "wide_outputs": ("compiler", "wide_outputs"),
48
+ "strict": ("compiler", "strict"),
49
+ "use_inlined_intermediates": ("compiler", "use_inlined_intermediates"),
50
+ "inline_value_maps": ("compiler", "inline_value_maps"),
51
+ "inline_entity_maps": ("compiler", "inline_entity_maps"),
52
+
53
+ # Model fields
54
+ "keep": ("model", "keep"),
55
+ "isolated": ("model", "isolated"),
56
+ "nowait_durable": ("model", "nowait_durable"),
57
+ }
58
+
59
+ # Connection fields (stay in connection dict)
60
+ CONNECTION_FIELDS = {
61
+ "account", "warehouse", "user", "password", "role", "database", "schema",
62
+ "authenticator", "rai_app_name", "passcode",
63
+ "private_key_path", "private_key_passphrase", "token",
64
+ }
65
+
66
+ # Old -> New field name mappings for connection fields
67
+ # Old field names from deprecated raiconfig.toml are mapped to new names
68
+ # These are accessed via model_extra in RAIConfigSnowflakeProfile.convert()
69
+ CONNECTION_FIELD_MAPPINGS = {
70
+ "private_key_file": "private_key_path",
71
+ "private_key_file_pwd": "private_key_passphrase",
72
+ "token_file_path": "token",
73
+ }
74
+
75
+
76
+ def map_fields_to_nested_structure(merged: dict[str, Any]) -> dict[str, Any]:
77
+ """
78
+ Map flat config fields to nested structure using FIELD_MAPPINGS.
79
+
80
+ This replaces all the manual if statements!
81
+
82
+ Args:
83
+ merged: Flat dictionary with all config fields
84
+
85
+ Returns:
86
+ Nested dictionary structured according to new config format
87
+ """
88
+ result = {}
89
+ nested_sections = {} # Collect fields for each section
90
+
91
+ for old_field, (section, new_field) in FIELD_MAPPINGS.items():
92
+ if old_field not in merged or merged[old_field] is None:
93
+ continue # Skip missing or None values
94
+
95
+ value = merged[old_field]
96
+
97
+ if section is None:
98
+ # Top-level field
99
+ result[new_field] = value
100
+ else:
101
+ # Nested section field
102
+ if section not in nested_sections:
103
+ nested_sections[section] = {}
104
+ nested_sections[section][new_field] = value
105
+
106
+ # Add nested sections to result
107
+ for section, fields in nested_sections.items():
108
+ if fields: # Only add non-empty sections
109
+ result[section] = fields
110
+
111
+ return result
112
+
113
+
114
+ def merge_profile_with_toplevel(
115
+ config_file: RAIConfigFile,
116
+ profile: RAIConfigSnowflakeProfile | RAIConfigLocalProfile
117
+ ) -> dict[str, Any]:
118
+ """
119
+ Merge profile over top-level config (profile takes precedence).
120
+
121
+ This matches the v0 behavior where profile-specific settings override
122
+ global defaults.
123
+ """
124
+ # Start with top-level config
125
+ merged = config_file.model_dump(
126
+ exclude={"profile", "active_profile"},
127
+ exclude_none=True
128
+ )
129
+
130
+ # Overlay profile fields (they take precedence)
131
+ profile_dict = profile.model_dump(exclude_none=True)
132
+
133
+ # Merge profile into config (profile overrides top-level)
134
+ merged.update(profile_dict)
135
+
136
+ return merged
137
+
138
+
139
+ def convert_raiconfig_to_rai(
140
+ rai_config: dict[str, Any],
141
+ profile_name: str | None = None
142
+ ) -> dict[str, Any]:
143
+ """
144
+ Convert deprecated raiconfig.toml to new RAI Config format.
145
+
146
+ Flow:
147
+ 1. Validate with RAIConfigFile model
148
+ 2. Select active profile (parameter > active_profile > single profile)
149
+ 3. Merge profile over top-level config (profile takes precedence)
150
+ 4. Extract connection from profile
151
+ 5. Map flat fields to nested structure
152
+
153
+ Args:
154
+ rai_config: Parsed TOML config dict
155
+ profile_name: Profile name to use (overrides active_profile)
156
+
157
+ Returns:
158
+ Dict in new config format ready for RAIConfig model
159
+ """
160
+ config_file = RAIConfigFile(**rai_config)
161
+
162
+ # Profile selection logic
163
+ if not profile_name:
164
+ profile_name = config_file.active_profile
165
+
166
+ # Supported platforms
167
+ supported_platforms = {"snowflake", "local"}
168
+
169
+ # Filter to supported profiles (Snowflake and Local)
170
+ supported_profiles = {
171
+ name: data for name, data in config_file.profile.items()
172
+ if data.get("platform", "snowflake") in supported_platforms
173
+ }
174
+
175
+ if not profile_name and len(supported_profiles) == 1:
176
+ # Auto-select single supported profile
177
+ profile_name = next(iter(supported_profiles.keys()))
178
+
179
+ if not profile_name:
180
+ if not supported_profiles:
181
+ raise ValueError(
182
+ "No supported profiles found in raiconfig.toml. "
183
+ "Supported platforms: snowflake, local. "
184
+ "Please add a supported profile or migrate to raiconfig.yaml."
185
+ )
186
+ raise ValueError(
187
+ f"No profile specified. Either set 'active_profile' in config, "
188
+ f"provide profile_name parameter, or ensure only one supported profile exists. "
189
+ f"Available profiles: {list(supported_profiles.keys())}"
190
+ )
191
+
192
+ if profile_name not in config_file.profile:
193
+ available = list(config_file.profile.keys())
194
+ raise ValueError(
195
+ f"Profile '{profile_name}' not found. Available profiles: {available}"
196
+ )
197
+
198
+ # Get profile data
199
+ profile_data = config_file.profile[profile_name]
200
+ platform = profile_data.get("platform", "snowflake")
201
+
202
+ # Validate and convert based on platform
203
+ if platform == "local":
204
+ profile = RAIConfigLocalProfile(**profile_data)
205
+ connection = profile.convert()
206
+ connection_name = "local"
207
+ elif platform == "snowflake":
208
+ profile = RAIConfigSnowflakeProfile(**profile_data)
209
+ connection = profile.convert()
210
+ connection_name = "snowflake"
211
+ else:
212
+ raise ValueError(
213
+ f"Profile '{profile_name}' uses platform '{platform}'. "
214
+ f"Supported platforms: snowflake, local. "
215
+ f"Please use a supported profile or migrate to raiconfig.yaml."
216
+ )
217
+
218
+ # Merge profile with top-level config
219
+ merged = merge_profile_with_toplevel(config_file, profile)
220
+
221
+ # Build base result
222
+ result = {
223
+ "connections": {connection_name: connection},
224
+ "default_connection": connection_name,
225
+ }
226
+
227
+ # Map all config fields automatically using FIELD_MAPPINGS
228
+ mapped_fields = map_fields_to_nested_structure(merged)
229
+ result.update(mapped_fields)
230
+
231
+ # Handle reasoner separately (nested dict structure)
232
+ if "reasoner" in merged and merged["reasoner"]:
233
+ result["reasoner"] = merged["reasoner"]
234
+
235
+ return result