relationalai 0.9.16__tar.gz → 0.9.18__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.
- {relationalai-0.9.16 → relationalai-0.9.18}/PKG-INFO +1 -1
- {relationalai-0.9.16 → relationalai-0.9.18}/pyproject.toml +1 -1
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/auth/token_handler.py +97 -27
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/auth/util.py +7 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/snowflake.py +14 -27
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/use_index_poller.py +10 -3
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/debugging.py +10 -1
- relationalai-0.9.18/src/relationalai/early_access/builder/__init__.py +30 -0
- relationalai-0.9.18/src/relationalai/early_access/builder/builder/__init__.py +35 -0
- relationalai-0.9.18/src/relationalai/early_access/builder/snowflake/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/builder/std/__init__.py +25 -0
- relationalai-0.9.18/src/relationalai/early_access/builder/std/decimals/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/builder/std/integers/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/builder/std/math/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/builder/std/strings/__init__.py +14 -0
- relationalai-0.9.18/src/relationalai/early_access/devtools/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/devtools/benchmark_lqp/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/devtools/extract_lqp/__init__.py +12 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/adapters/orm/adapter_qb.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/adapters/orm/parser.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/bindings/common.py +4 -3
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/bindings/csv.py +3 -2
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/bindings/snowflake.py +4 -3
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/codegen/binder.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/codegen/helpers.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/codegen/relations.py +4 -4
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/codegen/weaver.py +3 -3
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ir/compiler.py +3 -3
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ir/executor.py +3 -3
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ontologies/export.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ontologies/models.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ontologies/python_printer.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ontologies/relationships.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ontologies/subtyping.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/measures/dimensions.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/measures/measure_rules.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/measures/measures.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/measures/role_exprs.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/models.py +6 -17
- relationalai-0.9.18/src/relationalai/early_access/dsl/orm/object_oriented_printer.py +344 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/printer.py +6 -14
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/reasoners.py +35 -6
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/relations.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/relationships.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/types.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/serialization.py +35 -13
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/snow/common.py +2 -3
- relationalai-0.9.18/src/relationalai/early_access/graphs/__init__.py +13 -0
- relationalai-0.9.18/src/relationalai/early_access/lqp/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/lqp/compiler/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/lqp/constructors/__init__.py +18 -0
- relationalai-0.9.18/src/relationalai/early_access/lqp/executor/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/lqp/ir/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/lqp/passes/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/lqp/pragmas/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/lqp/primitives/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/lqp/types/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/lqp/utils/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/lqp/validators/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/__init__.py +58 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/builtins/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/compiler/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/dependency/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/factory/__init__.py +17 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/helpers/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/ir/__init__.py +14 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/rewrite/__init__.py +5 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/typer/__init__.py +3 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/typer/typer/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/types/__init__.py +15 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/util/__init__.py +15 -0
- relationalai-0.9.18/src/relationalai/early_access/metamodel/visitor/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/__init__.py +22 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/api/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/benchmarks/__init__.py +13 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/graph/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/path_algorithms/find_paths/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/path_algorithms/one_sided_ball_repetition/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/path_algorithms/one_sided_ball_upto/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/path_algorithms/single/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/path_algorithms/two_sided_balls_repetition/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/path_algorithms/two_sided_balls_upto/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/path_algorithms/usp/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/rpq/__init__.py +13 -0
- relationalai-0.9.18/src/relationalai/early_access/paths/utilities/iterators/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/rel/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/rel/executor/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/rel/rel_utils/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/rel/rewrite/__init__.py +7 -0
- relationalai-0.9.18/src/relationalai/early_access/solvers/__init__.py +19 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/sql/__init__.py +1 -2
- relationalai-0.9.18/src/relationalai/early_access/sql/rewrite/__init__.py +3 -0
- relationalai-0.9.18/src/relationalai/early_access/tests/__init__.py +8 -0
- relationalai-0.9.18/src/relationalai/early_access/tests/logging/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/tests/test_snapshot_base/__init__.py +12 -0
- relationalai-0.9.18/src/relationalai/early_access/tests/utils/__init__.py +12 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/errors.py +21 -28
- relationalai-0.9.18/src/relationalai/semantics/__init__.py +21 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/devtools/__init__.py +0 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/devtools/benchmark_lqp.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/devtools/compilation_manager.py +7 -7
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/devtools/extract_lqp.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.18/src/relationalai/semantics/internal}/__init__.py +6 -6
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.18/src/relationalai/semantics/internal}/annotations.py +1 -1
- relationalai-0.9.16/src/relationalai/early_access/builder/builder.py → relationalai-0.9.18/src/relationalai/semantics/internal/internal.py +118 -51
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.18/src/relationalai/semantics/internal}/snowflake.py +18 -10
- relationalai-0.9.18/src/relationalai/semantics/lqp/__init__.py +3 -0
- relationalai-0.9.18/src/relationalai/semantics/lqp/builtins.py +14 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/lqp/compiler.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/lqp/constructors.py +5 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/lqp/executor.py +45 -43
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/lqp/model2lqp.py +51 -25
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/lqp/passes.py +72 -31
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/lqp/primitives.py +5 -7
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/lqp/types.py +4 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/lqp/utils.py +9 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/lqp/validators.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/__init__.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/builtins.py +3 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/compiler.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/dependency.py +4 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/executor.py +4 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/factory.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/helpers.py +6 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/rewrite/__init__.py +2 -1
- relationalai-0.9.18/src/relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +210 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/rewrite/extract_keys.py +178 -160
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/rewrite/extract_nested_logicals.py +5 -5
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/rewrite/fd_constraints.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/rewrite/flatten.py +17 -9
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/rewrite/gc_nodes.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/rewrite/list_types.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/rewrite/splinter.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/typer/checker.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/typer/typer.py +4 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/types.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/graphs → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/README.md +22 -22
- {relationalai-0.9.16/src/relationalai/early_access/graphs → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/core.py +154 -135
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/README.md +4 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/api.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/benchmarks/grid_graph.py +1 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/Movies.ipynb +10 -12
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/basic_example.py +3 -4
- relationalai-0.9.18/src/relationalai/semantics/reasoners/graph/paths/examples/minimal_engine_warmup.py +3 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/movie_example.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/paths_benchmark.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/paths_example.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/pattern_to_automaton.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/find_paths_via_automaton.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/graph.py +1 -3
- relationalai-0.9.18/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/__init__.py +3 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/find_paths.py +2 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/one_sided_ball_repetition.py +2 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/one_sided_ball_upto.py +1 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/single.py +4 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/two_sided_balls_repetition.py +2 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/two_sided_balls_upto.py +3 -5
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/usp-old.py +4 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/usp-tuple.py +4 -7
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/usp.py +4 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/product_graph.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/rpq/filter.py +0 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/rpq/rpq.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_limit_sp_max_length.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_limit_sp_multiple.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_limit_sp_single.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_limit_walks_multiple.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_limit_walks_single.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_one_sided_ball_repetition_multiple.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_one_sided_ball_repetition_single.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_one_sided_ball_upto_multiple.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_one_sided_ball_upto_single.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_single_paths.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_single_walks.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_single_walks_undirected.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_two_sided_balls_repetition_multiple.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_two_sided_balls_repetition_single.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_two_sided_balls_upto_multiple.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_two_sided_balls_upto_single.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_usp_nsp_multiple.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_usp_nsp_single.py +3 -6
- relationalai-0.9.18/src/relationalai/semantics/reasoners/graph/paths/utilities/__init__.py +3 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/utilities/iterators.py +1 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/utilities/prefix_sum.py +1 -2
- {relationalai-0.9.16/src/relationalai/early_access/graphs → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/tests/README.md +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/solvers → relationalai-0.9.18/src/relationalai/semantics/reasoners/optimization}/common.py +6 -5
- {relationalai-0.9.16/src/relationalai/early_access/solvers → relationalai-0.9.18/src/relationalai/semantics/reasoners/optimization}/solvers_dev.py +6 -4
- {relationalai-0.9.16/src/relationalai/early_access/solvers → relationalai-0.9.18/src/relationalai/semantics/reasoners/optimization}/solvers_pb.py +4 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/rel/builtins.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/rel/compiler.py +12 -9
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/rel/executor.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/rel/rel.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/rel/rel_utils.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/rel/rewrite/cdc.py +4 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/rel/rewrite/extract_common.py +5 -5
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/rel/rewrite/quantify_vars.py +4 -4
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/semantics/sql/compiler.py +34 -14
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/semantics/sql/executor/duck_db.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/semantics/sql/executor/result_helpers.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/semantics/sql/executor/snowflake.py +4 -4
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/semantics/sql/rewrite/denormalize.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/semantics/sql/rewrite/double_negation.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/semantics/sql/rewrite/recursive_union.py +3 -3
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/semantics/sql/rewrite/sort_output_query.py +4 -4
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/semantics/sql/sql.py +17 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.18/src/relationalai/semantics}/std/__init__.py +12 -9
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.18/src/relationalai/semantics}/std/constraints.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.18/src/relationalai/semantics}/std/dates.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.18/src/relationalai/semantics}/std/decimals.py +8 -10
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.18/src/relationalai/semantics}/std/integers.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.18/src/relationalai/semantics}/std/math.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.18/src/relationalai/semantics}/std/pragmas.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.18/src/relationalai/semantics}/std/std.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.18/src/relationalai/semantics}/std/strings.py +1 -1
- relationalai-0.9.16/src/relationalai/early_access/tests/test_snapshot_base.py → relationalai-0.9.18/src/relationalai/semantics/tests/test_snapshot_abstract.py +47 -41
- relationalai-0.9.18/src/relationalai/semantics/tests/test_snapshot_base.py +9 -0
- relationalai-0.9.18/src/relationalai/semantics/tests/utils.py +46 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/qb_debugger.py +1 -1
- relationalai-0.9.16/src/relationalai/early_access/paths/examples/minimal_engine_warmup.py +0 -3
- relationalai-0.9.16/src/relationalai/early_access/sql/rewrite/__init__.py +0 -6
- relationalai-0.9.16/src/relationalai/early_access/tests/utils.py +0 -36
- {relationalai-0.9.16 → relationalai-0.9.18}/.gitignore +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/LICENSE +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/docs/pypi/README.md +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/frontend/debugger/dist/.gitignore +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/frontend/debugger/dist/assets/favicon-Dy0ZgA6N.png +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/frontend/debugger/dist/assets/index-Cssla-O7.js +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/frontend/debugger/dist/assets/index-DlHsYx1V.css +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/frontend/debugger/dist/index.html +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/raitoolkit/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/raitoolkit/events/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/raitoolkit/procedures/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/raitoolkit/procedures/procedure.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/raitoolkit/rel/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/raitoolkit/tables/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/raitoolkit/tasks/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/raitoolkit/tasks/task.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/analysis/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/analysis/mechanistic.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/analysis/whynot.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/auth/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/auth/jwt_generator.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/auth/oauth_callback_server.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/azure.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/cache_store.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/client.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/config.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/export_procedure.py.jinja +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/hash_util.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/profile_polling.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/result_helpers.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/types.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/clients/util.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/compiler.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/dependencies.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/dsl.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/adapters/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/adapters/orm/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/adapters/orm/model.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/adapters/owl/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/adapters/owl/adapter.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/adapters/owl/model.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/adapters/owl/parser.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/bindings/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/bindings/legacy/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/bindings/legacy/binding_models.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/codegen/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/codegen/common.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/constants.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/builders/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/builders/logic.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/builders/scalar_constraint.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/constraints/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/constraints/predicate/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/constraints/predicate/atomic.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/constraints/predicate/universal.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/constraints/scalar.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/context.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/cset.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/exprs/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/exprs/relational.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/exprs/scalar.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/instances.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/logic/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/logic/aggregation.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/logic/exists.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/logic/helper.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/namespaces.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/relations.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/rules.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/stack.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/std/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/temporal/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/temporal/recall.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/types/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/types/concepts.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/types/constrained/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/types/constrained/nominal.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/types/constrained/subtype.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/types/standard.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/types/unconstrained.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/types/variables.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/core/utils.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ir/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ontologies/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ontologies/constraints.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ontologies/raw_source.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ontologies/readings.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/ontologies/roles.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/constraints.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/measures/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/measures/initializer.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/reasoner_errors.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/utils.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/orm/verb.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/physical_metadata/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/physical_metadata/tables.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/relations.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/rulesets.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/schemas/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/schemas/builder.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/schemas/comp_names.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/schemas/components.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/schemas/contexts.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/schemas/exprs.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/schemas/fragments.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/serialize/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/serialize/binding_model.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/serialize/exporter.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/serialize/model.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/snow/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/snow/api.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/state_mgmt/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/state_mgmt/state_charts.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/state_mgmt/transitions.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/types/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/types/concepts.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/types/entities.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/types/values.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/dsl/utils.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/paths/path_algorithms/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/paths/utilities/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/early_access/sql/executor/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/environments/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/environments/base.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/environments/ci.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/environments/colab.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/environments/generic.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/environments/hex.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/environments/ipython.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/environments/jupyter.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/environments/snowbook.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/environments/terminal.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/SF.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/graphs.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/inspect.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/api.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/automaton.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/bridge.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/compiler.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/datalog.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/diagnostics.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/filter.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/glushkov.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/options.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/pathfinder-v0.7.0.rel +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/rpq.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/transition.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/pathfinder/utils.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/paths/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/paths/pathfinder.rel +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/paths/tree_agg.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/experimental/solvers.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access/lqp → relationalai-0.9.18/src/relationalai/loaders}/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/loaders/csv.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/loaders/loader.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/loaders/types.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/metagen.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/metamodel.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/rel.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/rel_emitter.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/rel_utils.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/designs/query_builder/identify_by.md +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/lqp/ir.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/lqp/pragmas.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/lqp/result_helpers.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/dataflow.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/ir.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/typer/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/util.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/metamodel/visitor.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access/tests → relationalai-0.9.18/src/relationalai/semantics/reasoners}/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access/graphs → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access/graphs → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/design/beyond_demand_transform.md +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/benchmarks/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/code_organization.md +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/actedin.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/directed.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/follows.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/movies.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/person.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/produced.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/ratings.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/wrote.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/rpq/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/rpq/automaton.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/rpq/diagnostics.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/rpq/glushkov.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/rpq/transition.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics/reasoners/graph}/paths/utilities/utilities.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access/solvers → relationalai-0.9.18/src/relationalai/semantics/reasoners/optimization}/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/rel/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/rel/rewrite/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/semantics/sql/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/semantics/sql/executor/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/semantics/sql/rewrite/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/loaders → relationalai-0.9.18/src/relationalai/semantics/tests}/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.18/src/relationalai/semantics}/tests/logging.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/std/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/std/aggregates.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/std/dates.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/std/graphs.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/std/inspect.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/std/math.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/std/re.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/std/strings.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/cleanup_snapshots.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/cli.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/cli_controls.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/cli_helpers.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/constants.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/debugger.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/debugger_client.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/debugger_server.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/dev.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/notes +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/tools/snapshot_viewer.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/util/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/util/constants.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/util/format.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/util/graph.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/util/otel_handler.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/util/snowflake_handler.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/util/span_format_test.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/util/span_tracker.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/util/spans_file_handler.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai/util/tracing_handler.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai_test_util/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai_test_util/fixtures.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai_test_util/snapshot.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.18}/src/relationalai_test_util/traceback.py +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import base64
|
|
2
2
|
import hashlib
|
|
3
3
|
import json
|
|
4
|
+
import jwt
|
|
4
5
|
import requests
|
|
5
6
|
import secrets
|
|
6
7
|
import threading
|
|
@@ -13,9 +14,9 @@ from typing import Dict, Tuple
|
|
|
13
14
|
|
|
14
15
|
from .jwt_generator import JWTGenerator
|
|
15
16
|
from .oauth_callback_server import OAuthCallbackServer
|
|
16
|
-
from .util import is_keyring_secure, is_localhost, extract_port
|
|
17
|
+
from .util import is_keyring_secure, is_localhost, extract_port, remove_url_scheme
|
|
17
18
|
from ..debugging import warn
|
|
18
|
-
from ..errors import RAIException, DirectAccessInvalidAuthException, InsecureKeychainWarning, KeychainFailureWarning
|
|
19
|
+
from ..errors import RAIException, DirectAccessInvalidAuthException, InsecureKeychainWarning, KeychainFailureWarning
|
|
19
20
|
from ..tools.constants import SNOWFLAKE_DIRECT_ACCESS_AUTHS
|
|
20
21
|
from ..clients.config import Config
|
|
21
22
|
|
|
@@ -33,7 +34,8 @@ class TokenHandler(ABC):
|
|
|
33
34
|
self._config = config
|
|
34
35
|
self.role: str = str(self._config.get("role", ""))
|
|
35
36
|
self.user: str = str(self._config.get("user", ""))
|
|
36
|
-
self.account: str = str(
|
|
37
|
+
self.account: str = self._prepare_account_name(str(config.get("account", "")))
|
|
38
|
+
self._renewal_buffer_time = timedelta(minutes=2)
|
|
37
39
|
|
|
38
40
|
@staticmethod
|
|
39
41
|
def from_config(config: Config) -> "TokenHandler":
|
|
@@ -48,9 +50,38 @@ class TokenHandler(ABC):
|
|
|
48
50
|
raise DirectAccessInvalidAuthException(authenticator, SNOWFLAKE_DIRECT_ACCESS_AUTHS.keys())
|
|
49
51
|
|
|
50
52
|
@abstractmethod
|
|
51
|
-
|
|
53
|
+
# returns a token which can be used to create a snowflake session object
|
|
54
|
+
def get_session_login_token(self) -> str:
|
|
55
|
+
pass
|
|
56
|
+
|
|
57
|
+
@abstractmethod
|
|
58
|
+
# returns a token which can be used to access a specific endpoint in multiple cases this
|
|
59
|
+
# can be the same token as for session login but is dependent on the authentication
|
|
60
|
+
# method
|
|
61
|
+
def get_ingress_token(self, endpoint) -> str:
|
|
52
62
|
pass
|
|
53
63
|
|
|
64
|
+
@staticmethod
|
|
65
|
+
# this helper method is needed to prepare the account name to a format accepted to form
|
|
66
|
+
# the snowflake URLs. Without the replacement of '_' with '-' the requests to snowflake
|
|
67
|
+
# auth endpoints will lead to SSL mismatch errors.
|
|
68
|
+
def _prepare_account_name(account: str) -> str:
|
|
69
|
+
return account.replace("_", "-").upper()
|
|
70
|
+
|
|
71
|
+
# helper method to retrieve a token from a cache and check if it is expired
|
|
72
|
+
# assumes the key consisting of the (account, user, role) tuple
|
|
73
|
+
def _get_token_from_cache(self, cache) -> Tuple:
|
|
74
|
+
key = (self.account, self.user, self.role)
|
|
75
|
+
if key in cache:
|
|
76
|
+
token, expiration_timestamp = cache[key]
|
|
77
|
+
current_timestamp = datetime.now(timezone.utc).timestamp()
|
|
78
|
+
# only use cached token if not expired and not close to expiring
|
|
79
|
+
if expiration_timestamp - self._renewal_buffer_time.total_seconds() > current_timestamp:
|
|
80
|
+
return token, False
|
|
81
|
+
else:
|
|
82
|
+
return "", True
|
|
83
|
+
return "", False
|
|
84
|
+
|
|
54
85
|
class SnowflakeOAuthTokenHandler(TokenHandler):
|
|
55
86
|
|
|
56
87
|
# Global cache to re-use the tokens over multiple threads and resource objects
|
|
@@ -85,10 +116,14 @@ class SnowflakeOAuthTokenHandler(TokenHandler):
|
|
|
85
116
|
self.redirect_port: int = extract_port(self.redirect_uri)
|
|
86
117
|
self.account_url: str = f"https://{self.account}.snowflakecomputing.com"
|
|
87
118
|
self._callback_server = None
|
|
88
|
-
self._renewal_buffer_time = timedelta(minutes=2)
|
|
89
119
|
self._load_refresh_token_cache()
|
|
90
120
|
|
|
91
|
-
|
|
121
|
+
# performing token retrieval in a thread safe manner. This is needed as multiple
|
|
122
|
+
# resources are oftentimes created in parallel, leading to multiple token handlers
|
|
123
|
+
# hitting the Snowflake auth endpoint at the same time and trying to start local
|
|
124
|
+
# callback servers. Instead we re-suse the retrieved token until the end of its
|
|
125
|
+
# lifetime over all threads.
|
|
126
|
+
def get_session_login_token(self) -> str:
|
|
92
127
|
token, expired = self._get_access_token_from_cache()
|
|
93
128
|
if token and not expired:
|
|
94
129
|
return token
|
|
@@ -103,6 +138,9 @@ class SnowflakeOAuthTokenHandler(TokenHandler):
|
|
|
103
138
|
|
|
104
139
|
auth_code, code_verifier = self._authenticate()
|
|
105
140
|
return self._exchange_code_for_token(auth_code, code_verifier)
|
|
141
|
+
|
|
142
|
+
def get_ingress_token(self, endpoint) -> str:
|
|
143
|
+
return self.get_session_login_token()
|
|
106
144
|
|
|
107
145
|
def _get_access_token_from_cache(self) -> Tuple[str, bool]:
|
|
108
146
|
return self._get_token_from_cache(SnowflakeOAuthTokenHandler._token_cache)
|
|
@@ -110,18 +148,6 @@ class SnowflakeOAuthTokenHandler(TokenHandler):
|
|
|
110
148
|
def _get_refresh_token_from_cache(self) -> Tuple[str, bool]:
|
|
111
149
|
return self._get_token_from_cache(SnowflakeOAuthTokenHandler._refresh_token_cache)
|
|
112
150
|
|
|
113
|
-
def _get_token_from_cache(self, cache) -> Tuple:
|
|
114
|
-
key = (self.account, self.user, self.role)
|
|
115
|
-
if key in cache:
|
|
116
|
-
token, expiration_timestamp = cache[key]
|
|
117
|
-
current_timestamp = datetime.now(timezone.utc).timestamp()
|
|
118
|
-
# only use cached token if not expired and not close to expiring
|
|
119
|
-
if expiration_timestamp - self._renewal_buffer_time.total_seconds() > current_timestamp:
|
|
120
|
-
return token, False
|
|
121
|
-
else:
|
|
122
|
-
return "", True
|
|
123
|
-
return "", False
|
|
124
|
-
|
|
125
151
|
def _get_auth_token_from_cache(self) -> Tuple[str, str, bool]:
|
|
126
152
|
key = (self.account, self.user, self.role)
|
|
127
153
|
if key in SnowflakeOAuthTokenHandler._auth_token_cache:
|
|
@@ -266,13 +292,10 @@ class SnowflakeOAuthTokenHandler(TokenHandler):
|
|
|
266
292
|
|
|
267
293
|
try:
|
|
268
294
|
response = requests.post(token_url, data=data, headers=headers, auth=auth)
|
|
269
|
-
except requests.exceptions.SSLError:
|
|
270
|
-
e = OAuthSSLMismatchException(self.account)
|
|
271
|
-
raise e
|
|
272
295
|
except Exception as e:
|
|
273
296
|
raise RAIException(f"Error during token exchange: {e}")
|
|
274
297
|
if response.status_code != 200:
|
|
275
|
-
raise
|
|
298
|
+
raise RAIException(f"Token exchange failed: {response.status_code} - {response.text}")
|
|
276
299
|
|
|
277
300
|
return self._handle_token_response(response, issue_time)
|
|
278
301
|
|
|
@@ -297,12 +320,10 @@ class SnowflakeOAuthTokenHandler(TokenHandler):
|
|
|
297
320
|
|
|
298
321
|
try:
|
|
299
322
|
response = requests.post(token_url, data=data, headers=headers, auth=auth)
|
|
300
|
-
except requests.exceptions.SSLError:
|
|
301
|
-
raise OAuthSSLMismatchException(self.account)
|
|
302
323
|
except Exception as e:
|
|
303
324
|
raise RAIException(f"Error during token exchange: {e}")
|
|
304
325
|
if response.status_code != 200:
|
|
305
|
-
raise
|
|
326
|
+
raise RAIException(f"Token refresh failed: {response.status_code} - {response.text}")
|
|
306
327
|
|
|
307
328
|
return self._handle_token_response(response, issue_time, is_refresh=True)
|
|
308
329
|
|
|
@@ -348,10 +369,21 @@ class SnowflakePATHandler(TokenHandler):
|
|
|
348
369
|
except Exception as e:
|
|
349
370
|
raise RAIException(f"Failed to read personal access token file: {e}")
|
|
350
371
|
|
|
351
|
-
def
|
|
372
|
+
def get_session_login_token(self) -> str:
|
|
373
|
+
return self.token
|
|
374
|
+
|
|
375
|
+
def get_ingress_token(self, endpoint) -> str:
|
|
352
376
|
return self.token
|
|
353
377
|
|
|
354
378
|
class SnowflakeKeyFileHandler(TokenHandler):
|
|
379
|
+
# Global cache to re-use the tokens over multiple threads and resource objects
|
|
380
|
+
# Maps (account, user, role) to (token, expiration_timestamp)
|
|
381
|
+
_token_cache: Dict[Tuple[str, str, str], Tuple[str, float]] = dict()
|
|
382
|
+
|
|
383
|
+
# To avoid authenticating for multiple threads, we use this lock to let the first thread
|
|
384
|
+
# authenticate and the others wait for the result retrieved from the global cache
|
|
385
|
+
_authenticate_lock = threading.Lock()
|
|
386
|
+
|
|
355
387
|
def __init__(self, config: Config):
|
|
356
388
|
super().__init__(config)
|
|
357
389
|
self.key_file_path = self._config.get("private_key_file")
|
|
@@ -360,5 +392,43 @@ class SnowflakeKeyFileHandler(TokenHandler):
|
|
|
360
392
|
self.key_file_pwd = self._config.get("private_key_file_pwd", "")
|
|
361
393
|
self._jwt_generator = JWTGenerator(self.account, self.user, self.key_file_path, self.key_file_pwd)
|
|
362
394
|
|
|
363
|
-
def
|
|
395
|
+
def get_session_login_token(self) -> str:
|
|
364
396
|
return self._jwt_generator.get_or_generate_token()
|
|
397
|
+
|
|
398
|
+
# performing token retrieval in a thread safe manner. This is needed as multiple
|
|
399
|
+
# resources are oftentimes created in parallel, leading to multiple token handlers
|
|
400
|
+
# hitting the Snowflake auth endpoint at the same time. Instead we re-suse the retrieved
|
|
401
|
+
# token until the end of its lifetime over all threads.
|
|
402
|
+
def get_ingress_token(self, endpoint) -> str:
|
|
403
|
+
with SnowflakeKeyFileHandler._authenticate_lock:
|
|
404
|
+
token, expired = self._get_token_from_cache(SnowflakeKeyFileHandler._token_cache)
|
|
405
|
+
if token and not expired:
|
|
406
|
+
return token
|
|
407
|
+
|
|
408
|
+
generated_jwt_token = self.get_session_login_token()
|
|
409
|
+
token = self._exchange_token(generated_jwt_token, endpoint)
|
|
410
|
+
return token
|
|
411
|
+
|
|
412
|
+
def _exchange_token(self, token, endpoint):
|
|
413
|
+
endpoint = remove_url_scheme(endpoint)
|
|
414
|
+
scope_role = f'session:role:{self.role}' if self.role is not None else None
|
|
415
|
+
scope = f'{scope_role} {endpoint}' if scope_role is not None else endpoint
|
|
416
|
+
data = {
|
|
417
|
+
'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer',
|
|
418
|
+
'scope': scope,
|
|
419
|
+
'assertion': token,
|
|
420
|
+
}
|
|
421
|
+
url = f'https://{self.account}.snowflakecomputing.com/oauth/token'
|
|
422
|
+
try:
|
|
423
|
+
response = requests.post(url, data=data)
|
|
424
|
+
except Exception as e:
|
|
425
|
+
raise RAIException(f"Error during token exchange: {e}")
|
|
426
|
+
if response.status_code != 200:
|
|
427
|
+
raise RAIException(f"Token exchange failed: {response.status_code} - {response.text}")
|
|
428
|
+
token = response.text
|
|
429
|
+
try:
|
|
430
|
+
expire_timestamp = jwt.decode(token, options={"verify_signature": False})['exp']
|
|
431
|
+
except Exception as e:
|
|
432
|
+
raise RAIException(f"Failed to decode exchanged token: {e}")
|
|
433
|
+
SnowflakeKeyFileHandler._token_cache[(self.account, self.user, self.role)] = (token, expire_timestamp)
|
|
434
|
+
return token
|
|
@@ -23,6 +23,13 @@ def extract_port(url: str) -> int:
|
|
|
23
23
|
else:
|
|
24
24
|
port = 80
|
|
25
25
|
return port
|
|
26
|
+
|
|
27
|
+
def remove_url_scheme(url: str) -> str:
|
|
28
|
+
parsed = urlparse(url)
|
|
29
|
+
# If there's a scheme, reconstruct without it
|
|
30
|
+
if parsed.scheme:
|
|
31
|
+
return parsed.netloc + parsed.path
|
|
32
|
+
return url
|
|
26
33
|
|
|
27
34
|
def is_keyring_secure() -> bool:
|
|
28
35
|
if not KEYRING_AVAILABLE or keyring is None:
|
|
@@ -47,7 +47,7 @@ from ..clients.client import Client, ExportParams, ProviderBase, ResourcesBase
|
|
|
47
47
|
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
48
|
from ..environments import runtime_env, HexEnvironment, SnowbookEnvironment
|
|
49
49
|
from .. import dsl, rel, metamodel as m
|
|
50
|
-
from ..errors import DuoSecurityFailed,
|
|
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
|
|
51
51
|
from concurrent.futures import ThreadPoolExecutor
|
|
52
52
|
from datetime import datetime, date, timedelta
|
|
53
53
|
from snowflake.snowpark.types import StringType, StructField, StructType
|
|
@@ -413,7 +413,7 @@ class Resources(ResourcesBase):
|
|
|
413
413
|
if "authenticator" in connection_parameters and connection_parameters["authenticator"] == "OAUTH_AUTHORIZATION_CODE":
|
|
414
414
|
# we are replicating OAUTH_AUTHORIZATION_CODE by first retrieving the token
|
|
415
415
|
# and then authenticating with the token via the OAUTH authenticator
|
|
416
|
-
connection_parameters["token"] = self.token_handler.
|
|
416
|
+
connection_parameters["token"] = self.token_handler.get_session_login_token()
|
|
417
417
|
connection_parameters["authenticator"] = "OAUTH"
|
|
418
418
|
return Session.builder.configs(connection_parameters).create()
|
|
419
419
|
except snowflake.connector.errors.Error as e:
|
|
@@ -468,7 +468,7 @@ class Resources(ResourcesBase):
|
|
|
468
468
|
except EngineNameValidationException as e:
|
|
469
469
|
raise EngineNameValidationException(engine) from e
|
|
470
470
|
except Exception as e:
|
|
471
|
-
raise
|
|
471
|
+
raise EngineProvisioningFailed(engine, e) from e
|
|
472
472
|
elif re.search(r"javascript execution error", orig_message):
|
|
473
473
|
match = re.search(r"\"message\":\"(.*)\"", orig_message)
|
|
474
474
|
if match:
|
|
@@ -693,7 +693,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
693
693
|
else:
|
|
694
694
|
self._exec(f"call {APP_NAME}.api.{api}('{name}', '{size}', PARSE_JSON('{{\"auto_suspend_mins\": {auto_suspend_mins}}}'), {headers});")
|
|
695
695
|
except Exception as e:
|
|
696
|
-
raise
|
|
696
|
+
raise EngineProvisioningFailed(name, e) from e
|
|
697
697
|
|
|
698
698
|
def create_engine(self, name:str, size:str|None=None, auto_suspend_mins:int|None=None, headers: Dict | None = None):
|
|
699
699
|
self._create_engine(name, size, auto_suspend_mins, headers=headers)
|
|
@@ -702,22 +702,14 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
702
702
|
self._create_engine(name, size, auto_suspend_mins, True)
|
|
703
703
|
|
|
704
704
|
def delete_engine(self, name:str, force:bool = False, headers: Dict | None = None):
|
|
705
|
-
request_headers =
|
|
706
|
-
prop_headers = debugging.gen_current_propagation_headers()
|
|
707
|
-
if headers:
|
|
708
|
-
request_headers.update(headers)
|
|
709
|
-
request_headers.update(prop_headers)
|
|
705
|
+
request_headers = debugging.add_current_propagation_headers(headers)
|
|
710
706
|
self._exec(f"call {APP_NAME}.api.delete_engine('{name}', {force},{request_headers});")
|
|
711
707
|
|
|
712
708
|
def suspend_engine(self, name:str):
|
|
713
709
|
self._exec(f"call {APP_NAME}.api.suspend_engine('{name}');")
|
|
714
710
|
|
|
715
711
|
def resume_engine(self, name:str, headers: Dict | None = None) -> Dict:
|
|
716
|
-
request_headers =
|
|
717
|
-
prop_headers = debugging.gen_current_propagation_headers()
|
|
718
|
-
if headers:
|
|
719
|
-
request_headers.update(headers)
|
|
720
|
-
request_headers.update(prop_headers)
|
|
712
|
+
request_headers = debugging.add_current_propagation_headers(headers)
|
|
721
713
|
self._exec(f"call {APP_NAME}.api.resume_engine('{name}',{request_headers});")
|
|
722
714
|
# returning empty dict to match the expected return type
|
|
723
715
|
return {}
|
|
@@ -1559,12 +1551,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
1559
1551
|
):
|
|
1560
1552
|
if inputs is None:
|
|
1561
1553
|
inputs = {}
|
|
1562
|
-
|
|
1563
|
-
request_headers = {}
|
|
1564
|
-
if headers:
|
|
1565
|
-
request_headers.update(headers)
|
|
1566
|
-
request_headers.update(prop_headers)
|
|
1567
|
-
|
|
1554
|
+
request_headers = debugging.add_current_propagation_headers(headers)
|
|
1568
1555
|
query_attrs_dict = json.loads(request_headers.get("X-Query-Attributes", "{}"))
|
|
1569
1556
|
|
|
1570
1557
|
with debugging.span("transaction", **query_attrs_dict) as txn_span:
|
|
@@ -1703,7 +1690,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
1703
1690
|
engine = None
|
|
1704
1691
|
pass
|
|
1705
1692
|
else:
|
|
1706
|
-
raise
|
|
1693
|
+
raise EngineProvisioningFailed(engine_name, e) from e
|
|
1707
1694
|
|
|
1708
1695
|
if not engine:
|
|
1709
1696
|
with Spinner(
|
|
@@ -1716,7 +1703,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
1716
1703
|
print(e)
|
|
1717
1704
|
if DUO_TEXT in str(e).lower():
|
|
1718
1705
|
raise DuoSecurityFailed(e)
|
|
1719
|
-
raise
|
|
1706
|
+
raise EngineProvisioningFailed(engine_name, e) from e
|
|
1720
1707
|
return engine_name
|
|
1721
1708
|
|
|
1722
1709
|
def auto_create_engine_async(self, name: str | None = None):
|
|
@@ -1792,7 +1779,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
1792
1779
|
pass
|
|
1793
1780
|
else:
|
|
1794
1781
|
print(e)
|
|
1795
|
-
|
|
1782
|
+
raise EngineProvisioningFailed(engine_name, e) from e
|
|
1796
1783
|
|
|
1797
1784
|
if not engine:
|
|
1798
1785
|
self.create_engine_async(engine_name, size=self.config.get("engine_size", None))
|
|
@@ -1815,7 +1802,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
1815
1802
|
if isinstance(e, RAIException):
|
|
1816
1803
|
raise e
|
|
1817
1804
|
print(e)
|
|
1818
|
-
raise
|
|
1805
|
+
raise EngineProvisioningFailed(engine_name, e) from e
|
|
1819
1806
|
|
|
1820
1807
|
def validate_engine_size(self, size: str) -> Tuple[bool, List[str]]:
|
|
1821
1808
|
if size is not None:
|
|
@@ -2980,13 +2967,12 @@ class DirectAccessClient:
|
|
|
2980
2967
|
return url, ep.method
|
|
2981
2968
|
|
|
2982
2969
|
def _prepare_headers(self, headers: Dict[str, str] | None) -> Dict[str, str]:
|
|
2983
|
-
|
|
2984
2970
|
request_headers = {}
|
|
2985
2971
|
if headers:
|
|
2986
2972
|
request_headers.update(headers)
|
|
2987
2973
|
# Authorization tokens are not needed in a snowflake notebook environment
|
|
2988
2974
|
if not self._is_snowflake_notebook:
|
|
2989
|
-
request_headers["Authorization"] = f'Snowflake Token="{self._token_handler.
|
|
2975
|
+
request_headers["Authorization"] = f'Snowflake Token="{self._token_handler.get_ingress_token(self.service_endpoint)}"'
|
|
2990
2976
|
# needed for oauth, does no harm for other authentication methods
|
|
2991
2977
|
request_headers["X-SF-SPCS-Authentication-Method"] = 'OAUTH'
|
|
2992
2978
|
request_headers["Content-Type"] = 'application/x-www-form-urlencoded'
|
|
@@ -2994,7 +2980,8 @@ class DirectAccessClient:
|
|
|
2994
2980
|
|
|
2995
2981
|
request_headers["user-agent"] = get_pyrel_version(self.generation)
|
|
2996
2982
|
request_headers["pyrel_program_id"] = debugging.get_program_span_id() or ""
|
|
2997
|
-
|
|
2983
|
+
|
|
2984
|
+
return debugging.add_current_propagation_headers(request_headers)
|
|
2998
2985
|
|
|
2999
2986
|
class DirectAccessResources(Resources):
|
|
3000
2987
|
"""
|
|
@@ -7,7 +7,7 @@ from relationalai.clients.cache_store import GraphIndexCache
|
|
|
7
7
|
from relationalai.clients.util import get_pyrel_version, poll_with_specified_overhead
|
|
8
8
|
from relationalai.errors import (
|
|
9
9
|
ERPNotRunningError,
|
|
10
|
-
|
|
10
|
+
EngineProvisioningFailed,
|
|
11
11
|
SnowflakeChangeTrackingNotEnabledException,
|
|
12
12
|
SnowflakeTableObjectsException,
|
|
13
13
|
SnowflakeTableObject,
|
|
@@ -142,7 +142,10 @@ class UseIndexPoller:
|
|
|
142
142
|
"should_check_cdc": self.should_check_cdc,
|
|
143
143
|
"init_engine_async": self.init_engine_async,
|
|
144
144
|
})
|
|
145
|
-
|
|
145
|
+
|
|
146
|
+
request_headers = debugging.add_current_propagation_headers(self.headers)
|
|
147
|
+
|
|
148
|
+
sql_string = f"CALL {self.app_name}.api.use_index([{sources_object_references_str}], PARSE_JSON(?), {request_headers});"
|
|
146
149
|
|
|
147
150
|
with debugging.span("wait", counter=self.counter, use_index_id=use_index_id) as span:
|
|
148
151
|
results = self.res._exec(sql_string, [params])
|
|
@@ -261,7 +264,11 @@ class UseIndexPoller:
|
|
|
261
264
|
if self.engine_errors:
|
|
262
265
|
spinner.update_messages({ "message": "Errors found. See below for details." })
|
|
263
266
|
# if there is an engine error, probably auto create engine failed
|
|
264
|
-
|
|
267
|
+
# Create a synthetic exception from the first engine error
|
|
268
|
+
first_error = self.engine_errors[0]
|
|
269
|
+
error_message = first_error.get("message", "Unknown engine error")
|
|
270
|
+
synthetic_exception = Exception(f"Engine error: {error_message}")
|
|
271
|
+
raise EngineProvisioningFailed(self.engine_name, synthetic_exception)
|
|
265
272
|
|
|
266
273
|
if num_tables_altered > 0:
|
|
267
274
|
s = "s" if num_tables_altered > 1 else ""
|
|
@@ -4,7 +4,7 @@ import contextlib
|
|
|
4
4
|
import datetime
|
|
5
5
|
import json
|
|
6
6
|
import os
|
|
7
|
-
from typing import Dict, Generator
|
|
7
|
+
from typing import Dict, Generator, Optional
|
|
8
8
|
import logging
|
|
9
9
|
import uuid
|
|
10
10
|
import warnings
|
|
@@ -212,6 +212,15 @@ class Span:
|
|
|
212
212
|
"attrs": self.attrs,
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
+
|
|
216
|
+
def add_current_propagation_headers(headers: Optional[Dict]) -> Dict:
|
|
217
|
+
prop_headers = gen_current_propagation_headers()
|
|
218
|
+
|
|
219
|
+
if headers:
|
|
220
|
+
prop_headers.update(headers)
|
|
221
|
+
|
|
222
|
+
return prop_headers
|
|
223
|
+
|
|
215
224
|
def gen_current_propagation_headers():
|
|
216
225
|
return generate_propagation_headers(get_current_span())
|
|
217
226
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
|
|
3
|
+
from relationalai.semantics.internal import (
|
|
4
|
+
Model, Concept, Relationship, RelationshipReading, Expression, Fragment, Error,
|
|
5
|
+
String, Integer, Int64, Int128, Float, Decimal, Bool,
|
|
6
|
+
Date, DateTime,
|
|
7
|
+
RawSource, Hash,
|
|
8
|
+
select, where, require, define, distinct, union, data,
|
|
9
|
+
rank, asc, desc,
|
|
10
|
+
count, sum, min, max, avg, per,
|
|
11
|
+
not_, internal as builder, annotations
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"Model", "Concept", "Relationship", "RelationshipReading", "Expression", "Fragment", "Error",
|
|
16
|
+
"String", "Integer", "Int64", "Int128", "Float", "Decimal", "Bool",
|
|
17
|
+
"Date", "DateTime",
|
|
18
|
+
"RawSource", "Hash",
|
|
19
|
+
"select", "where", "require", "define", "distinct", "union", "data",
|
|
20
|
+
"rank", "asc", "desc",
|
|
21
|
+
"count", "sum", "min", "max", "avg", "per",
|
|
22
|
+
"not_", "builder", "annotations"
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
warnings.warn(
|
|
26
|
+
"relationalai.early_access.builder.* is deprecated. "
|
|
27
|
+
"Please migrate to relationalai.semantics.*",
|
|
28
|
+
DeprecationWarning,
|
|
29
|
+
stacklevel=2,
|
|
30
|
+
)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
|
|
3
|
+
from relationalai.semantics.internal.internal import (field_to_type, Compiler, RelationshipRef, ConceptNew,
|
|
4
|
+
RelationshipFieldRef, Ref, Aggregate, decimal_concept_by_name,
|
|
5
|
+
_global_id, TupleArg)
|
|
6
|
+
from relationalai.semantics.internal import (
|
|
7
|
+
Model, Concept, Relationship, RelationshipReading, Expression, Fragment, Error, Field,
|
|
8
|
+
String, Integer, Int64, Int128, Float, Decimal, Bool,
|
|
9
|
+
Date, DateTime,
|
|
10
|
+
RawSource, Hash,
|
|
11
|
+
select, where, require, define, distinct, union, data,
|
|
12
|
+
rank, asc, desc,
|
|
13
|
+
count, sum, min, max, avg, per,
|
|
14
|
+
not_, internal as builder
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
"Model", "Concept", "Relationship", "RelationshipReading", "Expression", "Fragment", "Error", "Field",
|
|
19
|
+
"String", "Integer", "Int64", "Int128", "Float", "Decimal", "Bool",
|
|
20
|
+
"Date", "DateTime",
|
|
21
|
+
"RawSource", "Hash",
|
|
22
|
+
"select", "where", "require", "define", "distinct", "union", "data",
|
|
23
|
+
"rank", "asc", "desc",
|
|
24
|
+
"count", "sum", "min", "max", "avg", "per",
|
|
25
|
+
"not_", "builder",
|
|
26
|
+
"field_to_type", "Compiler", "RelationshipRef", "ConceptNew", "RelationshipFieldRef", "Ref", "Aggregate",
|
|
27
|
+
"decimal_concept_by_name", "_global_id", "TupleArg"
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
warnings.warn(
|
|
31
|
+
"relationalai.early_access.builder.builder is deprecated, "
|
|
32
|
+
"Please migrate to relationalai.semantics.internal",
|
|
33
|
+
DeprecationWarning,
|
|
34
|
+
stacklevel=2,
|
|
35
|
+
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
|
|
3
|
+
from relationalai.semantics.internal.snowflake import Table, is_direct_access_enabled
|
|
4
|
+
|
|
5
|
+
__all__ = ["Table", "is_direct_access_enabled"]
|
|
6
|
+
|
|
7
|
+
warnings.warn(
|
|
8
|
+
"relationalai.early_access.builder.snowflake is deprecated, "
|
|
9
|
+
"Please migrate to relationalai.semantics.internal.snowflake",
|
|
10
|
+
DeprecationWarning,
|
|
11
|
+
stacklevel=2,
|
|
12
|
+
)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
|
|
3
|
+
from relationalai.semantics.std import range, hash, cast, dates, math, strings, decimals, integers, pragmas, \
|
|
4
|
+
constraints, uuid_to_string
|
|
5
|
+
|
|
6
|
+
__all__ = [
|
|
7
|
+
"range",
|
|
8
|
+
"hash",
|
|
9
|
+
"cast",
|
|
10
|
+
"dates",
|
|
11
|
+
"math",
|
|
12
|
+
"strings",
|
|
13
|
+
"decimals",
|
|
14
|
+
"integers",
|
|
15
|
+
"pragmas",
|
|
16
|
+
"constraints",
|
|
17
|
+
"uuid_to_string"
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
warnings.warn(
|
|
21
|
+
"relationalai.early_access.builder.std.* is deprecated. "
|
|
22
|
+
"Please migrate to relationalai.semantics.std.*",
|
|
23
|
+
DeprecationWarning,
|
|
24
|
+
stacklevel=2,
|
|
25
|
+
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
|
|
3
|
+
from relationalai.semantics.std.decimals import decimal, parse_decimal
|
|
4
|
+
|
|
5
|
+
__all__ = ["decimal", "parse_decimal"]
|
|
6
|
+
|
|
7
|
+
warnings.warn(
|
|
8
|
+
"relationalai.early_access.builder.std.decimals is deprecated, "
|
|
9
|
+
"Please migrate to relationalai.semantics.std.decimals",
|
|
10
|
+
DeprecationWarning,
|
|
11
|
+
stacklevel=2,
|
|
12
|
+
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
|
|
3
|
+
from relationalai.semantics.std.integers import int64, int128, parse, parse_int64, parse_int128
|
|
4
|
+
|
|
5
|
+
__all__ = ["int64", "int128", "parse", "parse_int64", "parse_int128"]
|
|
6
|
+
|
|
7
|
+
warnings.warn(
|
|
8
|
+
"relationalai.early_access.builder.std.integers is deprecated, "
|
|
9
|
+
"Please migrate to relationalai.semantics.std.integers",
|
|
10
|
+
DeprecationWarning,
|
|
11
|
+
stacklevel=2,
|
|
12
|
+
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
|
|
3
|
+
from relationalai.semantics.std.math import abs, isnan, isinf, maximum, natural_log, sqrt, minimum, ceil, floor
|
|
4
|
+
|
|
5
|
+
__all__ = ["abs", "isnan", "isinf", "maximum", "natural_log", "sqrt", "minimum", "ceil", "floor"]
|
|
6
|
+
|
|
7
|
+
warnings.warn(
|
|
8
|
+
"relationalai.early_access.builder.std.math is deprecated, "
|
|
9
|
+
"Please migrate to relationalai.semantics.std.math",
|
|
10
|
+
DeprecationWarning,
|
|
11
|
+
stacklevel=2,
|
|
12
|
+
)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
|
|
3
|
+
from relationalai.semantics.std.strings import (string, len, contains, substring, like, lower, upper, strip, startswith,
|
|
4
|
+
endswith, levenshtein, concat)
|
|
5
|
+
|
|
6
|
+
__all__ = ["string", "len", "contains", "substring", "like", "lower", "upper", "strip", "startswith", "endswith",
|
|
7
|
+
"levenshtein", "concat"]
|
|
8
|
+
|
|
9
|
+
warnings.warn(
|
|
10
|
+
"relationalai.early_access.builder.std.strings is deprecated, "
|
|
11
|
+
"Please migrate to relationalai.semantics.std.strings",
|
|
12
|
+
DeprecationWarning,
|
|
13
|
+
stacklevel=2,
|
|
14
|
+
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
|
|
3
|
+
from relationalai.semantics.devtools import CompilationManager
|
|
4
|
+
|
|
5
|
+
__all__ = ["CompilationManager"]
|
|
6
|
+
|
|
7
|
+
warnings.warn(
|
|
8
|
+
"relationalai.early_access.devtools.* is deprecated. "
|
|
9
|
+
"Please migrate to relationalai.semantics.devtools.*",
|
|
10
|
+
DeprecationWarning,
|
|
11
|
+
stacklevel=2,
|
|
12
|
+
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
|
|
3
|
+
from relationalai.semantics.devtools.benchmark_lqp import benchmark_lqp
|
|
4
|
+
|
|
5
|
+
__all__ = ["benchmark_lqp"]
|
|
6
|
+
|
|
7
|
+
warnings.warn(
|
|
8
|
+
"relationalai.early_access.devtools.benchmark_lqp is deprecated, "
|
|
9
|
+
"Please migrate to relationalai.semantics.devtools.benchmark_lqp",
|
|
10
|
+
DeprecationWarning,
|
|
11
|
+
stacklevel=2,
|
|
12
|
+
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
|
|
3
|
+
from relationalai.semantics.devtools.extract_lqp import extract_rai_calls
|
|
4
|
+
|
|
5
|
+
__all__ = ["extract_rai_calls"]
|
|
6
|
+
|
|
7
|
+
warnings.warn(
|
|
8
|
+
"relationalai.early_access.devtools.extract_lqp is deprecated. "
|
|
9
|
+
"Please migrate to relationalai.semantics.devtools.extract_lqp",
|
|
10
|
+
DeprecationWarning,
|
|
11
|
+
stacklevel=2,
|
|
12
|
+
)
|
|
@@ -7,8 +7,8 @@ from relationalai.early_access.dsl.adapters.orm.parser import ORMParser
|
|
|
7
7
|
from relationalai.early_access.dsl.core.utils import to_pascal_case
|
|
8
8
|
from relationalai.early_access.dsl.orm.constraints import RingType, ValueComparisonType, Range
|
|
9
9
|
from relationalai.early_access.dsl.orm.models import Model
|
|
10
|
-
from relationalai.
|
|
11
|
-
from relationalai.
|
|
10
|
+
from relationalai.semantics import Concept, Integer, String, DateTime, Decimal, Date, Float
|
|
11
|
+
from relationalai.semantics.metamodel.util import NameCache
|
|
12
12
|
from datetime import date, datetime
|
|
13
13
|
from decimal import Decimal as PyDecimal
|
|
14
14
|
|