relationalai 0.11.4__tar.gz → 0.12.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {relationalai-0.11.4 → relationalai-0.12.0}/PKG-INFO +5 -4
- {relationalai-0.11.4 → relationalai-0.12.0}/pyproject.toml +14 -4
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/config.py +7 -0
- relationalai-0.12.0/src/relationalai/clients/direct_access_client.py +113 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/snowflake.py +35 -106
- relationalai-0.12.0/src/relationalai/early_access/metamodel/rewrite/__init__.py +7 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/rel/rewrite/__init__.py +1 -1
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/errors.py +24 -3
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/internal/annotations.py +1 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/builtins.py +1 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/passes.py +3 -4
- {relationalai-0.11.4/src/relationalai/semantics/rel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/__init__.py +6 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/builtins.py +12 -1
- relationalai-0.12.0/src/relationalai/semantics/metamodel/rewrite/__init__.py +6 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/core.py +221 -71
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/rel/builtins.py +5 -1
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/rel/compiler.py +3 -3
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/compiler.py +2 -3
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/executor/duck_db.py +8 -4
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/cli.py +11 -4
- relationalai-0.11.4/src/relationalai/early_access/metamodel/rewrite/__init__.py +0 -5
- relationalai-0.11.4/src/relationalai/semantics/metamodel/rewrite/__init__.py +0 -12
- relationalai-0.11.4/src/relationalai/semantics/metamodel/rewrite/gc_nodes.py +0 -58
- relationalai-0.11.4/src/relationalai/semantics/metamodel/rewrite/list_types.py +0 -109
- {relationalai-0.11.4 → relationalai-0.12.0}/.gitignore +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/LICENSE +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/docs/pypi/README.md +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/frontend/debugger/dist/.gitignore +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/frontend/debugger/dist/assets/favicon-Dy0ZgA6N.png +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/frontend/debugger/dist/assets/index-Cssla-O7.js +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/frontend/debugger/dist/assets/index-DlHsYx1V.css +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/frontend/debugger/dist/index.html +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/events/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/procedures/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/procedures/procedure.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/rel/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/tables/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/tasks/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/raitoolkit/tasks/task.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/analysis/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/analysis/mechanistic.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/analysis/whynot.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/auth/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/auth/jwt_generator.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/auth/oauth_callback_server.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/auth/token_handler.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/auth/util.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/azure.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/cache_store.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/client.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/export_procedure.py.jinja +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/hash_util.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/profile_polling.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/result_helpers.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/types.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/use_index_poller.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/clients/util.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/compiler.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/debugging.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/dependencies.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/docutils.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/dsl.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/builder/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/snowflake/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/std/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/std/decimals/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/std/integers/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/std/math/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/builder/std/strings/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/devtools/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/devtools/benchmark_lqp/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/devtools/extract_lqp/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/orm/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/orm/adapter_qb.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/orm/model.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/orm/parser.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/owl/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/owl/adapter.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/owl/model.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/adapters/owl/parser.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/bindings/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/bindings/common.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/bindings/csv.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/bindings/legacy/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/bindings/legacy/binding_models.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/bindings/snowflake.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/codegen/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/codegen/binder.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/codegen/common.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/codegen/helpers.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/codegen/relations.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/codegen/weaver.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/constants.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/builders/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/builders/logic.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/builders/scalar_constraint.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/constraints/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/constraints/predicate/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/constraints/predicate/atomic.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/constraints/predicate/universal.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/constraints/scalar.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/context.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/cset.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/exprs/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/exprs/relational.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/exprs/scalar.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/instances.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/logic/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/logic/aggregation.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/logic/exists.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/logic/helper.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/namespaces.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/relations.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/rules.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/stack.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/std/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/temporal/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/temporal/recall.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/concepts.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/constrained/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/constrained/nominal.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/constrained/subtype.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/standard.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/unconstrained.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/types/variables.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/core/utils.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ir/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ir/compiler.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ir/executor.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/constraints.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/export.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/models.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/python_printer.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/raw_source.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/readings.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/relationships.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/roles.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/ontologies/subtyping.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/constraints.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/measures/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/measures/dimensions.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/measures/initializer.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/measures/measure_rules.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/measures/measures.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/measures/role_exprs.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/models.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/object_oriented_printer.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/printer.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/reasoner_errors.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/reasoners.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/relations.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/relationships.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/types.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/utils.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/orm/verb.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/physical_metadata/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/physical_metadata/tables.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/relations.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/rulesets.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/builder.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/comp_names.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/components.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/contexts.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/exprs.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/schemas/fragments.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/serialization.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/serialize/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/serialize/binding_model.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/serialize/exporter.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/serialize/model.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/snow/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/snow/api.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/snow/common.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/state_mgmt/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/state_mgmt/state_charts.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/state_mgmt/transitions.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/types/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/types/concepts.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/types/entities.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/types/values.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/dsl/utils.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/graphs/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/compiler/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/constructors/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/executor/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/ir/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/passes/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/pragmas/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/primitives/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/types/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/utils/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/lqp/validators/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/builtins/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/compiler/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/dependency/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/factory/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/helpers/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/ir/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/typer/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/typer/typer/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/types/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/util/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/metamodel/visitor/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/api/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/benchmarks/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/graph/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/find_paths/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/one_sided_ball_repetition/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/one_sided_ball_upto/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/single/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/two_sided_balls_repetition/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/two_sided_balls_upto/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/path_algorithms/usp/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/rpq/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/utilities/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/paths/utilities/iterators/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/rel/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/rel/executor/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/rel/rel_utils/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/solvers/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/sql/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/sql/executor/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/sql/rewrite/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/tests/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/tests/logging/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/tests/test_snapshot_base/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/early_access/tests/utils/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/base.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/ci.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/colab.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/generic.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/hex.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/ipython.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/jupyter.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/snowbook.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/environments/terminal.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/SF.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/graphs.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/inspect.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/api.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/automaton.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/bridge.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/compiler.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/datalog.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/diagnostics.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/filter.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/glushkov.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/options.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/pathfinder-v0.7.0.rel +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/rpq.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/transition.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/pathfinder/utils.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/paths/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/paths/pathfinder.rel +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/paths/tree_agg.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/experimental/solvers.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/loaders/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/loaders/csv.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/loaders/loader.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/loaders/types.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/metagen.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/metamodel.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/rel.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/rel_emitter.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/rel_utils.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/designs/query_builder/identify_by.md +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/devtools/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/devtools/benchmark_lqp.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/devtools/compilation_manager.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/devtools/extract_lqp.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/internal/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/internal/internal.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/internal/snowflake.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/compiler.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/constructors.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/executor.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/intrinsics.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/ir.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/model2lqp.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/pragmas.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/primitives.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/result_helpers.py +0 -0
- {relationalai-0.11.4/src/relationalai/semantics/rel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/cdc.py +0 -0
- {relationalai-0.11.4/src/relationalai/semantics/rel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/extract_common.py +0 -0
- {relationalai-0.11.4/src/relationalai/semantics/metamodel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/extract_keys.py +0 -0
- {relationalai-0.11.4/src/relationalai/semantics/metamodel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/fd_constraints.py +0 -0
- {relationalai-0.11.4/src/relationalai/semantics/rel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/quantify_vars.py +0 -0
- {relationalai-0.11.4/src/relationalai/semantics/metamodel → relationalai-0.12.0/src/relationalai/semantics/lqp}/rewrite/splinter.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/types.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/utils.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/lqp/validators.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/compiler.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/dataflow.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/dependency.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/executor.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/factory.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/helpers.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/ir.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/rewrite/discharge_constraints.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/rewrite/flatten.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/typer/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/typer/checker.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/typer/typer.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/types.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/util.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/visitor.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/README.md +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/design/beyond_demand_transform.md +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/README.md +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/api.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/benchmarks/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/benchmarks/grid_graph.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/code_organization.md +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/Movies.ipynb +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/basic_example.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/minimal_engine_warmup.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movie_example.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/actedin.csv +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/directed.csv +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/follows.csv +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/movies.csv +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/person.csv +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/produced.csv +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/ratings.csv +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/wrote.csv +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/paths_benchmark.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/paths_example.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/examples/pattern_to_automaton.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/find_paths_via_automaton.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/graph.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/find_paths.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/one_sided_ball_repetition.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/one_sided_ball_upto.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/single.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/two_sided_balls_repetition.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/two_sided_balls_upto.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/usp-old.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/usp-tuple.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/usp.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/product_graph.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/automaton.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/diagnostics.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/filter.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/glushkov.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/rpq.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/rpq/transition.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_sp_max_length.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_sp_multiple.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_sp_single.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_walks_multiple.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_walks_single.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_one_sided_ball_repetition_multiple.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_one_sided_ball_repetition_single.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_one_sided_ball_upto_multiple.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_one_sided_ball_upto_single.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_single_paths.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_single_walks.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_single_walks_undirected.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_two_sided_balls_repetition_multiple.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_two_sided_balls_repetition_single.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_two_sided_balls_upto_multiple.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_two_sided_balls_upto_single.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_usp_nsp_multiple.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_usp_nsp_single.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/utilities/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/utilities/iterators.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/utilities/prefix_sum.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/paths/utilities/utilities.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/graph/tests/README.md +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/optimization/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/optimization/common.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/optimization/solvers_dev.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/reasoners/optimization/solvers_pb.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/rel/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/rel/executor.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/rel/rel.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/rel/rel_utils.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/snowflake/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/executor/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/executor/result_helpers.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/executor/snowflake.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/rewrite/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/rewrite/denormalize.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/rewrite/double_negation.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/rewrite/recursive_union.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/rewrite/sort_output_query.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/sql/sql.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/constraints.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/datetime.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/decimals.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/floats.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/integers.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/math.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/pragmas.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/re.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/std.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/std/strings.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/tests/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/tests/logging.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/tests/test_snapshot_abstract.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/tests/test_snapshot_base.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/tests/utils.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/aggregates.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/dates.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/graphs.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/inspect.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/math.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/re.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/std/strings.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/cleanup_snapshots.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/cli_controls.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/cli_helpers.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/constants.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/debugger.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/debugger_client.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/debugger_server.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/dev.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/notes +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/qb_debugger.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/tools/snapshot_viewer.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/clean_up_databases.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/constants.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/format.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/graph.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/list_databases.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/otel_configuration.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/otel_handler.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/snowflake_handler.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/span_format_test.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/span_tracker.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/spans_file_handler.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/timeout.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/util/tracing_handler.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai_test_util/__init__.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai_test_util/fixtures.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai_test_util/snapshot.py +0 -0
- {relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai_test_util/traceback.py +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: relationalai
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.0
|
|
4
4
|
Summary: RelationalAI Library and CLI
|
|
5
5
|
Author-email: RelationalAI <support@relational.ai>
|
|
6
6
|
License-File: LICENSE
|
|
7
|
-
Requires-Python: >=3.
|
|
7
|
+
Requires-Python: >=3.10
|
|
8
8
|
Requires-Dist: aiohttp
|
|
9
|
-
Requires-Dist: click
|
|
9
|
+
Requires-Dist: click==8.2.1
|
|
10
10
|
Requires-Dist: colorama
|
|
11
11
|
Requires-Dist: cryptography
|
|
12
12
|
Requires-Dist: gravis
|
|
@@ -21,7 +21,6 @@ Requires-Dist: packaging
|
|
|
21
21
|
Requires-Dist: pandas
|
|
22
22
|
Requires-Dist: pyarrow
|
|
23
23
|
Requires-Dist: pyjwt
|
|
24
|
-
Requires-Dist: rai-sdk>=0.7.5
|
|
25
24
|
Requires-Dist: requests
|
|
26
25
|
Requires-Dist: rich
|
|
27
26
|
Requires-Dist: snowflake-connector-python[secure-local-storage]
|
|
@@ -64,6 +63,8 @@ Requires-Dist: parameterized; extra == 'ea'
|
|
|
64
63
|
Requires-Dist: pysmt; extra == 'ea'
|
|
65
64
|
Requires-Dist: simple-ddl-parser; extra == 'ea'
|
|
66
65
|
Requires-Dist: xmltodict; extra == 'ea'
|
|
66
|
+
Provides-Extra: legacy
|
|
67
|
+
Requires-Dist: rai-sdk>=0.7.5; extra == 'legacy'
|
|
67
68
|
Description-Content-Type: text/markdown
|
|
68
69
|
|
|
69
70
|
# The RelationalAI Python Library
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = 'relationalai'
|
|
3
|
-
version = '0.
|
|
3
|
+
version = '0.12.0'
|
|
4
4
|
description = 'RelationalAI Library and CLI'
|
|
5
5
|
readme="docs/pypi/README.md"
|
|
6
6
|
authors = [
|
|
7
7
|
{ name="RelationalAI", email="support@relational.ai" },
|
|
8
8
|
]
|
|
9
|
-
requires-python = ">= 3.
|
|
9
|
+
requires-python = ">= 3.10"
|
|
10
10
|
dependencies = [
|
|
11
11
|
"lqp==0.1.16",
|
|
12
12
|
"snowflake-connector-python[secure-local-storage]",
|
|
13
13
|
"snowflake-snowpark-python>=1.38.0",
|
|
14
|
-
"rai-sdk>=0.7.5",
|
|
15
14
|
"typing-extensions",
|
|
16
15
|
"rich",
|
|
17
16
|
"nicegui==2.16.1",
|
|
@@ -19,7 +18,7 @@ dependencies = [
|
|
|
19
18
|
"pandas",
|
|
20
19
|
"colorama",
|
|
21
20
|
"inquirerpy",
|
|
22
|
-
"click
|
|
21
|
+
"click==8.2.1",
|
|
23
22
|
"gravis",
|
|
24
23
|
"toml",
|
|
25
24
|
"tomlkit",
|
|
@@ -71,6 +70,9 @@ ea = [
|
|
|
71
70
|
"owlready2",
|
|
72
71
|
"xmltodict"
|
|
73
72
|
]
|
|
73
|
+
legacy = [
|
|
74
|
+
"rai-sdk>=0.7.5"
|
|
75
|
+
]
|
|
74
76
|
|
|
75
77
|
[project.scripts]
|
|
76
78
|
rai = "relationalai.tools.cli:cli"
|
|
@@ -101,6 +103,14 @@ packages = ["src/relationalai", "src/relationalai_test_util"]
|
|
|
101
103
|
[tool.hatch.build.targets.wheel.force-include]
|
|
102
104
|
"frontend/debugger/dist" = "frontend/debugger/dist"
|
|
103
105
|
|
|
106
|
+
[tool.pytest.ini_options]
|
|
107
|
+
testpaths = ["tests"]
|
|
108
|
+
markers = [
|
|
109
|
+
"azure: marks tests as requiring Azure/railib (deselect with '-m \"not azure\"')",
|
|
110
|
+
]
|
|
111
|
+
# Exclude Azure tests by default
|
|
112
|
+
addopts = "-m 'not azure'"
|
|
113
|
+
|
|
104
114
|
[tool.pyright]
|
|
105
115
|
include = ["src", "tests"]
|
|
106
116
|
exclude = ["**/node_modules", "**/__pycache__", "**/.*", "**/test_cases/*", "src/relationalai/metagen.py", "src/gentest",
|
|
@@ -468,6 +468,13 @@ class Config():
|
|
|
468
468
|
if not self.file_path:
|
|
469
469
|
self.file_path = "__inline__"
|
|
470
470
|
self._handle_snowflake_fallback_configurations()
|
|
471
|
+
# Check if Azure platform is being used without the legacy dependency
|
|
472
|
+
if self.get("platform", "") == "azure":
|
|
473
|
+
try:
|
|
474
|
+
import railib # noqa
|
|
475
|
+
except ImportError:
|
|
476
|
+
from relationalai.errors import AzureLegacyDependencyMissingException
|
|
477
|
+
raise AzureLegacyDependencyMissingException() from None
|
|
471
478
|
|
|
472
479
|
def fetch(self, profile:str|None=None):
|
|
473
480
|
from relationalai.environments import runtime_env, TerminalEnvironment
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import requests
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
from urllib.parse import urlencode, quote
|
|
6
|
+
from requests.adapters import HTTPAdapter
|
|
7
|
+
from urllib3.util.retry import Retry
|
|
8
|
+
from typing import Any, Dict, Optional, Tuple
|
|
9
|
+
|
|
10
|
+
from relationalai.auth.token_handler import TokenHandler
|
|
11
|
+
from relationalai.clients.config import Config
|
|
12
|
+
from relationalai.clients.util import get_pyrel_version
|
|
13
|
+
from relationalai import debugging
|
|
14
|
+
from relationalai.tools.constants import Generation
|
|
15
|
+
from relationalai.environments import runtime_env, SnowbookEnvironment
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class Endpoint:
|
|
19
|
+
method: str
|
|
20
|
+
endpoint: str
|
|
21
|
+
|
|
22
|
+
class DirectAccessClient:
|
|
23
|
+
"""
|
|
24
|
+
DirectAccessClient is a client for direct service access without service function calls.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def __init__(self, config: Config, token_handler: TokenHandler, service_endpoint: str, generation: Optional[Generation] = None):
|
|
28
|
+
self._config: Config = config
|
|
29
|
+
self._token_handler: TokenHandler = token_handler
|
|
30
|
+
self.service_endpoint: str = service_endpoint
|
|
31
|
+
self.generation: Optional[Generation] = generation
|
|
32
|
+
self._is_snowflake_notebook = isinstance(runtime_env, SnowbookEnvironment)
|
|
33
|
+
self.endpoints: Dict[str, Endpoint] = {
|
|
34
|
+
"create_txn": Endpoint(method="POST", endpoint="/v1alpha1/transactions"),
|
|
35
|
+
"get_txn": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}"),
|
|
36
|
+
"get_txn_artifacts": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}/artifacts"),
|
|
37
|
+
"get_txn_problems": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}/problems"),
|
|
38
|
+
"get_txn_events": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}/events/{stream_name}"),
|
|
39
|
+
"get_package_versions": Endpoint(method="GET", endpoint="/v1alpha1/databases/{db_name}/package_versions"),
|
|
40
|
+
"get_model_package_versions": Endpoint(method="POST", endpoint="/v1alpha1/models/get_package_versions"),
|
|
41
|
+
"create_db": Endpoint(method="POST", endpoint="/v1alpha1/databases"),
|
|
42
|
+
"get_db": Endpoint(method="GET", endpoint="/v1alpha1/databases"),
|
|
43
|
+
"delete_db": Endpoint(method="DELETE", endpoint="/v1alpha1/databases/{db_name}"),
|
|
44
|
+
"release_index": Endpoint(method="POST", endpoint="/v1alpha1/index/release"),
|
|
45
|
+
"list_engines": Endpoint(method="GET", endpoint="/v1alpha1/engines"),
|
|
46
|
+
"get_engine": Endpoint(method="GET", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}"),
|
|
47
|
+
"create_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}"),
|
|
48
|
+
"delete_engine": Endpoint(method="DELETE", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}"),
|
|
49
|
+
"suspend_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}/suspend"),
|
|
50
|
+
"resume_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}/resume_async"),
|
|
51
|
+
"prepare_index": Endpoint(method="POST", endpoint="/v1alpha1/index/prepare"),
|
|
52
|
+
}
|
|
53
|
+
self.http_session = self._create_retry_session()
|
|
54
|
+
|
|
55
|
+
def _create_retry_session(self) -> requests.Session:
|
|
56
|
+
http_session = requests.Session()
|
|
57
|
+
retries = Retry(
|
|
58
|
+
total=3,
|
|
59
|
+
backoff_factor=0.3,
|
|
60
|
+
status_forcelist=[500, 502, 503, 504],
|
|
61
|
+
allowed_methods=frozenset({"GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS", "HEAD"}),
|
|
62
|
+
raise_on_status=False
|
|
63
|
+
)
|
|
64
|
+
adapter = HTTPAdapter(max_retries=retries)
|
|
65
|
+
http_session.mount("http://", adapter)
|
|
66
|
+
http_session.mount("https://", adapter)
|
|
67
|
+
http_session.headers.update({"Connection": "keep-alive"})
|
|
68
|
+
return http_session
|
|
69
|
+
|
|
70
|
+
def request(
|
|
71
|
+
self,
|
|
72
|
+
endpoint: str,
|
|
73
|
+
payload: Dict[str, Any] | None = None,
|
|
74
|
+
headers: Dict[str, str] | None = None,
|
|
75
|
+
path_params: Dict[str, str] | None = None,
|
|
76
|
+
query_params: Dict[str, str] | None = None,
|
|
77
|
+
) -> requests.Response:
|
|
78
|
+
"""
|
|
79
|
+
Send a request to the service endpoint.
|
|
80
|
+
"""
|
|
81
|
+
url, method = self._prepare_url(endpoint, path_params, query_params)
|
|
82
|
+
request_headers = self._prepare_headers(headers)
|
|
83
|
+
return self.http_session.request(method, url, json=payload, headers=request_headers)
|
|
84
|
+
|
|
85
|
+
def _prepare_url(self, endpoint: str, path_params: Dict[str, str] | None = None, query_params: Dict[str, str] | None = None) -> Tuple[str, str]:
|
|
86
|
+
try:
|
|
87
|
+
ep = self.endpoints[endpoint]
|
|
88
|
+
except KeyError:
|
|
89
|
+
raise ValueError(f"Invalid endpoint: {endpoint}. Available endpoints: {list(self.endpoints.keys())}")
|
|
90
|
+
url = f"{self.service_endpoint}{ep.endpoint}"
|
|
91
|
+
if path_params:
|
|
92
|
+
escaped_path_params = {k: quote(v, safe='') for k, v in path_params.items()}
|
|
93
|
+
url = url.format(**escaped_path_params)
|
|
94
|
+
if query_params:
|
|
95
|
+
url += '?' + urlencode(query_params)
|
|
96
|
+
return url, ep.method
|
|
97
|
+
|
|
98
|
+
def _prepare_headers(self, headers: Dict[str, str] | None) -> Dict[str, str]:
|
|
99
|
+
request_headers = {}
|
|
100
|
+
if headers:
|
|
101
|
+
request_headers.update(headers)
|
|
102
|
+
# Authorization tokens are not needed in a snowflake notebook environment
|
|
103
|
+
if not self._is_snowflake_notebook:
|
|
104
|
+
request_headers["Authorization"] = f'Snowflake Token="{self._token_handler.get_ingress_token(self.service_endpoint)}"'
|
|
105
|
+
# needed for oauth, does no harm for other authentication methods
|
|
106
|
+
request_headers["X-SF-SPCS-Authentication-Method"] = 'OAUTH'
|
|
107
|
+
request_headers["Content-Type"] = 'application/x-www-form-urlencoded'
|
|
108
|
+
request_headers["Accept"] = "application/json"
|
|
109
|
+
|
|
110
|
+
request_headers["user-agent"] = get_pyrel_version(self.generation)
|
|
111
|
+
request_headers["pyrel_program_id"] = debugging.get_program_span_id() or ""
|
|
112
|
+
|
|
113
|
+
return debugging.add_current_propagation_headers(request_headers)
|
|
@@ -28,15 +28,11 @@ import requests
|
|
|
28
28
|
import snowflake.connector
|
|
29
29
|
import pyarrow as pa
|
|
30
30
|
|
|
31
|
-
from dataclasses import dataclass
|
|
32
31
|
from snowflake.snowpark import Session
|
|
33
32
|
from snowflake.snowpark.context import get_active_session
|
|
34
33
|
from . import result_helpers
|
|
35
34
|
from .. import debugging
|
|
36
35
|
from typing import Any, Dict, Iterable, Optional, Tuple, List, Literal, Union, cast
|
|
37
|
-
from urllib.parse import urlencode, quote
|
|
38
|
-
from requests.adapters import HTTPAdapter
|
|
39
|
-
from urllib3.util.retry import Retry
|
|
40
36
|
|
|
41
37
|
from pandas import DataFrame
|
|
42
38
|
|
|
@@ -44,10 +40,11 @@ from ..tools.cli_controls import Spinner
|
|
|
44
40
|
from ..clients.types import AvailableModel, EngineState, Import, ImportSource, ImportSourceTable, ImportsStatus, SourceInfo, TransactionAsyncResponse
|
|
45
41
|
from ..clients.config import Config, ConfigStore, ENDPOINT_FILE
|
|
46
42
|
from ..clients.client import Client, ExportParams, ProviderBase, ResourcesBase
|
|
43
|
+
from ..clients.direct_access_client import DirectAccessClient
|
|
47
44
|
from ..clients.util import IdentityParser, escape_for_f_string, get_pyrel_version, get_with_retries, poll_with_specified_overhead, safe_json_loads, sanitize_module_name, scrub_exception, wrap_with_request_id, ms_to_timestamp
|
|
48
45
|
from ..environments import runtime_env, HexEnvironment, SnowbookEnvironment
|
|
49
46
|
from .. import dsl, rel, metamodel as m
|
|
50
|
-
from ..errors import DuoSecurityFailed, EngineProvisioningFailed, EngineNameValidationException, EngineNotFoundException, EnginePending, EngineSizeMismatchWarning, EngineResumeFailed, Errors, InvalidAliasError, InvalidEngineSizeError, InvalidSourceTypeWarning, RAIAbortedTransactionError, RAIException, HexSessionException, SnowflakeAppMissingException, SnowflakeChangeTrackingNotEnabledException, SnowflakeDatabaseException, SnowflakeImportMissingException, SnowflakeInvalidSource, SnowflakeMissingConfigValuesException, SnowflakeProxyAPIDeprecationWarning, SnowflakeProxySourceError, SnowflakeRaiAppNotStarted, ModelNotFoundException, UnknownSourceWarning, ResponseStatusException, RowsDroppedFromTargetTableWarning
|
|
47
|
+
from ..errors import DuoSecurityFailed, EngineProvisioningFailed, EngineNameValidationException, EngineNotFoundException, EnginePending, EngineSizeMismatchWarning, EngineResumeFailed, Errors, InvalidAliasError, InvalidEngineSizeError, InvalidSourceTypeWarning, RAIAbortedTransactionError, RAIException, HexSessionException, SnowflakeAppMissingException, SnowflakeChangeTrackingNotEnabledException, SnowflakeDatabaseException, SnowflakeImportMissingException, SnowflakeInvalidSource, SnowflakeMissingConfigValuesException, SnowflakeProxyAPIDeprecationWarning, SnowflakeProxySourceError, SnowflakeRaiAppNotStarted, ModelNotFoundException, UnknownSourceWarning, ResponseStatusException, RowsDroppedFromTargetTableWarning, QueryTimeoutExceededException
|
|
51
48
|
from concurrent.futures import ThreadPoolExecutor
|
|
52
49
|
from datetime import datetime, date, timedelta
|
|
53
50
|
from snowflake.snowpark.types import StringType, StructField, StructType
|
|
@@ -92,6 +89,8 @@ TERMINAL_TXN_STATES = ["COMPLETED", "ABORTED"]
|
|
|
92
89
|
|
|
93
90
|
DUO_TEXT = "duo security"
|
|
94
91
|
|
|
92
|
+
TXN_ABORT_REASON_TIMEOUT = "transaction timeout"
|
|
93
|
+
|
|
95
94
|
#--------------------------------------------------
|
|
96
95
|
# Helpers
|
|
97
96
|
#--------------------------------------------------
|
|
@@ -1307,7 +1306,7 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
1307
1306
|
response = self._exec(f"CALL {APP_NAME}.api.get_transaction('{txn_id}',{headers});")
|
|
1308
1307
|
assert response, f"No results from get_transaction('{txn_id}')"
|
|
1309
1308
|
|
|
1310
|
-
response_row = next(iter(response))
|
|
1309
|
+
response_row = next(iter(response)).asDict()
|
|
1311
1310
|
status: str = response_row['STATE']
|
|
1312
1311
|
|
|
1313
1312
|
# remove the transaction from the pending list if it's completed or aborted
|
|
@@ -1315,6 +1314,16 @@ Otherwise, remove it from your '{profile}' configuration profile.
|
|
|
1315
1314
|
if txn_id in self._pending_transactions:
|
|
1316
1315
|
self._pending_transactions.remove(txn_id)
|
|
1317
1316
|
|
|
1317
|
+
if status == "ABORTED" and response_row.get("ABORT_REASON", "") == TXN_ABORT_REASON_TIMEOUT:
|
|
1318
|
+
config_file_path = getattr(self.config, 'file_path', None)
|
|
1319
|
+
# todo: use the timeout returned alongside the transaction as soon as it's exposed
|
|
1320
|
+
timeout_mins = int(self.config.get("query_timeout_mins", DEFAULT_QUERY_TIMEOUT_MINS) or DEFAULT_QUERY_TIMEOUT_MINS)
|
|
1321
|
+
raise QueryTimeoutExceededException(
|
|
1322
|
+
timeout_mins=timeout_mins,
|
|
1323
|
+
query_id=txn_id,
|
|
1324
|
+
config_file_path=config_file_path,
|
|
1325
|
+
)
|
|
1326
|
+
|
|
1318
1327
|
# @TODO: Find some way to tunnel the ABORT_REASON out. Azure doesn't have this, but it's handy
|
|
1319
1328
|
return status == "COMPLETED" or status == "ABORTED"
|
|
1320
1329
|
|
|
@@ -2957,104 +2966,6 @@ def Graph(
|
|
|
2957
2966
|
#--------------------------------------------------
|
|
2958
2967
|
# Note: All direct access components should live in a separate file
|
|
2959
2968
|
|
|
2960
|
-
@dataclass
|
|
2961
|
-
class Endpoint:
|
|
2962
|
-
method: str
|
|
2963
|
-
endpoint: str
|
|
2964
|
-
|
|
2965
|
-
class DirectAccessClient:
|
|
2966
|
-
"""
|
|
2967
|
-
DirectAccessClient is a client for direct service access without service function calls.
|
|
2968
|
-
"""
|
|
2969
|
-
|
|
2970
|
-
def __init__(self, config: Config, token_handler: TokenHandler, service_endpoint: str, generation: Optional[Generation] = None):
|
|
2971
|
-
self._config: Config = config
|
|
2972
|
-
self._token_handler: TokenHandler = token_handler
|
|
2973
|
-
self.service_endpoint: str = service_endpoint
|
|
2974
|
-
self.generation: Optional[Generation] = generation
|
|
2975
|
-
self._is_snowflake_notebook = isinstance(runtime_env, SnowbookEnvironment)
|
|
2976
|
-
self.endpoints: Dict[str, Endpoint] = {
|
|
2977
|
-
"create_txn": Endpoint(method="POST", endpoint="/v1alpha1/transactions"),
|
|
2978
|
-
"get_txn": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}"),
|
|
2979
|
-
"get_txn_artifacts": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}/artifacts"),
|
|
2980
|
-
"get_txn_problems": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}/problems"),
|
|
2981
|
-
"get_txn_events": Endpoint(method="GET", endpoint="/v1alpha1/transactions/{txn_id}/events/{stream_name}"),
|
|
2982
|
-
"get_package_versions": Endpoint(method="GET", endpoint="/v1alpha1/databases/{db_name}/package_versions"),
|
|
2983
|
-
"get_model_package_versions": Endpoint(method="POST", endpoint="/v1alpha1/models/get_package_versions"),
|
|
2984
|
-
"create_db": Endpoint(method="POST", endpoint="/v1alpha1/databases"),
|
|
2985
|
-
"get_db": Endpoint(method="GET", endpoint="/v1alpha1/databases"),
|
|
2986
|
-
"delete_db": Endpoint(method="DELETE", endpoint="/v1alpha1/databases/{db_name}"),
|
|
2987
|
-
"release_index": Endpoint(method="POST", endpoint="/v1alpha1/index/release"),
|
|
2988
|
-
"list_engines": Endpoint(method="GET", endpoint="/v1alpha1/engines"),
|
|
2989
|
-
"get_engine": Endpoint(method="GET", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}"),
|
|
2990
|
-
"create_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}"),
|
|
2991
|
-
"delete_engine": Endpoint(method="DELETE", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}"),
|
|
2992
|
-
"suspend_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}/suspend"),
|
|
2993
|
-
"resume_engine": Endpoint(method="POST", endpoint="/v1alpha1/engines/{engine_type}/{engine_name}/resume_async"),
|
|
2994
|
-
"prepare_index": Endpoint(method="POST", endpoint="/v1alpha1/index/prepare"),
|
|
2995
|
-
}
|
|
2996
|
-
self.http_session = self._create_retry_session()
|
|
2997
|
-
|
|
2998
|
-
def _create_retry_session(self) -> requests.Session:
|
|
2999
|
-
http_session = requests.Session()
|
|
3000
|
-
retries = Retry(
|
|
3001
|
-
total=3,
|
|
3002
|
-
backoff_factor=0.3,
|
|
3003
|
-
status_forcelist=[500, 502, 503, 504],
|
|
3004
|
-
allowed_methods=frozenset({"GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS", "HEAD"}),
|
|
3005
|
-
raise_on_status=False
|
|
3006
|
-
)
|
|
3007
|
-
adapter = HTTPAdapter(max_retries=retries)
|
|
3008
|
-
http_session.mount("http://", adapter)
|
|
3009
|
-
http_session.mount("https://", adapter)
|
|
3010
|
-
http_session.headers.update({"Connection": "keep-alive"})
|
|
3011
|
-
return http_session
|
|
3012
|
-
|
|
3013
|
-
def request(
|
|
3014
|
-
self,
|
|
3015
|
-
endpoint: str,
|
|
3016
|
-
payload: Dict[str, Any] | None = None,
|
|
3017
|
-
headers: Dict[str, str] | None = None,
|
|
3018
|
-
path_params: Dict[str, str] | None = None,
|
|
3019
|
-
query_params: Dict[str, str] | None = None,
|
|
3020
|
-
) -> requests.Response:
|
|
3021
|
-
"""
|
|
3022
|
-
Send a request to the service endpoint.
|
|
3023
|
-
"""
|
|
3024
|
-
url, method = self._prepare_url(endpoint, path_params, query_params)
|
|
3025
|
-
request_headers = self._prepare_headers(headers)
|
|
3026
|
-
return self.http_session.request(method, url, json=payload, headers=request_headers)
|
|
3027
|
-
|
|
3028
|
-
def _prepare_url(self, endpoint: str, path_params: Dict[str, str] | None = None, query_params: Dict[str, str] | None = None) -> Tuple[str, str]:
|
|
3029
|
-
try:
|
|
3030
|
-
ep = self.endpoints[endpoint]
|
|
3031
|
-
except KeyError:
|
|
3032
|
-
raise ValueError(f"Invalid endpoint: {endpoint}. Available endpoints: {list(self.endpoints.keys())}")
|
|
3033
|
-
url = f"{self.service_endpoint}{ep.endpoint}"
|
|
3034
|
-
if path_params:
|
|
3035
|
-
escaped_path_params = {k: quote(v, safe='') for k, v in path_params.items()}
|
|
3036
|
-
url = url.format(**escaped_path_params)
|
|
3037
|
-
if query_params:
|
|
3038
|
-
url += '?' + urlencode(query_params)
|
|
3039
|
-
return url, ep.method
|
|
3040
|
-
|
|
3041
|
-
def _prepare_headers(self, headers: Dict[str, str] | None) -> Dict[str, str]:
|
|
3042
|
-
request_headers = {}
|
|
3043
|
-
if headers:
|
|
3044
|
-
request_headers.update(headers)
|
|
3045
|
-
# Authorization tokens are not needed in a snowflake notebook environment
|
|
3046
|
-
if not self._is_snowflake_notebook:
|
|
3047
|
-
request_headers["Authorization"] = f'Snowflake Token="{self._token_handler.get_ingress_token(self.service_endpoint)}"'
|
|
3048
|
-
# needed for oauth, does no harm for other authentication methods
|
|
3049
|
-
request_headers["X-SF-SPCS-Authentication-Method"] = 'OAUTH'
|
|
3050
|
-
request_headers["Content-Type"] = 'application/x-www-form-urlencoded'
|
|
3051
|
-
request_headers["Accept"] = "application/json"
|
|
3052
|
-
|
|
3053
|
-
request_headers["user-agent"] = get_pyrel_version(self.generation)
|
|
3054
|
-
request_headers["pyrel_program_id"] = debugging.get_program_span_id() or ""
|
|
3055
|
-
|
|
3056
|
-
return debugging.add_current_propagation_headers(request_headers)
|
|
3057
|
-
|
|
3058
2969
|
class DirectAccessResources(Resources):
|
|
3059
2970
|
"""
|
|
3060
2971
|
Resources class for Direct Service Access avoiding Snowflake service functions.
|
|
@@ -3068,7 +2979,14 @@ class DirectAccessResources(Resources):
|
|
|
3068
2979
|
reset_session: bool = False,
|
|
3069
2980
|
generation: Optional[Generation] = None,
|
|
3070
2981
|
):
|
|
3071
|
-
super().__init__(
|
|
2982
|
+
super().__init__(
|
|
2983
|
+
generation=generation,
|
|
2984
|
+
profile=profile,
|
|
2985
|
+
config=config,
|
|
2986
|
+
connection=connection,
|
|
2987
|
+
reset_session=reset_session,
|
|
2988
|
+
dry_run=dry_run,
|
|
2989
|
+
)
|
|
3072
2990
|
self._endpoint_info = ConfigStore(ENDPOINT_FILE)
|
|
3073
2991
|
self._service_endpoint = ""
|
|
3074
2992
|
self._direct_access_client = None
|
|
@@ -3310,13 +3228,24 @@ class DirectAccessResources(Resources):
|
|
|
3310
3228
|
assert response, f"No results from get_transaction('{txn_id}')"
|
|
3311
3229
|
|
|
3312
3230
|
response_content = response.json()
|
|
3313
|
-
|
|
3231
|
+
transaction = response_content["transaction"]
|
|
3232
|
+
status: str = transaction['state']
|
|
3314
3233
|
|
|
3315
3234
|
# remove the transaction from the pending list if it's completed or aborted
|
|
3316
3235
|
if status in ["COMPLETED", "ABORTED"]:
|
|
3317
3236
|
if txn_id in self._pending_transactions:
|
|
3318
3237
|
self._pending_transactions.remove(txn_id)
|
|
3319
3238
|
|
|
3239
|
+
if status == "ABORTED" and transaction.get("abort_reason", "") == TXN_ABORT_REASON_TIMEOUT:
|
|
3240
|
+
config_file_path = getattr(self.config, 'file_path', None)
|
|
3241
|
+
timeout_ms = int(transaction.get("timeout_ms", 0))
|
|
3242
|
+
timeout_mins = timeout_ms // 60000 if timeout_ms > 0 else int(self.config.get("query_timeout_mins", DEFAULT_QUERY_TIMEOUT_MINS) or DEFAULT_QUERY_TIMEOUT_MINS)
|
|
3243
|
+
raise QueryTimeoutExceededException(
|
|
3244
|
+
timeout_mins=timeout_mins,
|
|
3245
|
+
query_id=txn_id,
|
|
3246
|
+
config_file_path=config_file_path,
|
|
3247
|
+
)
|
|
3248
|
+
|
|
3320
3249
|
# @TODO: Find some way to tunnel the ABORT_REASON out. Azure doesn't have this, but it's handy
|
|
3321
3250
|
return status == "COMPLETED" or status == "ABORTED"
|
|
3322
3251
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
from relationalai.semantics.metamodel.rewrite import Flatten, \
|
|
2
|
+
DNFUnionSplitter, ExtractNestedLogicals, flatten
|
|
3
|
+
from relationalai.semantics.lqp.rewrite import Splinter, \
|
|
4
|
+
ExtractKeys, FDConstraints
|
|
5
|
+
|
|
6
|
+
__all__ = ["Splinter", "Flatten", "DNFUnionSplitter", "ExtractKeys",
|
|
7
|
+
"ExtractNestedLogicals", "FDConstraints", "flatten"]
|
|
@@ -2397,17 +2397,18 @@ class UnsupportedColumnTypesWarning(RAIWarning):
|
|
|
2397
2397
|
""")
|
|
2398
2398
|
|
|
2399
2399
|
class QueryTimeoutExceededException(RAIException):
|
|
2400
|
-
def __init__(self, timeout_mins: int, config_file_path: str | None = None):
|
|
2400
|
+
def __init__(self, timeout_mins: int, query_id: str | None = None, config_file_path: str | None = None):
|
|
2401
2401
|
self.timeout_mins = timeout_mins
|
|
2402
|
-
self.message = f"Query execution time exceeded the specified timeout of {timeout_mins} minutes."
|
|
2403
2402
|
self.name = "Query Timeout Exceeded"
|
|
2403
|
+
self.message = f"Query execution time exceeded the specified timeout of {self.timeout_mins} minutes."
|
|
2404
|
+
self.query_id = query_id or ""
|
|
2404
2405
|
self.config_file_path = config_file_path or ""
|
|
2405
2406
|
self.content = self.format_message()
|
|
2406
2407
|
super().__init__(self.message, self.name, self.content)
|
|
2407
2408
|
|
|
2408
2409
|
def format_message(self):
|
|
2409
2410
|
return textwrap.dedent(f"""
|
|
2410
|
-
{self.
|
|
2411
|
+
Query execution time exceeded the specified timeout of {self.timeout_mins} minutes{f' for query with ID: {self.query_id}' if self.query_id else ''}.
|
|
2411
2412
|
|
|
2412
2413
|
Consider increasing the 'query_timeout_mins' parameter in your configuration file{f' (stored in {self.config_file_path})' if self.config_file_path else ''} to allow more time for query execution.
|
|
2413
2414
|
""")
|
|
@@ -2432,3 +2433,23 @@ class AzureUnsupportedQueryTimeoutException(RAIException):
|
|
|
2432
2433
|
Please remove the 'query_timeout_mins' from your configuration file{f' (stored in {self.config_file_path})' if self.config_file_path else ''} when running on platform Azure.
|
|
2433
2434
|
""")
|
|
2434
2435
|
|
|
2436
|
+
class AzureLegacyDependencyMissingException(RAIException):
|
|
2437
|
+
def __init__(self):
|
|
2438
|
+
self.message = "The Azure platform requires the 'legacy' extras to be installed."
|
|
2439
|
+
self.name = "Azure Legacy Dependency Missing"
|
|
2440
|
+
self.content = self.format_message()
|
|
2441
|
+
super().__init__(self.message, self.name, self.content)
|
|
2442
|
+
|
|
2443
|
+
def format_message(self):
|
|
2444
|
+
return textwrap.dedent("""
|
|
2445
|
+
The Azure platform requires the 'rai-sdk' package, which is not installed.
|
|
2446
|
+
|
|
2447
|
+
To use the Azure platform, please install the legacy extras:
|
|
2448
|
+
|
|
2449
|
+
pip install relationalai[legacy]
|
|
2450
|
+
|
|
2451
|
+
Or if upgrading an existing installation:
|
|
2452
|
+
|
|
2453
|
+
pip install --upgrade relationalai[legacy]
|
|
2454
|
+
""")
|
|
2455
|
+
|
|
@@ -2,13 +2,12 @@ from relationalai.semantics.metamodel.compiler import Pass
|
|
|
2
2
|
from relationalai.semantics.metamodel import ir, builtins as rel_builtins, factory as f, visitor
|
|
3
3
|
from relationalai.semantics.metamodel.typer import Checker, InferTypes, typer
|
|
4
4
|
from relationalai.semantics.metamodel import helpers, types
|
|
5
|
-
from relationalai.semantics.metamodel.rewrite import (Splinter, ExtractNestedLogicals, ExtractKeys, FDConstraints,
|
|
6
|
-
DNFUnionSplitter, DischargeConstraints)
|
|
7
5
|
from relationalai.semantics.metamodel.util import FrozenOrderedSet
|
|
8
6
|
|
|
9
7
|
from relationalai.semantics.metamodel.rewrite import Flatten
|
|
10
|
-
|
|
11
|
-
from
|
|
8
|
+
|
|
9
|
+
from ..metamodel.rewrite import DischargeConstraints, DNFUnionSplitter, ExtractNestedLogicals
|
|
10
|
+
from .rewrite import CDC, ExtractCommon, ExtractKeys, FDConstraints, QuantifyVars, Splinter
|
|
12
11
|
|
|
13
12
|
from relationalai.semantics.lqp.utils import output_names
|
|
14
13
|
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
from .cdc import CDC
|
|
2
2
|
from .extract_common import ExtractCommon
|
|
3
|
+
from .extract_keys import ExtractKeys
|
|
4
|
+
from .fd_constraints import FDConstraints
|
|
3
5
|
from .quantify_vars import QuantifyVars
|
|
6
|
+
from .splinter import Splinter
|
|
4
7
|
|
|
5
8
|
__all__ = [
|
|
6
9
|
"CDC",
|
|
7
10
|
"ExtractCommon",
|
|
11
|
+
"ExtractKeys",
|
|
12
|
+
"FDConstraints",
|
|
8
13
|
"QuantifyVars",
|
|
14
|
+
"Splinter",
|
|
9
15
|
]
|
{relationalai-0.11.4 → relationalai-0.12.0}/src/relationalai/semantics/metamodel/builtins.py
RENAMED
|
@@ -496,6 +496,17 @@ function = f.relation("function", [f.input_field("code", types.Symbol)])
|
|
|
496
496
|
function_checked_annotation = f.annotation(function, [f.lit("checked")])
|
|
497
497
|
function_annotation = f.annotation(function, [])
|
|
498
498
|
|
|
499
|
+
# Indicates this relation should be tracked in telemetry. Only supported for Relationships.
|
|
500
|
+
# `RAI_BackIR.with_relation_tracking` produces log messages at the start and end of each
|
|
501
|
+
# SCC evaluation, if any declarations bear the `track` annotation.
|
|
502
|
+
track = f.relation("track", [
|
|
503
|
+
# BackIR evaluation expects 2 parameters on the track annotation: the tracking
|
|
504
|
+
# library name and tracking relation name, which appear as log metadata fields.
|
|
505
|
+
f.input_field("library", types.Symbol),
|
|
506
|
+
f.input_field("relation", types.Symbol)
|
|
507
|
+
])
|
|
508
|
+
track_annotation = f.annotation(track, [])
|
|
509
|
+
|
|
499
510
|
# All ir nodes marked by this annotation will be removed from the final metamodel before compilation.
|
|
500
511
|
# Specifically it happens in `Flatten` pass when rewrites for `require` happen
|
|
501
512
|
discharged = f.relation("discharged", [])
|
|
@@ -672,7 +683,7 @@ def _compute_builtin_overloads() -> list[ir.Relation]:
|
|
|
672
683
|
return overloads
|
|
673
684
|
|
|
674
685
|
# manually maintain the list of relations that are actually annotations
|
|
675
|
-
builtin_annotations = [external, export, concept_population, from_cdc, from_cast]
|
|
686
|
+
builtin_annotations = [external, export, concept_population, from_cdc, from_cast, track]
|
|
676
687
|
builtin_annotations_by_name = dict((r.name, r) for r in builtin_annotations)
|
|
677
688
|
|
|
678
689
|
builtin_relations = _compute_builtin_relations()
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
from .discharge_constraints import DischargeConstraints
|
|
2
|
+
from .dnf_union_splitter import DNFUnionSplitter
|
|
3
|
+
from .extract_nested_logicals import ExtractNestedLogicals
|
|
4
|
+
from .flatten import Flatten
|
|
5
|
+
|
|
6
|
+
__all__ = ["DischargeConstraints", "DNFUnionSplitter", "ExtractNestedLogicals", "Flatten"]
|