relationalai 0.13.1__tar.gz → 0.13.3__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.13.1 → relationalai-0.13.3}/PKG-INFO +1 -1
- {relationalai-0.13.1 → relationalai-0.13.3}/pyproject.toml +2 -2
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/client.py +52 -18
- relationalai-0.13.3/src/relationalai/clients/exec_txn_poller.py +122 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/local.py +23 -8
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/azure/azure.py +36 -11
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/__init__.py +3 -3
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/cli_resources.py +12 -1
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/direct_access_resources.py +63 -22
- relationalai-0.13.3/src/relationalai/clients/resources/snowflake/engine_service.py +381 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/engine_state_handlers.py +35 -29
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/error_handlers.py +43 -2
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/snowflake.py +163 -172
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/types.py +5 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/errors.py +1 -1
- relationalai-0.13.3/src/relationalai/semantics/lqp/algorithms.py +173 -0
- relationalai-0.13.3/src/relationalai/semantics/lqp/builtins.py +213 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/executor.py +65 -36
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/ir.py +28 -2
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/model2lqp.py +215 -45
- relationalai-0.13.3/src/relationalai/semantics/lqp/passes.py +35 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/rewrite/__init__.py +12 -0
- relationalai-0.13.3/src/relationalai/semantics/lqp/rewrite/algorithm.py +385 -0
- relationalai-0.13.3/src/relationalai/semantics/lqp/rewrite/constants_to_vars.py +70 -0
- relationalai-0.13.3/src/relationalai/semantics/lqp/rewrite/deduplicate_vars.py +104 -0
- relationalai-0.13.3/src/relationalai/semantics/lqp/rewrite/eliminate_data.py +108 -0
- relationalai-0.13.3/src/relationalai/semantics/lqp/rewrite/period_math.py +77 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/rewrite/quantify_vars.py +65 -31
- relationalai-0.13.3/src/relationalai/semantics/lqp/rewrite/unify_definitions.py +317 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/utils.py +11 -1
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/validators.py +14 -1
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/builtins.py +2 -1
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/compiler.py +2 -1
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/dependency.py +12 -3
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/executor.py +11 -1
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/factory.py +2 -2
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/helpers.py +7 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/ir.py +3 -2
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +30 -20
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/rewrite/flatten.py +50 -13
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/rewrite/format_outputs.py +9 -3
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/typer/checker.py +6 -4
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/typer/typer.py +4 -3
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/visitor.py +4 -3
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/reasoners/optimization/solvers_dev.py +1 -1
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/reasoners/optimization/solvers_pb.py +3 -4
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/rel/compiler.py +2 -1
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/rel/executor.py +3 -2
- relationalai-0.13.3/src/relationalai/semantics/tests/lqp/algorithms.py +345 -0
- relationalai-0.13.3/src/relationalai/tools/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/tools/cli.py +339 -186
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/tools/cli_controls.py +216 -67
- relationalai-0.13.3/src/relationalai/tools/cli_helpers.py +802 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/format.py +5 -2
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai_test_util/fixtures.py +2 -2
- relationalai-0.13.1/src/relationalai/clients/exec_txn_poller.py +0 -91
- relationalai-0.13.1/src/relationalai/semantics/lqp/builtins.py +0 -16
- relationalai-0.13.1/src/relationalai/semantics/lqp/passes.py +0 -680
- relationalai-0.13.1/src/relationalai/tools/cli_helpers.py +0 -398
- {relationalai-0.13.1 → relationalai-0.13.3}/.gitignore +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/LICENSE +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/docs/pypi/README.md +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/frontend/debugger/dist/.gitignore +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/frontend/debugger/dist/assets/favicon-Dy0ZgA6N.png +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/frontend/debugger/dist/assets/index-Cssla-O7.js +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/frontend/debugger/dist/assets/index-DlHsYx1V.css +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/frontend/debugger/dist/index.html +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/raitoolkit/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/raitoolkit/events/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/raitoolkit/procedures/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/raitoolkit/procedures/procedure.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/raitoolkit/rel/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/raitoolkit/tables/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/raitoolkit/tasks/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/raitoolkit/tasks/task.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/analysis/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/analysis/mechanistic.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/analysis/whynot.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/auth/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/auth/jwt_generator.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/auth/oauth_callback_server.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/auth/token_handler.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/auth/util.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/config.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/direct_access_client.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/hash_util.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/profile_polling.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/cache_store.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/export_procedure.py.jinja +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/resources_factory.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/use_index_poller.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/use_index_resources.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/util.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/result_helpers.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/util.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/compiler.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/debugging.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/dependencies.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/docutils.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/dsl.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/builder/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/builder/builder/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/builder/snowflake/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/builder/std/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/builder/std/decimals/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/builder/std/integers/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/builder/std/math/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/builder/std/strings/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/devtools/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/devtools/benchmark_lqp/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/devtools/extract_lqp/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/adapters/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/adapters/orm/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/adapters/orm/adapter_qb.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/adapters/orm/model.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/adapters/orm/parser.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/adapters/owl/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/adapters/owl/adapter.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/adapters/owl/model.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/adapters/owl/parser.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/bindings/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/bindings/common.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/bindings/csv.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/bindings/legacy/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/bindings/legacy/binding_models.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/bindings/snowflake.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/codegen/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/codegen/binder.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/codegen/common.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/codegen/helpers.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/codegen/relations.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/codegen/weaver.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/constants.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/builders/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/builders/logic.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/builders/scalar_constraint.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/constraints/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/constraints/predicate/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/constraints/predicate/atomic.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/constraints/predicate/universal.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/constraints/scalar.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/context.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/cset.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/exprs/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/exprs/relational.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/exprs/scalar.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/instances.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/logic/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/logic/aggregation.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/logic/exists.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/logic/helper.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/namespaces.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/relations.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/rules.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/stack.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/std/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/temporal/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/temporal/recall.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/types/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/types/concepts.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/types/constrained/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/types/constrained/nominal.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/types/constrained/subtype.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/types/standard.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/types/unconstrained.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/types/variables.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/core/utils.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ir/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ir/compiler.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ir/executor.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ontologies/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ontologies/constraints.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ontologies/export.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ontologies/models.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ontologies/python_printer.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ontologies/raw_source.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ontologies/readings.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ontologies/relationships.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ontologies/roles.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/ontologies/subtyping.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/constraints.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/measures/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/measures/dimensions.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/measures/initializer.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/measures/measure_rules.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/measures/measures.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/measures/role_exprs.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/models.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/object_oriented_printer.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/printer.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/reasoner_errors.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/reasoners.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/relations.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/relationships.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/types.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/utils.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/orm/verb.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/physical_metadata/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/physical_metadata/tables.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/relations.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/rulesets.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/schemas/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/schemas/builder.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/schemas/comp_names.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/schemas/components.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/schemas/contexts.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/schemas/exprs.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/schemas/fragments.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/serialization.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/serialize/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/serialize/binding_model.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/serialize/exporter.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/serialize/model.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/snow/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/snow/api.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/snow/common.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/state_mgmt/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/state_mgmt/state_charts.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/state_mgmt/transitions.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/types/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/types/concepts.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/types/entities.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/types/values.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/dsl/utils.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/graphs/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/lqp/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/lqp/compiler/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/lqp/constructors/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/lqp/executor/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/lqp/ir/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/lqp/passes/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/lqp/pragmas/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/lqp/primitives/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/lqp/types/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/lqp/utils/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/lqp/validators/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/builtins/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/compiler/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/dependency/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/factory/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/helpers/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/ir/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/rewrite/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/typer/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/typer/typer/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/types/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/util/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/metamodel/visitor/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/rel/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/rel/executor/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/rel/rel_utils/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/rel/rewrite/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/solvers/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/sql/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/sql/executor/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/sql/rewrite/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/tests/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/tests/logging/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/tests/test_snapshot_base/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/early_access/tests/utils/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/environments/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/environments/base.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/environments/ci.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/environments/colab.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/environments/generic.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/environments/hex.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/environments/ipython.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/environments/jupyter.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/environments/snowbook.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/environments/terminal.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/SF.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/graphs.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/inspect.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/api.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/automaton.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/bridge.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/compiler.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/datalog.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/diagnostics.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/filter.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/glushkov.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/options.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/pathfinder-v0.7.0.rel +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/rpq.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/transition.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/pathfinder/utils.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/README.md +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/api.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/benchmarks/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/benchmarks/grid_graph.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/code_organization.md +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/Movies.ipynb +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/basic_example.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/minimal_engine_warmup.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/movie_example.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/movies_data/actedin.csv +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/movies_data/directed.csv +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/movies_data/follows.csv +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/movies_data/movies.csv +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/movies_data/person.csv +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/movies_data/produced.csv +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/movies_data/ratings.csv +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/movies_data/wrote.csv +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/paths_benchmark.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/paths_example.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/examples/pattern_to_automaton.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/find_paths_via_automaton.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/graph.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/path_algorithms/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/path_algorithms/find_paths.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/path_algorithms/one_sided_ball_repetition.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/path_algorithms/one_sided_ball_upto.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/path_algorithms/single.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/path_algorithms/two_sided_balls_repetition.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/path_algorithms/two_sided_balls_upto.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/path_algorithms/usp-old.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/path_algorithms/usp-tuple.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/path_algorithms/usp.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/product_graph.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/rpq/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/rpq/automaton.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/rpq/diagnostics.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/rpq/filter.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/rpq/glushkov.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/rpq/rpq.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/rpq/transition.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_limit_sp_max_length.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_limit_sp_multiple.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_limit_sp_single.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_limit_walks_multiple.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_limit_walks_single.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_one_sided_ball_repetition_multiple.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_one_sided_ball_repetition_single.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_one_sided_ball_upto_multiple.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_one_sided_ball_upto_single.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_single_paths.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_single_walks.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_single_walks_undirected.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_two_sided_balls_repetition_multiple.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_two_sided_balls_repetition_single.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_two_sided_balls_upto_multiple.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_two_sided_balls_upto_single.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_usp_nsp_multiple.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tests/tests_usp_nsp_single.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/tree_agg.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/utilities/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/utilities/iterators.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/utilities/prefix_sum.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/paths/utilities/utilities.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/experimental/solvers.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/loaders/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/loaders/csv.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/loaders/loader.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/loaders/types.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/metagen.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/metamodel.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/rel.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/rel_emitter.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/rel_utils.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/designs/query_builder/identify_by.md +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/devtools/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/devtools/benchmark_lqp.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/devtools/compilation_manager.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/devtools/extract_lqp.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/internal/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/internal/annotations.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/internal/internal.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/internal/snowflake.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/README.md +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/compiler.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/constructors.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/intrinsics.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/pragmas.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/primitives.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/result_helpers.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/rewrite/annotate_constraints.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/rewrite/cdc.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/rewrite/extract_common.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/rewrite/extract_keys.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/rewrite/function_annotations.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/rewrite/functional_dependencies.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/rewrite/splinter.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/lqp/types.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/dataflow.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/rewrite/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/rewrite/discharge_constraints.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/typer/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/types.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/metamodel/util.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/reasoners/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/reasoners/experimental/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/reasoners/graph/README.md +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/reasoners/graph/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/reasoners/graph/core.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/reasoners/graph/design/beyond_demand_transform.md +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/reasoners/graph/tests/README.md +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/reasoners/optimization/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/reasoners/optimization/common.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/rel/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/rel/builtins.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/rel/rel.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/rel/rel_utils.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/snowflake/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/sql/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/sql/compiler.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/sql/executor/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/sql/executor/duck_db.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/sql/executor/result_helpers.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/sql/executor/snowflake.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/sql/rewrite/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/sql/rewrite/denormalize.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/sql/rewrite/double_negation.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/sql/rewrite/recursive_union.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/sql/rewrite/sort_output_query.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/sql/sql.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/std/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/std/constraints.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/std/datetime.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/std/decimals.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/std/floats.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/std/integers.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/std/math.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/std/pragmas.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/std/re.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/std/std.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/std/strings.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/tests/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/tests/logging.py +0 -0
- {relationalai-0.13.1/src/relationalai/tools → relationalai-0.13.3/src/relationalai/semantics/tests/lqp}/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/tests/test_snapshot_abstract.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/tests/test_snapshot_base.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/semantics/tests/utils.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/std/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/std/aggregates.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/std/dates.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/std/graphs.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/std/inspect.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/std/math.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/std/re.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/std/strings.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/tools/cleanup_snapshots.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/tools/constants.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/tools/debugger.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/tools/debugger_client.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/tools/debugger_server.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/tools/dev.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/tools/notes +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/tools/qb_debugger.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/tools/query_utils.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/tools/snapshot_viewer.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/clean_up_databases.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/constants.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/graph.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/list_databases.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/otel_configuration.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/otel_handler.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/snowflake_handler.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/span_format_test.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/span_tracker.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/spans_file_handler.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/timeout.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/util/tracing_handler.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai_test_util/__init__.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai_test_util/snapshot.py +0 -0
- {relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai_test_util/traceback.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = 'relationalai'
|
|
3
|
-
version = '0.13.
|
|
3
|
+
version = '0.13.3'
|
|
4
4
|
description = 'RelationalAI Library and CLI'
|
|
5
5
|
readme="docs/pypi/README.md"
|
|
6
6
|
authors = [
|
|
@@ -120,7 +120,7 @@ reportMissingImports = true
|
|
|
120
120
|
reportMissingTypeStubs = false
|
|
121
121
|
pythonVersion = "3.10"
|
|
122
122
|
venvPath = "."
|
|
123
|
-
venv = ".venv"
|
|
123
|
+
venv = ".venv/3.11"
|
|
124
124
|
typeCheckingMode = "standard"
|
|
125
125
|
reportUnusedExpression = false
|
|
126
126
|
|
|
@@ -164,11 +164,18 @@ class ResourcesBase(ABC):
|
|
|
164
164
|
pass
|
|
165
165
|
|
|
166
166
|
@abstractmethod
|
|
167
|
-
def list_engines(
|
|
167
|
+
def list_engines(
|
|
168
|
+
self,
|
|
169
|
+
state: str | None = None,
|
|
170
|
+
name: str | None = None,
|
|
171
|
+
type: str | None = None,
|
|
172
|
+
size: str | None = None,
|
|
173
|
+
created_by: str | None = None,
|
|
174
|
+
) -> List[Any]:
|
|
168
175
|
pass
|
|
169
176
|
|
|
170
177
|
@abstractmethod
|
|
171
|
-
def get_engine(self, name: str) -> EngineState | None:
|
|
178
|
+
def get_engine(self, name: str, type: str) -> EngineState | None:
|
|
172
179
|
pass
|
|
173
180
|
|
|
174
181
|
@abstractmethod
|
|
@@ -180,23 +187,31 @@ class ResourcesBase(ABC):
|
|
|
180
187
|
pass
|
|
181
188
|
|
|
182
189
|
@abstractmethod
|
|
183
|
-
def create_engine(
|
|
190
|
+
def create_engine(
|
|
191
|
+
self,
|
|
192
|
+
name: str,
|
|
193
|
+
type: str | None = None,
|
|
194
|
+
size: str | None = None,
|
|
195
|
+
auto_suspend_mins: int | None = None,
|
|
196
|
+
headers: Dict | None = None,
|
|
197
|
+
settings: dict | None = None,
|
|
198
|
+
) -> dict | None:
|
|
184
199
|
pass
|
|
185
200
|
|
|
186
201
|
@abstractmethod
|
|
187
|
-
def delete_engine(self, name:str,
|
|
202
|
+
def delete_engine(self, name:str, type: str) -> dict | None:
|
|
188
203
|
pass
|
|
189
204
|
|
|
190
205
|
@abstractmethod
|
|
191
|
-
def suspend_engine(self, name: str):
|
|
206
|
+
def suspend_engine(self, name: str, type: str | None = None):
|
|
192
207
|
pass
|
|
193
208
|
|
|
194
209
|
@abstractmethod
|
|
195
|
-
def resume_engine(self, name: str, headers: Dict | None = None) -> dict:
|
|
210
|
+
def resume_engine(self, name: str, type: str | None = None, headers: Dict | None = None) -> dict:
|
|
196
211
|
pass
|
|
197
212
|
|
|
198
213
|
@abstractmethod
|
|
199
|
-
def resume_engine_async(self, name: str) -> dict:
|
|
214
|
+
def resume_engine_async(self, name: str, type: str | None = None, headers: Dict | None = None) -> dict:
|
|
200
215
|
pass
|
|
201
216
|
|
|
202
217
|
@abstractmethod
|
|
@@ -210,7 +225,7 @@ class ResourcesBase(ABC):
|
|
|
210
225
|
return engine
|
|
211
226
|
|
|
212
227
|
@abstractmethod
|
|
213
|
-
def auto_create_engine_async(self, name: str | None = None) -> str:
|
|
228
|
+
def auto_create_engine_async(self, name: str | None = None, type: str | None = None) -> str:
|
|
214
229
|
pass
|
|
215
230
|
|
|
216
231
|
_active_engine: EngineState|None = None
|
|
@@ -428,14 +443,34 @@ class ProviderBase(ABC):
|
|
|
428
443
|
|
|
429
444
|
resources: ResourcesBase
|
|
430
445
|
|
|
431
|
-
def list_engines(
|
|
432
|
-
|
|
446
|
+
def list_engines(
|
|
447
|
+
self,
|
|
448
|
+
state: str | None = None,
|
|
449
|
+
name: str | None = None,
|
|
450
|
+
type: str | None = None,
|
|
451
|
+
size: str | None = None,
|
|
452
|
+
created_by: str | None = None,
|
|
453
|
+
):
|
|
454
|
+
return self.resources.list_engines(state=state, name=name, type=type, size=size, created_by=created_by)
|
|
433
455
|
|
|
434
|
-
def create_engine(
|
|
435
|
-
|
|
456
|
+
def create_engine(
|
|
457
|
+
self,
|
|
458
|
+
name: str,
|
|
459
|
+
type: str | None = None,
|
|
460
|
+
size: str | None = None,
|
|
461
|
+
auto_suspend_mins: int | None = None,
|
|
462
|
+
settings: dict | None = None,
|
|
463
|
+
):
|
|
464
|
+
return self.resources.create_engine(
|
|
465
|
+
name,
|
|
466
|
+
type=type,
|
|
467
|
+
size=size,
|
|
468
|
+
auto_suspend_mins=auto_suspend_mins,
|
|
469
|
+
settings=settings,
|
|
470
|
+
)
|
|
436
471
|
|
|
437
|
-
def delete_engine(self, name:str):
|
|
438
|
-
return self.resources.delete_engine(name)
|
|
472
|
+
def delete_engine(self, name:str, type: str = "LOGIC"):
|
|
473
|
+
return self.resources.delete_engine(name, type)
|
|
439
474
|
|
|
440
475
|
def get_transaction(self, transaction_id:str):
|
|
441
476
|
return self.resources.get_transaction(transaction_id)
|
|
@@ -579,7 +614,6 @@ class Client():
|
|
|
579
614
|
self._timed_query(
|
|
580
615
|
"update_registry",
|
|
581
616
|
dependencies.generate_update_registry(),
|
|
582
|
-
readonly=False,
|
|
583
617
|
abort_on_error=False,
|
|
584
618
|
)
|
|
585
619
|
|
|
@@ -588,7 +622,6 @@ class Client():
|
|
|
588
622
|
self._timed_query(
|
|
589
623
|
"update_packages",
|
|
590
624
|
dependencies.generate_update_packages(),
|
|
591
|
-
readonly=False,
|
|
592
625
|
abort_on_error=False,
|
|
593
626
|
)
|
|
594
627
|
else:
|
|
@@ -611,10 +644,11 @@ class Client():
|
|
|
611
644
|
finally:
|
|
612
645
|
self._database = database_name
|
|
613
646
|
|
|
614
|
-
def _timed_query(self, span_name:str, code: str,
|
|
647
|
+
def _timed_query(self, span_name:str, code: str, abort_on_error=True):
|
|
615
648
|
with debugging.span(span_name, model=self._database) as end_span:
|
|
616
649
|
start = time.perf_counter()
|
|
617
|
-
|
|
650
|
+
# NOTE hardcoding to readonly=False, read-only Rel transactions are deprecated.
|
|
651
|
+
res, raw = self._query(code, None, end_span, readonly=False, abort_on_error=abort_on_error)
|
|
618
652
|
debugging.time(span_name, time.perf_counter() - start, code=code)
|
|
619
653
|
return res, raw
|
|
620
654
|
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import time
|
|
4
|
+
from typing import Dict, Optional, TYPE_CHECKING
|
|
5
|
+
|
|
6
|
+
from relationalai import debugging
|
|
7
|
+
from relationalai.clients.util import poll_with_specified_overhead
|
|
8
|
+
from relationalai.tools.cli_controls import create_progress
|
|
9
|
+
from relationalai.util.format import format_duration
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from relationalai.clients.resources.snowflake import Resources
|
|
13
|
+
|
|
14
|
+
# Polling behavior constants
|
|
15
|
+
POLL_OVERHEAD_RATE = 0.1 # Overhead rate for exponential backoff
|
|
16
|
+
|
|
17
|
+
# Text color constants
|
|
18
|
+
GREEN_COLOR = '\033[92m'
|
|
19
|
+
GRAY_COLOR = '\033[90m'
|
|
20
|
+
ENDC = '\033[0m'
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ExecTxnPoller:
|
|
24
|
+
"""
|
|
25
|
+
Encapsulates the polling logic for exec_async transaction completion.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
def __init__(
|
|
29
|
+
self,
|
|
30
|
+
print_txn_progress: bool,
|
|
31
|
+
resource: "Resources",
|
|
32
|
+
txn_id: Optional[str] = None,
|
|
33
|
+
headers: Optional[Dict] = None,
|
|
34
|
+
txn_start_time: Optional[float] = None,
|
|
35
|
+
):
|
|
36
|
+
self.print_txn_progress = print_txn_progress
|
|
37
|
+
self.res = resource
|
|
38
|
+
self.txn_id = txn_id
|
|
39
|
+
self.headers = headers or {}
|
|
40
|
+
self.txn_start_time = txn_start_time or time.time()
|
|
41
|
+
|
|
42
|
+
def __enter__(self) -> ExecTxnPoller:
|
|
43
|
+
if not self.print_txn_progress:
|
|
44
|
+
return self
|
|
45
|
+
self.progress = create_progress(
|
|
46
|
+
description=lambda: self.description_with_timing(),
|
|
47
|
+
success_message="", # We'll handle this ourselves
|
|
48
|
+
leading_newline=False,
|
|
49
|
+
trailing_newline=False,
|
|
50
|
+
show_duration_summary=False,
|
|
51
|
+
)
|
|
52
|
+
self.progress.__enter__()
|
|
53
|
+
return self
|
|
54
|
+
|
|
55
|
+
def __exit__(self, exc_type, exc_value, traceback) -> None:
|
|
56
|
+
if not self.print_txn_progress or self.txn_id is None:
|
|
57
|
+
return
|
|
58
|
+
# Update to success message with duration
|
|
59
|
+
total_duration = time.time() - self.txn_start_time
|
|
60
|
+
txn_id = self.txn_id
|
|
61
|
+
self.progress.update_main_status(
|
|
62
|
+
query_complete_message(txn_id, total_duration)
|
|
63
|
+
)
|
|
64
|
+
self.progress.__exit__(exc_type, exc_value, traceback)
|
|
65
|
+
return
|
|
66
|
+
|
|
67
|
+
def poll(self) -> bool:
|
|
68
|
+
"""
|
|
69
|
+
Poll for transaction completion with interactive progress display.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
True if transaction completed successfully, False otherwise
|
|
73
|
+
"""
|
|
74
|
+
if not self.txn_id:
|
|
75
|
+
raise ValueError("Transaction ID must be provided for polling.")
|
|
76
|
+
else:
|
|
77
|
+
txn_id = self.txn_id
|
|
78
|
+
|
|
79
|
+
if self.print_txn_progress:
|
|
80
|
+
# Update the main status to include the new txn_id
|
|
81
|
+
self.progress.update_main_status_fn(
|
|
82
|
+
lambda: self.description_with_timing(txn_id),
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
# Don't show duration summary - we handle our own completion message
|
|
86
|
+
def check_status() -> bool:
|
|
87
|
+
"""Check if transaction is complete."""
|
|
88
|
+
finished = self.res._check_exec_async_status(txn_id, headers=self.headers)
|
|
89
|
+
return finished
|
|
90
|
+
|
|
91
|
+
with debugging.span("wait", txn_id=self.txn_id):
|
|
92
|
+
poll_with_specified_overhead(check_status, overhead_rate=POLL_OVERHEAD_RATE)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
return True
|
|
96
|
+
|
|
97
|
+
def description_with_timing(self, txn_id: str | None = None) -> str:
|
|
98
|
+
elapsed = time.time() - self.txn_start_time
|
|
99
|
+
if txn_id is None:
|
|
100
|
+
return query_progress_header(elapsed)
|
|
101
|
+
else:
|
|
102
|
+
return query_progress_message(txn_id, elapsed)
|
|
103
|
+
|
|
104
|
+
def query_progress_header(duration: float) -> str:
|
|
105
|
+
# Don't print sub-second decimals, because it updates too fast and is distracting.
|
|
106
|
+
duration_str = format_duration(duration, seconds_decimals=False)
|
|
107
|
+
return f"Evaluating Query... {duration_str:>15}\n"
|
|
108
|
+
|
|
109
|
+
def query_progress_message(id: str, duration: float) -> str:
|
|
110
|
+
return (
|
|
111
|
+
query_progress_header(duration) +
|
|
112
|
+
# Print with whitespace to align with the end of the transaction ID
|
|
113
|
+
f"{GRAY_COLOR}ID: {id}{ENDC}"
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
def query_complete_message(id: str, duration: float, status_header: bool = False) -> str:
|
|
117
|
+
return (
|
|
118
|
+
(f"{GREEN_COLOR}✅ " if status_header else "") +
|
|
119
|
+
# Print with whitespace to align with the end of the transaction ID
|
|
120
|
+
f"Query Complete: {format_duration(duration):>21}\n" +
|
|
121
|
+
f"{GRAY_COLOR}ID: {id}{ENDC}"
|
|
122
|
+
)
|
|
@@ -172,10 +172,17 @@ class LocalResources(ResourcesBase):
|
|
|
172
172
|
def get_engine_sizes(self, cloud_provider: str | None = None):
|
|
173
173
|
raise NotImplementedError("get_engine_sizes not supported in local mode")
|
|
174
174
|
|
|
175
|
-
def list_engines(
|
|
175
|
+
def list_engines(
|
|
176
|
+
self,
|
|
177
|
+
state: str | None = None,
|
|
178
|
+
name: str | None = None,
|
|
179
|
+
type: str | None = None,
|
|
180
|
+
size: str | None = None,
|
|
181
|
+
created_by: str | None = None,
|
|
182
|
+
):
|
|
176
183
|
raise NotImplementedError("list_engines not supported in local mode")
|
|
177
184
|
|
|
178
|
-
def get_engine(self, name: str):
|
|
185
|
+
def get_engine(self, name: str, type: str):
|
|
179
186
|
raise NotImplementedError("get_engine not supported in local mode")
|
|
180
187
|
|
|
181
188
|
def get_cloud_provider(self) -> str:
|
|
@@ -184,25 +191,33 @@ class LocalResources(ResourcesBase):
|
|
|
184
191
|
def is_valid_engine_state(self, name: str) -> bool:
|
|
185
192
|
raise NotImplementedError("is_valid_engine_state not supported in local mode")
|
|
186
193
|
|
|
187
|
-
def create_engine(
|
|
194
|
+
def create_engine(
|
|
195
|
+
self,
|
|
196
|
+
name: str,
|
|
197
|
+
type: str | None = None,
|
|
198
|
+
size: str | None = None,
|
|
199
|
+
auto_suspend_mins: int | None = None,
|
|
200
|
+
headers: dict | None = None,
|
|
201
|
+
settings: dict | None = None,
|
|
202
|
+
):
|
|
188
203
|
raise NotImplementedError("create_engine not supported in local mode")
|
|
189
204
|
|
|
190
|
-
def delete_engine(self, name: str,
|
|
205
|
+
def delete_engine(self, name: str, type: str):
|
|
191
206
|
raise NotImplementedError("delete_engine not supported in local mode")
|
|
192
207
|
|
|
193
|
-
def suspend_engine(self, name: str):
|
|
208
|
+
def suspend_engine(self, name: str, type: str | None = None):
|
|
194
209
|
raise NotImplementedError("suspend_engine not supported in local mode")
|
|
195
210
|
|
|
196
|
-
def resume_engine(self, name: str, headers: Dict | None = None):
|
|
211
|
+
def resume_engine(self, name: str, type: str | None = None, headers: Dict | None = None):
|
|
197
212
|
raise NotImplementedError("resume_engine not supported in local mode")
|
|
198
213
|
|
|
199
|
-
def resume_engine_async(self, name: str):
|
|
214
|
+
def resume_engine_async(self, name: str, type: str | None = None, headers: Dict | None = None):
|
|
200
215
|
raise NotImplementedError("resume_engine_async not supported in local mode")
|
|
201
216
|
|
|
202
217
|
def alter_engine_pool(self, size: str | None = None, mins: int | None = None, maxs: int | None = None):
|
|
203
218
|
raise NotImplementedError("alter_engine_pool not supported in local mode")
|
|
204
219
|
|
|
205
|
-
def auto_create_engine_async(self, name: str | None = None) -> str:
|
|
220
|
+
def auto_create_engine_async(self, name: str | None = None, type: str | None = None) -> str:
|
|
206
221
|
raise NotImplementedError("auto_create_engine_async not supported in local mode")
|
|
207
222
|
|
|
208
223
|
#--------------------------------------------------
|
{relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/azure/azure.py
RENAMED
|
@@ -78,34 +78,59 @@ class Resources(ResourcesBase):
|
|
|
78
78
|
def get_cloud_provider(self) -> str:
|
|
79
79
|
return "azure"
|
|
80
80
|
|
|
81
|
-
def list_engines(
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
def list_engines(
|
|
82
|
+
self,
|
|
83
|
+
state: str | None = None,
|
|
84
|
+
name: str | None = None,
|
|
85
|
+
type: str | None = None,
|
|
86
|
+
size: str | None = None,
|
|
87
|
+
created_by: str | None = None,
|
|
88
|
+
):
|
|
89
|
+
# Azure only supports state filtering at the API level; other filters are ignored.
|
|
90
|
+
engines = api.list_engines(self._api_ctx(), state)
|
|
91
|
+
# Ensure EngineState shape includes 'type' for callers/tests.
|
|
92
|
+
for eng in engines:
|
|
93
|
+
eng.setdefault("type", "LOGIC")
|
|
94
|
+
return engines
|
|
95
|
+
|
|
96
|
+
def get_engine(self, name: str, type: str) -> EngineState:
|
|
97
|
+
# type is ignored for Azure as it doesn't support multiple engine types
|
|
98
|
+
engine = cast(EngineState, api.get_engine(self._api_ctx(), name))
|
|
99
|
+
engine.setdefault("type", "LOGIC")
|
|
100
|
+
return engine
|
|
86
101
|
|
|
87
102
|
def is_valid_engine_state(self, name:str):
|
|
88
103
|
return name in VALID_ENGINE_STATES
|
|
89
104
|
|
|
90
|
-
def create_engine(
|
|
105
|
+
def create_engine(
|
|
106
|
+
self,
|
|
107
|
+
name: str,
|
|
108
|
+
type: str | None = None,
|
|
109
|
+
size: str | None = None,
|
|
110
|
+
auto_suspend_mins: int | None = None,
|
|
111
|
+
headers: dict | None = None,
|
|
112
|
+
settings: dict | None = None,
|
|
113
|
+
):
|
|
114
|
+
# Azure only supports one engine type, so type parameter is ignored
|
|
91
115
|
if size is None:
|
|
92
116
|
size = "M"
|
|
93
117
|
with debugging.span("create_engine", name=name, size=size):
|
|
94
118
|
return api.create_engine_wait(self._api_ctx(), name, size)
|
|
95
119
|
|
|
96
|
-
def delete_engine(self, name:str,
|
|
120
|
+
def delete_engine(self, name:str, type: str):
|
|
97
121
|
return api.delete_engine(self._api_ctx(), name)
|
|
98
122
|
|
|
99
|
-
def suspend_engine(self, name:str):
|
|
123
|
+
def suspend_engine(self, name:str, type: str | None = None): # type is ignored for Azure
|
|
100
124
|
return api.suspend_engine(self._api_ctx(), name)
|
|
101
125
|
|
|
102
|
-
def resume_engine(self, name:str, headers={}):
|
|
126
|
+
def resume_engine(self, name:str, type: str | None = None, headers={}):
|
|
127
|
+
# type is ignored for Azure as it doesn't support multiple engine types
|
|
103
128
|
return api.resume_engine_wait(self._api_ctx(), name)
|
|
104
129
|
|
|
105
|
-
def resume_engine_async(self, name:str):
|
|
130
|
+
def resume_engine_async(self, name:str, type: str | None = None, headers: Dict | None = None):
|
|
106
131
|
return api.resume_engine(self._api_ctx(), name)
|
|
107
132
|
|
|
108
|
-
def auto_create_engine_async(self, name: str | None = None) -> str:
|
|
133
|
+
def auto_create_engine_async(self, name: str | None = None, type: str | None = None) -> str:
|
|
109
134
|
raise Exception("Azure doesn't support auto_create_engine_async")
|
|
110
135
|
|
|
111
136
|
def alter_engine_pool(self, size: str | None = None, mins: int | None = None, maxs: int | None = None):
|
{relationalai-0.13.1 → relationalai-0.13.3}/src/relationalai/clients/resources/snowflake/__init__.py
RENAMED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Snowflake resources module.
|
|
3
3
|
"""
|
|
4
4
|
# Import order matters - Resources must be imported first since other classes depend on it
|
|
5
|
-
from .snowflake import Resources, Provider, Graph, SnowflakeClient, APP_NAME, PYREL_ROOT_DB, ExecContext,
|
|
6
|
-
|
|
5
|
+
from .snowflake import Resources, Provider, Graph, SnowflakeClient, APP_NAME, PYREL_ROOT_DB, ExecContext, PrimaryKey, PRINT_TXN_PROGRESS_FLAG
|
|
6
|
+
from .engine_service import EngineType, INTERNAL_ENGINE_SIZES, ENGINE_SIZES_AWS, ENGINE_SIZES_AZURE
|
|
7
7
|
# These imports depend on Resources, so they come after
|
|
8
8
|
from .cli_resources import CLIResources
|
|
9
9
|
from .use_index_resources import UseIndexResources
|
|
@@ -12,7 +12,7 @@ from .resources_factory import create_resources_instance
|
|
|
12
12
|
|
|
13
13
|
__all__ = [
|
|
14
14
|
'Resources', 'DirectAccessResources', 'Provider', 'Graph', 'SnowflakeClient',
|
|
15
|
-
'APP_NAME', 'PYREL_ROOT_DB', 'CLIResources', 'UseIndexResources', 'ExecContext',
|
|
15
|
+
'APP_NAME', 'PYREL_ROOT_DB', 'CLIResources', 'UseIndexResources', 'ExecContext', 'EngineType',
|
|
16
16
|
'INTERNAL_ENGINE_SIZES', 'ENGINE_SIZES_AWS', 'ENGINE_SIZES_AZURE', 'PrimaryKey',
|
|
17
17
|
'PRINT_TXN_PROGRESS_FLAG', 'create_resources_instance',
|
|
18
18
|
]
|
|
@@ -11,6 +11,7 @@ from ....tools.constants import RAI_APP_NAME
|
|
|
11
11
|
# Import Resources from snowflake - this creates a dependency but no circular import
|
|
12
12
|
# since snowflake.py doesn't import from this file
|
|
13
13
|
from .snowflake import Resources, ExecContext
|
|
14
|
+
from .error_handlers import AppMissingErrorHandler, AppFunctionMissingErrorHandler, ServiceNotStartedErrorHandler
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class CLIResources(Resources):
|
|
@@ -20,7 +21,17 @@ class CLIResources(Resources):
|
|
|
20
21
|
"""
|
|
21
22
|
|
|
22
23
|
def _handle_standard_exec_errors(self, e: Exception, ctx: ExecContext) -> Any | None:
|
|
23
|
-
"""
|
|
24
|
+
"""
|
|
25
|
+
For CLI resources, keep exceptions raw except for few specific cases.
|
|
26
|
+
"""
|
|
27
|
+
message = str(e).lower()
|
|
28
|
+
for handler in (
|
|
29
|
+
ServiceNotStartedErrorHandler(),
|
|
30
|
+
AppMissingErrorHandler(),
|
|
31
|
+
AppFunctionMissingErrorHandler(),
|
|
32
|
+
):
|
|
33
|
+
if handler.matches(e, message, ctx, self):
|
|
34
|
+
handler.handle(e, ctx, self)
|
|
24
35
|
raise e
|
|
25
36
|
|
|
26
37
|
def list_warehouses(self):
|
|
@@ -13,7 +13,7 @@ from ...config import Config, ConfigStore, ENDPOINT_FILE
|
|
|
13
13
|
from ...direct_access_client import DirectAccessClient
|
|
14
14
|
from ...types import EngineState
|
|
15
15
|
from ...util import get_pyrel_version, safe_json_loads, ms_to_timestamp
|
|
16
|
-
from ....errors import GuardRailsException, ResponseStatusException, QueryTimeoutExceededException
|
|
16
|
+
from ....errors import GuardRailsException, ResponseStatusException, QueryTimeoutExceededException, RAIException
|
|
17
17
|
from snowflake.snowpark import Session
|
|
18
18
|
|
|
19
19
|
# Import UseIndexResources to enable use_index functionality with direct access
|
|
@@ -163,11 +163,12 @@ class DirectAccessResources(UseIndexResources):
|
|
|
163
163
|
headers=headers,
|
|
164
164
|
)
|
|
165
165
|
response = _send_request()
|
|
166
|
-
except requests.exceptions.ConnectionError as e:
|
|
166
|
+
except (requests.exceptions.ConnectionError, RAIException) as e:
|
|
167
167
|
messages = collect_error_messages(e)
|
|
168
|
-
if any("nameresolutionerror" in msg for msg in messages)
|
|
169
|
-
|
|
170
|
-
#
|
|
168
|
+
if any("nameresolutionerror" in msg for msg in messages) or \
|
|
169
|
+
any("could not find the service associated with endpoint" in msg for msg in messages):
|
|
170
|
+
# when we can not resolve the service endpoint or the service is not found,
|
|
171
|
+
# we assume the endpoint is outdated, so we retrieve it again and retry.
|
|
171
172
|
self.direct_access_client.service_endpoint = self._retrieve_service_endpoint(
|
|
172
173
|
enforce_update=True,
|
|
173
174
|
)
|
|
@@ -513,7 +514,14 @@ class DirectAccessResources(UseIndexResources):
|
|
|
513
514
|
# Engines
|
|
514
515
|
#--------------------------------------------------
|
|
515
516
|
|
|
516
|
-
def list_engines(
|
|
517
|
+
def list_engines(
|
|
518
|
+
self,
|
|
519
|
+
state: str | None = None,
|
|
520
|
+
name: str | None = None,
|
|
521
|
+
type: str | None = None,
|
|
522
|
+
size: str | None = None,
|
|
523
|
+
created_by: str | None = None,
|
|
524
|
+
):
|
|
517
525
|
response = self.request("list_engines")
|
|
518
526
|
if response.status_code != 200:
|
|
519
527
|
raise ResponseStatusException(
|
|
@@ -526,19 +534,31 @@ class DirectAccessResources(UseIndexResources):
|
|
|
526
534
|
{
|
|
527
535
|
"name": engine["name"],
|
|
528
536
|
"id": engine["id"],
|
|
537
|
+
"type": engine.get("type", "LOGIC"),
|
|
529
538
|
"size": engine["size"],
|
|
530
539
|
"state": engine["status"], # callers are expecting 'state'
|
|
531
540
|
"created_by": engine["created_by"],
|
|
532
541
|
"created_on": engine["created_on"],
|
|
533
542
|
"updated_on": engine["updated_on"],
|
|
543
|
+
# Optional fields (present in newer APIs / service-functions path)
|
|
544
|
+
"auto_suspend_mins": engine.get("auto_suspend_mins"),
|
|
545
|
+
"suspends_at": engine.get("suspends_at"),
|
|
546
|
+
"settings": engine.get("settings"),
|
|
534
547
|
}
|
|
535
548
|
for engine in response_content.get("engines", [])
|
|
536
|
-
if state is None or engine.get("status") == state
|
|
549
|
+
if (state is None or engine.get("status") == state)
|
|
550
|
+
and (name is None or name.upper() in engine.get("name", "").upper())
|
|
551
|
+
and (type is None or engine.get("type", "LOGIC").upper() == type.upper())
|
|
552
|
+
and (size is None or engine.get("size") == size)
|
|
553
|
+
and (created_by is None or created_by.upper() in engine.get("created_by", "").upper())
|
|
537
554
|
]
|
|
538
555
|
return sorted(engines, key=lambda x: x["name"])
|
|
539
556
|
|
|
540
|
-
def get_engine(self, name: str):
|
|
541
|
-
|
|
557
|
+
def get_engine(self, name: str, type: str):
|
|
558
|
+
if type is None:
|
|
559
|
+
raise Exception("Engine type is required. Valid types are: LOGIC, SOLVER, ML")
|
|
560
|
+
engine_type_lower = type.lower()
|
|
561
|
+
response = self.request("get_engine", path_params={"engine_name": name, "engine_type": engine_type_lower}, skip_auto_create=True)
|
|
542
562
|
if response.status_code == 404: # engine not found return 404
|
|
543
563
|
return None
|
|
544
564
|
elif response.status_code != 200:
|
|
@@ -552,6 +572,7 @@ class DirectAccessResources(UseIndexResources):
|
|
|
552
572
|
"name": engine["name"],
|
|
553
573
|
"id": engine["id"],
|
|
554
574
|
"size": engine["size"],
|
|
575
|
+
"type": engine.get("type", type),
|
|
555
576
|
"state": engine["status"], # callers are expecting 'state'
|
|
556
577
|
"created_by": engine["created_by"],
|
|
557
578
|
"created_on": engine["created_on"],
|
|
@@ -559,31 +580,47 @@ class DirectAccessResources(UseIndexResources):
|
|
|
559
580
|
"version": engine["version"],
|
|
560
581
|
"auto_suspend": engine["auto_suspend_mins"],
|
|
561
582
|
"suspends_at": engine["suspends_at"],
|
|
583
|
+
"settings": engine.get("settings"),
|
|
562
584
|
}
|
|
563
585
|
return engine_state
|
|
564
586
|
|
|
565
587
|
def _create_engine(
|
|
566
588
|
self,
|
|
567
589
|
name: str,
|
|
590
|
+
type: str = "LOGIC",
|
|
568
591
|
size: str | None = None,
|
|
569
592
|
auto_suspend_mins: int | None = None,
|
|
570
593
|
is_async: bool = False,
|
|
571
|
-
headers: Dict[str, str] | None = None
|
|
594
|
+
headers: Dict[str, str] | None = None,
|
|
595
|
+
settings: Dict[str, Any] | None = None,
|
|
572
596
|
):
|
|
573
597
|
# only async engine creation supported via direct access
|
|
574
598
|
if not is_async:
|
|
575
|
-
return super()._create_engine(
|
|
599
|
+
return super()._create_engine(
|
|
600
|
+
name,
|
|
601
|
+
type=type,
|
|
602
|
+
size=size,
|
|
603
|
+
auto_suspend_mins=auto_suspend_mins,
|
|
604
|
+
is_async=is_async,
|
|
605
|
+
headers=headers,
|
|
606
|
+
settings=settings,
|
|
607
|
+
)
|
|
608
|
+
engine_type_lower = type.lower()
|
|
576
609
|
payload:Dict[str, Any] = {
|
|
577
610
|
"name": name,
|
|
578
611
|
}
|
|
612
|
+
# Allow passing arbitrary engine settings (API-dependent).
|
|
613
|
+
if settings:
|
|
614
|
+
payload["settings"] = settings
|
|
579
615
|
if auto_suspend_mins is not None:
|
|
580
616
|
payload["auto_suspend_mins"] = auto_suspend_mins
|
|
581
|
-
if size is
|
|
582
|
-
|
|
617
|
+
if size is None:
|
|
618
|
+
size = self.config.get_default_engine_size()
|
|
619
|
+
payload["size"] = size
|
|
583
620
|
response = self.request(
|
|
584
621
|
"create_engine",
|
|
585
622
|
payload=payload,
|
|
586
|
-
path_params={"engine_type":
|
|
623
|
+
path_params={"engine_type": engine_type_lower},
|
|
587
624
|
headers=headers,
|
|
588
625
|
skip_auto_create=True,
|
|
589
626
|
)
|
|
@@ -592,11 +629,11 @@ class DirectAccessResources(UseIndexResources):
|
|
|
592
629
|
f"Failed to create engine {name} with size {size}.", response
|
|
593
630
|
)
|
|
594
631
|
|
|
595
|
-
def delete_engine(self, name:str,
|
|
632
|
+
def delete_engine(self, name: str, type: str):
|
|
596
633
|
response = self.request(
|
|
597
634
|
"delete_engine",
|
|
598
|
-
path_params={"engine_name": name, "engine_type":
|
|
599
|
-
headers=
|
|
635
|
+
path_params={"engine_name": name, "engine_type": type.lower()},
|
|
636
|
+
headers={},
|
|
600
637
|
skip_auto_create=True,
|
|
601
638
|
)
|
|
602
639
|
if response.status_code != 200:
|
|
@@ -604,10 +641,12 @@ class DirectAccessResources(UseIndexResources):
|
|
|
604
641
|
f"Failed to delete engine {name}.", response
|
|
605
642
|
)
|
|
606
643
|
|
|
607
|
-
def suspend_engine(self, name:str):
|
|
644
|
+
def suspend_engine(self, name: str, type: str | None = None):
|
|
645
|
+
if type is None:
|
|
646
|
+
type = "LOGIC"
|
|
608
647
|
response = self.request(
|
|
609
648
|
"suspend_engine",
|
|
610
|
-
path_params={"engine_name": name, "engine_type":
|
|
649
|
+
path_params={"engine_name": name, "engine_type": type.lower()},
|
|
611
650
|
skip_auto_create=True,
|
|
612
651
|
)
|
|
613
652
|
if response.status_code != 200:
|
|
@@ -615,11 +654,13 @@ class DirectAccessResources(UseIndexResources):
|
|
|
615
654
|
f"Failed to suspend engine {name}.", response
|
|
616
655
|
)
|
|
617
656
|
|
|
618
|
-
def resume_engine_async(self, name:str, headers=
|
|
657
|
+
def resume_engine_async(self, name: str, type: str | None = None, headers: Dict | None = None):
|
|
658
|
+
if type is None:
|
|
659
|
+
type = "LOGIC"
|
|
619
660
|
response = self.request(
|
|
620
661
|
"resume_engine",
|
|
621
|
-
path_params={"engine_name": name, "engine_type":
|
|
622
|
-
headers=headers,
|
|
662
|
+
path_params={"engine_name": name, "engine_type": type.lower()},
|
|
663
|
+
headers=headers or {},
|
|
623
664
|
skip_auto_create=True,
|
|
624
665
|
)
|
|
625
666
|
if response.status_code != 200:
|