relationalai 0.12.2__tar.gz → 0.12.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.12.2 → relationalai-0.12.3}/PKG-INFO +1 -1
- {relationalai-0.12.2 → relationalai-0.12.3}/pyproject.toml +1 -1
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/solvers.py +18 -19
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/executor.py +26 -1
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/rewrite/extract_common.py +4 -2
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/builtins.py +6 -6
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/dependency.py +40 -20
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/helpers.py +7 -6
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py +1 -4
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/core.py +731 -95
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/std/math.py +2 -2
- {relationalai-0.12.2 → relationalai-0.12.3}/.gitignore +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/LICENSE +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/docs/pypi/README.md +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/frontend/debugger/dist/.gitignore +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/frontend/debugger/dist/assets/favicon-Dy0ZgA6N.png +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/frontend/debugger/dist/assets/index-Cssla-O7.js +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/frontend/debugger/dist/assets/index-DlHsYx1V.css +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/frontend/debugger/dist/index.html +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/raitoolkit/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/raitoolkit/events/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/raitoolkit/procedures/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/raitoolkit/procedures/procedure.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/raitoolkit/rel/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/raitoolkit/tables/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/raitoolkit/tasks/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/raitoolkit/tasks/task.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/analysis/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/analysis/mechanistic.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/analysis/whynot.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/auth/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/auth/jwt_generator.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/auth/oauth_callback_server.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/auth/token_handler.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/auth/util.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/azure.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/cache_store.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/client.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/config.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/direct_access_client.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/export_procedure.py.jinja +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/hash_util.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/profile_polling.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/result_helpers.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/snowflake.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/types.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/use_index_poller.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/clients/util.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/compiler.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/debugging.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/dependencies.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/docutils.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/dsl.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/builder/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/builder/builder/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/builder/snowflake/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/builder/std/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/builder/std/decimals/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/builder/std/integers/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/builder/std/math/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/builder/std/strings/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/devtools/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/devtools/benchmark_lqp/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/devtools/extract_lqp/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/adapters/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/adapters/orm/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/adapters/orm/adapter_qb.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/adapters/orm/model.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/adapters/orm/parser.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/adapters/owl/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/adapters/owl/adapter.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/adapters/owl/model.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/adapters/owl/parser.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/bindings/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/bindings/common.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/bindings/csv.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/bindings/legacy/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/bindings/legacy/binding_models.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/bindings/snowflake.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/codegen/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/codegen/binder.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/codegen/common.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/codegen/helpers.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/codegen/relations.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/codegen/weaver.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/constants.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/builders/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/builders/logic.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/builders/scalar_constraint.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/constraints/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/constraints/predicate/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/constraints/predicate/atomic.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/constraints/predicate/universal.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/constraints/scalar.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/context.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/cset.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/exprs/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/exprs/relational.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/exprs/scalar.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/instances.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/logic/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/logic/aggregation.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/logic/exists.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/logic/helper.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/namespaces.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/relations.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/rules.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/stack.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/std/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/temporal/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/temporal/recall.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/types/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/types/concepts.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/types/constrained/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/types/constrained/nominal.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/types/constrained/subtype.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/types/standard.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/types/unconstrained.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/types/variables.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/core/utils.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ir/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ir/compiler.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ir/executor.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ontologies/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ontologies/constraints.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ontologies/export.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ontologies/models.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ontologies/python_printer.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ontologies/raw_source.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ontologies/readings.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ontologies/relationships.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ontologies/roles.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/ontologies/subtyping.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/constraints.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/measures/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/measures/dimensions.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/measures/initializer.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/measures/measure_rules.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/measures/measures.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/measures/role_exprs.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/models.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/object_oriented_printer.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/printer.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/reasoner_errors.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/reasoners.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/relations.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/relationships.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/types.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/utils.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/orm/verb.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/physical_metadata/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/physical_metadata/tables.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/relations.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/rulesets.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/schemas/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/schemas/builder.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/schemas/comp_names.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/schemas/components.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/schemas/contexts.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/schemas/exprs.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/schemas/fragments.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/serialization.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/serialize/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/serialize/binding_model.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/serialize/exporter.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/serialize/model.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/snow/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/snow/api.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/snow/common.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/state_mgmt/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/state_mgmt/state_charts.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/state_mgmt/transitions.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/types/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/types/concepts.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/types/entities.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/types/values.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/dsl/utils.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/graphs/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/lqp/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/lqp/compiler/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/lqp/constructors/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/lqp/executor/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/lqp/ir/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/lqp/passes/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/lqp/pragmas/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/lqp/primitives/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/lqp/types/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/lqp/utils/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/lqp/validators/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/builtins/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/compiler/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/dependency/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/factory/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/helpers/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/ir/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/rewrite/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/typer/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/typer/typer/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/types/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/util/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/metamodel/visitor/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/api/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/benchmarks/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/graph/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/path_algorithms/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/path_algorithms/find_paths/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/path_algorithms/one_sided_ball_repetition/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/path_algorithms/one_sided_ball_upto/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/path_algorithms/single/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/path_algorithms/two_sided_balls_repetition/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/path_algorithms/two_sided_balls_upto/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/path_algorithms/usp/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/rpq/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/utilities/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/paths/utilities/iterators/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/rel/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/rel/executor/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/rel/rel_utils/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/rel/rewrite/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/solvers/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/sql/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/sql/executor/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/sql/rewrite/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/tests/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/tests/logging/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/tests/test_snapshot_base/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/early_access/tests/utils/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/environments/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/environments/base.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/environments/ci.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/environments/colab.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/environments/generic.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/environments/hex.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/environments/ipython.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/environments/jupyter.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/environments/snowbook.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/environments/terminal.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/errors.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/SF.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/graphs.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/inspect.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/api.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/automaton.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/bridge.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/compiler.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/datalog.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/diagnostics.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/filter.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/glushkov.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/options.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/pathfinder-v0.7.0.rel +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/rpq.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/transition.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/pathfinder/utils.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/paths/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/paths/pathfinder.rel +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/experimental/paths/tree_agg.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/loaders/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/loaders/csv.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/loaders/loader.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/loaders/types.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/metagen.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/metamodel.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/rel.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/rel_emitter.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/rel_utils.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/designs/query_builder/identify_by.md +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/devtools/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/devtools/benchmark_lqp.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/devtools/compilation_manager.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/devtools/extract_lqp.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/internal/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/internal/annotations.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/internal/internal.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/internal/snowflake.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/builtins.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/compiler.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/constructors.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/intrinsics.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/ir.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/model2lqp.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/passes.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/pragmas.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/primitives.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/result_helpers.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/rewrite/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/rewrite/cdc.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/rewrite/extract_keys.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/rewrite/fd_constraints.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/rewrite/quantify_vars.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/rewrite/splinter.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/types.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/utils.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/validators.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/compiler.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/dataflow.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/executor.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/factory.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/ir.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/rewrite/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/rewrite/discharge_constraints.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/rewrite/flatten.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/typer/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/typer/checker.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/typer/typer.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/types.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/util.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/visitor.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/README.md +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/design/beyond_demand_transform.md +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/README.md +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/api.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/benchmarks/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/benchmarks/grid_graph.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/code_organization.md +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/Movies.ipynb +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/basic_example.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/minimal_engine_warmup.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/movie_example.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/actedin.csv +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/directed.csv +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/follows.csv +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/movies.csv +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/person.csv +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/produced.csv +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/ratings.csv +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/movies_data/wrote.csv +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/paths_benchmark.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/paths_example.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/examples/pattern_to_automaton.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/find_paths_via_automaton.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/graph.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/find_paths.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/one_sided_ball_repetition.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/one_sided_ball_upto.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/single.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/two_sided_balls_repetition.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/two_sided_balls_upto.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/usp-old.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/usp-tuple.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/path_algorithms/usp.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/product_graph.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/rpq/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/rpq/automaton.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/rpq/diagnostics.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/rpq/filter.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/rpq/glushkov.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/rpq/rpq.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/rpq/transition.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_sp_max_length.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_sp_multiple.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_sp_single.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_walks_multiple.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_limit_walks_single.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_one_sided_ball_repetition_multiple.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_one_sided_ball_repetition_single.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_one_sided_ball_upto_multiple.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_one_sided_ball_upto_single.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_single_paths.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_single_walks.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_single_walks_undirected.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_two_sided_balls_repetition_multiple.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_two_sided_balls_repetition_single.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_two_sided_balls_upto_multiple.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_two_sided_balls_upto_single.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_usp_nsp_multiple.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/tests/tests_usp_nsp_single.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/utilities/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/utilities/iterators.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/utilities/prefix_sum.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/paths/utilities/utilities.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/graph/tests/README.md +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/optimization/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/optimization/common.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/optimization/solvers_dev.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/reasoners/optimization/solvers_pb.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/rel/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/rel/builtins.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/rel/compiler.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/rel/executor.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/rel/rel.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/rel/rel_utils.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/snowflake/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/sql/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/sql/compiler.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/sql/executor/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/sql/executor/duck_db.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/sql/executor/result_helpers.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/sql/executor/snowflake.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/sql/rewrite/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/sql/rewrite/denormalize.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/sql/rewrite/double_negation.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/sql/rewrite/recursive_union.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/sql/rewrite/sort_output_query.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/sql/sql.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/std/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/std/constraints.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/std/datetime.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/std/decimals.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/std/floats.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/std/integers.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/std/pragmas.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/std/re.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/std/std.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/std/strings.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/tests/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/tests/logging.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/tests/test_snapshot_abstract.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/tests/test_snapshot_base.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/tests/utils.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/std/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/std/aggregates.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/std/dates.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/std/graphs.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/std/inspect.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/std/math.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/std/re.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/std/strings.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/cleanup_snapshots.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/cli.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/cli_controls.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/cli_helpers.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/constants.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/debugger.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/debugger_client.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/debugger_server.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/dev.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/notes +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/qb_debugger.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/query_utils.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/tools/snapshot_viewer.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/clean_up_databases.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/constants.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/format.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/graph.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/list_databases.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/otel_configuration.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/otel_handler.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/snowflake_handler.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/span_format_test.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/span_tracker.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/spans_file_handler.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/timeout.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/util/tracing_handler.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai_test_util/__init__.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai_test_util/fixtures.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai_test_util/snapshot.py +0 -0
- {relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai_test_util/traceback.py +0 -0
|
@@ -261,20 +261,7 @@ class SolverModel:
|
|
|
261
261
|
remaining_timeout_minutes = calc_remaining_timeout_minutes(
|
|
262
262
|
start_time, query_timeout_mins, config_file_path=config_file_path
|
|
263
263
|
)
|
|
264
|
-
|
|
265
|
-
job_id = solver._exec_job(payload, log_to_console=log_to_console, query_timeout_mins=remaining_timeout_minutes)
|
|
266
|
-
except Exception as e:
|
|
267
|
-
err_message = str(e).lower()
|
|
268
|
-
if isinstance(e, ResponseStatusException):
|
|
269
|
-
err_message = e.response.json().get("message", "")
|
|
270
|
-
if any(kw in err_message.lower() for kw in ENGINE_ERRORS + WORKER_ERRORS + ENGINE_NOT_READY_MSGS):
|
|
271
|
-
solver._auto_create_solver_async()
|
|
272
|
-
remaining_timeout_minutes = calc_remaining_timeout_minutes(
|
|
273
|
-
start_time, query_timeout_mins, config_file_path=config_file_path
|
|
274
|
-
)
|
|
275
|
-
job_id = solver._exec_job(payload, log_to_console=log_to_console, query_timeout_mins=remaining_timeout_minutes)
|
|
276
|
-
else:
|
|
277
|
-
raise e
|
|
264
|
+
job_id = solver._exec_job(payload, log_to_console=log_to_console, query_timeout_mins=remaining_timeout_minutes)
|
|
278
265
|
|
|
279
266
|
# 3. Extract result.
|
|
280
267
|
remaining_timeout_minutes = calc_remaining_timeout_minutes(
|
|
@@ -660,12 +647,24 @@ class Solver:
|
|
|
660
647
|
if self.engine is None:
|
|
661
648
|
raise Exception("Engine not initialized.")
|
|
662
649
|
|
|
663
|
-
# Make sure the engine is ready.
|
|
664
|
-
if self.engine["state"] != "READY":
|
|
665
|
-
poll_with_specified_overhead(lambda: self._is_solver_ready(), 0.1)
|
|
666
|
-
|
|
667
650
|
with debugging.span("job") as job_span:
|
|
668
|
-
|
|
651
|
+
# Retry logic. If creating a job fails with an engine
|
|
652
|
+
# related error we will create/resume/... the engine and
|
|
653
|
+
# retry.
|
|
654
|
+
try:
|
|
655
|
+
job_id = self.provider.create_job_async(self.engine["name"], payload, query_timeout_mins=query_timeout_mins)
|
|
656
|
+
except Exception as e:
|
|
657
|
+
err_message = str(e).lower()
|
|
658
|
+
if isinstance(e, ResponseStatusException):
|
|
659
|
+
err_message = e.response.json().get("message", "")
|
|
660
|
+
if any(kw in err_message.lower() for kw in ENGINE_ERRORS + WORKER_ERRORS + ENGINE_NOT_READY_MSGS):
|
|
661
|
+
self._auto_create_solver_async()
|
|
662
|
+
# Wait until the engine is ready.
|
|
663
|
+
poll_with_specified_overhead(lambda: self._is_solver_ready(), 0.1)
|
|
664
|
+
job_id = self.provider.create_job_async(self.engine["name"], payload, query_timeout_mins=query_timeout_mins)
|
|
665
|
+
else:
|
|
666
|
+
raise e
|
|
667
|
+
|
|
669
668
|
job_span["job_id"] = job_id
|
|
670
669
|
debugging.event("job_created", job_span, job_id=job_id, engine_name=self.engine["name"], job_type=ENGINE_TYPE_SOLVER)
|
|
671
670
|
if not isinstance(job_id, str):
|
|
@@ -300,6 +300,27 @@ class LQPExecutor(e.Executor):
|
|
|
300
300
|
meta=None,
|
|
301
301
|
)
|
|
302
302
|
|
|
303
|
+
def _compile_undefine_query(self, query_epoch: lqp_ir.Epoch) -> lqp_ir.Epoch:
|
|
304
|
+
fragment_ids = []
|
|
305
|
+
|
|
306
|
+
for write in query_epoch.writes:
|
|
307
|
+
if isinstance(write.write_type, lqp_ir.Define):
|
|
308
|
+
fragment_ids.append(write.write_type.fragment.id)
|
|
309
|
+
|
|
310
|
+
# Construct new Epoch with Undefine operations for all collected fragment IDs
|
|
311
|
+
undefine_writes = [
|
|
312
|
+
lqp_ir.Write(
|
|
313
|
+
write_type=lqp_ir.Undefine(fragment_id=frag_id, meta=None),
|
|
314
|
+
meta=None
|
|
315
|
+
)
|
|
316
|
+
for frag_id in fragment_ids
|
|
317
|
+
]
|
|
318
|
+
|
|
319
|
+
return lqp_ir.Epoch(
|
|
320
|
+
writes=undefine_writes,
|
|
321
|
+
meta=None,
|
|
322
|
+
)
|
|
323
|
+
|
|
303
324
|
def compile_lqp(self, model: ir.Model, task: ir.Task):
|
|
304
325
|
configure = self._construct_configure()
|
|
305
326
|
|
|
@@ -334,7 +355,11 @@ class LQPExecutor(e.Executor):
|
|
|
334
355
|
if model_txn is not None:
|
|
335
356
|
epochs.append(model_txn.epochs[0])
|
|
336
357
|
|
|
337
|
-
|
|
358
|
+
query_txn_epoch = query_txn.epochs[0]
|
|
359
|
+
|
|
360
|
+
epochs.append(query_txn_epoch)
|
|
361
|
+
|
|
362
|
+
epochs.append(self._compile_undefine_query(query_txn_epoch))
|
|
338
363
|
|
|
339
364
|
txn = lqp_ir.Transaction(epochs=epochs, configure=configure, meta=None)
|
|
340
365
|
|
{relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/lqp/rewrite/extract_common.py
RENAMED
|
@@ -265,10 +265,12 @@ class ExtractCommon(Pass):
|
|
|
265
265
|
for child in common_body:
|
|
266
266
|
body_output_vars.update(ctx.info.task_outputs(child))
|
|
267
267
|
|
|
268
|
-
# Compute the union of input vars across all
|
|
268
|
+
# Compute the union of input vars across all non-extracted tasks (basically
|
|
269
|
+
# composites and binders left behind), intersected with output
|
|
269
270
|
# vars of the common body
|
|
270
271
|
exposed_vars = OrderedSet.from_iterable(ctx.info.task_inputs(sample)) & body_output_vars
|
|
271
|
-
|
|
272
|
+
non_extracted_tasks = (binders - common_body) | composites
|
|
273
|
+
for composite in non_extracted_tasks:
|
|
272
274
|
if composite is sample:
|
|
273
275
|
continue
|
|
274
276
|
# compute common input vars
|
{relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/builtins.py
RENAMED
|
@@ -112,12 +112,12 @@ log10 = f.relation(
|
|
|
112
112
|
|
|
113
113
|
log = f.relation(
|
|
114
114
|
"log",
|
|
115
|
-
[f.input_field("
|
|
115
|
+
[f.input_field("base", types.Number), f.input_field("value", types.Number), f.field("result", types.Float)],
|
|
116
116
|
overloads=[
|
|
117
|
-
f.relation("log", [f.input_field("
|
|
118
|
-
f.relation("log", [f.input_field("
|
|
119
|
-
f.relation("log", [f.input_field("
|
|
120
|
-
f.relation("log", [f.input_field("
|
|
117
|
+
f.relation("log", [f.input_field("base", types.Int64), f.input_field("value", types.Int64), f.field("result", types.Float)]),
|
|
118
|
+
f.relation("log", [f.input_field("base", types.Int128), f.input_field("value", types.Int128), f.field("result", types.Float)]),
|
|
119
|
+
f.relation("log", [f.input_field("base", types.Float), f.input_field("value", types.Float), f.field("result", types.Float)]),
|
|
120
|
+
f.relation("log", [f.input_field("base", types.GenericDecimal), f.input_field("value", types.GenericDecimal), f.field("result", types.Float)]),
|
|
121
121
|
|
|
122
122
|
],
|
|
123
123
|
)
|
|
@@ -496,7 +496,7 @@ 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.
|
|
499
|
+
# Indicates this relation should be tracked in telemetry. Supported for Relationships and Concepts.
|
|
500
500
|
# `RAI_BackIR.with_relation_tracking` produces log messages at the start and end of each
|
|
501
501
|
# SCC evaluation, if any declarations bear the `track` annotation.
|
|
502
502
|
track = f.relation("track", [
|
{relationalai-0.12.2 → relationalai-0.12.3}/src/relationalai/semantics/metamodel/dependency.py
RENAMED
|
@@ -627,11 +627,13 @@ class BindingAnalysis(visitor.Visitor):
|
|
|
627
627
|
x, y = child.args[0], child.args[1]
|
|
628
628
|
if isinstance(x, ir.Var) and not isinstance(y, ir.Var):
|
|
629
629
|
grounds.add(x)
|
|
630
|
+
self.output(child, x)
|
|
630
631
|
elif not isinstance(x, ir.Var) and isinstance(y, ir.Var):
|
|
631
632
|
grounds.add(y)
|
|
633
|
+
self.output(child, y)
|
|
632
634
|
elif isinstance(x, ir.Var) and isinstance(y, ir.Var):
|
|
633
635
|
# mark as potentially grounded, if any is grounded in other atoms then we later ground both
|
|
634
|
-
potentially_grounded.add((x, y))
|
|
636
|
+
potentially_grounded.add((child, x, y))
|
|
635
637
|
else:
|
|
636
638
|
# grounds only outputs
|
|
637
639
|
for idx, f in enumerate(child.relation.fields):
|
|
@@ -654,23 +656,33 @@ class BindingAnalysis(visitor.Visitor):
|
|
|
654
656
|
# grounds the output var
|
|
655
657
|
grounds.add(child.id_var)
|
|
656
658
|
|
|
659
|
+
# add child hoisted vars to grounded so that they can be picked up by the children
|
|
660
|
+
for child in node.body:
|
|
661
|
+
if isinstance(child, helpers.COMPOSITES):
|
|
662
|
+
grounds.update(helpers.hoisted_vars(child.hoisted))
|
|
663
|
+
|
|
664
|
+
# equalities where both sides are already grounded mean that both sides are input
|
|
665
|
+
for child, x, y in potentially_grounded:
|
|
666
|
+
if x in grounds and y in grounds:
|
|
667
|
+
self.input(child, x)
|
|
668
|
+
self.input(child, y)
|
|
669
|
+
|
|
657
670
|
# deal with potentially grounded vars up to a fixpoint
|
|
658
671
|
changed = True
|
|
659
672
|
while changed:
|
|
660
673
|
changed = False
|
|
661
|
-
for x, y in potentially_grounded:
|
|
674
|
+
for child, x, y in potentially_grounded:
|
|
662
675
|
if x in grounds and y not in grounds:
|
|
676
|
+
self.input(child, x)
|
|
677
|
+
self.output(child, y)
|
|
663
678
|
grounds.add(y)
|
|
664
679
|
changed = True
|
|
665
680
|
elif y in grounds and x not in grounds:
|
|
681
|
+
self.input(child, y)
|
|
682
|
+
self.output(child, x)
|
|
666
683
|
grounds.add(x)
|
|
667
684
|
changed = True
|
|
668
685
|
|
|
669
|
-
# add child hoisted vars to grounded so that they can be picked up by the children
|
|
670
|
-
for child in node.body:
|
|
671
|
-
if isinstance(child, helpers.COMPOSITES):
|
|
672
|
-
grounds.update(helpers.hoisted_vars(child.hoisted))
|
|
673
|
-
|
|
674
686
|
# now visit the children
|
|
675
687
|
self._grounded.append(grounds)
|
|
676
688
|
super().visit_logical(node, parent)
|
|
@@ -765,20 +777,28 @@ class BindingAnalysis(visitor.Visitor):
|
|
|
765
777
|
self.output(node, arg)
|
|
766
778
|
|
|
767
779
|
if builtins.is_eq(node.relation):
|
|
768
|
-
#
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
+
# Most cases are covered already at the parent level if the equality is part of
|
|
781
|
+
# a Logical. The remaining cases are when the equality is a child of a
|
|
782
|
+
# non-Logical.
|
|
783
|
+
if self.info.task_inputs(node) or self.info.task_outputs(node):
|
|
784
|
+
# already covered
|
|
785
|
+
pass
|
|
786
|
+
else:
|
|
787
|
+
x, y = node.args[0], node.args[1]
|
|
788
|
+
if isinstance(x, ir.Var) and not isinstance(y, ir.Var):
|
|
789
|
+
self.output(node, x)
|
|
790
|
+
elif not isinstance(x, ir.Var) and isinstance(y, ir.Var):
|
|
791
|
+
self.output(node, y)
|
|
792
|
+
elif isinstance(x, ir.Var) and isinstance(y, ir.Var):
|
|
793
|
+
grounds = self._grounded[-1] if self._grounded else ordered_set()
|
|
794
|
+
if x in grounds:
|
|
795
|
+
self.input(node, x)
|
|
796
|
+
else:
|
|
797
|
+
self.output(node, x)
|
|
798
|
+
if y in grounds:
|
|
799
|
+
self.input(node, y)
|
|
780
800
|
else:
|
|
781
|
-
self.
|
|
801
|
+
self.output(node, y)
|
|
782
802
|
else:
|
|
783
803
|
# register variables depending on the input flag of the relation bound to the lookup
|
|
784
804
|
for idx, f in enumerate(node.relation.fields):
|
|
@@ -348,12 +348,13 @@ def clone_task(task: T) -> T:
|
|
|
348
348
|
# if no childrean were stacked, we rewrote all fields of curr, so we can pop it and rewrite it
|
|
349
349
|
if not stacked_children:
|
|
350
350
|
stack.pop()
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
351
|
+
if curr.id not in cache:
|
|
352
|
+
children = []
|
|
353
|
+
for f in curr_fields:
|
|
354
|
+
children.append(from_cache(getattr(curr, f.name)))
|
|
355
|
+
# create a new prev_node with the cloned children
|
|
356
|
+
prev_node = curr.__class__(*children)
|
|
357
|
+
cache[curr.id] = prev_node
|
|
357
358
|
|
|
358
359
|
# the last node we processed is the rewritten original node
|
|
359
360
|
assert(isinstance(prev_node, type(task)))
|
|
@@ -58,10 +58,7 @@ class LogicalExtractor(Rewriter):
|
|
|
58
58
|
# compute the vars to be exposed by the extracted logical; those are keys (what
|
|
59
59
|
# makes the values unique) + the values (the hoisted variables)
|
|
60
60
|
exposed_vars = ordered_set()
|
|
61
|
-
|
|
62
|
-
# TODO - in the future we can analyze better these inputs to see if we can drop
|
|
63
|
-
# some and have narrower intermediate relations
|
|
64
|
-
exposed_vars.update(self.info.task_inputs(logical))
|
|
61
|
+
|
|
65
62
|
# if there are aggregations, make sure we don't expose the projected and input vars,
|
|
66
63
|
# but expose groupbys
|
|
67
64
|
for child in node.body:
|