relationalai 1.0.0a3__tar.gz → 1.0.0a5__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-1.0.0a3 → relationalai-1.0.0a5}/PKG-INFO +8 -5
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/README.md +23 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/pyproject.toml +22 -9
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/config.py +47 -21
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/connections/__init__.py +5 -2
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/connections/duckdb.py +2 -2
- relationalai-1.0.0a5/src/relationalai/config/connections/local.py +31 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/connections/snowflake.py +0 -1
- relationalai-1.0.0a5/src/relationalai/config/external/raiconfig_converter.py +235 -0
- relationalai-1.0.0a5/src/relationalai/config/external/raiconfig_models.py +202 -0
- relationalai-1.0.0a5/src/relationalai/config/external/utils.py +50 -0
- relationalai-1.0.0a5/src/relationalai/config/shims.py +2 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/__init__.py +10 -8
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/backends/sql/sql_compiler.py +1 -4
- relationalai-1.0.0a5/src/relationalai/semantics/experimental/builder.py +295 -0
- relationalai-1.0.0a5/src/relationalai/semantics/experimental/builtins.py +154 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/frontend/base.py +67 -42
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/frontend/core.py +34 -6
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/frontend/front_compiler.py +209 -37
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/frontend/pprint.py +6 -2
- relationalai-1.0.0a5/src/relationalai/semantics/metamodel/__init__.py +13 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/metamodel.py +2 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/metamodel_analyzer.py +58 -16
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/pprint.py +6 -1
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/rewriter.py +11 -7
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/typer.py +116 -41
- relationalai-1.0.0a5/src/relationalai/semantics/reasoners/__init__.py +11 -0
- relationalai-1.0.0a5/src/relationalai/semantics/reasoners/graph/__init__.py +35 -0
- relationalai-1.0.0a5/src/relationalai/semantics/reasoners/graph/core.py +9028 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/std/__init__.py +30 -10
- relationalai-1.0.0a5/src/relationalai/semantics/std/aggregates.py +777 -0
- relationalai-1.0.0a5/src/relationalai/semantics/std/common.py +177 -0
- relationalai-1.0.0a5/src/relationalai/semantics/std/constraints.py +107 -0
- relationalai-1.0.0a5/src/relationalai/semantics/std/datetime.py +1360 -0
- relationalai-1.0.0a5/src/relationalai/semantics/std/decimals.py +196 -0
- relationalai-1.0.0a5/src/relationalai/semantics/std/floats.py +68 -0
- relationalai-1.0.0a5/src/relationalai/semantics/std/integers.py +131 -0
- relationalai-1.0.0a5/src/relationalai/semantics/std/math.py +1034 -0
- relationalai-1.0.0a5/src/relationalai/semantics/std/numbers.py +282 -0
- relationalai-1.0.0a5/src/relationalai/semantics/std/re.py +309 -0
- relationalai-1.0.0a5/src/relationalai/semantics/std/strings.py +511 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/shims/executor.py +60 -52
- relationalai-1.0.0a5/src/relationalai/shims/fixtures.py +85 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/shims/helpers.py +26 -2
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/shims/hoister.py +28 -9
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/shims/mm2v0.py +204 -173
- relationalai-1.0.0a5/src/relationalai/tools/cli/cli.py +272 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/cli/components/progress_reader.py +1 -1
- relationalai-1.0.0a5/src/relationalai/tools/cli/docs.py +394 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/debugger.py +11 -4
- relationalai-1.0.0a5/src/relationalai/tools/qb_debugger.py +435 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/typer_debugger.py +1 -2
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/dataclasses.py +3 -5
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/docutils.py +1 -2
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/error.py +2 -5
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/python.py +23 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/runtime.py +1 -2
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/schema.py +2 -4
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/structures.py +4 -2
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/tracing.py +8 -2
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai.egg-info/PKG-INFO +8 -5
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai.egg-info/SOURCES.txt +23 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai.egg-info/requires.txt +6 -3
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/__init__.py +1 -1
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/client.py +52 -18
- relationalai-1.0.0a5/src/v0/relationalai/clients/exec_txn_poller.py +122 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/local.py +23 -8
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/azure/azure.py +36 -11
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/__init__.py +4 -4
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/cli_resources.py +12 -1
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/direct_access_resources.py +124 -100
- relationalai-1.0.0a5/src/v0/relationalai/clients/resources/snowflake/engine_service.py +381 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/engine_state_handlers.py +35 -29
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/error_handlers.py +43 -2
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/snowflake.py +277 -179
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/use_index_poller.py +8 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/types.py +5 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/errors.py +19 -1
- relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/algorithms.py +173 -0
- relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/builtins.py +213 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/executor.py +68 -37
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/ir.py +28 -2
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/model2lqp.py +215 -45
- relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/passes.py +35 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/__init__.py +12 -0
- relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/rewrite/algorithm.py +385 -0
- relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/rewrite/constants_to_vars.py +70 -0
- relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/rewrite/deduplicate_vars.py +104 -0
- relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/rewrite/eliminate_data.py +108 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/extract_keys.py +25 -3
- relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/rewrite/period_math.py +77 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/quantify_vars.py +65 -31
- relationalai-1.0.0a5/src/v0/relationalai/semantics/lqp/rewrite/unify_definitions.py +317 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/utils.py +11 -1
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/validators.py +14 -1
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/builtins.py +2 -1
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/compiler.py +2 -1
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/dependency.py +12 -3
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/executor.py +11 -1
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/factory.py +2 -2
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/helpers.py +7 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/ir.py +3 -2
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +30 -20
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/rewrite/flatten.py +50 -13
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/rewrite/format_outputs.py +9 -3
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/typer/checker.py +6 -4
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/typer/typer.py +4 -3
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/visitor.py +4 -3
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/optimization/solvers_dev.py +1 -1
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/optimization/solvers_pb.py +336 -86
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/rel/compiler.py +2 -1
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/rel/executor.py +3 -2
- relationalai-1.0.0a5/src/v0/relationalai/semantics/tests/lqp/__init__.py +0 -0
- relationalai-1.0.0a5/src/v0/relationalai/semantics/tests/lqp/algorithms.py +345 -0
- relationalai-1.0.0a5/src/v0/relationalai/tools/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/cli.py +339 -186
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/cli_controls.py +216 -67
- relationalai-1.0.0a5/src/v0/relationalai/tools/cli_helpers.py +802 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/format.py +5 -2
- relationalai-1.0.0a3/src/relationalai/config/external/utils.py +0 -19
- relationalai-1.0.0a3/src/relationalai/config/shims.py +0 -1
- relationalai-1.0.0a3/src/relationalai/semantics/metamodel/__init__.py +0 -6
- relationalai-1.0.0a3/src/relationalai/semantics/std/aggregates.py +0 -148
- relationalai-1.0.0a3/src/relationalai/semantics/std/common.py +0 -44
- relationalai-1.0.0a3/src/relationalai/semantics/std/constraints.py +0 -37
- relationalai-1.0.0a3/src/relationalai/semantics/std/datetime.py +0 -477
- relationalai-1.0.0a3/src/relationalai/semantics/std/decimals.py +0 -55
- relationalai-1.0.0a3/src/relationalai/semantics/std/floats.py +0 -15
- relationalai-1.0.0a3/src/relationalai/semantics/std/integers.py +0 -37
- relationalai-1.0.0a3/src/relationalai/semantics/std/math.py +0 -212
- relationalai-1.0.0a3/src/relationalai/semantics/std/numbers.py +0 -86
- relationalai-1.0.0a3/src/relationalai/semantics/std/re.py +0 -101
- relationalai-1.0.0a3/src/relationalai/semantics/std/strings.py +0 -118
- relationalai-1.0.0a3/src/relationalai/tools/cli/cli.py +0 -90
- relationalai-1.0.0a3/src/v0/relationalai/semantics/lqp/builtins.py +0 -16
- relationalai-1.0.0a3/src/v0/relationalai/semantics/lqp/passes.py +0 -680
- relationalai-1.0.0a3/src/v0/relationalai/tools/cli_helpers.py +0 -398
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/setup.cfg +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/config_fields.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/connections/base.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/external/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/external/dbt_converter.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/external/dbt_models.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/external/snowflake_converter.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/external/snowflake_models.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/backends/lqp/annotations.py +0 -0
- {relationalai-1.0.0a3/src/relationalai/semantics/frontend → relationalai-1.0.0a5/src/relationalai/semantics/experimental}/__init__.py +0 -0
- {relationalai-1.0.0a3/src/relationalai/shims → relationalai-1.0.0a5/src/relationalai/semantics/frontend}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/builtins.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/semantics/metamodel/metamodel_compiler.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/analysis → relationalai-1.0.0a5/src/relationalai/shims}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/cli/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/cli/components/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/cli/components/utils.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/cli/config_template.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/tools/cli/dev.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/format.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/naming.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/util/source.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai.egg-info/dependency_links.txt +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai.egg-info/entry_points.txt +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai.egg-info/top_level.txt +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/auth → relationalai-1.0.0a5/src/v0/relationalai/analysis}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/analysis/mechanistic.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/analysis/whynot.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access → relationalai-1.0.0a5/src/v0/relationalai/auth}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/auth/jwt_generator.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/auth/oauth_callback_server.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/auth/token_handler.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/auth/util.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/config.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/direct_access_client.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/hash_util.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/profile_polling.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/cache_store.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/resources_factory.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/use_index_resources.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/resources/snowflake/util.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/result_helpers.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/clients/util.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/compiler.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/debugging.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/dependencies.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/docutils.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/dsl.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/adapters → relationalai-1.0.0a5/src/v0/relationalai/early_access}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/builder/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/snowflake/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/std/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/std/decimals/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/std/integers/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/std/math/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/builder/std/strings/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/devtools/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/devtools/benchmark_lqp/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/devtools/extract_lqp/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/__init__.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/adapters/orm → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/adapters}/__init__.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/adapters/owl → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/adapters/orm}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/adapters/orm/adapter_qb.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/adapters/orm/model.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/adapters/orm/parser.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/bindings → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/adapters/owl}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/adapters/owl/adapter.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/adapters/owl/model.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/adapters/owl/parser.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/bindings/legacy → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/bindings}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/bindings/common.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/bindings/csv.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/codegen → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/bindings/legacy}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/bindings/legacy/binding_models.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/bindings/snowflake.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/core/temporal → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/codegen}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/codegen/binder.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/codegen/common.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/codegen/helpers.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/codegen/relations.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/codegen/weaver.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/constants.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/builders/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/builders/logic.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/builders/scalar_constraint.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/constraints/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/constraints/predicate/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/constraints/predicate/atomic.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/constraints/predicate/universal.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/constraints/scalar.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/context.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/cset.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/exprs/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/exprs/relational.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/exprs/scalar.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/instances.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/logic/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/logic/aggregation.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/logic/exists.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/logic/helper.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/namespaces.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/relations.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/rules.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/stack.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/std/__init__.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/ir → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/core/temporal}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/temporal/recall.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/concepts.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/constrained/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/constrained/nominal.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/constrained/subtype.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/standard.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/unconstrained.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/types/variables.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/core/utils.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/ontologies → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/ir}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ir/compiler.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ir/executor.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/orm → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/ontologies}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/constraints.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/export.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/models.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/python_printer.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/raw_source.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/readings.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/relationships.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/roles.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/ontologies/subtyping.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/orm/measures → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/orm}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/constraints.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/physical_metadata → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/orm/measures}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/measures/dimensions.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/measures/initializer.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/measures/measure_rules.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/measures/measures.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/measures/role_exprs.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/models.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/object_oriented_printer.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/printer.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/reasoner_errors.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/reasoners.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/relations.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/relationships.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/types.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/utils.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/orm/verb.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/serialize → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/physical_metadata}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/physical_metadata/tables.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/relations.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/rulesets.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/builder.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/comp_names.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/components.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/contexts.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/exprs.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/schemas/fragments.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/serialization.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/early_access/dsl/snow → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/serialize}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/serialize/binding_model.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/serialize/exporter.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/serialize/model.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/loaders → relationalai-1.0.0a5/src/v0/relationalai/early_access/dsl/snow}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/snow/api.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/snow/common.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/state_mgmt/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/state_mgmt/state_charts.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/state_mgmt/transitions.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/types/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/types/concepts.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/types/entities.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/types/values.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/dsl/utils.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/graphs/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/compiler/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/constructors/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/executor/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/ir/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/passes/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/pragmas/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/primitives/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/types/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/utils/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/lqp/validators/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/builtins/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/compiler/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/dependency/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/factory/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/helpers/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/ir/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/rewrite/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/typer/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/typer/typer/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/types/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/util/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/metamodel/visitor/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/rel/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/rel/executor/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/rel/rel_utils/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/rel/rewrite/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/solvers/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/sql/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/sql/executor/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/sql/rewrite/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/tests/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/tests/logging/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/tests/test_snapshot_base/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/early_access/tests/utils/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/base.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/ci.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/colab.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/generic.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/hex.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/ipython.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/jupyter.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/snowbook.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/environments/terminal.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/SF.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/graphs.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/inspect.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/api.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/automaton.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/bridge.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/compiler.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/datalog.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/diagnostics.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/filter.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/glushkov.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/options.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/rpq.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/transition.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/pathfinder/utils.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/api.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/benchmarks/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/benchmarks/grid_graph.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/examples/basic_example.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/examples/minimal_engine_warmup.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/examples/movie_example.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/examples/paths_benchmark.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/examples/paths_example.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/examples/pattern_to_automaton.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/find_paths_via_automaton.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/graph.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/find_paths.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/one_sided_ball_repetition.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/one_sided_ball_upto.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/single.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/two_sided_balls_repetition.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/two_sided_balls_upto.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/usp-old.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/usp-tuple.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/path_algorithms/usp.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/product_graph.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/automaton.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/diagnostics.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/filter.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/glushkov.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/rpq.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/rpq/transition.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_limit_sp_max_length.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_limit_sp_multiple.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_limit_sp_single.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_limit_walks_multiple.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_limit_walks_single.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_one_sided_ball_repetition_multiple.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_one_sided_ball_repetition_single.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_one_sided_ball_upto_multiple.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_one_sided_ball_upto_single.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_single_paths.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_single_walks.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_single_walks_undirected.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_two_sided_balls_repetition_multiple.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_two_sided_balls_repetition_single.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_two_sided_balls_upto_multiple.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_two_sided_balls_upto_single.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_usp_nsp_multiple.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tests/tests_usp_nsp_single.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/tree_agg.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/utilities/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/utilities/iterators.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/utilities/prefix_sum.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/paths/utilities/utilities.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/experimental/solvers.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/semantics/tests → relationalai-1.0.0a5/src/v0/relationalai/loaders}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/loaders/csv.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/loaders/loader.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/loaders/types.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/metagen.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/metamodel.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/rel.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/rel_emitter.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/rel_utils.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/devtools/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/devtools/benchmark_lqp.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/devtools/compilation_manager.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/devtools/extract_lqp.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/internal/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/internal/annotations.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/internal/internal.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/internal/snowflake.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/compiler.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/constructors.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/intrinsics.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/pragmas.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/primitives.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/result_helpers.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/annotate_constraints.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/cdc.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/extract_common.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/function_annotations.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/functional_dependencies.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/rewrite/splinter.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/lqp/types.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/dataflow.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/rewrite/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/rewrite/discharge_constraints.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/typer/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/types.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/metamodel/util.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/experimental/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/graph/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/graph/core.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/optimization/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/reasoners/optimization/common.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/rel/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/rel/builtins.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/rel/rel.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/rel/rel_utils.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/snowflake/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/compiler.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/executor/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/executor/duck_db.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/executor/result_helpers.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/executor/snowflake.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/rewrite/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/rewrite/denormalize.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/rewrite/double_negation.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/rewrite/recursive_union.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/rewrite/sort_output_query.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/sql/sql.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/constraints.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/datetime.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/decimals.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/floats.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/integers.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/math.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/pragmas.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/re.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/std.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/std/strings.py +0 -0
- {relationalai-1.0.0a3/src/v0/relationalai/tools → relationalai-1.0.0a5/src/v0/relationalai/semantics/tests}/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/tests/logging.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/tests/test_snapshot_abstract.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/tests/test_snapshot_base.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/semantics/tests/utils.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/aggregates.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/dates.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/graphs.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/inspect.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/math.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/re.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/std/strings.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/cleanup_snapshots.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/constants.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/debugger.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/debugger_client.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/debugger_server.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/dev.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/qb_debugger.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/query_utils.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/tools/snapshot_viewer.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/__init__.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/clean_up_databases.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/constants.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/graph.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/list_databases.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/otel_configuration.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/otel_handler.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/snowflake_handler.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/span_format_test.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/span_tracker.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/spans_file_handler.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/timeout.py +0 -0
- {relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/v0/relationalai/util/tracing_handler.py +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: relationalai
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.0a5
|
|
4
4
|
Summary: RelationalAI Library and CLI
|
|
5
5
|
Author-email: RelationalAI <support@relational.ai>
|
|
6
|
-
Requires-Python:
|
|
6
|
+
Requires-Python: <3.14,>=3.10
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
|
-
Requires-Dist: lqp
|
|
8
|
+
Requires-Dist: lqp
|
|
9
9
|
Requires-Dist: snowflake-connector-python[secure-local-storage]
|
|
10
10
|
Requires-Dist: snowflake-snowpark-python>=1.38.0
|
|
11
11
|
Requires-Dist: typing-extensions
|
|
@@ -15,10 +15,9 @@ Requires-Dist: numpy<2
|
|
|
15
15
|
Requires-Dist: pandas
|
|
16
16
|
Requires-Dist: colorama
|
|
17
17
|
Requires-Dist: inquirerpy
|
|
18
|
-
Requires-Dist: click
|
|
18
|
+
Requires-Dist: click
|
|
19
19
|
Requires-Dist: gravis
|
|
20
20
|
Requires-Dist: toml
|
|
21
|
-
Requires-Dist: tomlkit
|
|
22
21
|
Requires-Dist: requests
|
|
23
22
|
Requires-Dist: pyarrow
|
|
24
23
|
Requires-Dist: websockets
|
|
@@ -33,8 +32,12 @@ Requires-Dist: pyjwt
|
|
|
33
32
|
Requires-Dist: more-itertools
|
|
34
33
|
Requires-Dist: sqlglot
|
|
35
34
|
Requires-Dist: pyyaml
|
|
35
|
+
Requires-Dist: confocal
|
|
36
36
|
Requires-Dist: pydantic<2.12.0,>=2.0.0
|
|
37
37
|
Requires-Dist: pydantic-settings<2.11.0,>=2.0.0
|
|
38
|
+
Requires-Dist: tomlkit
|
|
39
|
+
Requires-Dist: fastapi
|
|
40
|
+
Requires-Dist: uvicorn[standard]
|
|
38
41
|
Provides-Extra: dev
|
|
39
42
|
Requires-Dist: pytest; extra == "dev"
|
|
40
43
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -15,6 +15,29 @@ make install
|
|
|
15
15
|
make sync
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
+
### Running Tests
|
|
19
|
+
|
|
20
|
+
The repository includes two test suites that can be run using Make commands:
|
|
21
|
+
|
|
22
|
+
**Unified tests** (general test suite):
|
|
23
|
+
```bash
|
|
24
|
+
make test # run all unified tests
|
|
25
|
+
make test unions # run tests matching "q03"
|
|
26
|
+
make test "unions or strings" # run tests matching pattern with spaces
|
|
27
|
+
make test unions --update # run tests and update snapshots
|
|
28
|
+
make test --update # update snapshots for all tests
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**TPCH tests** (TPC-H benchmark queries):
|
|
32
|
+
```bash
|
|
33
|
+
make tpch # run all TPCH tests
|
|
34
|
+
make tpch q01 # run only q01
|
|
35
|
+
make tpch q22 --update # run q22 and update snapshots
|
|
36
|
+
make tpch --update # update snapshots for all TPCH tests
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
The `--update` flag (or `-u` for short) can be placed before or after the pattern.
|
|
40
|
+
|
|
18
41
|
### Docstrings
|
|
19
42
|
|
|
20
43
|
API reference documentation is generated from docstrings in the code.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = 'relationalai'
|
|
3
|
-
version = '1.0.
|
|
3
|
+
version = '1.0.0a5'
|
|
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.10"
|
|
9
|
+
requires-python = ">= 3.10, <3.14"
|
|
10
10
|
dependencies = [
|
|
11
|
-
"lqp
|
|
11
|
+
"lqp",
|
|
12
12
|
"snowflake-connector-python[secure-local-storage]",
|
|
13
13
|
"snowflake-snowpark-python>=1.38.0",
|
|
14
14
|
"typing-extensions",
|
|
@@ -18,10 +18,9 @@ dependencies = [
|
|
|
18
18
|
"pandas",
|
|
19
19
|
"colorama",
|
|
20
20
|
"inquirerpy",
|
|
21
|
-
"click
|
|
21
|
+
"click",
|
|
22
22
|
"gravis",
|
|
23
23
|
"toml",
|
|
24
|
-
"tomlkit",
|
|
25
24
|
"requests",
|
|
26
25
|
"pyarrow",
|
|
27
26
|
"websockets",
|
|
@@ -36,10 +35,12 @@ dependencies = [
|
|
|
36
35
|
"more-itertools",
|
|
37
36
|
"sqlglot",
|
|
38
37
|
"pyyaml",
|
|
39
|
-
|
|
40
|
-
# "confocal @ git+https://github.com/joshuafcole/confocal.git",
|
|
38
|
+
"confocal",
|
|
41
39
|
"pydantic>=2.0.0,<2.12.0",
|
|
42
40
|
"pydantic-settings>=2.0.0,<2.11.0",
|
|
41
|
+
"tomlkit",
|
|
42
|
+
"fastapi",
|
|
43
|
+
"uvicorn[standard]",
|
|
43
44
|
]
|
|
44
45
|
[project.optional-dependencies]
|
|
45
46
|
dev = [
|
|
@@ -61,10 +62,22 @@ exclude = []
|
|
|
61
62
|
|
|
62
63
|
[tool.pyright]
|
|
63
64
|
include = ["src", "tests", "example"]
|
|
64
|
-
exclude = ["**/node_modules", "**/__pycache__", "**/.*"]
|
|
65
|
+
exclude = ["**/node_modules", "**/__pycache__", "**/.*", "src/v0/**", "src/relationalai/shims/**", "tests/unified/tests/dry_run/**", "tests/unified/tests/pragmas/**", "tests/unified/tests/tables/**", "tests/unified/tests/warnings/**", "tests/reasoners/graphs/**", "tests/shims/**", "tests/tpch/**", "tests/unified/test_all.py"]
|
|
65
66
|
useLibraryCodeForTypes = true
|
|
66
67
|
reportMissingImports = true
|
|
67
68
|
reportMissingTypeStubs = false
|
|
68
|
-
pythonVersion = "3.
|
|
69
|
+
pythonVersion = "3.13"
|
|
70
|
+
venvPath = "."
|
|
71
|
+
venv = ".venv"
|
|
69
72
|
typeCheckingMode = "standard"
|
|
70
73
|
reportUnusedExpression = false
|
|
74
|
+
|
|
75
|
+
[tool.pytest.ini_options]
|
|
76
|
+
markers = [
|
|
77
|
+
"experimental: marks tests as experimental/loopy (deselect with '-m \"not experimental\"')",
|
|
78
|
+
]
|
|
79
|
+
addopts = "-m 'not experimental'"
|
|
80
|
+
filterwarnings = [
|
|
81
|
+
"ignore:Type google\\._upb\\._message\\.MessageMapContainer uses PyType_Spec:DeprecationWarning",
|
|
82
|
+
"ignore:Type google\\._upb\\._message\\.ScalarMapContainer uses PyType_Spec:DeprecationWarning",
|
|
83
|
+
]
|
|
@@ -6,32 +6,28 @@ Main configuration class for PyRel (YAML-based).
|
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
|
|
8
8
|
from abc import ABC
|
|
9
|
-
from typing import Any, TypeVar, overload, Literal, TYPE_CHECKING
|
|
9
|
+
from typing import Any, TypeVar, overload, Literal, TYPE_CHECKING, cast
|
|
10
10
|
from pydantic import Field, model_validator
|
|
11
11
|
from pydantic_settings import SettingsConfigDict
|
|
12
|
-
|
|
13
|
-
try:
|
|
14
|
-
from confocal import BaseConfig
|
|
15
|
-
except ImportError:
|
|
16
|
-
# Confocal not yet published to PyPI - use pydantic_settings as fallback
|
|
17
|
-
# Config system not actively used yet, this is just to prevent import errors
|
|
18
|
-
from pydantic_settings import BaseSettings as BaseConfig # type: ignore[misc, assignment]
|
|
12
|
+
from confocal import BaseConfig
|
|
19
13
|
|
|
20
14
|
if TYPE_CHECKING:
|
|
21
15
|
import snowflake.snowpark
|
|
22
|
-
import duckdb
|
|
16
|
+
import duckdb # type: ignore[import-not-found]
|
|
17
|
+
import requests
|
|
23
18
|
|
|
24
|
-
from .connections import ConnectionConfig, BaseConnection, SnowflakeConnection, DuckDBConnection
|
|
19
|
+
from .connections import ConnectionConfig, BaseConnection, SnowflakeConnection, DuckDBConnection, LocalConnection
|
|
25
20
|
from .config_fields import EngineConfig, DataConfig, CompilerConfig, ModelConfig, ReasonerConfig, DebugConfig
|
|
26
21
|
from .external.dbt_converter import convert_dbt_to_rai
|
|
27
22
|
from .external.snowflake_converter import convert_snowflake_to_rai
|
|
28
|
-
from .external.
|
|
23
|
+
from .external.raiconfig_converter import convert_raiconfig_to_rai
|
|
24
|
+
from .external.utils import find_dbt_profiles_file, find_snowflake_config_file, find_raiconfig_toml_file
|
|
29
25
|
|
|
30
26
|
# TypeVar for generic connection retrieval
|
|
31
27
|
T = TypeVar('T', bound=BaseConnection)
|
|
32
28
|
|
|
33
29
|
|
|
34
|
-
class _Config(BaseConfig, ABC):
|
|
30
|
+
class _Config(BaseConfig, ABC):
|
|
35
31
|
"""Base configuration class with common fields and methods."""
|
|
36
32
|
|
|
37
33
|
active_profile: str | None = Field(
|
|
@@ -171,6 +167,8 @@ class _Config(BaseConfig, ABC): # type: ignore for now until we publish confocal
|
|
|
171
167
|
connection_class = "SnowflakeConnection"
|
|
172
168
|
elif isinstance(connection, DuckDBConnection):
|
|
173
169
|
connection_class = "DuckDBConnection"
|
|
170
|
+
elif isinstance(connection, LocalConnection):
|
|
171
|
+
connection_class = "LocalConnection"
|
|
174
172
|
else:
|
|
175
173
|
connection_class = actual_type
|
|
176
174
|
|
|
@@ -179,18 +177,15 @@ class _Config(BaseConfig, ABC): # type: ignore for now until we publish confocal
|
|
|
179
177
|
f"Got: {connection_class} (actual: {actual_type})"
|
|
180
178
|
)
|
|
181
179
|
|
|
182
|
-
return connection
|
|
183
|
-
|
|
184
|
-
@overload
|
|
185
|
-
def get_session(self, connection_type: type[SnowflakeConnection]) -> snowflake.snowpark.Session: ...
|
|
180
|
+
return cast(T, connection)
|
|
186
181
|
|
|
187
182
|
@overload
|
|
188
|
-
def get_session(self
|
|
183
|
+
def get_session(self) -> snowflake.snowpark.Session | duckdb.DuckDBPyConnection | requests.Session: ...
|
|
189
184
|
|
|
190
185
|
@overload
|
|
191
|
-
def get_session(self, connection_type:
|
|
186
|
+
def get_session(self, connection_type: type[SnowflakeConnection] | type[DuckDBConnection] | type[LocalConnection]) -> snowflake.snowpark.Session | duckdb.DuckDBPyConnection | requests.Session: ...
|
|
192
187
|
|
|
193
|
-
def get_session(self, connection_type: type[SnowflakeConnection] | type[DuckDBConnection] | None = None) -> snowflake.snowpark.Session | duckdb.DuckDBPyConnection:
|
|
188
|
+
def get_session(self, connection_type: type[SnowflakeConnection] | type[DuckDBConnection] | type[LocalConnection] | None = None) -> snowflake.snowpark.Session | duckdb.DuckDBPyConnection | requests.Session:
|
|
194
189
|
if connection_type is None:
|
|
195
190
|
connection = self.get_default_connection()
|
|
196
191
|
return connection.get_session()
|
|
@@ -250,6 +245,35 @@ class ConfigFromDBT(_Config):
|
|
|
250
245
|
return convert_dbt_to_rai(data)
|
|
251
246
|
|
|
252
247
|
|
|
248
|
+
class ConfigFromRAIConfigToml(_Config):
|
|
249
|
+
"""Config loaded from deprecated raiconfig.toml (for backwards compatibility)"""
|
|
250
|
+
|
|
251
|
+
source: Literal["raiconfig_toml"] = Field(default="raiconfig_toml", exclude=True)
|
|
252
|
+
|
|
253
|
+
model_config = SettingsConfigDict(
|
|
254
|
+
toml_file=find_raiconfig_toml_file(),
|
|
255
|
+
extra="ignore",
|
|
256
|
+
nested_model_default_partial_update=True,
|
|
257
|
+
)
|
|
258
|
+
|
|
259
|
+
@model_validator(mode='before')
|
|
260
|
+
@classmethod
|
|
261
|
+
def convert_raiconfig_structure(cls, data: Any):
|
|
262
|
+
"""Convert deprecated raiconfig.toml format to new format."""
|
|
263
|
+
if not isinstance(data, dict):
|
|
264
|
+
return data
|
|
265
|
+
|
|
266
|
+
# Add deprecation warning
|
|
267
|
+
import warnings
|
|
268
|
+
warnings.warn(
|
|
269
|
+
"raiconfig.toml is deprecated. Please migrate to raiconfig.yaml.",
|
|
270
|
+
DeprecationWarning,
|
|
271
|
+
stacklevel=2
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
return convert_raiconfig_to_rai(data)
|
|
275
|
+
|
|
276
|
+
|
|
253
277
|
# =============================================================================
|
|
254
278
|
# Config Factory - Tries each source in order
|
|
255
279
|
# =============================================================================
|
|
@@ -258,11 +282,13 @@ def Config(**data) -> _Config:
|
|
|
258
282
|
"""
|
|
259
283
|
Create Config by trying multiple sources in priority order:
|
|
260
284
|
1. RAIConfig (raiconfig.yaml) - or direct data if provided
|
|
261
|
-
2.
|
|
262
|
-
3.
|
|
285
|
+
2. ConfigFromRAIConfigToml (raiconfig.toml - DEPRECATED) - only if no data provided
|
|
286
|
+
3. ConfigFromSnowflake (config.toml) - only if no data provided
|
|
287
|
+
4. ConfigFromDBT (profiles.yml) - only if no data provided
|
|
263
288
|
"""
|
|
264
289
|
sources = [
|
|
265
290
|
("RAIConfig (raiconfig.yaml)", RAIConfig, True), # passes **data
|
|
291
|
+
("ConfigFromRAIConfigToml (raiconfig.toml - DEPRECATED)", ConfigFromRAIConfigToml, False),
|
|
266
292
|
("ConfigFromSnowflake (config.toml)", ConfigFromSnowflake, False),
|
|
267
293
|
("ConfigFromDBT (profiles.yml)", ConfigFromDBT, False),
|
|
268
294
|
]
|
{relationalai-1.0.0a3 → relationalai-1.0.0a5}/src/relationalai/config/connections/__init__.py
RENAMED
|
@@ -5,8 +5,9 @@ This module exports:
|
|
|
5
5
|
- BaseConnection: Base class for all connections
|
|
6
6
|
- Snowflake authenticators: UsernamePasswordAuth, UsernamePasswordMFAAuth, etc.
|
|
7
7
|
- DuckDBConnection: DuckDB connection
|
|
8
|
+
- LocalConnection: Local RAI server connection
|
|
8
9
|
- SnowflakeConnection: Discriminated union of Snowflake authenticators
|
|
9
|
-
- ConnectionConfig: Top-level discriminated union (Snowflake | DuckDB)
|
|
10
|
+
- ConnectionConfig: Top-level discriminated union (Snowflake | DuckDB | Local)
|
|
10
11
|
"""
|
|
11
12
|
|
|
12
13
|
from __future__ import annotations
|
|
@@ -26,9 +27,10 @@ from .snowflake import (
|
|
|
26
27
|
SnowflakeAuthenticator,
|
|
27
28
|
)
|
|
28
29
|
from .duckdb import DuckDBConnection
|
|
30
|
+
from .local import LocalConnection
|
|
29
31
|
|
|
30
32
|
ConnectionConfig = Annotated[
|
|
31
|
-
Union[SnowflakeAuthenticator, DuckDBConnection],
|
|
33
|
+
Union[SnowflakeAuthenticator, DuckDBConnection, LocalConnection],
|
|
32
34
|
Field(discriminator="type")
|
|
33
35
|
]
|
|
34
36
|
|
|
@@ -42,5 +44,6 @@ __all__ = [
|
|
|
42
44
|
"ProgrammaticAccessTokenAuth",
|
|
43
45
|
"SnowflakeConnection",
|
|
44
46
|
"DuckDBConnection",
|
|
47
|
+
"LocalConnection",
|
|
45
48
|
"ConnectionConfig",
|
|
46
49
|
]
|
|
@@ -4,7 +4,7 @@ from typing import Literal, Any, TYPE_CHECKING
|
|
|
4
4
|
from pydantic import Field
|
|
5
5
|
|
|
6
6
|
if TYPE_CHECKING:
|
|
7
|
-
import duckdb
|
|
7
|
+
import duckdb # type: ignore[import-not-found]
|
|
8
8
|
|
|
9
9
|
from .base import BaseConnection
|
|
10
10
|
|
|
@@ -17,7 +17,7 @@ class DuckDBConnection(BaseConnection):
|
|
|
17
17
|
config: dict[str, Any] | None = Field(None, description="Additional DuckDB configuration options")
|
|
18
18
|
|
|
19
19
|
def get_session(self) -> duckdb.DuckDBPyConnection:
|
|
20
|
-
import duckdb
|
|
20
|
+
import duckdb # type: ignore[import-not-found]
|
|
21
21
|
|
|
22
22
|
if self._cached_session is None:
|
|
23
23
|
self._cached_session = duckdb.connect(
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""Local server connection configuration."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Literal, TYPE_CHECKING
|
|
6
|
+
from pydantic import Field
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
import requests
|
|
10
|
+
|
|
11
|
+
from .base import BaseConnection
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class LocalConnection(BaseConnection):
|
|
15
|
+
"""Connection to a local RAI server."""
|
|
16
|
+
|
|
17
|
+
type: Literal["local"] = "local"
|
|
18
|
+
|
|
19
|
+
host: str = Field(default="localhost", description="Local server host")
|
|
20
|
+
port: int = Field(default=8010, description="Local server port")
|
|
21
|
+
engine: str | None = Field(default=None, description="Engine name")
|
|
22
|
+
|
|
23
|
+
def get_session(self) -> requests.Session:
|
|
24
|
+
"""Return a requests.Session instance for the local server."""
|
|
25
|
+
# Should we migrate to using LocalClient to PyRel V1?
|
|
26
|
+
from v0.relationalai.clients.local import LocalClient # type: ignore[import-not-found]
|
|
27
|
+
|
|
28
|
+
if self._cached_session is None:
|
|
29
|
+
self._cached_session = LocalClient(host=self.host, port=self.port).http_session
|
|
30
|
+
|
|
31
|
+
return self._cached_session
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Converter for deprecated raiconfig.toml to RAI Config format.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
from .raiconfig_models import RAIConfigFile, RAIConfigSnowflakeProfile, RAIConfigLocalProfile
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# Central field mapping configuration
|
|
13
|
+
# Format: "old_field_name": ("new_section", "new_field_name")
|
|
14
|
+
# where section=None means top-level field
|
|
15
|
+
FIELD_MAPPINGS = {
|
|
16
|
+
# Top-level fields (stay at top level)
|
|
17
|
+
"use_graph_index": (None, "use_graph_index"),
|
|
18
|
+
"use_direct_access": (None, "use_direct_access"),
|
|
19
|
+
"enable_otel_handler": (None, "enable_otel_handler"),
|
|
20
|
+
"use_package_manager": (None, "use_package_manager"),
|
|
21
|
+
"reuse_model": (None, "reuse_model"),
|
|
22
|
+
"skip_invalid_data": (None, "skip_invalid_data"),
|
|
23
|
+
|
|
24
|
+
# Engine fields
|
|
25
|
+
"engine": ("engine", "name"),
|
|
26
|
+
"engine_size": ("engine", "size"),
|
|
27
|
+
"auto_suspend_mins": ("engine", "auto_suspend_mins"),
|
|
28
|
+
|
|
29
|
+
# Data fields
|
|
30
|
+
"wait_for_stream_sync": ("data", "wait_for_stream_sync"),
|
|
31
|
+
"ensure_change_tracking": ("data", "ensure_change_tracking"),
|
|
32
|
+
"data_freshness_mins": ("data", "data_freshness_mins"),
|
|
33
|
+
"query_timeout_mins": ("data", "query_timeout_mins"),
|
|
34
|
+
"download_url_type": ("data", "download_url_type"),
|
|
35
|
+
|
|
36
|
+
# Debug fields
|
|
37
|
+
"debug": ("debug", "enabled"), # Note: maps to "enabled"!
|
|
38
|
+
"show_full_traces": ("debug", "show_full_traces"),
|
|
39
|
+
|
|
40
|
+
# Compiler fields
|
|
41
|
+
"use_monotype_operators": ("compiler", "use_monotype_operators"),
|
|
42
|
+
"show_corerel_errors": ("compiler", "show_corerel_errors"),
|
|
43
|
+
"dry_run": ("compiler", "dry_run"),
|
|
44
|
+
"inspect_df": ("compiler", "inspect_df"),
|
|
45
|
+
"use_value_types": ("compiler", "use_value_types"),
|
|
46
|
+
"debug_hidden_keys": ("compiler", "debug_hidden_keys"),
|
|
47
|
+
"wide_outputs": ("compiler", "wide_outputs"),
|
|
48
|
+
"strict": ("compiler", "strict"),
|
|
49
|
+
"use_inlined_intermediates": ("compiler", "use_inlined_intermediates"),
|
|
50
|
+
"inline_value_maps": ("compiler", "inline_value_maps"),
|
|
51
|
+
"inline_entity_maps": ("compiler", "inline_entity_maps"),
|
|
52
|
+
|
|
53
|
+
# Model fields
|
|
54
|
+
"keep": ("model", "keep"),
|
|
55
|
+
"isolated": ("model", "isolated"),
|
|
56
|
+
"nowait_durable": ("model", "nowait_durable"),
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
# Connection fields (stay in connection dict)
|
|
60
|
+
CONNECTION_FIELDS = {
|
|
61
|
+
"account", "warehouse", "user", "password", "role", "database", "schema",
|
|
62
|
+
"authenticator", "rai_app_name", "passcode",
|
|
63
|
+
"private_key_path", "private_key_passphrase", "token",
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
# Old -> New field name mappings for connection fields
|
|
67
|
+
# Old field names from deprecated raiconfig.toml are mapped to new names
|
|
68
|
+
# These are accessed via model_extra in RAIConfigSnowflakeProfile.convert()
|
|
69
|
+
CONNECTION_FIELD_MAPPINGS = {
|
|
70
|
+
"private_key_file": "private_key_path",
|
|
71
|
+
"private_key_file_pwd": "private_key_passphrase",
|
|
72
|
+
"token_file_path": "token",
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def map_fields_to_nested_structure(merged: dict[str, Any]) -> dict[str, Any]:
|
|
77
|
+
"""
|
|
78
|
+
Map flat config fields to nested structure using FIELD_MAPPINGS.
|
|
79
|
+
|
|
80
|
+
This replaces all the manual if statements!
|
|
81
|
+
|
|
82
|
+
Args:
|
|
83
|
+
merged: Flat dictionary with all config fields
|
|
84
|
+
|
|
85
|
+
Returns:
|
|
86
|
+
Nested dictionary structured according to new config format
|
|
87
|
+
"""
|
|
88
|
+
result = {}
|
|
89
|
+
nested_sections = {} # Collect fields for each section
|
|
90
|
+
|
|
91
|
+
for old_field, (section, new_field) in FIELD_MAPPINGS.items():
|
|
92
|
+
if old_field not in merged or merged[old_field] is None:
|
|
93
|
+
continue # Skip missing or None values
|
|
94
|
+
|
|
95
|
+
value = merged[old_field]
|
|
96
|
+
|
|
97
|
+
if section is None:
|
|
98
|
+
# Top-level field
|
|
99
|
+
result[new_field] = value
|
|
100
|
+
else:
|
|
101
|
+
# Nested section field
|
|
102
|
+
if section not in nested_sections:
|
|
103
|
+
nested_sections[section] = {}
|
|
104
|
+
nested_sections[section][new_field] = value
|
|
105
|
+
|
|
106
|
+
# Add nested sections to result
|
|
107
|
+
for section, fields in nested_sections.items():
|
|
108
|
+
if fields: # Only add non-empty sections
|
|
109
|
+
result[section] = fields
|
|
110
|
+
|
|
111
|
+
return result
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def merge_profile_with_toplevel(
|
|
115
|
+
config_file: RAIConfigFile,
|
|
116
|
+
profile: RAIConfigSnowflakeProfile | RAIConfigLocalProfile
|
|
117
|
+
) -> dict[str, Any]:
|
|
118
|
+
"""
|
|
119
|
+
Merge profile over top-level config (profile takes precedence).
|
|
120
|
+
|
|
121
|
+
This matches the v0 behavior where profile-specific settings override
|
|
122
|
+
global defaults.
|
|
123
|
+
"""
|
|
124
|
+
# Start with top-level config
|
|
125
|
+
merged = config_file.model_dump(
|
|
126
|
+
exclude={"profile", "active_profile"},
|
|
127
|
+
exclude_none=True
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
# Overlay profile fields (they take precedence)
|
|
131
|
+
profile_dict = profile.model_dump(exclude_none=True)
|
|
132
|
+
|
|
133
|
+
# Merge profile into config (profile overrides top-level)
|
|
134
|
+
merged.update(profile_dict)
|
|
135
|
+
|
|
136
|
+
return merged
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def convert_raiconfig_to_rai(
|
|
140
|
+
rai_config: dict[str, Any],
|
|
141
|
+
profile_name: str | None = None
|
|
142
|
+
) -> dict[str, Any]:
|
|
143
|
+
"""
|
|
144
|
+
Convert deprecated raiconfig.toml to new RAI Config format.
|
|
145
|
+
|
|
146
|
+
Flow:
|
|
147
|
+
1. Validate with RAIConfigFile model
|
|
148
|
+
2. Select active profile (parameter > active_profile > single profile)
|
|
149
|
+
3. Merge profile over top-level config (profile takes precedence)
|
|
150
|
+
4. Extract connection from profile
|
|
151
|
+
5. Map flat fields to nested structure
|
|
152
|
+
|
|
153
|
+
Args:
|
|
154
|
+
rai_config: Parsed TOML config dict
|
|
155
|
+
profile_name: Profile name to use (overrides active_profile)
|
|
156
|
+
|
|
157
|
+
Returns:
|
|
158
|
+
Dict in new config format ready for RAIConfig model
|
|
159
|
+
"""
|
|
160
|
+
config_file = RAIConfigFile(**rai_config)
|
|
161
|
+
|
|
162
|
+
# Profile selection logic
|
|
163
|
+
if not profile_name:
|
|
164
|
+
profile_name = config_file.active_profile
|
|
165
|
+
|
|
166
|
+
# Supported platforms
|
|
167
|
+
supported_platforms = {"snowflake", "local"}
|
|
168
|
+
|
|
169
|
+
# Filter to supported profiles (Snowflake and Local)
|
|
170
|
+
supported_profiles = {
|
|
171
|
+
name: data for name, data in config_file.profile.items()
|
|
172
|
+
if data.get("platform", "snowflake") in supported_platforms
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if not profile_name and len(supported_profiles) == 1:
|
|
176
|
+
# Auto-select single supported profile
|
|
177
|
+
profile_name = next(iter(supported_profiles.keys()))
|
|
178
|
+
|
|
179
|
+
if not profile_name:
|
|
180
|
+
if not supported_profiles:
|
|
181
|
+
raise ValueError(
|
|
182
|
+
"No supported profiles found in raiconfig.toml. "
|
|
183
|
+
"Supported platforms: snowflake, local. "
|
|
184
|
+
"Please add a supported profile or migrate to raiconfig.yaml."
|
|
185
|
+
)
|
|
186
|
+
raise ValueError(
|
|
187
|
+
f"No profile specified. Either set 'active_profile' in config, "
|
|
188
|
+
f"provide profile_name parameter, or ensure only one supported profile exists. "
|
|
189
|
+
f"Available profiles: {list(supported_profiles.keys())}"
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
if profile_name not in config_file.profile:
|
|
193
|
+
available = list(config_file.profile.keys())
|
|
194
|
+
raise ValueError(
|
|
195
|
+
f"Profile '{profile_name}' not found. Available profiles: {available}"
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
# Get profile data
|
|
199
|
+
profile_data = config_file.profile[profile_name]
|
|
200
|
+
platform = profile_data.get("platform", "snowflake")
|
|
201
|
+
|
|
202
|
+
# Validate and convert based on platform
|
|
203
|
+
if platform == "local":
|
|
204
|
+
profile = RAIConfigLocalProfile(**profile_data)
|
|
205
|
+
connection = profile.convert()
|
|
206
|
+
connection_name = "local"
|
|
207
|
+
elif platform == "snowflake":
|
|
208
|
+
profile = RAIConfigSnowflakeProfile(**profile_data)
|
|
209
|
+
connection = profile.convert()
|
|
210
|
+
connection_name = "snowflake"
|
|
211
|
+
else:
|
|
212
|
+
raise ValueError(
|
|
213
|
+
f"Profile '{profile_name}' uses platform '{platform}'. "
|
|
214
|
+
f"Supported platforms: snowflake, local. "
|
|
215
|
+
f"Please use a supported profile or migrate to raiconfig.yaml."
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
# Merge profile with top-level config
|
|
219
|
+
merged = merge_profile_with_toplevel(config_file, profile)
|
|
220
|
+
|
|
221
|
+
# Build base result
|
|
222
|
+
result = {
|
|
223
|
+
"connections": {connection_name: connection},
|
|
224
|
+
"default_connection": connection_name,
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
# Map all config fields automatically using FIELD_MAPPINGS
|
|
228
|
+
mapped_fields = map_fields_to_nested_structure(merged)
|
|
229
|
+
result.update(mapped_fields)
|
|
230
|
+
|
|
231
|
+
# Handle reasoner separately (nested dict structure)
|
|
232
|
+
if "reasoner" in merged and merged["reasoner"]:
|
|
233
|
+
result["reasoner"] = merged["reasoner"]
|
|
234
|
+
|
|
235
|
+
return result
|