relationalai 0.11.4__tar.gz → 0.12.0__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 (472) hide show
  1. {relationalai-0.11.4 → relationalai-0.12.0}/PKG-INFO +5 -4
  2. {relationalai-0.11.4 → relationalai-0.12.0}/pyproject.toml +14 -4
  3. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/config.py +7 -0
  4. relationalai-0.12.0/src/relationalai/clients/direct_access_client.py +113 -0
  5. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/snowflake.py +35 -106
  6. relationalai-0.12.0/src/relationalai/early_access/metamodel/rewrite/__init__.py +7 -0
  7. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/rel/rewrite/__init__.py +1 -1
  8. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/errors.py +24 -3
  9. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/internal/annotations.py +1 -0
  10. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/builtins.py +1 -0
  11. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/passes.py +3 -4
  12. {relationalai-0.11.4/src/relationalai/semantics/rel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/__init__.py +6 -0
  13. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/builtins.py +12 -1
  14. relationalai-0.12.0/src/relationalai/semantics/metamodel/rewrite/__init__.py +6 -0
  15. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/core.py +221 -71
  16. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/rel/builtins.py +5 -1
  17. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/rel/compiler.py +3 -3
  18. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/compiler.py +2 -3
  19. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/executor/duck_db.py +8 -4
  20. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/cli.py +11 -4
  21. relationalai-0.11.4/src/relationalai/early_access/metamodel/rewrite/__init__.py +0 -5
  22. relationalai-0.11.4/src/relationalai/semantics/metamodel/rewrite/__init__.py +0 -12
  23. relationalai-0.11.4/src/relationalai/semantics/metamodel/rewrite/gc_nodes.py +0 -58
  24. relationalai-0.11.4/src/relationalai/semantics/metamodel/rewrite/list_types.py +0 -109
  25. {relationalai-0.11.4 → relationalai-0.12.0}/.gitignore +0 -0
  26. {relationalai-0.11.4 → relationalai-0.12.0}/LICENSE +0 -0
  27. {relationalai-0.11.4 → relationalai-0.12.0}/docs/pypi/README.md +0 -0
  28. {relationalai-0.11.4 → relationalai-0.12.0}/frontend/debugger/dist/.gitignore +0 -0
  29. {relationalai-0.11.4 → relationalai-0.12.0}/frontend/debugger/dist/assets/favicon-Dy0ZgA6N.png +0 -0
  30. {relationalai-0.11.4 → relationalai-0.12.0}/frontend/debugger/dist/assets/index-Cssla-O7.js +0 -0
  31. {relationalai-0.11.4 → relationalai-0.12.0}/frontend/debugger/dist/assets/index-DlHsYx1V.css +0 -0
  32. {relationalai-0.11.4 → relationalai-0.12.0}/frontend/debugger/dist/index.html +0 -0
  33. {relationalai-0.11.4 → relationalai-0.12.0}/src/__init__.py +0 -0
  34. {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/__init__.py +0 -0
  35. {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/events/__init__.py +0 -0
  36. {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/procedures/__init__.py +0 -0
  37. {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/procedures/procedure.py +0 -0
  38. {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/rel/__init__.py +0 -0
  39. {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/tables/__init__.py +0 -0
  40. {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/tasks/__init__.py +0 -0
  41. {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/tasks/task.py +0 -0
  42. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/__init__.py +0 -0
  43. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/analysis/__init__.py +0 -0
  44. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/analysis/mechanistic.py +0 -0
  45. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/analysis/whynot.py +0 -0
  46. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/auth/__init__.py +0 -0
  47. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/auth/jwt_generator.py +0 -0
  48. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/auth/oauth_callback_server.py +0 -0
  49. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/auth/token_handler.py +0 -0
  50. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/auth/util.py +0 -0
  51. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/__init__.py +0 -0
  52. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/azure.py +0 -0
  53. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/cache_store.py +0 -0
  54. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/client.py +0 -0
  55. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/export_procedure.py.jinja +0 -0
  56. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/hash_util.py +0 -0
  57. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/profile_polling.py +0 -0
  58. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/result_helpers.py +0 -0
  59. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/types.py +0 -0
  60. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/use_index_poller.py +0 -0
  61. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/util.py +0 -0
  62. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/compiler.py +0 -0
  63. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/debugging.py +0 -0
  64. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/dependencies.py +0 -0
  65. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/docutils.py +0 -0
  66. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/dsl.py +0 -0
  67. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/__init__.py +0 -0
  68. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/__init__.py +0 -0
  69. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/builder/__init__.py +0 -0
  70. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/snowflake/__init__.py +0 -0
  71. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/std/__init__.py +0 -0
  72. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/std/decimals/__init__.py +0 -0
  73. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/std/integers/__init__.py +0 -0
  74. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/std/math/__init__.py +0 -0
  75. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/std/strings/__init__.py +0 -0
  76. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/devtools/__init__.py +0 -0
  77. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/devtools/benchmark_lqp/__init__.py +0 -0
  78. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/devtools/extract_lqp/__init__.py +0 -0
  79. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/__init__.py +0 -0
  80. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/__init__.py +0 -0
  81. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/orm/__init__.py +0 -0
  82. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/orm/adapter_qb.py +0 -0
  83. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/orm/model.py +0 -0
  84. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/orm/parser.py +0 -0
  85. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/owl/__init__.py +0 -0
  86. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/owl/adapter.py +0 -0
  87. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/owl/model.py +0 -0
  88. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/owl/parser.py +0 -0
  89. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/bindings/__init__.py +0 -0
  90. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/bindings/common.py +0 -0
  91. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/bindings/csv.py +0 -0
  92. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/bindings/legacy/__init__.py +0 -0
  93. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/bindings/legacy/binding_models.py +0 -0
  94. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/bindings/snowflake.py +0 -0
  95. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/codegen/__init__.py +0 -0
  96. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/codegen/binder.py +0 -0
  97. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/codegen/common.py +0 -0
  98. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/codegen/helpers.py +0 -0
  99. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/codegen/relations.py +0 -0
  100. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/codegen/weaver.py +0 -0
  101. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/constants.py +0 -0
  102. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/__init__.py +0 -0
  103. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/builders/__init__.py +0 -0
  104. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/builders/logic.py +0 -0
  105. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/builders/scalar_constraint.py +0 -0
  106. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/constraints/__init__.py +0 -0
  107. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/constraints/predicate/__init__.py +0 -0
  108. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/constraints/predicate/atomic.py +0 -0
  109. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/constraints/predicate/universal.py +0 -0
  110. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/constraints/scalar.py +0 -0
  111. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/context.py +0 -0
  112. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/cset.py +0 -0
  113. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/exprs/__init__.py +0 -0
  114. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/exprs/relational.py +0 -0
  115. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/exprs/scalar.py +0 -0
  116. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/instances.py +0 -0
  117. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/logic/__init__.py +0 -0
  118. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/logic/aggregation.py +0 -0
  119. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/logic/exists.py +0 -0
  120. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/logic/helper.py +0 -0
  121. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/namespaces.py +0 -0
  122. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/relations.py +0 -0
  123. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/rules.py +0 -0
  124. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/stack.py +0 -0
  125. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/std/__init__.py +0 -0
  126. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/temporal/__init__.py +0 -0
  127. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/temporal/recall.py +0 -0
  128. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/__init__.py +0 -0
  129. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/concepts.py +0 -0
  130. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/constrained/__init__.py +0 -0
  131. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/constrained/nominal.py +0 -0
  132. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/constrained/subtype.py +0 -0
  133. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/standard.py +0 -0
  134. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/unconstrained.py +0 -0
  135. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/variables.py +0 -0
  136. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/utils.py +0 -0
  137. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ir/__init__.py +0 -0
  138. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ir/compiler.py +0 -0
  139. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ir/executor.py +0 -0
  140. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/__init__.py +0 -0
  141. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/constraints.py +0 -0
  142. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/export.py +0 -0
  143. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/models.py +0 -0
  144. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/python_printer.py +0 -0
  145. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/raw_source.py +0 -0
  146. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/readings.py +0 -0
  147. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/relationships.py +0 -0
  148. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/roles.py +0 -0
  149. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/subtyping.py +0 -0
  150. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/__init__.py +0 -0
  151. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/constraints.py +0 -0
  152. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/measures/__init__.py +0 -0
  153. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/measures/dimensions.py +0 -0
  154. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/measures/initializer.py +0 -0
  155. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/measures/measure_rules.py +0 -0
  156. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/measures/measures.py +0 -0
  157. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/measures/role_exprs.py +0 -0
  158. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/models.py +0 -0
  159. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/object_oriented_printer.py +0 -0
  160. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/printer.py +0 -0
  161. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/reasoner_errors.py +0 -0
  162. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/reasoners.py +0 -0
  163. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/relations.py +0 -0
  164. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/relationships.py +0 -0
  165. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/types.py +0 -0
  166. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/utils.py +0 -0
  167. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/verb.py +0 -0
  168. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/physical_metadata/__init__.py +0 -0
  169. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/physical_metadata/tables.py +0 -0
  170. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/relations.py +0 -0
  171. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/rulesets.py +0 -0
  172. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/__init__.py +0 -0
  173. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/builder.py +0 -0
  174. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/comp_names.py +0 -0
  175. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/components.py +0 -0
  176. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/contexts.py +0 -0
  177. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/exprs.py +0 -0
  178. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/fragments.py +0 -0
  179. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/serialization.py +0 -0
  180. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/serialize/__init__.py +0 -0
  181. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/serialize/binding_model.py +0 -0
  182. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/serialize/exporter.py +0 -0
  183. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/serialize/model.py +0 -0
  184. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/snow/__init__.py +0 -0
  185. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/snow/api.py +0 -0
  186. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/snow/common.py +0 -0
  187. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/state_mgmt/__init__.py +0 -0
  188. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/state_mgmt/state_charts.py +0 -0
  189. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/state_mgmt/transitions.py +0 -0
  190. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/types/__init__.py +0 -0
  191. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/types/concepts.py +0 -0
  192. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/types/entities.py +0 -0
  193. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/types/values.py +0 -0
  194. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/utils.py +0 -0
  195. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/graphs/__init__.py +0 -0
  196. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/__init__.py +0 -0
  197. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/compiler/__init__.py +0 -0
  198. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/constructors/__init__.py +0 -0
  199. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/executor/__init__.py +0 -0
  200. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/ir/__init__.py +0 -0
  201. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/passes/__init__.py +0 -0
  202. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/pragmas/__init__.py +0 -0
  203. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/primitives/__init__.py +0 -0
  204. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/types/__init__.py +0 -0
  205. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/utils/__init__.py +0 -0
  206. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/validators/__init__.py +0 -0
  207. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/__init__.py +0 -0
  208. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/builtins/__init__.py +0 -0
  209. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/compiler/__init__.py +0 -0
  210. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/dependency/__init__.py +0 -0
  211. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/factory/__init__.py +0 -0
  212. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/helpers/__init__.py +0 -0
  213. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/ir/__init__.py +0 -0
  214. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/typer/__init__.py +0 -0
  215. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/typer/typer/__init__.py +0 -0
  216. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/types/__init__.py +0 -0
  217. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/util/__init__.py +0 -0
  218. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/visitor/__init__.py +0 -0
  219. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/__init__.py +0 -0
  220. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/api/__init__.py +0 -0
  221. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/benchmarks/__init__.py +0 -0
  222. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/graph/__init__.py +0 -0
  223. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/__init__.py +0 -0
  224. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/find_paths/__init__.py +0 -0
  225. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/one_sided_ball_repetition/__init__.py +0 -0
  226. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/one_sided_ball_upto/__init__.py +0 -0
  227. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/single/__init__.py +0 -0
  228. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/two_sided_balls_repetition/__init__.py +0 -0
  229. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/two_sided_balls_upto/__init__.py +0 -0
  230. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/usp/__init__.py +0 -0
  231. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/rpq/__init__.py +0 -0
  232. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/utilities/__init__.py +0 -0
  233. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/utilities/iterators/__init__.py +0 -0
  234. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/rel/__init__.py +0 -0
  235. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/rel/executor/__init__.py +0 -0
  236. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/rel/rel_utils/__init__.py +0 -0
  237. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/solvers/__init__.py +0 -0
  238. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/sql/__init__.py +0 -0
  239. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/sql/executor/__init__.py +0 -0
  240. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/sql/rewrite/__init__.py +0 -0
  241. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/tests/__init__.py +0 -0
  242. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/tests/logging/__init__.py +0 -0
  243. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/tests/test_snapshot_base/__init__.py +0 -0
  244. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/tests/utils/__init__.py +0 -0
  245. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/__init__.py +0 -0
  246. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/base.py +0 -0
  247. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/ci.py +0 -0
  248. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/colab.py +0 -0
  249. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/generic.py +0 -0
  250. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/hex.py +0 -0
  251. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/ipython.py +0 -0
  252. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/jupyter.py +0 -0
  253. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/snowbook.py +0 -0
  254. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/terminal.py +0 -0
  255. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/SF.py +0 -0
  256. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/__init__.py +0 -0
  257. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/graphs.py +0 -0
  258. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/inspect.py +0 -0
  259. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/__init__.py +0 -0
  260. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/api.py +0 -0
  261. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/automaton.py +0 -0
  262. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/bridge.py +0 -0
  263. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/compiler.py +0 -0
  264. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/datalog.py +0 -0
  265. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/diagnostics.py +0 -0
  266. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/filter.py +0 -0
  267. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/glushkov.py +0 -0
  268. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/options.py +0 -0
  269. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/pathfinder-v0.7.0.rel +0 -0
  270. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/rpq.py +0 -0
  271. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/transition.py +0 -0
  272. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/utils.py +0 -0
  273. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/paths/__init__.py +0 -0
  274. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/paths/pathfinder.rel +0 -0
  275. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/paths/tree_agg.py +0 -0
  276. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/solvers.py +0 -0
  277. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/loaders/__init__.py +0 -0
  278. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/loaders/csv.py +0 -0
  279. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/loaders/loader.py +0 -0
  280. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/loaders/types.py +0 -0
  281. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/metagen.py +0 -0
  282. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/metamodel.py +0 -0
  283. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/rel.py +0 -0
  284. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/rel_emitter.py +0 -0
  285. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/rel_utils.py +0 -0
  286. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/__init__.py +0 -0
  287. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/designs/query_builder/identify_by.md +0 -0
  288. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/devtools/__init__.py +0 -0
  289. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/devtools/benchmark_lqp.py +0 -0
  290. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/devtools/compilation_manager.py +0 -0
  291. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/devtools/extract_lqp.py +0 -0
  292. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/internal/__init__.py +0 -0
  293. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/internal/internal.py +0 -0
  294. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/internal/snowflake.py +0 -0
  295. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/__init__.py +0 -0
  296. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/compiler.py +0 -0
  297. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/constructors.py +0 -0
  298. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/executor.py +0 -0
  299. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/intrinsics.py +0 -0
  300. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/ir.py +0 -0
  301. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/model2lqp.py +0 -0
  302. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/pragmas.py +0 -0
  303. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/primitives.py +0 -0
  304. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/result_helpers.py +0 -0
  305. {relationalai-0.11.4/src/relationalai/semantics/rel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/cdc.py +0 -0
  306. {relationalai-0.11.4/src/relationalai/semantics/rel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/extract_common.py +0 -0
  307. {relationalai-0.11.4/src/relationalai/semantics/metamodel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/extract_keys.py +0 -0
  308. {relationalai-0.11.4/src/relationalai/semantics/metamodel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/fd_constraints.py +0 -0
  309. {relationalai-0.11.4/src/relationalai/semantics/rel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/quantify_vars.py +0 -0
  310. {relationalai-0.11.4/src/relationalai/semantics/metamodel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/splinter.py +0 -0
  311. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/types.py +0 -0
  312. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/utils.py +0 -0
  313. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/validators.py +0 -0
  314. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/__init__.py +0 -0
  315. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/compiler.py +0 -0
  316. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/dataflow.py +0 -0
  317. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/dependency.py +0 -0
  318. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/executor.py +0 -0
  319. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/factory.py +0 -0
  320. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/helpers.py +0 -0
  321. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/ir.py +0 -0
  322. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/rewrite/discharge_constraints.py +0 -0
  323. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +0 -0
  324. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py +0 -0
  325. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/rewrite/flatten.py +0 -0
  326. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/typer/__init__.py +0 -0
  327. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/typer/checker.py +0 -0
  328. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/typer/typer.py +0 -0
  329. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/types.py +0 -0
  330. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/util.py +0 -0
  331. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/visitor.py +0 -0
  332. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/__init__.py +0 -0
  333. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/README.md +0 -0
  334. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/__init__.py +0 -0
  335. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/design/beyond_demand_transform.md +0 -0
  336. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/README.md +0 -0
  337. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/__init__.py +0 -0
  338. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/api.py +0 -0
  339. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/benchmarks/__init__.py +0 -0
  340. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/benchmarks/grid_graph.py +0 -0
  341. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/code_organization.md +0 -0
  342. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/Movies.ipynb +0 -0
  343. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/basic_example.py +0 -0
  344. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/minimal_engine_warmup.py +0 -0
  345. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movie_example.py +0 -0
  346. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/actedin.csv +0 -0
  347. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/directed.csv +0 -0
  348. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/follows.csv +0 -0
  349. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/movies.csv +0 -0
  350. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/person.csv +0 -0
  351. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/produced.csv +0 -0
  352. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/ratings.csv +0 -0
  353. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/wrote.csv +0 -0
  354. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/paths_benchmark.py +0 -0
  355. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/paths_example.py +0 -0
  356. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/pattern_to_automaton.py +0 -0
  357. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/find_paths_via_automaton.py +0 -0
  358. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/graph.py +0 -0
  359. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/__init__.py +0 -0
  360. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/find_paths.py +0 -0
  361. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/one_sided_ball_repetition.py +0 -0
  362. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/one_sided_ball_upto.py +0 -0
  363. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/single.py +0 -0
  364. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/two_sided_balls_repetition.py +0 -0
  365. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/two_sided_balls_upto.py +0 -0
  366. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/usp-old.py +0 -0
  367. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/usp-tuple.py +0 -0
  368. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/usp.py +0 -0
  369. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/product_graph.py +0 -0
  370. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/__init__.py +0 -0
  371. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/automaton.py +0 -0
  372. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/diagnostics.py +0 -0
  373. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/filter.py +0 -0
  374. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/glushkov.py +0 -0
  375. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/rpq.py +0 -0
  376. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/transition.py +0 -0
  377. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_sp_max_length.py +0 -0
  378. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_sp_multiple.py +0 -0
  379. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_sp_single.py +0 -0
  380. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_walks_multiple.py +0 -0
  381. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_walks_single.py +0 -0
  382. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_one_sided_ball_repetition_multiple.py +0 -0
  383. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_one_sided_ball_repetition_single.py +0 -0
  384. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_one_sided_ball_upto_multiple.py +0 -0
  385. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_one_sided_ball_upto_single.py +0 -0
  386. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_single_paths.py +0 -0
  387. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_single_walks.py +0 -0
  388. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_single_walks_undirected.py +0 -0
  389. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_two_sided_balls_repetition_multiple.py +0 -0
  390. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_two_sided_balls_repetition_single.py +0 -0
  391. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_two_sided_balls_upto_multiple.py +0 -0
  392. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_two_sided_balls_upto_single.py +0 -0
  393. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_usp_nsp_multiple.py +0 -0
  394. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_usp_nsp_single.py +0 -0
  395. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/utilities/__init__.py +0 -0
  396. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/utilities/iterators.py +0 -0
  397. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/utilities/prefix_sum.py +0 -0
  398. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/utilities/utilities.py +0 -0
  399. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/tests/README.md +0 -0
  400. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/optimization/__init__.py +0 -0
  401. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/optimization/common.py +0 -0
  402. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/optimization/solvers_dev.py +0 -0
  403. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/optimization/solvers_pb.py +0 -0
  404. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/rel/__init__.py +0 -0
  405. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/rel/executor.py +0 -0
  406. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/rel/rel.py +0 -0
  407. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/rel/rel_utils.py +0 -0
  408. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/snowflake/__init__.py +0 -0
  409. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/__init__.py +0 -0
  410. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/executor/__init__.py +0 -0
  411. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/executor/result_helpers.py +0 -0
  412. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/executor/snowflake.py +0 -0
  413. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/rewrite/__init__.py +0 -0
  414. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/rewrite/denormalize.py +0 -0
  415. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/rewrite/double_negation.py +0 -0
  416. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/rewrite/recursive_union.py +0 -0
  417. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/rewrite/sort_output_query.py +0 -0
  418. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/sql.py +0 -0
  419. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/__init__.py +0 -0
  420. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/constraints.py +0 -0
  421. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/datetime.py +0 -0
  422. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/decimals.py +0 -0
  423. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/floats.py +0 -0
  424. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/integers.py +0 -0
  425. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/math.py +0 -0
  426. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/pragmas.py +0 -0
  427. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/re.py +0 -0
  428. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/std.py +0 -0
  429. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/strings.py +0 -0
  430. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/tests/__init__.py +0 -0
  431. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/tests/logging.py +0 -0
  432. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/tests/test_snapshot_abstract.py +0 -0
  433. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/tests/test_snapshot_base.py +0 -0
  434. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/tests/utils.py +0 -0
  435. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/__init__.py +0 -0
  436. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/aggregates.py +0 -0
  437. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/dates.py +0 -0
  438. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/graphs.py +0 -0
  439. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/inspect.py +0 -0
  440. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/math.py +0 -0
  441. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/re.py +0 -0
  442. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/strings.py +0 -0
  443. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/__init__.py +0 -0
  444. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/cleanup_snapshots.py +0 -0
  445. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/cli_controls.py +0 -0
  446. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/cli_helpers.py +0 -0
  447. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/constants.py +0 -0
  448. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/debugger.py +0 -0
  449. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/debugger_client.py +0 -0
  450. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/debugger_server.py +0 -0
  451. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/dev.py +0 -0
  452. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/notes +0 -0
  453. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/qb_debugger.py +0 -0
  454. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/snapshot_viewer.py +0 -0
  455. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/__init__.py +0 -0
  456. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/clean_up_databases.py +0 -0
  457. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/constants.py +0 -0
  458. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/format.py +0 -0
  459. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/graph.py +0 -0
  460. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/list_databases.py +0 -0
  461. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/otel_configuration.py +0 -0
  462. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/otel_handler.py +0 -0
  463. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/snowflake_handler.py +0 -0
  464. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/span_format_test.py +0 -0
  465. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/span_tracker.py +0 -0
  466. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/spans_file_handler.py +0 -0
  467. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/timeout.py +0 -0
  468. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/tracing_handler.py +0 -0
  469. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai_test_util/__init__.py +0 -0
  470. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai_test_util/fixtures.py +0 -0
  471. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai_test_util/snapshot.py +0 -0
  472. {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai_test_util/traceback.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: relationalai
3
- Version: 0.11.4
3
+ Version: 0.12.0
4
4
  Summary: RelationalAI Library and CLI
5
5
  Author-email: RelationalAI <support@relational.ai>
6
6
  License-File: LICENSE
7
- Requires-Python: >=3.9
7
+ Requires-Python: >=3.10
8
8
  Requires-Dist: aiohttp
9
- Requires-Dist: click<=8.1.8
9
+ Requires-Dist: click==8.2.1
10
10
  Requires-Dist: colorama
11
11
  Requires-Dist: cryptography
12
12
  Requires-Dist: gravis
@@ -21,7 +21,6 @@ Requires-Dist: packaging
21
21
  Requires-Dist: pandas
22
22
  Requires-Dist: pyarrow
23
23
  Requires-Dist: pyjwt
24
- Requires-Dist: rai-sdk>=0.7.5
25
24
  Requires-Dist: requests
26
25
  Requires-Dist: rich
27
26
  Requires-Dist: snowflake-connector-python[secure-local-storage]
@@ -64,6 +63,8 @@ Requires-Dist: parameterized; extra == 'ea'
64
63
  Requires-Dist: pysmt; extra == 'ea'
65
64
  Requires-Dist: simple-ddl-parser; extra == 'ea'
66
65
  Requires-Dist: xmltodict; extra == 'ea'
66
+ Provides-Extra: legacy
67
+ Requires-Dist: rai-sdk>=0.7.5; extra == 'legacy'
67
68
  Description-Content-Type: text/markdown
68
69
 
69
70
  # The RelationalAI Python Library
@@ -1,17 +1,16 @@
1
1
  [project]
2
2
  name = 'relationalai'
3
- version = '0.11.4'
3
+ version = '0.12.0'
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.9"
9
+ requires-python = ">= 3.10"
10
10
  dependencies = [
11
11
  "lqp==0.1.16",
12
12
  "snowflake-connector-python[secure-local-storage]",
13
13
  "snowflake-snowpark-python>=1.38.0",
14
- "rai-sdk>=0.7.5",
15
14
  "typing-extensions",
16
15
  "rich",
17
16
  "nicegui==2.16.1",
@@ -19,7 +18,7 @@ dependencies = [
19
18
  "pandas",
20
19
  "colorama",
21
20
  "inquirerpy",
22
- "click<=8.1.8",
21
+ "click==8.2.1",
23
22
  "gravis",
24
23
  "toml",
25
24
  "tomlkit",
@@ -71,6 +70,9 @@ ea = [
71
70
  "owlready2",
72
71
  "xmltodict"
73
72
  ]
73
+ legacy = [
74
+ "rai-sdk>=0.7.5"
75
+ ]
74
76
 
75
77
  [project.scripts]
76
78
  rai = "relationalai.tools.cli:cli"
@@ -101,6 +103,14 @@ packages = ["src/relationalai", "src/relationalai_test_util"]
101
103
  [tool.hatch.build.targets.wheel.force-include]
102
104
  "frontend/debugger/dist" = "frontend/debugger/dist"
103
105
 
106
+ [tool.pytest.ini_options]
107
+ testpaths = ["tests"]
108
+ markers = [
109
+ "azure: marks tests as requiring Azure/railib (deselect with '-m \"not azure\"')",
110
+ ]
111
+ # Exclude Azure tests by default
112
+ addopts = "-m 'not azure'"
113
+
104
114
  [tool.pyright]
105
115
  include = ["src", "tests"]
106
116
  exclude = ["**/node_modules", "**/__pycache__", "**/.*", "**/test_cases/*", "src/relationalai/metagen.py", "src/gentest",
@@ -468,6 +468,13 @@ class Config():
468
468
  if not self.file_path:
469
469
  self.file_path = "__inline__"
470
470
  self._handle_snowflake_fallback_configurations()
471
+ # Check if Azure platform is being used without the legacy dependency
472
+ if self.get("platform", "") == "azure":
473
+ try:
474
+ import railib # noqa
475
+ except ImportError:
476
+ from relationalai.errors import AzureLegacyDependencyMissingException
477
+ raise AzureLegacyDependencyMissingException() from None
471
478
 
472
479
  def fetch(self, profile:str|None=None):
473
480
  from relationalai.environments import runtime_env, TerminalEnvironment
@@ -0,0 +1,113 @@
1
+ from __future__ import annotations
2
+
3
+ import requests
4
+ from dataclasses import dataclass
5
+ from urllib.parse import urlencode, quote
6
+ from requests.adapters import HTTPAdapter
7
+ from urllib3.util.retry import Retry
8
+ from typing import Any, Dict, Optional, Tuple
9
+
10
+ from relationalai.auth.token_handler import TokenHandler
11
+ from relationalai.clients.config import Config
12
+ from relationalai.clients.util import get_pyrel_version
13
+ from relationalai import debugging
14
+ from relationalai.tools.constants import Generation
15
+ from relationalai.environments import runtime_env, SnowbookEnvironment
16
+
17
+ @dataclass
18
+ class Endpoint:
19
+ method: str
20
+ endpoint: str
21
+
22
+ class DirectAccessClient:
23
+ """
24
+ DirectAccessClient is a client for direct service access without service function calls.
25
+ """
26
+
27
+ def __init__(self, config: Config, token_handler: TokenHandler, service_endpoint: str, generation: Optional[Generation] = None):
28
+ self._config: Config = config
29
+ self._token_handler: TokenHandler = token_handler
30
+ self.service_endpoint: str = service_endpoint
31
+ self.generation: Optional[Generation] = generation
32
+ self._is_snowflake_notebook = isinstance(runtime_env, SnowbookEnvironment)
33
+ self.endpoints: Dict[str, Endpoint] = {
34
+ "create_txn": Endpoint(method="POST", endpoint="/v1alpha1/transactions"),
35
+ "get_txn": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}"),
36
+ "get_txn_artifacts": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}/artifacts"),
37
+ "get_txn_problems": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}/problems"),
38
+ "get_txn_events": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}/events/{stream_name}"),
39
+ "get_package_versions": Endpoint(method="GET", endpoint="/v1alpha1/databases/{db_name}/package_versions"),
40
+ "get_model_package_versions": Endpoint(method="POST", endpoint="/v1alpha1/models/get_package_versions"),
41
+ "create_db": Endpoint(method="POST", endpoint="/v1alpha1/databases"),
42
+ "get_db": Endpoint(method="GET", endpoint="/v1alpha1/databases"),
43
+ "delete_db": Endpoint(method="DELETE", endpoint="/v1alpha1/databases/{db_name}"),
44
+ "release_index": Endpoint(method="POST", endpoint="/v1alpha1/index/release"),
45
+ "list_engines": Endpoint(method="GET", endpoint="/v1alpha1/engines"),
46
+ "get_engine": Endpoint(method="GET", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}"),
47
+ "create_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}"),
48
+ "delete_engine": Endpoint(method="DELETE", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}"),
49
+ "suspend_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}/suspend"),
50
+ "resume_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}/resume_async"),
51
+ "prepare_index": Endpoint(method="POST", endpoint="/v1alpha1/index/prepare"),
52
+ }
53
+ self.http_session = self._create_retry_session()
54
+
55
+ def _create_retry_session(self) -> requests.Session:
56
+ http_session = requests.Session()
57
+ retries = Retry(
58
+ total=3,
59
+ backoff_factor=0.3,
60
+ status_forcelist=[500, 502, 503, 504],
61
+ allowed_methods=frozenset({"GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS", "HEAD"}),
62
+ raise_on_status=False
63
+ )
64
+ adapter = HTTPAdapter(max_retries=retries)
65
+ http_session.mount("http://", adapter)
66
+ http_session.mount("https://", adapter)
67
+ http_session.headers.update({"Connection": "keep-alive"})
68
+ return http_session
69
+
70
+ def request(
71
+ self,
72
+ endpoint: str,
73
+ payload: Dict[str, Any] | None = None,
74
+ headers: Dict[str, str] | None = None,
75
+ path_params: Dict[str, str] | None = None,
76
+ query_params: Dict[str, str] | None = None,
77
+ ) -> requests.Response:
78
+ """
79
+ Send a request to the service endpoint.
80
+ """
81
+ url, method = self._prepare_url(endpoint, path_params, query_params)
82
+ request_headers = self._prepare_headers(headers)
83
+ return self.http_session.request(method, url, json=payload, headers=request_headers)
84
+
85
+ def _prepare_url(self, endpoint: str, path_params: Dict[str, str] | None = None, query_params: Dict[str, str] | None = None) -> Tuple[str, str]:
86
+ try:
87
+ ep = self.endpoints[endpoint]
88
+ except KeyError:
89
+ raise ValueError(f"Invalid endpoint: {endpoint}. Available endpoints: {list(self.endpoints.keys())}")
90
+ url = f"{self.service_endpoint}{ep.endpoint}"
91
+ if path_params:
92
+ escaped_path_params = {k: quote(v, safe='') for k, v in path_params.items()}
93
+ url = url.format(**escaped_path_params)
94
+ if query_params:
95
+ url += '?' + urlencode(query_params)
96
+ return url, ep.method
97
+
98
+ def _prepare_headers(self, headers: Dict[str, str] | None) -> Dict[str, str]:
99
+ request_headers = {}
100
+ if headers:
101
+ request_headers.update(headers)
102
+ # Authorization tokens are not needed in a snowflake notebook environment
103
+ if not self._is_snowflake_notebook:
104
+ request_headers["Authorization"] = f'Snowflake Token="{self._token_handler.get_ingress_token(self.service_endpoint)}"'
105
+ # needed for oauth, does no harm for other authentication methods
106
+ request_headers["X-SF-SPCS-Authentication-Method"] = 'OAUTH'
107
+ request_headers["Content-Type"] = 'application/x-www-form-urlencoded'
108
+ request_headers["Accept"] = "application/json"
109
+
110
+ request_headers["user-agent"] = get_pyrel_version(self.generation)
111
+ request_headers["pyrel_program_id"] = debugging.get_program_span_id() or ""
112
+
113
+ return debugging.add_current_propagation_headers(request_headers)
@@ -28,15 +28,11 @@ import requests
28
28
  import snowflake.connector
29
29
  import pyarrow as pa
30
30
 
31
- from dataclasses import dataclass
32
31
  from snowflake.snowpark import Session
33
32
  from snowflake.snowpark.context import get_active_session
34
33
  from . import result_helpers
35
34
  from .. import debugging
36
35
  from typing import Any, Dict, Iterable, Optional, Tuple, List, Literal, Union, cast
37
- from urllib.parse import urlencode, quote
38
- from requests.adapters import HTTPAdapter
39
- from urllib3.util.retry import Retry
40
36
 
41
37
  from pandas import DataFrame
42
38
 
@@ -44,10 +40,11 @@ from ..tools.cli_controls import Spinner
44
40
  from ..clients.types import AvailableModel, EngineState, Import, ImportSource, ImportSourceTable, ImportsStatus, SourceInfo, TransactionAsyncResponse
45
41
  from ..clients.config import Config, ConfigStore, ENDPOINT_FILE
46
42
  from ..clients.client import Client, ExportParams, ProviderBase, ResourcesBase
43
+ from ..clients.direct_access_client import DirectAccessClient
47
44
  from ..clients.util import IdentityParser, escape_for_f_string, get_pyrel_version, get_with_retries, poll_with_specified_overhead, safe_json_loads, sanitize_module_name, scrub_exception, wrap_with_request_id, ms_to_timestamp
48
45
  from ..environments import runtime_env, HexEnvironment, SnowbookEnvironment
49
46
  from .. import dsl, rel, metamodel as m
50
- from ..errors import DuoSecurityFailed, EngineProvisioningFailed, EngineNameValidationException, EngineNotFoundException, EnginePending, EngineSizeMismatchWarning, EngineResumeFailed, Errors, InvalidAliasError, InvalidEngineSizeError, InvalidSourceTypeWarning, RAIAbortedTransactionError, RAIException, HexSessionException, SnowflakeAppMissingException, SnowflakeChangeTrackingNotEnabledException, SnowflakeDatabaseException, SnowflakeImportMissingException, SnowflakeInvalidSource, SnowflakeMissingConfigValuesException, SnowflakeProxyAPIDeprecationWarning, SnowflakeProxySourceError, SnowflakeRaiAppNotStarted, ModelNotFoundException, UnknownSourceWarning, ResponseStatusException, RowsDroppedFromTargetTableWarning
47
+ from ..errors import DuoSecurityFailed, EngineProvisioningFailed, EngineNameValidationException, EngineNotFoundException, EnginePending, EngineSizeMismatchWarning, EngineResumeFailed, Errors, InvalidAliasError, InvalidEngineSizeError, InvalidSourceTypeWarning, RAIAbortedTransactionError, RAIException, HexSessionException, SnowflakeAppMissingException, SnowflakeChangeTrackingNotEnabledException, SnowflakeDatabaseException, SnowflakeImportMissingException, SnowflakeInvalidSource, SnowflakeMissingConfigValuesException, SnowflakeProxyAPIDeprecationWarning, SnowflakeProxySourceError, SnowflakeRaiAppNotStarted, ModelNotFoundException, UnknownSourceWarning, ResponseStatusException, RowsDroppedFromTargetTableWarning, QueryTimeoutExceededException
51
48
  from concurrent.futures import ThreadPoolExecutor
52
49
  from datetime import datetime, date, timedelta
53
50
  from snowflake.snowpark.types import StringType, StructField, StructType
@@ -92,6 +89,8 @@ TERMINAL_TXN_STATES = ["COMPLETED", "ABORTED"]
92
89
 
93
90
  DUO_TEXT = "duo security"
94
91
 
92
+ TXN_ABORT_REASON_TIMEOUT = "transaction timeout"
93
+
95
94
  #--------------------------------------------------
96
95
  # Helpers
97
96
  #--------------------------------------------------
@@ -1307,7 +1306,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
1307
1306
  response = self._exec(f"CALL {APP_NAME}.api.get_transaction('{txn_id}',{headers});")
1308
1307
  assert response, f"No results from get_transaction('{txn_id}')"
1309
1308
 
1310
- response_row = next(iter(response))
1309
+ response_row = next(iter(response)).asDict()
1311
1310
  status: str = response_row['STATE']
1312
1311
 
1313
1312
  # remove the transaction from the pending list if it's completed or aborted
@@ -1315,6 +1314,16 @@ Otherwise, remove it from your '{profile}' configuration profile.
1315
1314
  if txn_id in self._pending_transactions:
1316
1315
  self._pending_transactions.remove(txn_id)
1317
1316
 
1317
+ if status == "ABORTED" and response_row.get("ABORT_REASON", "") == TXN_ABORT_REASON_TIMEOUT:
1318
+ config_file_path = getattr(self.config, 'file_path', None)
1319
+ # todo: use the timeout returned alongside the transaction as soon as it's exposed
1320
+ timeout_mins = int(self.config.get("query_timeout_mins", DEFAULT_QUERY_TIMEOUT_MINS) or DEFAULT_QUERY_TIMEOUT_MINS)
1321
+ raise QueryTimeoutExceededException(
1322
+ timeout_mins=timeout_mins,
1323
+ query_id=txn_id,
1324
+ config_file_path=config_file_path,
1325
+ )
1326
+
1318
1327
  # @TODO: Find some way to tunnel the ABORT_REASON out. Azure doesn't have this, but it's handy
1319
1328
  return status == "COMPLETED" or status == "ABORTED"
1320
1329
 
@@ -2957,104 +2966,6 @@ def Graph(
2957
2966
  #--------------------------------------------------
2958
2967
  # Note: All direct access components should live in a separate file
2959
2968
 
2960
- @dataclass
2961
- class Endpoint:
2962
- method: str
2963
- endpoint: str
2964
-
2965
- class DirectAccessClient:
2966
- """
2967
- DirectAccessClient is a client for direct service access without service function calls.
2968
- """
2969
-
2970
- def __init__(self, config: Config, token_handler: TokenHandler, service_endpoint: str, generation: Optional[Generation] = None):
2971
- self._config: Config = config
2972
- self._token_handler: TokenHandler = token_handler
2973
- self.service_endpoint: str = service_endpoint
2974
- self.generation: Optional[Generation] = generation
2975
- self._is_snowflake_notebook = isinstance(runtime_env, SnowbookEnvironment)
2976
- self.endpoints: Dict[str, Endpoint] = {
2977
- "create_txn": Endpoint(method="POST", endpoint="/v1alpha1/transactions"),
2978
- "get_txn": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}"),
2979
- "get_txn_artifacts": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}/artifacts"),
2980
- "get_txn_problems": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}/problems"),
2981
- "get_txn_events": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}/events/{stream_name}"),
2982
- "get_package_versions": Endpoint(method="GET", endpoint="/v1alpha1/databases/{db_name}/package_versions"),
2983
- "get_model_package_versions": Endpoint(method="POST", endpoint="/v1alpha1/models/get_package_versions"),
2984
- "create_db": Endpoint(method="POST", endpoint="/v1alpha1/databases"),
2985
- "get_db": Endpoint(method="GET", endpoint="/v1alpha1/databases"),
2986
- "delete_db": Endpoint(method="DELETE", endpoint="/v1alpha1/databases/{db_name}"),
2987
- "release_index": Endpoint(method="POST", endpoint="/v1alpha1/index/release"),
2988
- "list_engines": Endpoint(method="GET", endpoint="/v1alpha1/engines"),
2989
- "get_engine": Endpoint(method="GET", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}"),
2990
- "create_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}"),
2991
- "delete_engine": Endpoint(method="DELETE", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}"),
2992
- "suspend_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}/suspend"),
2993
- "resume_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}/resume_async"),
2994
- "prepare_index": Endpoint(method="POST", endpoint="/v1alpha1/index/prepare"),
2995
- }
2996
- self.http_session = self._create_retry_session()
2997
-
2998
- def _create_retry_session(self) -> requests.Session:
2999
- http_session = requests.Session()
3000
- retries = Retry(
3001
- total=3,
3002
- backoff_factor=0.3,
3003
- status_forcelist=[500, 502, 503, 504],
3004
- allowed_methods=frozenset({"GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS", "HEAD"}),
3005
- raise_on_status=False
3006
- )
3007
- adapter = HTTPAdapter(max_retries=retries)
3008
- http_session.mount("http://", adapter)
3009
- http_session.mount("https://", adapter)
3010
- http_session.headers.update({"Connection": "keep-alive"})
3011
- return http_session
3012
-
3013
- def request(
3014
- self,
3015
- endpoint: str,
3016
- payload: Dict[str, Any] | None = None,
3017
- headers: Dict[str, str] | None = None,
3018
- path_params: Dict[str, str] | None = None,
3019
- query_params: Dict[str, str] | None = None,
3020
- ) -> requests.Response:
3021
- """
3022
- Send a request to the service endpoint.
3023
- """
3024
- url, method = self._prepare_url(endpoint, path_params, query_params)
3025
- request_headers = self._prepare_headers(headers)
3026
- return self.http_session.request(method, url, json=payload, headers=request_headers)
3027
-
3028
- def _prepare_url(self, endpoint: str, path_params: Dict[str, str] | None = None, query_params: Dict[str, str] | None = None) -> Tuple[str, str]:
3029
- try:
3030
- ep = self.endpoints[endpoint]
3031
- except KeyError:
3032
- raise ValueError(f"Invalid endpoint: {endpoint}. Available endpoints: {list(self.endpoints.keys())}")
3033
- url = f"{self.service_endpoint}{ep.endpoint}"
3034
- if path_params:
3035
- escaped_path_params = {k: quote(v, safe='') for k, v in path_params.items()}
3036
- url = url.format(**escaped_path_params)
3037
- if query_params:
3038
- url += '?' + urlencode(query_params)
3039
- return url, ep.method
3040
-
3041
- def _prepare_headers(self, headers: Dict[str, str] | None) -> Dict[str, str]:
3042
- request_headers = {}
3043
- if headers:
3044
- request_headers.update(headers)
3045
- # Authorization tokens are not needed in a snowflake notebook environment
3046
- if not self._is_snowflake_notebook:
3047
- request_headers["Authorization"] = f'Snowflake Token="{self._token_handler.get_ingress_token(self.service_endpoint)}"'
3048
- # needed for oauth, does no harm for other authentication methods
3049
- request_headers["X-SF-SPCS-Authentication-Method"] = 'OAUTH'
3050
- request_headers["Content-Type"] = 'application/x-www-form-urlencoded'
3051
- request_headers["Accept"] = "application/json"
3052
-
3053
- request_headers["user-agent"] = get_pyrel_version(self.generation)
3054
- request_headers["pyrel_program_id"] = debugging.get_program_span_id() or ""
3055
-
3056
- return debugging.add_current_propagation_headers(request_headers)
3057
-
3058
2969
  class DirectAccessResources(Resources):
3059
2970
  """
3060
2971
  Resources class for Direct Service Access avoiding Snowflake service functions.
@@ -3068,7 +2979,14 @@ class DirectAccessResources(Resources):
3068
2979
  reset_session: bool = False,
3069
2980
  generation: Optional[Generation] = None,
3070
2981
  ):
3071
- super().__init__(generation=generation, profile=profile, config=config, connection=connection, dry_run=dry_run)
2982
+ super().__init__(
2983
+ generation=generation,
2984
+ profile=profile,
2985
+ config=config,
2986
+ connection=connection,
2987
+ reset_session=reset_session,
2988
+ dry_run=dry_run,
2989
+ )
3072
2990
  self._endpoint_info = ConfigStore(ENDPOINT_FILE)
3073
2991
  self._service_endpoint = ""
3074
2992
  self._direct_access_client = None
@@ -3310,13 +3228,24 @@ class DirectAccessResources(Resources):
3310
3228
  assert response, f"No results from get_transaction('{txn_id}')"
3311
3229
 
3312
3230
  response_content = response.json()
3313
- status: str = response_content["transaction"]['state']
3231
+ transaction = response_content["transaction"]
3232
+ status: str = transaction['state']
3314
3233
 
3315
3234
  # remove the transaction from the pending list if it's completed or aborted
3316
3235
  if status in ["COMPLETED", "ABORTED"]:
3317
3236
  if txn_id in self._pending_transactions:
3318
3237
  self._pending_transactions.remove(txn_id)
3319
3238
 
3239
+ if status == "ABORTED" and transaction.get("abort_reason", "") == TXN_ABORT_REASON_TIMEOUT:
3240
+ config_file_path = getattr(self.config, 'file_path', None)
3241
+ timeout_ms = int(transaction.get("timeout_ms", 0))
3242
+ timeout_mins = timeout_ms // 60000 if timeout_ms > 0 else int(self.config.get("query_timeout_mins", DEFAULT_QUERY_TIMEOUT_MINS) or DEFAULT_QUERY_TIMEOUT_MINS)
3243
+ raise QueryTimeoutExceededException(
3244
+ timeout_mins=timeout_mins,
3245
+ query_id=txn_id,
3246
+ config_file_path=config_file_path,
3247
+ )
3248
+
3320
3249
  # @TODO: Find some way to tunnel the ABORT_REASON out. Azure doesn't have this, but it's handy
3321
3250
  return status == "COMPLETED" or status == "ABORTED"
3322
3251
 
@@ -0,0 +1,7 @@
1
+ from relationalai.semantics.metamodel.rewrite import Flatten, \
2
+ DNFUnionSplitter, ExtractNestedLogicals, flatten
3
+ from relationalai.semantics.lqp.rewrite import Splinter, \
4
+ ExtractKeys, FDConstraints
5
+
6
+ __all__ = ["Splinter", "Flatten", "DNFUnionSplitter", "ExtractKeys",
7
+ "ExtractNestedLogicals", "FDConstraints", "flatten"]
@@ -1,4 +1,4 @@
1
- from relationalai.semantics.rel.rewrite import CDC, ExtractCommon, QuantifyVars
1
+ from relationalai.semantics.lqp.rewrite import CDC, ExtractCommon, QuantifyVars
2
2
 
3
3
  __all__ = [
4
4
  "CDC",
@@ -2397,17 +2397,18 @@ class UnsupportedColumnTypesWarning(RAIWarning):
2397
2397
  """)
2398
2398
 
2399
2399
  class QueryTimeoutExceededException(RAIException):
2400
- def __init__(self, timeout_mins: int, config_file_path: str | None = None):
2400
+ def __init__(self, timeout_mins: int, query_id: str | None = None, config_file_path: str | None = None):
2401
2401
  self.timeout_mins = timeout_mins
2402
- self.message = f"Query execution time exceeded the specified timeout of {timeout_mins} minutes."
2403
2402
  self.name = "Query Timeout Exceeded"
2403
+ self.message = f"Query execution time exceeded the specified timeout of {self.timeout_mins} minutes."
2404
+ self.query_id = query_id or ""
2404
2405
  self.config_file_path = config_file_path or ""
2405
2406
  self.content = self.format_message()
2406
2407
  super().__init__(self.message, self.name, self.content)
2407
2408
 
2408
2409
  def format_message(self):
2409
2410
  return textwrap.dedent(f"""
2410
- {self.message}
2411
+ Query execution time exceeded the specified timeout of {self.timeout_mins} minutes{f' for query with ID: {self.query_id}' if self.query_id else ''}.
2411
2412
 
2412
2413
  Consider increasing the 'query_timeout_mins' parameter in your configuration file{f' (stored in {self.config_file_path})' if self.config_file_path else ''} to allow more time for query execution.
2413
2414
  """)
@@ -2432,3 +2433,23 @@ class AzureUnsupportedQueryTimeoutException(RAIException):
2432
2433
  Please remove the 'query_timeout_mins' from your configuration file{f' (stored in {self.config_file_path})' if self.config_file_path else ''} when running on platform Azure.
2433
2434
  """)
2434
2435
 
2436
+ class AzureLegacyDependencyMissingException(RAIException):
2437
+ def __init__(self):
2438
+ self.message = "The Azure platform requires the 'legacy' extras to be installed."
2439
+ self.name = "Azure Legacy Dependency Missing"
2440
+ self.content = self.format_message()
2441
+ super().__init__(self.message, self.name, self.content)
2442
+
2443
+ def format_message(self):
2444
+ return textwrap.dedent("""
2445
+ The Azure platform requires the 'rai-sdk' package, which is not installed.
2446
+
2447
+ To use the Azure platform, please install the legacy extras:
2448
+
2449
+ pip install relationalai[legacy]
2450
+
2451
+ Or if upgrading an existing installation:
2452
+
2453
+ pip install --upgrade relationalai[legacy]
2454
+ """)
2455
+
@@ -5,3 +5,4 @@ external = Relationship.builtins["external"]
5
5
  concept_population = Relationship.builtins["concept_population"]
6
6
  function = Relationship.builtins["function"]
7
7
  from_cdc = Relationship.builtins["from_cdc"]
8
+ track = Relationship.builtins["track"]
@@ -11,4 +11,5 @@ adhoc_annotation = f.annotation(adhoc, [])
11
11
  annotations_to_emit = FrozenOrderedSet([
12
12
  adhoc.name,
13
13
  builtins.function.name,
14
+ builtins.track.name,
14
15
  ])
@@ -2,13 +2,12 @@ from relationalai.semantics.metamodel.compiler import Pass
2
2
  from relationalai.semantics.metamodel import ir, builtins as rel_builtins, factory as f, visitor
3
3
  from relationalai.semantics.metamodel.typer import Checker, InferTypes, typer
4
4
  from relationalai.semantics.metamodel import helpers, types
5
- from relationalai.semantics.metamodel.rewrite import (Splinter, ExtractNestedLogicals, ExtractKeys, FDConstraints,
6
- DNFUnionSplitter, DischargeConstraints)
7
5
  from relationalai.semantics.metamodel.util import FrozenOrderedSet
8
6
 
9
7
  from relationalai.semantics.metamodel.rewrite import Flatten
10
- # TODO: Move this into metamodel.rewrite
11
- from relationalai.semantics.rel.rewrite import QuantifyVars, CDC, ExtractCommon
8
+
9
+ from ..metamodel.rewrite import DischargeConstraints, DNFUnionSplitter, ExtractNestedLogicals
10
+ from .rewrite import CDC, ExtractCommon, ExtractKeys, FDConstraints, QuantifyVars, Splinter
12
11
 
13
12
  from relationalai.semantics.lqp.utils import output_names
14
13
 
@@ -1,9 +1,15 @@
1
1
  from .cdc import CDC
2
2
  from .extract_common import ExtractCommon
3
+ from .extract_keys import ExtractKeys
4
+ from .fd_constraints import FDConstraints
3
5
  from .quantify_vars import QuantifyVars
6
+ from .splinter import Splinter
4
7
 
5
8
  __all__ = [
6
9
  "CDC",
7
10
  "ExtractCommon",
11
+ "ExtractKeys",
12
+ "FDConstraints",
8
13
  "QuantifyVars",
14
+ "Splinter",
9
15
  ]
@@ -496,6 +496,17 @@ function = f.relation("function", [f.input_field("code", types.Symbol)])
496
496
  function_checked_annotation = f.annotation(function, [f.lit("checked")])
497
497
  function_annotation = f.annotation(function, [])
498
498
 
499
+ # Indicates this relation should be tracked in telemetry. Only supported for Relationships.
500
+ # `RAI_BackIR.with_relation_tracking` produces log messages at the start and end of each
501
+ # SCC evaluation, if any declarations bear the `track` annotation.
502
+ track = f.relation("track", [
503
+ # BackIR evaluation expects 2 parameters on the track annotation: the tracking
504
+ # library name and tracking relation name, which appear as log metadata fields.
505
+ f.input_field("library", types.Symbol),
506
+ f.input_field("relation", types.Symbol)
507
+ ])
508
+ track_annotation = f.annotation(track, [])
509
+
499
510
  # All ir nodes marked by this annotation will be removed from the final metamodel before compilation.
500
511
  # Specifically it happens in `Flatten` pass when rewrites for `require` happen
501
512
  discharged = f.relation("discharged", [])
@@ -672,7 +683,7 @@ def _compute_builtin_overloads() -> list[ir.Relation]:
672
683
  return overloads
673
684
 
674
685
  # manually maintain the list of relations that are actually annotations
675
- builtin_annotations = [external, export, concept_population, from_cdc, from_cast]
686
+ builtin_annotations = [external, export, concept_population, from_cdc, from_cast, track]
676
687
  builtin_annotations_by_name = dict((r.name, r) for r in builtin_annotations)
677
688
 
678
689
  builtin_relations = _compute_builtin_relations()
@@ -0,0 +1,6 @@
1
+ from .discharge_constraints import DischargeConstraints
2
+ from .dnf_union_splitter import DNFUnionSplitter
3
+ from .extract_nested_logicals import ExtractNestedLogicals
4
+ from .flatten import Flatten
5
+
6
+ __all__ = ["DischargeConstraints", "DNFUnionSplitter", "ExtractNestedLogicals", "Flatten"]