relationalai 0.9.16__tar.gz → 0.9.17__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.17}/PKG-INFO +1 -1
- {relationalai-0.9.16 → relationalai-0.9.17}/pyproject.toml +1 -1
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/auth/token_handler.py +97 -27
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/auth/util.py +7 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/snowflake.py +9 -9
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/use_index_poller.py +6 -2
- relationalai-0.9.17/src/relationalai/early_access/builder/__init__.py +30 -0
- relationalai-0.9.17/src/relationalai/early_access/builder/builder/__init__.py +35 -0
- relationalai-0.9.17/src/relationalai/early_access/builder/snowflake/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/builder/std/__init__.py +25 -0
- relationalai-0.9.17/src/relationalai/early_access/builder/std/decimals/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/builder/std/integers/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/builder/std/math/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/builder/std/strings/__init__.py +14 -0
- relationalai-0.9.17/src/relationalai/early_access/devtools/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/devtools/benchmark_lqp/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/devtools/extract_lqp/__init__.py +12 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/adapters/orm/adapter_qb.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/adapters/orm/parser.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/bindings/common.py +4 -3
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/bindings/csv.py +3 -2
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/bindings/snowflake.py +4 -3
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/codegen/binder.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/codegen/helpers.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/codegen/relations.py +4 -4
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/codegen/weaver.py +3 -3
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ir/compiler.py +3 -3
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ir/executor.py +3 -3
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ontologies/export.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ontologies/models.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ontologies/python_printer.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ontologies/relationships.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ontologies/subtyping.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/measures/dimensions.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/measures/measure_rules.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/measures/measures.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/measures/role_exprs.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/models.py +3 -3
- relationalai-0.9.17/src/relationalai/early_access/dsl/orm/object_oriented_printer.py +344 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/printer.py +6 -14
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/reasoners.py +35 -6
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/relations.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/relationships.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/types.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/serialization.py +35 -13
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/snow/common.py +2 -3
- relationalai-0.9.17/src/relationalai/early_access/graphs/__init__.py +13 -0
- relationalai-0.9.17/src/relationalai/early_access/lqp/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/lqp/compiler/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/lqp/constructors/__init__.py +18 -0
- relationalai-0.9.17/src/relationalai/early_access/lqp/executor/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/lqp/ir/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/lqp/passes/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/lqp/pragmas/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/lqp/primitives/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/lqp/types/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/lqp/utils/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/lqp/validators/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/__init__.py +58 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/builtins/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/compiler/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/dependency/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/factory/__init__.py +17 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/helpers/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/ir/__init__.py +14 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/rewrite/__init__.py +5 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/typer/__init__.py +3 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/typer/typer/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/types/__init__.py +15 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/util/__init__.py +15 -0
- relationalai-0.9.17/src/relationalai/early_access/metamodel/visitor/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/__init__.py +22 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/api/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/benchmarks/__init__.py +13 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/graph/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/path_algorithms/find_paths/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/path_algorithms/one_sided_ball_repetition/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/path_algorithms/one_sided_ball_upto/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/path_algorithms/single/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/path_algorithms/two_sided_balls_repetition/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/path_algorithms/two_sided_balls_upto/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/path_algorithms/usp/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/rpq/__init__.py +13 -0
- relationalai-0.9.17/src/relationalai/early_access/paths/utilities/iterators/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/rel/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/rel/executor/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/rel/rel_utils/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/rel/rewrite/__init__.py +7 -0
- relationalai-0.9.17/src/relationalai/early_access/solvers/__init__.py +19 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/sql/__init__.py +1 -2
- relationalai-0.9.17/src/relationalai/early_access/sql/rewrite/__init__.py +3 -0
- relationalai-0.9.17/src/relationalai/early_access/tests/__init__.py +8 -0
- relationalai-0.9.17/src/relationalai/early_access/tests/logging/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/tests/test_snapshot_base/__init__.py +12 -0
- relationalai-0.9.17/src/relationalai/early_access/tests/utils/__init__.py +12 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/errors.py +21 -28
- relationalai-0.9.17/src/relationalai/semantics/__init__.py +21 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/devtools/__init__.py +0 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/devtools/benchmark_lqp.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/devtools/compilation_manager.py +7 -7
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/devtools/extract_lqp.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.17/src/relationalai/semantics/internal}/__init__.py +6 -6
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.17/src/relationalai/semantics/internal}/annotations.py +1 -1
- relationalai-0.9.16/src/relationalai/early_access/builder/builder.py → relationalai-0.9.17/src/relationalai/semantics/internal/internal.py +46 -12
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.17/src/relationalai/semantics/internal}/snowflake.py +15 -9
- relationalai-0.9.17/src/relationalai/semantics/lqp/__init__.py +3 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/lqp/compiler.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/lqp/constructors.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/lqp/executor.py +45 -43
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/lqp/model2lqp.py +19 -14
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/lqp/passes.py +71 -30
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/lqp/primitives.py +5 -7
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/lqp/types.py +4 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/lqp/utils.py +9 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/lqp/validators.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/__init__.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/compiler.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/dependency.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/executor.py +4 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/factory.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/helpers.py +5 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/rewrite/__init__.py +2 -1
- relationalai-0.9.17/src/relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +210 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/rewrite/extract_keys.py +101 -100
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/rewrite/extract_nested_logicals.py +5 -5
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/rewrite/fd_constraints.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/rewrite/flatten.py +13 -8
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/rewrite/gc_nodes.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/rewrite/list_types.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/rewrite/splinter.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/typer/checker.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/typer/typer.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access/graphs → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/README.md +22 -22
- {relationalai-0.9.16/src/relationalai/early_access/graphs → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/core.py +154 -135
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/README.md +4 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/api.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/benchmarks/grid_graph.py +1 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/Movies.ipynb +10 -12
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/basic_example.py +3 -4
- relationalai-0.9.17/src/relationalai/semantics/reasoners/graph/paths/examples/minimal_engine_warmup.py +3 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/movie_example.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/paths_benchmark.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/paths_example.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/pattern_to_automaton.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/find_paths_via_automaton.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/graph.py +1 -3
- relationalai-0.9.17/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/__init__.py +3 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/find_paths.py +2 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/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.17/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.17/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/single.py +4 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/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.17/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.17/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/usp-old.py +4 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/usp-tuple.py +4 -7
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/path_algorithms/usp.py +4 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/product_graph.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/rpq/filter.py +0 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/rpq/rpq.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/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.17/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.17/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.17/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.17/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.17/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.17/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.17/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.17/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.17/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_single_paths.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_single_walks.py +3 -6
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/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.17/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.17/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.17/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.17/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.17/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.17/src/relationalai/semantics/reasoners/graph}/paths/tests/tests_usp_nsp_single.py +3 -6
- relationalai-0.9.17/src/relationalai/semantics/reasoners/graph/paths/utilities/__init__.py +3 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/utilities/iterators.py +1 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/utilities/prefix_sum.py +1 -2
- {relationalai-0.9.16/src/relationalai/early_access/graphs → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/tests/README.md +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/solvers → relationalai-0.9.17/src/relationalai/semantics/reasoners/optimization}/common.py +6 -5
- {relationalai-0.9.16/src/relationalai/early_access/solvers → relationalai-0.9.17/src/relationalai/semantics/reasoners/optimization}/solvers_dev.py +5 -4
- {relationalai-0.9.16/src/relationalai/early_access/solvers → relationalai-0.9.17/src/relationalai/semantics/reasoners/optimization}/solvers_pb.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/rel/builtins.py +2 -2
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/rel/compiler.py +9 -7
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/rel/executor.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/rel/rel.py +3 -3
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/rel/rel_utils.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/rel/rewrite/cdc.py +4 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/rel/rewrite/extract_common.py +5 -5
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/rel/rewrite/quantify_vars.py +4 -4
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/semantics/sql/compiler.py +33 -13
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/semantics/sql/executor/duck_db.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/semantics/sql/executor/result_helpers.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/semantics/sql/executor/snowflake.py +4 -4
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/semantics/sql/rewrite/denormalize.py +2 -2
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/semantics/sql/rewrite/double_negation.py +1 -1
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/semantics/sql/rewrite/recursive_union.py +3 -3
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/semantics/sql/rewrite/sort_output_query.py +4 -4
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/semantics/sql/sql.py +17 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.17/src/relationalai/semantics}/std/__init__.py +12 -9
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.17/src/relationalai/semantics}/std/constraints.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.17/src/relationalai/semantics}/std/dates.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.17/src/relationalai/semantics}/std/decimals.py +8 -10
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.17/src/relationalai/semantics}/std/integers.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.17/src/relationalai/semantics}/std/math.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.17/src/relationalai/semantics}/std/pragmas.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.17/src/relationalai/semantics}/std/std.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access/builder → relationalai-0.9.17/src/relationalai/semantics}/std/strings.py +1 -1
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/tests/test_snapshot_base.py +4 -4
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/tests/utils.py +11 -11
- {relationalai-0.9.16 → relationalai-0.9.17}/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 → relationalai-0.9.17}/.gitignore +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/LICENSE +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/docs/pypi/README.md +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/frontend/debugger/dist/.gitignore +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/frontend/debugger/dist/assets/favicon-Dy0ZgA6N.png +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/frontend/debugger/dist/assets/index-Cssla-O7.js +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/frontend/debugger/dist/assets/index-DlHsYx1V.css +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/frontend/debugger/dist/index.html +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/raitoolkit/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/raitoolkit/events/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/raitoolkit/procedures/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/raitoolkit/procedures/procedure.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/raitoolkit/rel/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/raitoolkit/tables/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/raitoolkit/tasks/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/raitoolkit/tasks/task.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/analysis/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/analysis/mechanistic.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/analysis/whynot.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/auth/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/auth/jwt_generator.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/auth/oauth_callback_server.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/azure.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/cache_store.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/client.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/config.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/export_procedure.py.jinja +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/hash_util.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/profile_polling.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/result_helpers.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/types.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/clients/util.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/compiler.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/debugging.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/dependencies.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/dsl.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/adapters/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/adapters/orm/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/adapters/orm/model.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/adapters/owl/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/adapters/owl/adapter.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/adapters/owl/model.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/adapters/owl/parser.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/bindings/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/bindings/legacy/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/bindings/legacy/binding_models.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/codegen/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/codegen/common.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/constants.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/builders/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/builders/logic.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/builders/scalar_constraint.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/constraints/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/constraints/predicate/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/constraints/predicate/atomic.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/constraints/predicate/universal.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/constraints/scalar.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/context.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/cset.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/exprs/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/exprs/relational.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/exprs/scalar.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/instances.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/logic/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/logic/aggregation.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/logic/exists.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/logic/helper.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/namespaces.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/relations.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/rules.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/stack.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/std/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/temporal/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/temporal/recall.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/types/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/types/concepts.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/types/constrained/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/types/constrained/nominal.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/types/constrained/subtype.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/types/standard.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/types/unconstrained.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/types/variables.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/core/utils.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ir/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ontologies/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ontologies/constraints.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ontologies/raw_source.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ontologies/readings.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/ontologies/roles.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/constraints.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/measures/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/measures/initializer.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/reasoner_errors.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/utils.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/orm/verb.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/physical_metadata/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/physical_metadata/tables.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/relations.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/rulesets.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/schemas/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/schemas/builder.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/schemas/comp_names.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/schemas/components.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/schemas/contexts.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/schemas/exprs.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/schemas/fragments.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/serialize/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/serialize/binding_model.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/serialize/exporter.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/serialize/model.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/snow/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/snow/api.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/state_mgmt/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/state_mgmt/state_charts.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/state_mgmt/transitions.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/types/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/types/concepts.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/types/entities.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/types/values.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/utils.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/paths/path_algorithms/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/paths/utilities/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/sql/executor/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/environments/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/environments/base.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/environments/ci.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/environments/colab.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/environments/generic.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/environments/hex.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/environments/ipython.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/environments/jupyter.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/environments/snowbook.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/environments/terminal.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/SF.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/graphs.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/inspect.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/api.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/automaton.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/bridge.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/compiler.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/datalog.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/diagnostics.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/filter.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/glushkov.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/options.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/pathfinder-v0.7.0.rel +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/rpq.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/transition.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/pathfinder/utils.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/paths/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/paths/pathfinder.rel +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/paths/tree_agg.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/experimental/solvers.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access/lqp → relationalai-0.9.17/src/relationalai/loaders}/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/loaders/csv.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/loaders/loader.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/loaders/types.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/metagen.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/metamodel.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/rel.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/rel_emitter.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/rel_utils.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/designs/query_builder/identify_by.md +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/lqp/ir.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/lqp/pragmas.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/lqp/result_helpers.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/builtins.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/dataflow.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/ir.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/typer/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/types.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/util.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/metamodel/visitor.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access/tests → relationalai-0.9.17/src/relationalai/semantics/reasoners}/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access/graphs → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access/graphs → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/design/beyond_demand_transform.md +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/benchmarks/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/code_organization.md +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/actedin.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/directed.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/follows.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/movies.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/person.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/produced.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/ratings.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/examples/movies_data/wrote.csv +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/rpq/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/rpq/automaton.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/rpq/diagnostics.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/rpq/glushkov.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/rpq/transition.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics/reasoners/graph}/paths/utilities/utilities.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access/solvers → relationalai-0.9.17/src/relationalai/semantics/reasoners/optimization}/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/rel/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/rel/rewrite/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/semantics/sql/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/semantics/sql/executor/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/semantics/sql/rewrite/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/loaders → relationalai-0.9.17/src/relationalai/semantics/tests}/__init__.py +0 -0
- {relationalai-0.9.16/src/relationalai/early_access → relationalai-0.9.17/src/relationalai/semantics}/tests/logging.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/std/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/std/aggregates.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/std/dates.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/std/graphs.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/std/inspect.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/std/math.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/std/re.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/std/strings.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/tools/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/tools/cleanup_snapshots.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/tools/cli.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/tools/cli_controls.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/tools/cli_helpers.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/tools/constants.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/tools/debugger.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/tools/debugger_client.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/tools/debugger_server.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/tools/dev.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/tools/notes +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/tools/snapshot_viewer.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/util/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/util/constants.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/util/format.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/util/graph.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/util/otel_handler.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/util/snowflake_handler.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/util/span_format_test.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/util/span_tracker.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/util/spans_file_handler.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/util/tracing_handler.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai_test_util/__init__.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai_test_util/fixtures.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai_test_util/snapshot.py +0 -0
- {relationalai-0.9.16 → relationalai-0.9.17}/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)
|
|
@@ -1703,7 +1703,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
1703
1703
|
engine = None
|
|
1704
1704
|
pass
|
|
1705
1705
|
else:
|
|
1706
|
-
raise
|
|
1706
|
+
raise EngineProvisioningFailed(engine_name, e) from e
|
|
1707
1707
|
|
|
1708
1708
|
if not engine:
|
|
1709
1709
|
with Spinner(
|
|
@@ -1716,7 +1716,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
1716
1716
|
print(e)
|
|
1717
1717
|
if DUO_TEXT in str(e).lower():
|
|
1718
1718
|
raise DuoSecurityFailed(e)
|
|
1719
|
-
raise
|
|
1719
|
+
raise EngineProvisioningFailed(engine_name, e) from e
|
|
1720
1720
|
return engine_name
|
|
1721
1721
|
|
|
1722
1722
|
def auto_create_engine_async(self, name: str | None = None):
|
|
@@ -1792,7 +1792,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
1792
1792
|
pass
|
|
1793
1793
|
else:
|
|
1794
1794
|
print(e)
|
|
1795
|
-
|
|
1795
|
+
raise EngineProvisioningFailed(engine_name, e) from e
|
|
1796
1796
|
|
|
1797
1797
|
if not engine:
|
|
1798
1798
|
self.create_engine_async(engine_name, size=self.config.get("engine_size", None))
|
|
@@ -1815,7 +1815,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
1815
1815
|
if isinstance(e, RAIException):
|
|
1816
1816
|
raise e
|
|
1817
1817
|
print(e)
|
|
1818
|
-
raise
|
|
1818
|
+
raise EngineProvisioningFailed(engine_name, e) from e
|
|
1819
1819
|
|
|
1820
1820
|
def validate_engine_size(self, size: str) -> Tuple[bool, List[str]]:
|
|
1821
1821
|
if size is not None:
|
|
@@ -2986,7 +2986,7 @@ class DirectAccessClient:
|
|
|
2986
2986
|
request_headers.update(headers)
|
|
2987
2987
|
# Authorization tokens are not needed in a snowflake notebook environment
|
|
2988
2988
|
if not self._is_snowflake_notebook:
|
|
2989
|
-
request_headers["Authorization"] = f'Snowflake Token="{self._token_handler.
|
|
2989
|
+
request_headers["Authorization"] = f'Snowflake Token="{self._token_handler.get_ingress_token(self.service_endpoint)}"'
|
|
2990
2990
|
# needed for oauth, does no harm for other authentication methods
|
|
2991
2991
|
request_headers["X-SF-SPCS-Authentication-Method"] = 'OAUTH'
|
|
2992
2992
|
request_headers["Content-Type"] = 'application/x-www-form-urlencoded'
|
|
@@ -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,
|
|
@@ -261,7 +261,11 @@ class UseIndexPoller:
|
|
|
261
261
|
if self.engine_errors:
|
|
262
262
|
spinner.update_messages({ "message": "Errors found. See below for details." })
|
|
263
263
|
# if there is an engine error, probably auto create engine failed
|
|
264
|
-
|
|
264
|
+
# Create a synthetic exception from the first engine error
|
|
265
|
+
first_error = self.engine_errors[0]
|
|
266
|
+
error_message = first_error.get("message", "Unknown engine error")
|
|
267
|
+
synthetic_exception = Exception(f"Engine error: {error_message}")
|
|
268
|
+
raise EngineProvisioningFailed(self.engine_name, synthetic_exception)
|
|
265
269
|
|
|
266
270
|
if num_tables_altered > 0:
|
|
267
271
|
s = "s" if num_tables_altered > 1 else ""
|
|
@@ -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)
|
|
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"
|
|
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
|
|
{relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/adapters/orm/parser.py
RENAMED
|
@@ -11,7 +11,7 @@ from relationalai.early_access.dsl.adapters.orm.model import ORMEntityType, ORMV
|
|
|
11
11
|
ORMRoleSubsetConstraint, ORMInclusiveRoleConstraint, ORMExclusiveRoleConstraint, ORMEqualityConstraint, \
|
|
12
12
|
ORMFrequencyConstraint, ORMCardinalityConstraint, ORMRange, ORMRoleCardinalityConstraint, \
|
|
13
13
|
ORMValueTypeValueConstraint
|
|
14
|
-
from relationalai.
|
|
14
|
+
from relationalai.semantics.metamodel.util import ordered_set
|
|
15
15
|
from relationalai.util.graph import topological_sort
|
|
16
16
|
|
|
17
17
|
|
{relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/bindings/common.py
RENAMED
|
@@ -5,9 +5,10 @@ from enum import Enum
|
|
|
5
5
|
from typing import Optional, TypeVar, Generic, Tuple, Callable, Sequence
|
|
6
6
|
from typing import Union
|
|
7
7
|
|
|
8
|
-
import relationalai.
|
|
9
|
-
from relationalai.
|
|
10
|
-
from relationalai.
|
|
8
|
+
import relationalai.semantics as qb
|
|
9
|
+
from relationalai.semantics import std
|
|
10
|
+
from relationalai.semantics.internal import internal as b
|
|
11
|
+
from relationalai.semantics.internal.internal import Not
|
|
11
12
|
from relationalai.early_access.dsl.orm.relationships import Relationship, Role
|
|
12
13
|
from relationalai.early_access.dsl.orm.types import Concept
|
|
13
14
|
from relationalai.early_access.dsl.snow.common import ColumnRef, ForeignKey
|
{relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/bindings/csv.py
RENAMED
|
@@ -4,8 +4,9 @@ from typing import Optional
|
|
|
4
4
|
import numpy as np
|
|
5
5
|
import pandas as pd
|
|
6
6
|
|
|
7
|
-
from relationalai.
|
|
8
|
-
from relationalai.
|
|
7
|
+
from relationalai.semantics import define, where
|
|
8
|
+
from relationalai.semantics.std import decimals
|
|
9
|
+
from relationalai.semantics.internal import internal as b
|
|
9
10
|
from relationalai.early_access.dsl.bindings.common import BindableColumn, AbstractBindableTable
|
|
10
11
|
from relationalai.early_access.dsl.snow.common import CsvColumnMetadata
|
|
11
12
|
from relationalai.early_access.dsl.utils import normalize
|
{relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/bindings/snowflake.py
RENAMED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
from
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from relationalai.semantics.internal import snowflake as sf, internal as b
|
|
2
3
|
from relationalai.early_access.dsl.bindings.common import BindableColumn, AbstractBindableTable
|
|
3
4
|
|
|
4
5
|
|
|
@@ -26,8 +27,8 @@ class BindableSnowflakeColumn(BindableColumn, sf.Column):
|
|
|
26
27
|
|
|
27
28
|
class SnowflakeTable(AbstractBindableTable[BindableSnowflakeColumn], sf.Table):
|
|
28
29
|
|
|
29
|
-
def __init__(self, fqn: str, model):
|
|
30
|
-
sf.Table.__init__(self, fqn)
|
|
30
|
+
def __init__(self, fqn: str, model, schema:dict[str, str|b.Concept]|None=None):
|
|
31
|
+
sf.Table.__init__(self, fqn, schema=schema)
|
|
31
32
|
AbstractBindableTable.__init__(self, fqn, model, set())
|
|
32
33
|
self._initialize(model)
|
|
33
34
|
|
{relationalai-0.9.16 → relationalai-0.9.17}/src/relationalai/early_access/dsl/codegen/binder.py
RENAMED
|
@@ -4,9 +4,9 @@ from relationalai.early_access.dsl.bindings.common import Binding, IdentifierCon
|
|
|
4
4
|
SubtypeConceptBinding, BindableTable, BindableAttribute, ReferentConceptBinding
|
|
5
5
|
from relationalai.early_access.dsl.codegen.common import BoundIdentifierConstraint, BoundRelationship
|
|
6
6
|
from relationalai.early_access.dsl.orm.relationships import Role, Relationship
|
|
7
|
-
from relationalai.
|
|
7
|
+
from relationalai.semantics.metamodel.util import OrderedSet
|
|
8
8
|
|
|
9
|
-
import relationalai.
|
|
9
|
+
import relationalai.semantics as qb
|
|
10
10
|
|
|
11
11
|
class Binder:
|
|
12
12
|
def __init__(self, model):
|