relationalai 0.13.0.dev0__py3-none-any.whl → 0.13.1__py3-none-any.whl
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.
- frontend/debugger/dist/.gitignore +2 -0
- frontend/debugger/dist/assets/favicon-Dy0ZgA6N.png +0 -0
- frontend/debugger/dist/assets/index-Cssla-O7.js +208 -0
- frontend/debugger/dist/assets/index-DlHsYx1V.css +9 -0
- frontend/debugger/dist/index.html +17 -0
- relationalai/__init__.py +256 -1
- relationalai/clients/__init__.py +18 -0
- relationalai/clients/client.py +912 -0
- relationalai/clients/config.py +673 -0
- relationalai/clients/direct_access_client.py +118 -0
- relationalai/clients/exec_txn_poller.py +91 -0
- relationalai/clients/hash_util.py +31 -0
- relationalai/clients/local.py +571 -0
- relationalai/clients/profile_polling.py +73 -0
- relationalai/clients/resources/__init__.py +8 -0
- relationalai/clients/resources/azure/azure.py +477 -0
- relationalai/clients/resources/snowflake/__init__.py +20 -0
- relationalai/clients/resources/snowflake/cli_resources.py +87 -0
- relationalai/clients/resources/snowflake/direct_access_resources.py +694 -0
- relationalai/clients/resources/snowflake/engine_state_handlers.py +309 -0
- relationalai/clients/resources/snowflake/error_handlers.py +199 -0
- relationalai/clients/resources/snowflake/export_procedure.py.jinja +249 -0
- relationalai/clients/resources/snowflake/resources_factory.py +99 -0
- relationalai/clients/resources/snowflake/snowflake.py +3190 -0
- relationalai/clients/resources/snowflake/use_index_poller.py +1019 -0
- relationalai/clients/resources/snowflake/use_index_resources.py +188 -0
- relationalai/clients/resources/snowflake/util.py +387 -0
- relationalai/clients/result_helpers.py +420 -0
- relationalai/clients/types.py +113 -0
- relationalai/clients/util.py +356 -0
- relationalai/debugging.py +389 -0
- relationalai/dsl.py +1749 -0
- relationalai/early_access/builder/__init__.py +30 -0
- relationalai/early_access/builder/builder/__init__.py +35 -0
- relationalai/early_access/builder/snowflake/__init__.py +12 -0
- relationalai/early_access/builder/std/__init__.py +25 -0
- relationalai/early_access/builder/std/decimals/__init__.py +12 -0
- relationalai/early_access/builder/std/integers/__init__.py +12 -0
- relationalai/early_access/builder/std/math/__init__.py +12 -0
- relationalai/early_access/builder/std/strings/__init__.py +14 -0
- relationalai/early_access/devtools/__init__.py +12 -0
- relationalai/early_access/devtools/benchmark_lqp/__init__.py +12 -0
- relationalai/early_access/devtools/extract_lqp/__init__.py +12 -0
- relationalai/early_access/dsl/adapters/orm/adapter_qb.py +427 -0
- relationalai/early_access/dsl/adapters/orm/parser.py +636 -0
- relationalai/early_access/dsl/adapters/owl/adapter.py +176 -0
- relationalai/early_access/dsl/adapters/owl/parser.py +160 -0
- relationalai/early_access/dsl/bindings/common.py +402 -0
- relationalai/early_access/dsl/bindings/csv.py +170 -0
- relationalai/early_access/dsl/bindings/legacy/binding_models.py +143 -0
- relationalai/early_access/dsl/bindings/snowflake.py +64 -0
- relationalai/early_access/dsl/codegen/binder.py +411 -0
- relationalai/early_access/dsl/codegen/common.py +79 -0
- relationalai/early_access/dsl/codegen/helpers.py +23 -0
- relationalai/early_access/dsl/codegen/relations.py +700 -0
- relationalai/early_access/dsl/codegen/weaver.py +417 -0
- relationalai/early_access/dsl/core/builders/__init__.py +47 -0
- relationalai/early_access/dsl/core/builders/logic.py +19 -0
- relationalai/early_access/dsl/core/builders/scalar_constraint.py +11 -0
- relationalai/early_access/dsl/core/constraints/predicate/atomic.py +455 -0
- relationalai/early_access/dsl/core/constraints/predicate/universal.py +73 -0
- relationalai/early_access/dsl/core/constraints/scalar.py +310 -0
- relationalai/early_access/dsl/core/context.py +13 -0
- relationalai/early_access/dsl/core/cset.py +132 -0
- relationalai/early_access/dsl/core/exprs/__init__.py +116 -0
- relationalai/early_access/dsl/core/exprs/relational.py +18 -0
- relationalai/early_access/dsl/core/exprs/scalar.py +412 -0
- relationalai/early_access/dsl/core/instances.py +44 -0
- relationalai/early_access/dsl/core/logic/__init__.py +193 -0
- relationalai/early_access/dsl/core/logic/aggregation.py +98 -0
- relationalai/early_access/dsl/core/logic/exists.py +223 -0
- relationalai/early_access/dsl/core/logic/helper.py +163 -0
- relationalai/early_access/dsl/core/namespaces.py +32 -0
- relationalai/early_access/dsl/core/relations.py +276 -0
- relationalai/early_access/dsl/core/rules.py +112 -0
- relationalai/early_access/dsl/core/std/__init__.py +45 -0
- relationalai/early_access/dsl/core/temporal/recall.py +6 -0
- relationalai/early_access/dsl/core/types/__init__.py +270 -0
- relationalai/early_access/dsl/core/types/concepts.py +128 -0
- relationalai/early_access/dsl/core/types/constrained/__init__.py +267 -0
- relationalai/early_access/dsl/core/types/constrained/nominal.py +143 -0
- relationalai/early_access/dsl/core/types/constrained/subtype.py +124 -0
- relationalai/early_access/dsl/core/types/standard.py +92 -0
- relationalai/early_access/dsl/core/types/unconstrained.py +50 -0
- relationalai/early_access/dsl/core/types/variables.py +203 -0
- relationalai/early_access/dsl/ir/compiler.py +318 -0
- relationalai/early_access/dsl/ir/executor.py +260 -0
- relationalai/early_access/dsl/ontologies/constraints.py +88 -0
- relationalai/early_access/dsl/ontologies/export.py +30 -0
- relationalai/early_access/dsl/ontologies/models.py +453 -0
- relationalai/early_access/dsl/ontologies/python_printer.py +303 -0
- relationalai/early_access/dsl/ontologies/readings.py +60 -0
- relationalai/early_access/dsl/ontologies/relationships.py +322 -0
- relationalai/early_access/dsl/ontologies/roles.py +87 -0
- relationalai/early_access/dsl/ontologies/subtyping.py +55 -0
- relationalai/early_access/dsl/orm/constraints.py +438 -0
- relationalai/early_access/dsl/orm/measures/dimensions.py +200 -0
- relationalai/early_access/dsl/orm/measures/initializer.py +16 -0
- relationalai/early_access/dsl/orm/measures/measure_rules.py +275 -0
- relationalai/early_access/dsl/orm/measures/measures.py +299 -0
- relationalai/early_access/dsl/orm/measures/role_exprs.py +268 -0
- relationalai/early_access/dsl/orm/models.py +256 -0
- relationalai/early_access/dsl/orm/object_oriented_printer.py +344 -0
- relationalai/early_access/dsl/orm/printer.py +469 -0
- relationalai/early_access/dsl/orm/reasoners.py +480 -0
- relationalai/early_access/dsl/orm/relations.py +19 -0
- relationalai/early_access/dsl/orm/relationships.py +251 -0
- relationalai/early_access/dsl/orm/types.py +42 -0
- relationalai/early_access/dsl/orm/utils.py +79 -0
- relationalai/early_access/dsl/orm/verb.py +204 -0
- relationalai/early_access/dsl/physical_metadata/tables.py +133 -0
- relationalai/early_access/dsl/relations.py +170 -0
- relationalai/early_access/dsl/rulesets.py +69 -0
- relationalai/early_access/dsl/schemas/__init__.py +450 -0
- relationalai/early_access/dsl/schemas/builder.py +48 -0
- relationalai/early_access/dsl/schemas/comp_names.py +51 -0
- relationalai/early_access/dsl/schemas/components.py +203 -0
- relationalai/early_access/dsl/schemas/contexts.py +156 -0
- relationalai/early_access/dsl/schemas/exprs.py +89 -0
- relationalai/early_access/dsl/schemas/fragments.py +464 -0
- relationalai/early_access/dsl/serialization.py +79 -0
- relationalai/early_access/dsl/serialize/exporter.py +163 -0
- relationalai/early_access/dsl/snow/api.py +105 -0
- relationalai/early_access/dsl/snow/common.py +76 -0
- relationalai/early_access/dsl/state_mgmt/__init__.py +129 -0
- relationalai/early_access/dsl/state_mgmt/state_charts.py +125 -0
- relationalai/early_access/dsl/state_mgmt/transitions.py +130 -0
- relationalai/early_access/dsl/types/__init__.py +40 -0
- relationalai/early_access/dsl/types/concepts.py +12 -0
- relationalai/early_access/dsl/types/entities.py +135 -0
- relationalai/early_access/dsl/types/values.py +17 -0
- relationalai/early_access/dsl/utils.py +102 -0
- relationalai/early_access/graphs/__init__.py +13 -0
- relationalai/early_access/lqp/__init__.py +12 -0
- relationalai/early_access/lqp/compiler/__init__.py +12 -0
- relationalai/early_access/lqp/constructors/__init__.py +18 -0
- relationalai/early_access/lqp/executor/__init__.py +12 -0
- relationalai/early_access/lqp/ir/__init__.py +12 -0
- relationalai/early_access/lqp/passes/__init__.py +12 -0
- relationalai/early_access/lqp/pragmas/__init__.py +12 -0
- relationalai/early_access/lqp/primitives/__init__.py +12 -0
- relationalai/early_access/lqp/types/__init__.py +12 -0
- relationalai/early_access/lqp/utils/__init__.py +12 -0
- relationalai/early_access/lqp/validators/__init__.py +12 -0
- relationalai/early_access/metamodel/__init__.py +58 -0
- relationalai/early_access/metamodel/builtins/__init__.py +12 -0
- relationalai/early_access/metamodel/compiler/__init__.py +12 -0
- relationalai/early_access/metamodel/dependency/__init__.py +12 -0
- relationalai/early_access/metamodel/factory/__init__.py +17 -0
- relationalai/early_access/metamodel/helpers/__init__.py +12 -0
- relationalai/early_access/metamodel/ir/__init__.py +14 -0
- relationalai/early_access/metamodel/rewrite/__init__.py +7 -0
- relationalai/early_access/metamodel/typer/__init__.py +3 -0
- relationalai/early_access/metamodel/typer/typer/__init__.py +12 -0
- relationalai/early_access/metamodel/types/__init__.py +15 -0
- relationalai/early_access/metamodel/util/__init__.py +15 -0
- relationalai/early_access/metamodel/visitor/__init__.py +12 -0
- relationalai/early_access/rel/__init__.py +12 -0
- relationalai/early_access/rel/executor/__init__.py +12 -0
- relationalai/early_access/rel/rel_utils/__init__.py +12 -0
- relationalai/early_access/rel/rewrite/__init__.py +7 -0
- relationalai/early_access/solvers/__init__.py +19 -0
- relationalai/early_access/sql/__init__.py +11 -0
- relationalai/early_access/sql/executor/__init__.py +3 -0
- relationalai/early_access/sql/rewrite/__init__.py +3 -0
- relationalai/early_access/tests/logging/__init__.py +12 -0
- relationalai/early_access/tests/test_snapshot_base/__init__.py +12 -0
- relationalai/early_access/tests/utils/__init__.py +12 -0
- relationalai/environments/__init__.py +35 -0
- relationalai/environments/base.py +381 -0
- relationalai/environments/colab.py +14 -0
- relationalai/environments/generic.py +71 -0
- relationalai/environments/ipython.py +68 -0
- relationalai/environments/jupyter.py +9 -0
- relationalai/environments/snowbook.py +169 -0
- relationalai/errors.py +2496 -0
- relationalai/experimental/SF.py +38 -0
- relationalai/experimental/inspect.py +47 -0
- relationalai/experimental/pathfinder/__init__.py +158 -0
- relationalai/experimental/pathfinder/api.py +160 -0
- relationalai/experimental/pathfinder/automaton.py +584 -0
- relationalai/experimental/pathfinder/bridge.py +226 -0
- relationalai/experimental/pathfinder/compiler.py +416 -0
- relationalai/experimental/pathfinder/datalog.py +214 -0
- relationalai/experimental/pathfinder/diagnostics.py +56 -0
- relationalai/experimental/pathfinder/filter.py +236 -0
- relationalai/experimental/pathfinder/glushkov.py +439 -0
- relationalai/experimental/pathfinder/options.py +265 -0
- relationalai/experimental/pathfinder/pathfinder-v0.7.0.rel +1951 -0
- relationalai/experimental/pathfinder/rpq.py +344 -0
- relationalai/experimental/pathfinder/transition.py +200 -0
- relationalai/experimental/pathfinder/utils.py +26 -0
- relationalai/experimental/paths/README.md +107 -0
- relationalai/experimental/paths/api.py +143 -0
- relationalai/experimental/paths/benchmarks/grid_graph.py +37 -0
- relationalai/experimental/paths/code_organization.md +2 -0
- relationalai/experimental/paths/examples/Movies.ipynb +16328 -0
- relationalai/experimental/paths/examples/basic_example.py +40 -0
- relationalai/experimental/paths/examples/minimal_engine_warmup.py +3 -0
- relationalai/experimental/paths/examples/movie_example.py +77 -0
- relationalai/experimental/paths/examples/movies_data/actedin.csv +193 -0
- relationalai/experimental/paths/examples/movies_data/directed.csv +45 -0
- relationalai/experimental/paths/examples/movies_data/follows.csv +7 -0
- relationalai/experimental/paths/examples/movies_data/movies.csv +39 -0
- relationalai/experimental/paths/examples/movies_data/person.csv +134 -0
- relationalai/experimental/paths/examples/movies_data/produced.csv +16 -0
- relationalai/experimental/paths/examples/movies_data/ratings.csv +10 -0
- relationalai/experimental/paths/examples/movies_data/wrote.csv +11 -0
- relationalai/experimental/paths/examples/paths_benchmark.py +115 -0
- relationalai/experimental/paths/examples/paths_example.py +116 -0
- relationalai/experimental/paths/examples/pattern_to_automaton.py +28 -0
- relationalai/experimental/paths/find_paths_via_automaton.py +85 -0
- relationalai/experimental/paths/graph.py +185 -0
- relationalai/experimental/paths/path_algorithms/find_paths.py +280 -0
- relationalai/experimental/paths/path_algorithms/one_sided_ball_repetition.py +26 -0
- relationalai/experimental/paths/path_algorithms/one_sided_ball_upto.py +111 -0
- relationalai/experimental/paths/path_algorithms/single.py +59 -0
- relationalai/experimental/paths/path_algorithms/two_sided_balls_repetition.py +39 -0
- relationalai/experimental/paths/path_algorithms/two_sided_balls_upto.py +103 -0
- relationalai/experimental/paths/path_algorithms/usp-old.py +130 -0
- relationalai/experimental/paths/path_algorithms/usp-tuple.py +183 -0
- relationalai/experimental/paths/path_algorithms/usp.py +150 -0
- relationalai/experimental/paths/product_graph.py +93 -0
- relationalai/experimental/paths/rpq/automaton.py +584 -0
- relationalai/experimental/paths/rpq/diagnostics.py +56 -0
- relationalai/experimental/paths/rpq/rpq.py +378 -0
- relationalai/experimental/paths/tests/tests_limit_sp_max_length.py +90 -0
- relationalai/experimental/paths/tests/tests_limit_sp_multiple.py +119 -0
- relationalai/experimental/paths/tests/tests_limit_sp_single.py +104 -0
- relationalai/experimental/paths/tests/tests_limit_walks_multiple.py +113 -0
- relationalai/experimental/paths/tests/tests_limit_walks_single.py +149 -0
- relationalai/experimental/paths/tests/tests_one_sided_ball_repetition_multiple.py +70 -0
- relationalai/experimental/paths/tests/tests_one_sided_ball_repetition_single.py +64 -0
- relationalai/experimental/paths/tests/tests_one_sided_ball_upto_multiple.py +115 -0
- relationalai/experimental/paths/tests/tests_one_sided_ball_upto_single.py +75 -0
- relationalai/experimental/paths/tests/tests_single_paths.py +152 -0
- relationalai/experimental/paths/tests/tests_single_walks.py +208 -0
- relationalai/experimental/paths/tests/tests_single_walks_undirected.py +297 -0
- relationalai/experimental/paths/tests/tests_two_sided_balls_repetition_multiple.py +107 -0
- relationalai/experimental/paths/tests/tests_two_sided_balls_repetition_single.py +76 -0
- relationalai/experimental/paths/tests/tests_two_sided_balls_upto_multiple.py +76 -0
- relationalai/experimental/paths/tests/tests_two_sided_balls_upto_single.py +110 -0
- relationalai/experimental/paths/tests/tests_usp_nsp_multiple.py +229 -0
- relationalai/experimental/paths/tests/tests_usp_nsp_single.py +108 -0
- relationalai/experimental/paths/tree_agg.py +168 -0
- relationalai/experimental/paths/utilities/iterators.py +27 -0
- relationalai/experimental/paths/utilities/prefix_sum.py +91 -0
- relationalai/experimental/solvers.py +1087 -0
- relationalai/loaders/csv.py +195 -0
- relationalai/loaders/loader.py +177 -0
- relationalai/loaders/types.py +23 -0
- relationalai/rel_emitter.py +373 -0
- relationalai/rel_utils.py +185 -0
- relationalai/semantics/__init__.py +22 -146
- relationalai/semantics/designs/query_builder/identify_by.md +106 -0
- relationalai/semantics/devtools/benchmark_lqp.py +535 -0
- relationalai/semantics/devtools/compilation_manager.py +294 -0
- relationalai/semantics/devtools/extract_lqp.py +110 -0
- relationalai/semantics/internal/internal.py +3785 -0
- relationalai/semantics/internal/snowflake.py +325 -0
- relationalai/semantics/lqp/README.md +34 -0
- relationalai/semantics/lqp/builtins.py +16 -0
- relationalai/semantics/lqp/compiler.py +22 -0
- relationalai/semantics/lqp/constructors.py +68 -0
- relationalai/semantics/lqp/executor.py +469 -0
- relationalai/semantics/lqp/intrinsics.py +24 -0
- relationalai/semantics/lqp/model2lqp.py +877 -0
- relationalai/semantics/lqp/passes.py +680 -0
- relationalai/semantics/lqp/primitives.py +252 -0
- relationalai/semantics/lqp/result_helpers.py +202 -0
- relationalai/semantics/lqp/rewrite/annotate_constraints.py +57 -0
- relationalai/semantics/lqp/rewrite/cdc.py +216 -0
- relationalai/semantics/lqp/rewrite/extract_common.py +338 -0
- relationalai/semantics/lqp/rewrite/extract_keys.py +512 -0
- relationalai/semantics/lqp/rewrite/function_annotations.py +114 -0
- relationalai/semantics/lqp/rewrite/functional_dependencies.py +314 -0
- relationalai/semantics/lqp/rewrite/quantify_vars.py +296 -0
- relationalai/semantics/lqp/rewrite/splinter.py +76 -0
- relationalai/semantics/lqp/types.py +101 -0
- relationalai/semantics/lqp/utils.py +160 -0
- relationalai/semantics/lqp/validators.py +57 -0
- relationalai/semantics/metamodel/__init__.py +40 -6
- relationalai/semantics/metamodel/builtins.py +771 -205
- relationalai/semantics/metamodel/compiler.py +133 -0
- relationalai/semantics/metamodel/dependency.py +862 -0
- relationalai/semantics/metamodel/executor.py +61 -0
- relationalai/semantics/metamodel/factory.py +287 -0
- relationalai/semantics/metamodel/helpers.py +361 -0
- relationalai/semantics/metamodel/rewrite/discharge_constraints.py +39 -0
- relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +210 -0
- relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py +78 -0
- relationalai/semantics/metamodel/rewrite/flatten.py +554 -0
- relationalai/semantics/metamodel/rewrite/format_outputs.py +165 -0
- relationalai/semantics/metamodel/typer/checker.py +353 -0
- relationalai/semantics/metamodel/typer/typer.py +1395 -0
- relationalai/semantics/metamodel/util.py +506 -0
- relationalai/semantics/reasoners/__init__.py +10 -0
- relationalai/semantics/reasoners/graph/README.md +620 -0
- relationalai/semantics/reasoners/graph/__init__.py +37 -0
- relationalai/semantics/reasoners/graph/core.py +9019 -0
- relationalai/semantics/reasoners/graph/design/beyond_demand_transform.md +797 -0
- relationalai/semantics/reasoners/graph/tests/README.md +21 -0
- relationalai/semantics/reasoners/optimization/__init__.py +68 -0
- relationalai/semantics/reasoners/optimization/common.py +88 -0
- relationalai/semantics/reasoners/optimization/solvers_dev.py +568 -0
- relationalai/semantics/reasoners/optimization/solvers_pb.py +1414 -0
- relationalai/semantics/rel/builtins.py +40 -0
- relationalai/semantics/rel/compiler.py +989 -0
- relationalai/semantics/rel/executor.py +362 -0
- relationalai/semantics/rel/rel.py +482 -0
- relationalai/semantics/rel/rel_utils.py +276 -0
- relationalai/semantics/snowflake/__init__.py +3 -0
- relationalai/semantics/sql/compiler.py +2503 -0
- relationalai/semantics/sql/executor/duck_db.py +52 -0
- relationalai/semantics/sql/executor/result_helpers.py +64 -0
- relationalai/semantics/sql/executor/snowflake.py +149 -0
- relationalai/semantics/sql/rewrite/denormalize.py +222 -0
- relationalai/semantics/sql/rewrite/double_negation.py +49 -0
- relationalai/semantics/sql/rewrite/recursive_union.py +127 -0
- relationalai/semantics/sql/rewrite/sort_output_query.py +246 -0
- relationalai/semantics/sql/sql.py +504 -0
- relationalai/semantics/std/__init__.py +40 -60
- relationalai/semantics/std/constraints.py +43 -37
- relationalai/semantics/std/datetime.py +135 -246
- relationalai/semantics/std/decimals.py +52 -45
- relationalai/semantics/std/floats.py +5 -13
- relationalai/semantics/std/integers.py +11 -26
- relationalai/semantics/std/math.py +112 -183
- relationalai/semantics/std/pragmas.py +11 -0
- relationalai/semantics/std/re.py +62 -80
- relationalai/semantics/std/std.py +14 -0
- relationalai/semantics/std/strings.py +60 -117
- relationalai/semantics/tests/test_snapshot_abstract.py +143 -0
- relationalai/semantics/tests/test_snapshot_base.py +9 -0
- relationalai/semantics/tests/utils.py +46 -0
- relationalai/std/__init__.py +70 -0
- relationalai/tools/cli.py +1936 -0
- relationalai/tools/cli_controls.py +1826 -0
- relationalai/tools/cli_helpers.py +398 -0
- relationalai/tools/debugger.py +183 -289
- relationalai/tools/debugger_client.py +109 -0
- relationalai/tools/debugger_server.py +302 -0
- relationalai/tools/dev.py +685 -0
- relationalai/tools/notes +7 -0
- relationalai/tools/qb_debugger.py +425 -0
- relationalai/util/clean_up_databases.py +95 -0
- relationalai/util/format.py +106 -48
- relationalai/util/list_databases.py +9 -0
- relationalai/util/otel_configuration.py +26 -0
- relationalai/util/otel_handler.py +484 -0
- relationalai/util/snowflake_handler.py +88 -0
- relationalai/util/span_format_test.py +43 -0
- relationalai/util/span_tracker.py +207 -0
- relationalai/util/spans_file_handler.py +72 -0
- relationalai/util/tracing_handler.py +34 -0
- relationalai-0.13.1.dist-info/METADATA +74 -0
- relationalai-0.13.1.dist-info/RECORD +459 -0
- relationalai-0.13.1.dist-info/WHEEL +4 -0
- relationalai-0.13.1.dist-info/entry_points.txt +3 -0
- relationalai-0.13.1.dist-info/licenses/LICENSE +202 -0
- relationalai_test_util/__init__.py +4 -0
- relationalai_test_util/fixtures.py +233 -0
- relationalai_test_util/snapshot.py +252 -0
- relationalai_test_util/traceback.py +118 -0
- relationalai/config/__init__.py +0 -56
- relationalai/config/config.py +0 -289
- relationalai/config/config_fields.py +0 -86
- relationalai/config/connections/__init__.py +0 -46
- relationalai/config/connections/base.py +0 -23
- relationalai/config/connections/duckdb.py +0 -29
- relationalai/config/connections/snowflake.py +0 -243
- relationalai/config/external/__init__.py +0 -17
- relationalai/config/external/dbt_converter.py +0 -101
- relationalai/config/external/dbt_models.py +0 -93
- relationalai/config/external/snowflake_converter.py +0 -41
- relationalai/config/external/snowflake_models.py +0 -85
- relationalai/config/external/utils.py +0 -19
- relationalai/semantics/backends/lqp/annotations.py +0 -11
- relationalai/semantics/backends/sql/sql_compiler.py +0 -327
- relationalai/semantics/frontend/base.py +0 -1707
- relationalai/semantics/frontend/core.py +0 -179
- relationalai/semantics/frontend/front_compiler.py +0 -1313
- relationalai/semantics/frontend/pprint.py +0 -408
- relationalai/semantics/metamodel/metamodel.py +0 -437
- relationalai/semantics/metamodel/metamodel_analyzer.py +0 -519
- relationalai/semantics/metamodel/metamodel_compiler.py +0 -0
- relationalai/semantics/metamodel/pprint.py +0 -412
- relationalai/semantics/metamodel/rewriter.py +0 -266
- relationalai/semantics/metamodel/typer.py +0 -1378
- relationalai/semantics/std/aggregates.py +0 -149
- relationalai/semantics/std/common.py +0 -44
- relationalai/semantics/std/numbers.py +0 -86
- relationalai/shims/executor.py +0 -147
- relationalai/shims/helpers.py +0 -126
- relationalai/shims/hoister.py +0 -221
- relationalai/shims/mm2v0.py +0 -1290
- relationalai/tools/cli/__init__.py +0 -6
- relationalai/tools/cli/cli.py +0 -90
- relationalai/tools/cli/components/__init__.py +0 -5
- relationalai/tools/cli/components/progress_reader.py +0 -1524
- relationalai/tools/cli/components/utils.py +0 -58
- relationalai/tools/cli/config_template.py +0 -45
- relationalai/tools/cli/dev.py +0 -19
- relationalai/tools/typer_debugger.py +0 -93
- relationalai/util/dataclasses.py +0 -43
- relationalai/util/docutils.py +0 -40
- relationalai/util/error.py +0 -199
- relationalai/util/naming.py +0 -145
- relationalai/util/python.py +0 -35
- relationalai/util/runtime.py +0 -156
- relationalai/util/schema.py +0 -197
- relationalai/util/source.py +0 -185
- relationalai/util/structures.py +0 -163
- relationalai/util/tracing.py +0 -261
- relationalai-0.13.0.dev0.dist-info/METADATA +0 -46
- relationalai-0.13.0.dev0.dist-info/RECORD +0 -488
- relationalai-0.13.0.dev0.dist-info/WHEEL +0 -5
- relationalai-0.13.0.dev0.dist-info/entry_points.txt +0 -3
- relationalai-0.13.0.dev0.dist-info/top_level.txt +0 -2
- v0/relationalai/__init__.py +0 -216
- v0/relationalai/clients/__init__.py +0 -5
- v0/relationalai/clients/azure.py +0 -477
- v0/relationalai/clients/client.py +0 -912
- v0/relationalai/clients/config.py +0 -673
- v0/relationalai/clients/direct_access_client.py +0 -118
- v0/relationalai/clients/hash_util.py +0 -31
- v0/relationalai/clients/local.py +0 -571
- v0/relationalai/clients/profile_polling.py +0 -73
- v0/relationalai/clients/result_helpers.py +0 -420
- v0/relationalai/clients/snowflake.py +0 -3869
- v0/relationalai/clients/types.py +0 -113
- v0/relationalai/clients/use_index_poller.py +0 -980
- v0/relationalai/clients/util.py +0 -356
- v0/relationalai/debugging.py +0 -389
- v0/relationalai/dsl.py +0 -1749
- v0/relationalai/early_access/builder/__init__.py +0 -30
- v0/relationalai/early_access/builder/builder/__init__.py +0 -35
- v0/relationalai/early_access/builder/snowflake/__init__.py +0 -12
- v0/relationalai/early_access/builder/std/__init__.py +0 -25
- v0/relationalai/early_access/builder/std/decimals/__init__.py +0 -12
- v0/relationalai/early_access/builder/std/integers/__init__.py +0 -12
- v0/relationalai/early_access/builder/std/math/__init__.py +0 -12
- v0/relationalai/early_access/builder/std/strings/__init__.py +0 -14
- v0/relationalai/early_access/devtools/__init__.py +0 -12
- v0/relationalai/early_access/devtools/benchmark_lqp/__init__.py +0 -12
- v0/relationalai/early_access/devtools/extract_lqp/__init__.py +0 -12
- v0/relationalai/early_access/dsl/adapters/orm/adapter_qb.py +0 -427
- v0/relationalai/early_access/dsl/adapters/orm/parser.py +0 -636
- v0/relationalai/early_access/dsl/adapters/owl/adapter.py +0 -176
- v0/relationalai/early_access/dsl/adapters/owl/parser.py +0 -160
- v0/relationalai/early_access/dsl/bindings/common.py +0 -402
- v0/relationalai/early_access/dsl/bindings/csv.py +0 -170
- v0/relationalai/early_access/dsl/bindings/legacy/binding_models.py +0 -143
- v0/relationalai/early_access/dsl/bindings/snowflake.py +0 -64
- v0/relationalai/early_access/dsl/codegen/binder.py +0 -411
- v0/relationalai/early_access/dsl/codegen/common.py +0 -79
- v0/relationalai/early_access/dsl/codegen/helpers.py +0 -23
- v0/relationalai/early_access/dsl/codegen/relations.py +0 -700
- v0/relationalai/early_access/dsl/codegen/weaver.py +0 -417
- v0/relationalai/early_access/dsl/core/builders/__init__.py +0 -47
- v0/relationalai/early_access/dsl/core/builders/logic.py +0 -19
- v0/relationalai/early_access/dsl/core/builders/scalar_constraint.py +0 -11
- v0/relationalai/early_access/dsl/core/constraints/predicate/atomic.py +0 -455
- v0/relationalai/early_access/dsl/core/constraints/predicate/universal.py +0 -73
- v0/relationalai/early_access/dsl/core/constraints/scalar.py +0 -310
- v0/relationalai/early_access/dsl/core/context.py +0 -13
- v0/relationalai/early_access/dsl/core/cset.py +0 -132
- v0/relationalai/early_access/dsl/core/exprs/__init__.py +0 -116
- v0/relationalai/early_access/dsl/core/exprs/relational.py +0 -18
- v0/relationalai/early_access/dsl/core/exprs/scalar.py +0 -412
- v0/relationalai/early_access/dsl/core/instances.py +0 -44
- v0/relationalai/early_access/dsl/core/logic/__init__.py +0 -193
- v0/relationalai/early_access/dsl/core/logic/aggregation.py +0 -98
- v0/relationalai/early_access/dsl/core/logic/exists.py +0 -223
- v0/relationalai/early_access/dsl/core/logic/helper.py +0 -163
- v0/relationalai/early_access/dsl/core/namespaces.py +0 -32
- v0/relationalai/early_access/dsl/core/relations.py +0 -276
- v0/relationalai/early_access/dsl/core/rules.py +0 -112
- v0/relationalai/early_access/dsl/core/std/__init__.py +0 -45
- v0/relationalai/early_access/dsl/core/temporal/recall.py +0 -6
- v0/relationalai/early_access/dsl/core/types/__init__.py +0 -270
- v0/relationalai/early_access/dsl/core/types/concepts.py +0 -128
- v0/relationalai/early_access/dsl/core/types/constrained/__init__.py +0 -267
- v0/relationalai/early_access/dsl/core/types/constrained/nominal.py +0 -143
- v0/relationalai/early_access/dsl/core/types/constrained/subtype.py +0 -124
- v0/relationalai/early_access/dsl/core/types/standard.py +0 -92
- v0/relationalai/early_access/dsl/core/types/unconstrained.py +0 -50
- v0/relationalai/early_access/dsl/core/types/variables.py +0 -203
- v0/relationalai/early_access/dsl/ir/compiler.py +0 -318
- v0/relationalai/early_access/dsl/ir/executor.py +0 -260
- v0/relationalai/early_access/dsl/ontologies/constraints.py +0 -88
- v0/relationalai/early_access/dsl/ontologies/export.py +0 -30
- v0/relationalai/early_access/dsl/ontologies/models.py +0 -453
- v0/relationalai/early_access/dsl/ontologies/python_printer.py +0 -303
- v0/relationalai/early_access/dsl/ontologies/readings.py +0 -60
- v0/relationalai/early_access/dsl/ontologies/relationships.py +0 -322
- v0/relationalai/early_access/dsl/ontologies/roles.py +0 -87
- v0/relationalai/early_access/dsl/ontologies/subtyping.py +0 -55
- v0/relationalai/early_access/dsl/orm/constraints.py +0 -438
- v0/relationalai/early_access/dsl/orm/measures/dimensions.py +0 -200
- v0/relationalai/early_access/dsl/orm/measures/initializer.py +0 -16
- v0/relationalai/early_access/dsl/orm/measures/measure_rules.py +0 -275
- v0/relationalai/early_access/dsl/orm/measures/measures.py +0 -299
- v0/relationalai/early_access/dsl/orm/measures/role_exprs.py +0 -268
- v0/relationalai/early_access/dsl/orm/models.py +0 -256
- v0/relationalai/early_access/dsl/orm/object_oriented_printer.py +0 -344
- v0/relationalai/early_access/dsl/orm/printer.py +0 -469
- v0/relationalai/early_access/dsl/orm/reasoners.py +0 -480
- v0/relationalai/early_access/dsl/orm/relations.py +0 -19
- v0/relationalai/early_access/dsl/orm/relationships.py +0 -251
- v0/relationalai/early_access/dsl/orm/types.py +0 -42
- v0/relationalai/early_access/dsl/orm/utils.py +0 -79
- v0/relationalai/early_access/dsl/orm/verb.py +0 -204
- v0/relationalai/early_access/dsl/physical_metadata/tables.py +0 -133
- v0/relationalai/early_access/dsl/relations.py +0 -170
- v0/relationalai/early_access/dsl/rulesets.py +0 -69
- v0/relationalai/early_access/dsl/schemas/__init__.py +0 -450
- v0/relationalai/early_access/dsl/schemas/builder.py +0 -48
- v0/relationalai/early_access/dsl/schemas/comp_names.py +0 -51
- v0/relationalai/early_access/dsl/schemas/components.py +0 -203
- v0/relationalai/early_access/dsl/schemas/contexts.py +0 -156
- v0/relationalai/early_access/dsl/schemas/exprs.py +0 -89
- v0/relationalai/early_access/dsl/schemas/fragments.py +0 -464
- v0/relationalai/early_access/dsl/serialization.py +0 -79
- v0/relationalai/early_access/dsl/serialize/exporter.py +0 -163
- v0/relationalai/early_access/dsl/snow/api.py +0 -104
- v0/relationalai/early_access/dsl/snow/common.py +0 -76
- v0/relationalai/early_access/dsl/state_mgmt/__init__.py +0 -129
- v0/relationalai/early_access/dsl/state_mgmt/state_charts.py +0 -125
- v0/relationalai/early_access/dsl/state_mgmt/transitions.py +0 -130
- v0/relationalai/early_access/dsl/types/__init__.py +0 -40
- v0/relationalai/early_access/dsl/types/concepts.py +0 -12
- v0/relationalai/early_access/dsl/types/entities.py +0 -135
- v0/relationalai/early_access/dsl/types/values.py +0 -17
- v0/relationalai/early_access/dsl/utils.py +0 -102
- v0/relationalai/early_access/graphs/__init__.py +0 -13
- v0/relationalai/early_access/lqp/__init__.py +0 -12
- v0/relationalai/early_access/lqp/compiler/__init__.py +0 -12
- v0/relationalai/early_access/lqp/constructors/__init__.py +0 -18
- v0/relationalai/early_access/lqp/executor/__init__.py +0 -12
- v0/relationalai/early_access/lqp/ir/__init__.py +0 -12
- v0/relationalai/early_access/lqp/passes/__init__.py +0 -12
- v0/relationalai/early_access/lqp/pragmas/__init__.py +0 -12
- v0/relationalai/early_access/lqp/primitives/__init__.py +0 -12
- v0/relationalai/early_access/lqp/types/__init__.py +0 -12
- v0/relationalai/early_access/lqp/utils/__init__.py +0 -12
- v0/relationalai/early_access/lqp/validators/__init__.py +0 -12
- v0/relationalai/early_access/metamodel/__init__.py +0 -58
- v0/relationalai/early_access/metamodel/builtins/__init__.py +0 -12
- v0/relationalai/early_access/metamodel/compiler/__init__.py +0 -12
- v0/relationalai/early_access/metamodel/dependency/__init__.py +0 -12
- v0/relationalai/early_access/metamodel/factory/__init__.py +0 -17
- v0/relationalai/early_access/metamodel/helpers/__init__.py +0 -12
- v0/relationalai/early_access/metamodel/ir/__init__.py +0 -14
- v0/relationalai/early_access/metamodel/rewrite/__init__.py +0 -7
- v0/relationalai/early_access/metamodel/typer/__init__.py +0 -3
- v0/relationalai/early_access/metamodel/typer/typer/__init__.py +0 -12
- v0/relationalai/early_access/metamodel/types/__init__.py +0 -15
- v0/relationalai/early_access/metamodel/util/__init__.py +0 -15
- v0/relationalai/early_access/metamodel/visitor/__init__.py +0 -12
- v0/relationalai/early_access/rel/__init__.py +0 -12
- v0/relationalai/early_access/rel/executor/__init__.py +0 -12
- v0/relationalai/early_access/rel/rel_utils/__init__.py +0 -12
- v0/relationalai/early_access/rel/rewrite/__init__.py +0 -7
- v0/relationalai/early_access/solvers/__init__.py +0 -19
- v0/relationalai/early_access/sql/__init__.py +0 -11
- v0/relationalai/early_access/sql/executor/__init__.py +0 -3
- v0/relationalai/early_access/sql/rewrite/__init__.py +0 -3
- v0/relationalai/early_access/tests/logging/__init__.py +0 -12
- v0/relationalai/early_access/tests/test_snapshot_base/__init__.py +0 -12
- v0/relationalai/early_access/tests/utils/__init__.py +0 -12
- v0/relationalai/environments/__init__.py +0 -35
- v0/relationalai/environments/base.py +0 -381
- v0/relationalai/environments/colab.py +0 -14
- v0/relationalai/environments/generic.py +0 -71
- v0/relationalai/environments/ipython.py +0 -68
- v0/relationalai/environments/jupyter.py +0 -9
- v0/relationalai/environments/snowbook.py +0 -169
- v0/relationalai/errors.py +0 -2455
- v0/relationalai/experimental/SF.py +0 -38
- v0/relationalai/experimental/inspect.py +0 -47
- v0/relationalai/experimental/pathfinder/__init__.py +0 -158
- v0/relationalai/experimental/pathfinder/api.py +0 -160
- v0/relationalai/experimental/pathfinder/automaton.py +0 -584
- v0/relationalai/experimental/pathfinder/bridge.py +0 -226
- v0/relationalai/experimental/pathfinder/compiler.py +0 -416
- v0/relationalai/experimental/pathfinder/datalog.py +0 -214
- v0/relationalai/experimental/pathfinder/diagnostics.py +0 -56
- v0/relationalai/experimental/pathfinder/filter.py +0 -236
- v0/relationalai/experimental/pathfinder/glushkov.py +0 -439
- v0/relationalai/experimental/pathfinder/options.py +0 -265
- v0/relationalai/experimental/pathfinder/rpq.py +0 -344
- v0/relationalai/experimental/pathfinder/transition.py +0 -200
- v0/relationalai/experimental/pathfinder/utils.py +0 -26
- v0/relationalai/experimental/paths/api.py +0 -143
- v0/relationalai/experimental/paths/benchmarks/grid_graph.py +0 -37
- v0/relationalai/experimental/paths/examples/basic_example.py +0 -40
- v0/relationalai/experimental/paths/examples/minimal_engine_warmup.py +0 -3
- v0/relationalai/experimental/paths/examples/movie_example.py +0 -77
- v0/relationalai/experimental/paths/examples/paths_benchmark.py +0 -115
- v0/relationalai/experimental/paths/examples/paths_example.py +0 -116
- v0/relationalai/experimental/paths/examples/pattern_to_automaton.py +0 -28
- v0/relationalai/experimental/paths/find_paths_via_automaton.py +0 -85
- v0/relationalai/experimental/paths/graph.py +0 -185
- v0/relationalai/experimental/paths/path_algorithms/find_paths.py +0 -280
- v0/relationalai/experimental/paths/path_algorithms/one_sided_ball_repetition.py +0 -26
- v0/relationalai/experimental/paths/path_algorithms/one_sided_ball_upto.py +0 -111
- v0/relationalai/experimental/paths/path_algorithms/single.py +0 -59
- v0/relationalai/experimental/paths/path_algorithms/two_sided_balls_repetition.py +0 -39
- v0/relationalai/experimental/paths/path_algorithms/two_sided_balls_upto.py +0 -103
- v0/relationalai/experimental/paths/path_algorithms/usp-old.py +0 -130
- v0/relationalai/experimental/paths/path_algorithms/usp-tuple.py +0 -183
- v0/relationalai/experimental/paths/path_algorithms/usp.py +0 -150
- v0/relationalai/experimental/paths/product_graph.py +0 -93
- v0/relationalai/experimental/paths/rpq/automaton.py +0 -584
- v0/relationalai/experimental/paths/rpq/diagnostics.py +0 -56
- v0/relationalai/experimental/paths/rpq/rpq.py +0 -378
- v0/relationalai/experimental/paths/tests/tests_limit_sp_max_length.py +0 -90
- v0/relationalai/experimental/paths/tests/tests_limit_sp_multiple.py +0 -119
- v0/relationalai/experimental/paths/tests/tests_limit_sp_single.py +0 -104
- v0/relationalai/experimental/paths/tests/tests_limit_walks_multiple.py +0 -113
- v0/relationalai/experimental/paths/tests/tests_limit_walks_single.py +0 -149
- v0/relationalai/experimental/paths/tests/tests_one_sided_ball_repetition_multiple.py +0 -70
- v0/relationalai/experimental/paths/tests/tests_one_sided_ball_repetition_single.py +0 -64
- v0/relationalai/experimental/paths/tests/tests_one_sided_ball_upto_multiple.py +0 -115
- v0/relationalai/experimental/paths/tests/tests_one_sided_ball_upto_single.py +0 -75
- v0/relationalai/experimental/paths/tests/tests_single_paths.py +0 -152
- v0/relationalai/experimental/paths/tests/tests_single_walks.py +0 -208
- v0/relationalai/experimental/paths/tests/tests_single_walks_undirected.py +0 -297
- v0/relationalai/experimental/paths/tests/tests_two_sided_balls_repetition_multiple.py +0 -107
- v0/relationalai/experimental/paths/tests/tests_two_sided_balls_repetition_single.py +0 -76
- v0/relationalai/experimental/paths/tests/tests_two_sided_balls_upto_multiple.py +0 -76
- v0/relationalai/experimental/paths/tests/tests_two_sided_balls_upto_single.py +0 -110
- v0/relationalai/experimental/paths/tests/tests_usp_nsp_multiple.py +0 -229
- v0/relationalai/experimental/paths/tests/tests_usp_nsp_single.py +0 -108
- v0/relationalai/experimental/paths/tree_agg.py +0 -168
- v0/relationalai/experimental/paths/utilities/iterators.py +0 -27
- v0/relationalai/experimental/paths/utilities/prefix_sum.py +0 -91
- v0/relationalai/experimental/solvers.py +0 -1087
- v0/relationalai/loaders/csv.py +0 -195
- v0/relationalai/loaders/loader.py +0 -177
- v0/relationalai/loaders/types.py +0 -23
- v0/relationalai/rel_emitter.py +0 -373
- v0/relationalai/rel_utils.py +0 -185
- v0/relationalai/semantics/__init__.py +0 -29
- v0/relationalai/semantics/devtools/benchmark_lqp.py +0 -536
- v0/relationalai/semantics/devtools/compilation_manager.py +0 -294
- v0/relationalai/semantics/devtools/extract_lqp.py +0 -110
- v0/relationalai/semantics/internal/internal.py +0 -3785
- v0/relationalai/semantics/internal/snowflake.py +0 -324
- v0/relationalai/semantics/lqp/builtins.py +0 -16
- v0/relationalai/semantics/lqp/compiler.py +0 -22
- v0/relationalai/semantics/lqp/constructors.py +0 -68
- v0/relationalai/semantics/lqp/executor.py +0 -469
- v0/relationalai/semantics/lqp/intrinsics.py +0 -24
- v0/relationalai/semantics/lqp/model2lqp.py +0 -839
- v0/relationalai/semantics/lqp/passes.py +0 -680
- v0/relationalai/semantics/lqp/primitives.py +0 -252
- v0/relationalai/semantics/lqp/result_helpers.py +0 -202
- v0/relationalai/semantics/lqp/rewrite/annotate_constraints.py +0 -57
- v0/relationalai/semantics/lqp/rewrite/cdc.py +0 -216
- v0/relationalai/semantics/lqp/rewrite/extract_common.py +0 -338
- v0/relationalai/semantics/lqp/rewrite/extract_keys.py +0 -449
- v0/relationalai/semantics/lqp/rewrite/function_annotations.py +0 -114
- v0/relationalai/semantics/lqp/rewrite/functional_dependencies.py +0 -314
- v0/relationalai/semantics/lqp/rewrite/quantify_vars.py +0 -296
- v0/relationalai/semantics/lqp/rewrite/splinter.py +0 -76
- v0/relationalai/semantics/lqp/types.py +0 -101
- v0/relationalai/semantics/lqp/utils.py +0 -160
- v0/relationalai/semantics/lqp/validators.py +0 -57
- v0/relationalai/semantics/metamodel/__init__.py +0 -40
- v0/relationalai/semantics/metamodel/builtins.py +0 -774
- v0/relationalai/semantics/metamodel/compiler.py +0 -133
- v0/relationalai/semantics/metamodel/dependency.py +0 -862
- v0/relationalai/semantics/metamodel/executor.py +0 -61
- v0/relationalai/semantics/metamodel/factory.py +0 -287
- v0/relationalai/semantics/metamodel/helpers.py +0 -361
- v0/relationalai/semantics/metamodel/rewrite/discharge_constraints.py +0 -39
- v0/relationalai/semantics/metamodel/rewrite/dnf_union_splitter.py +0 -210
- v0/relationalai/semantics/metamodel/rewrite/extract_nested_logicals.py +0 -78
- v0/relationalai/semantics/metamodel/rewrite/flatten.py +0 -549
- v0/relationalai/semantics/metamodel/rewrite/format_outputs.py +0 -165
- v0/relationalai/semantics/metamodel/typer/checker.py +0 -353
- v0/relationalai/semantics/metamodel/typer/typer.py +0 -1395
- v0/relationalai/semantics/metamodel/util.py +0 -505
- v0/relationalai/semantics/reasoners/__init__.py +0 -10
- v0/relationalai/semantics/reasoners/graph/__init__.py +0 -37
- v0/relationalai/semantics/reasoners/graph/core.py +0 -9020
- v0/relationalai/semantics/reasoners/optimization/__init__.py +0 -68
- v0/relationalai/semantics/reasoners/optimization/common.py +0 -88
- v0/relationalai/semantics/reasoners/optimization/solvers_dev.py +0 -568
- v0/relationalai/semantics/reasoners/optimization/solvers_pb.py +0 -1163
- v0/relationalai/semantics/rel/builtins.py +0 -40
- v0/relationalai/semantics/rel/compiler.py +0 -989
- v0/relationalai/semantics/rel/executor.py +0 -359
- v0/relationalai/semantics/rel/rel.py +0 -482
- v0/relationalai/semantics/rel/rel_utils.py +0 -276
- v0/relationalai/semantics/snowflake/__init__.py +0 -3
- v0/relationalai/semantics/sql/compiler.py +0 -2503
- v0/relationalai/semantics/sql/executor/duck_db.py +0 -52
- v0/relationalai/semantics/sql/executor/result_helpers.py +0 -64
- v0/relationalai/semantics/sql/executor/snowflake.py +0 -145
- v0/relationalai/semantics/sql/rewrite/denormalize.py +0 -222
- v0/relationalai/semantics/sql/rewrite/double_negation.py +0 -49
- v0/relationalai/semantics/sql/rewrite/recursive_union.py +0 -127
- v0/relationalai/semantics/sql/rewrite/sort_output_query.py +0 -246
- v0/relationalai/semantics/sql/sql.py +0 -504
- v0/relationalai/semantics/std/__init__.py +0 -54
- v0/relationalai/semantics/std/constraints.py +0 -43
- v0/relationalai/semantics/std/datetime.py +0 -363
- v0/relationalai/semantics/std/decimals.py +0 -62
- v0/relationalai/semantics/std/floats.py +0 -7
- v0/relationalai/semantics/std/integers.py +0 -22
- v0/relationalai/semantics/std/math.py +0 -141
- v0/relationalai/semantics/std/pragmas.py +0 -11
- v0/relationalai/semantics/std/re.py +0 -83
- v0/relationalai/semantics/std/std.py +0 -14
- v0/relationalai/semantics/std/strings.py +0 -63
- v0/relationalai/semantics/tests/__init__.py +0 -0
- v0/relationalai/semantics/tests/test_snapshot_abstract.py +0 -143
- v0/relationalai/semantics/tests/test_snapshot_base.py +0 -9
- v0/relationalai/semantics/tests/utils.py +0 -46
- v0/relationalai/std/__init__.py +0 -70
- v0/relationalai/tools/__init__.py +0 -0
- v0/relationalai/tools/cli.py +0 -1940
- v0/relationalai/tools/cli_controls.py +0 -1826
- v0/relationalai/tools/cli_helpers.py +0 -390
- v0/relationalai/tools/debugger.py +0 -183
- v0/relationalai/tools/debugger_client.py +0 -109
- v0/relationalai/tools/debugger_server.py +0 -302
- v0/relationalai/tools/dev.py +0 -685
- v0/relationalai/tools/qb_debugger.py +0 -425
- v0/relationalai/util/clean_up_databases.py +0 -95
- v0/relationalai/util/format.py +0 -123
- v0/relationalai/util/list_databases.py +0 -9
- v0/relationalai/util/otel_configuration.py +0 -25
- v0/relationalai/util/otel_handler.py +0 -484
- v0/relationalai/util/snowflake_handler.py +0 -88
- v0/relationalai/util/span_format_test.py +0 -43
- v0/relationalai/util/span_tracker.py +0 -207
- v0/relationalai/util/spans_file_handler.py +0 -72
- v0/relationalai/util/tracing_handler.py +0 -34
- /relationalai/{semantics/frontend → analysis}/__init__.py +0 -0
- {v0/relationalai → relationalai}/analysis/mechanistic.py +0 -0
- {v0/relationalai → relationalai}/analysis/whynot.py +0 -0
- /relationalai/{shims → auth}/__init__.py +0 -0
- {v0/relationalai → relationalai}/auth/jwt_generator.py +0 -0
- {v0/relationalai → relationalai}/auth/oauth_callback_server.py +0 -0
- {v0/relationalai → relationalai}/auth/token_handler.py +0 -0
- {v0/relationalai → relationalai}/auth/util.py +0 -0
- {v0/relationalai/clients → relationalai/clients/resources/snowflake}/cache_store.py +0 -0
- {v0/relationalai → relationalai}/compiler.py +0 -0
- {v0/relationalai → relationalai}/dependencies.py +0 -0
- {v0/relationalai → relationalai}/docutils.py +0 -0
- {v0/relationalai/analysis → relationalai/early_access}/__init__.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/__init__.py +0 -0
- {v0/relationalai/auth → relationalai/early_access/dsl/adapters}/__init__.py +0 -0
- {v0/relationalai/early_access → relationalai/early_access/dsl/adapters/orm}/__init__.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/adapters/orm/model.py +0 -0
- {v0/relationalai/early_access/dsl/adapters → relationalai/early_access/dsl/adapters/owl}/__init__.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/adapters/owl/model.py +0 -0
- {v0/relationalai/early_access/dsl/adapters/orm → relationalai/early_access/dsl/bindings}/__init__.py +0 -0
- {v0/relationalai/early_access/dsl/adapters/owl → relationalai/early_access/dsl/bindings/legacy}/__init__.py +0 -0
- {v0/relationalai/early_access/dsl/bindings → relationalai/early_access/dsl/codegen}/__init__.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/constants.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/core/__init__.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/core/constraints/__init__.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/core/constraints/predicate/__init__.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/core/stack.py +0 -0
- {v0/relationalai/early_access/dsl/bindings/legacy → relationalai/early_access/dsl/core/temporal}/__init__.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/core/utils.py +0 -0
- {v0/relationalai/early_access/dsl/codegen → relationalai/early_access/dsl/ir}/__init__.py +0 -0
- {v0/relationalai/early_access/dsl/core/temporal → relationalai/early_access/dsl/ontologies}/__init__.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/ontologies/raw_source.py +0 -0
- {v0/relationalai/early_access/dsl/ir → relationalai/early_access/dsl/orm}/__init__.py +0 -0
- {v0/relationalai/early_access/dsl/ontologies → relationalai/early_access/dsl/orm/measures}/__init__.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/orm/reasoner_errors.py +0 -0
- {v0/relationalai/early_access/dsl/orm → relationalai/early_access/dsl/physical_metadata}/__init__.py +0 -0
- {v0/relationalai/early_access/dsl/orm/measures → relationalai/early_access/dsl/serialize}/__init__.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/serialize/binding_model.py +0 -0
- {v0/relationalai → relationalai}/early_access/dsl/serialize/model.py +0 -0
- {v0/relationalai/early_access/dsl/physical_metadata → relationalai/early_access/dsl/snow}/__init__.py +0 -0
- {v0/relationalai → relationalai}/early_access/tests/__init__.py +0 -0
- {v0/relationalai → relationalai}/environments/ci.py +0 -0
- {v0/relationalai → relationalai}/environments/hex.py +0 -0
- {v0/relationalai → relationalai}/environments/terminal.py +0 -0
- {v0/relationalai → relationalai}/experimental/__init__.py +0 -0
- {v0/relationalai → relationalai}/experimental/graphs.py +0 -0
- {v0/relationalai → relationalai}/experimental/paths/__init__.py +0 -0
- {v0/relationalai → relationalai}/experimental/paths/benchmarks/__init__.py +0 -0
- {v0/relationalai → relationalai}/experimental/paths/path_algorithms/__init__.py +0 -0
- {v0/relationalai → relationalai}/experimental/paths/rpq/__init__.py +0 -0
- {v0/relationalai → relationalai}/experimental/paths/rpq/filter.py +0 -0
- {v0/relationalai → relationalai}/experimental/paths/rpq/glushkov.py +0 -0
- {v0/relationalai → relationalai}/experimental/paths/rpq/transition.py +0 -0
- {v0/relationalai → relationalai}/experimental/paths/utilities/__init__.py +0 -0
- {v0/relationalai → relationalai}/experimental/paths/utilities/utilities.py +0 -0
- {v0/relationalai/early_access/dsl/serialize → relationalai/loaders}/__init__.py +0 -0
- {v0/relationalai → relationalai}/metagen.py +0 -0
- {v0/relationalai → relationalai}/metamodel.py +0 -0
- {v0/relationalai → relationalai}/rel.py +0 -0
- {v0/relationalai → relationalai}/semantics/devtools/__init__.py +0 -0
- {v0/relationalai → relationalai}/semantics/internal/__init__.py +0 -0
- {v0/relationalai → relationalai}/semantics/internal/annotations.py +0 -0
- {v0/relationalai → relationalai}/semantics/lqp/__init__.py +0 -0
- {v0/relationalai → relationalai}/semantics/lqp/ir.py +0 -0
- {v0/relationalai → relationalai}/semantics/lqp/pragmas.py +0 -0
- {v0/relationalai → relationalai}/semantics/lqp/rewrite/__init__.py +0 -0
- {v0/relationalai → relationalai}/semantics/metamodel/dataflow.py +0 -0
- {v0/relationalai → relationalai}/semantics/metamodel/ir.py +0 -0
- {v0/relationalai → relationalai}/semantics/metamodel/rewrite/__init__.py +0 -0
- {v0/relationalai → relationalai}/semantics/metamodel/typer/__init__.py +0 -0
- {v0/relationalai → relationalai}/semantics/metamodel/types.py +0 -0
- {v0/relationalai → relationalai}/semantics/metamodel/visitor.py +0 -0
- {v0/relationalai → relationalai}/semantics/reasoners/experimental/__init__.py +0 -0
- {v0/relationalai → relationalai}/semantics/rel/__init__.py +0 -0
- {v0/relationalai → relationalai}/semantics/sql/__init__.py +0 -0
- {v0/relationalai → relationalai}/semantics/sql/executor/__init__.py +0 -0
- {v0/relationalai → relationalai}/semantics/sql/rewrite/__init__.py +0 -0
- {v0/relationalai/early_access/dsl/snow → relationalai/semantics/tests}/__init__.py +0 -0
- {v0/relationalai → relationalai}/semantics/tests/logging.py +0 -0
- {v0/relationalai → relationalai}/std/aggregates.py +0 -0
- {v0/relationalai → relationalai}/std/dates.py +0 -0
- {v0/relationalai → relationalai}/std/graphs.py +0 -0
- {v0/relationalai → relationalai}/std/inspect.py +0 -0
- {v0/relationalai → relationalai}/std/math.py +0 -0
- {v0/relationalai → relationalai}/std/re.py +0 -0
- {v0/relationalai → relationalai}/std/strings.py +0 -0
- {v0/relationalai/loaders → relationalai/tools}/__init__.py +0 -0
- {v0/relationalai → relationalai}/tools/cleanup_snapshots.py +0 -0
- {v0/relationalai → relationalai}/tools/constants.py +0 -0
- {v0/relationalai → relationalai}/tools/query_utils.py +0 -0
- {v0/relationalai → relationalai}/tools/snapshot_viewer.py +0 -0
- {v0/relationalai → relationalai}/util/__init__.py +0 -0
- {v0/relationalai → relationalai}/util/constants.py +0 -0
- {v0/relationalai → relationalai}/util/graph.py +0 -0
- {v0/relationalai → relationalai}/util/timeout.py +0 -0
|
@@ -1,505 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
from typing import Callable, Generator, Generic, IO, Iterable, Optional, Sequence, Tuple, TypeVar, cast, Hashable
|
|
3
|
-
from dataclasses import dataclass, field
|
|
4
|
-
|
|
5
|
-
#--------------------------------------------------
|
|
6
|
-
# FrozenOrderedSet
|
|
7
|
-
#--------------------------------------------------
|
|
8
|
-
|
|
9
|
-
T = TypeVar('T')
|
|
10
|
-
class FrozenOrderedSet(Generic[T]):
|
|
11
|
-
""" Immutable access to an ordered sequence of elements without duplicates. """
|
|
12
|
-
|
|
13
|
-
def __init__(self, data:Sequence[T]):
|
|
14
|
-
# TODO - maybe verify that there are no duplicates?
|
|
15
|
-
self.data = tuple(data)
|
|
16
|
-
|
|
17
|
-
@classmethod
|
|
18
|
-
def from_iterable(cls, items:Iterable[T]|None):
|
|
19
|
-
return OrderedSet.from_iterable(items).frozen()
|
|
20
|
-
|
|
21
|
-
def some(self) -> T:
|
|
22
|
-
assert len(self.data) > 0
|
|
23
|
-
return self.data[0]
|
|
24
|
-
|
|
25
|
-
def includes(self, other: Iterable[T]) -> bool:
|
|
26
|
-
""" True iff all items in other are in this set. """
|
|
27
|
-
for x in other:
|
|
28
|
-
if x not in self:
|
|
29
|
-
return False
|
|
30
|
-
return True
|
|
31
|
-
|
|
32
|
-
def __hash__(self) -> int:
|
|
33
|
-
return hash(self.data)
|
|
34
|
-
|
|
35
|
-
def __eq__(self, other):
|
|
36
|
-
if not isinstance(other, FrozenOrderedSet):
|
|
37
|
-
return False
|
|
38
|
-
return self.data == other.data
|
|
39
|
-
|
|
40
|
-
def __getitem__(self, ix):
|
|
41
|
-
if len(self.data) <= ix:
|
|
42
|
-
return None
|
|
43
|
-
return self.data[ix]
|
|
44
|
-
|
|
45
|
-
def __contains__(self, item:T):
|
|
46
|
-
return item in self.data
|
|
47
|
-
|
|
48
|
-
def __bool__(self):
|
|
49
|
-
return bool(self.data)
|
|
50
|
-
|
|
51
|
-
def __iter__(self):
|
|
52
|
-
return iter(self.data)
|
|
53
|
-
|
|
54
|
-
def __len__(self):
|
|
55
|
-
return len(self.data)
|
|
56
|
-
|
|
57
|
-
def __sub__(self, other:Optional[Iterable[T]]) -> FrozenOrderedSet[T]:
|
|
58
|
-
if not other:
|
|
59
|
-
return self
|
|
60
|
-
# set difference guaranteeing deterministic order
|
|
61
|
-
new = OrderedSet[T]()
|
|
62
|
-
new.update(self.data)
|
|
63
|
-
new.difference_update(other)
|
|
64
|
-
return new.frozen()
|
|
65
|
-
|
|
66
|
-
def __or__(self, other:Optional[Iterable[T]]) -> FrozenOrderedSet[T]:
|
|
67
|
-
if not other:
|
|
68
|
-
return self
|
|
69
|
-
# set union guaranteeing deterministic order
|
|
70
|
-
new = OrderedSet[T]()
|
|
71
|
-
new.update(self.data)
|
|
72
|
-
new.update(other)
|
|
73
|
-
return new.frozen()
|
|
74
|
-
|
|
75
|
-
def __and__(self, other:Optional[Iterable[T]]) -> FrozenOrderedSet[T]:
|
|
76
|
-
if not other:
|
|
77
|
-
# intersetion is empty
|
|
78
|
-
return frozen()
|
|
79
|
-
# set intersection guaranteeing deterministic order
|
|
80
|
-
new = OrderedSet[T]()
|
|
81
|
-
for item in self:
|
|
82
|
-
if item in other:
|
|
83
|
-
new.add(item)
|
|
84
|
-
return new.frozen()
|
|
85
|
-
|
|
86
|
-
def __str__(self) -> str:
|
|
87
|
-
return self.data.__str__()
|
|
88
|
-
|
|
89
|
-
#--------------------------------------------------
|
|
90
|
-
# OrderedSet
|
|
91
|
-
#--------------------------------------------------
|
|
92
|
-
|
|
93
|
-
T = TypeVar('T')
|
|
94
|
-
class OrderedSet(Generic[T]):
|
|
95
|
-
def __init__(self):
|
|
96
|
-
self.set:Optional[set[T]] = None
|
|
97
|
-
self.list:Optional[list[T]] = None
|
|
98
|
-
|
|
99
|
-
@classmethod
|
|
100
|
-
def from_iterable(cls, items:Iterable[T]|None):
|
|
101
|
-
if not items:
|
|
102
|
-
return OrderedSet()
|
|
103
|
-
s = OrderedSet()
|
|
104
|
-
s.update(items)
|
|
105
|
-
return s
|
|
106
|
-
|
|
107
|
-
def _ensure_initialized(self):
|
|
108
|
-
if self.set is None:
|
|
109
|
-
self.set = set()
|
|
110
|
-
self.list = []
|
|
111
|
-
|
|
112
|
-
def get_set(self) -> set:
|
|
113
|
-
self._ensure_initialized()
|
|
114
|
-
assert(self.set is not None)
|
|
115
|
-
return self.set
|
|
116
|
-
|
|
117
|
-
def get_list(self) -> list:
|
|
118
|
-
self._ensure_initialized()
|
|
119
|
-
assert(self.list is not None)
|
|
120
|
-
return self.list
|
|
121
|
-
|
|
122
|
-
def add(self, item:T|None):
|
|
123
|
-
"""Insert an item at the end of the set."""
|
|
124
|
-
if item not in self.get_set():
|
|
125
|
-
self.get_set().add(item)
|
|
126
|
-
self.get_list().append(item)
|
|
127
|
-
return self
|
|
128
|
-
|
|
129
|
-
def prepend(self, item:T|None):
|
|
130
|
-
"""Insert an item at the start of the set."""
|
|
131
|
-
if item not in self.get_set():
|
|
132
|
-
self.get_set().add(item)
|
|
133
|
-
self.get_list().insert(0, item)
|
|
134
|
-
return self
|
|
135
|
-
|
|
136
|
-
def update(self, items:Iterable[T]|None):
|
|
137
|
-
"""Insert items at the end of the set."""
|
|
138
|
-
if items is not None:
|
|
139
|
-
for item in items:
|
|
140
|
-
self.add(item)
|
|
141
|
-
return self
|
|
142
|
-
|
|
143
|
-
def prefix(self, items:Iterable[T]|None):
|
|
144
|
-
"""Insert items at the start of the set."""
|
|
145
|
-
if items is not None:
|
|
146
|
-
for item in items:
|
|
147
|
-
self.prepend(item)
|
|
148
|
-
return self
|
|
149
|
-
|
|
150
|
-
def remove(self, item:T):
|
|
151
|
-
if self.set is not None and item in self.set:
|
|
152
|
-
self.difference_update([item])
|
|
153
|
-
|
|
154
|
-
def difference_update(self, items:Iterable[T]):
|
|
155
|
-
if self.set is None:
|
|
156
|
-
return
|
|
157
|
-
|
|
158
|
-
changed = False
|
|
159
|
-
for item in items:
|
|
160
|
-
if item in self.set:
|
|
161
|
-
self.set.remove(item)
|
|
162
|
-
changed = True
|
|
163
|
-
|
|
164
|
-
if changed:
|
|
165
|
-
# list.remove uses == under the covers, which screws
|
|
166
|
-
# with our DSL objects that have __eq__ defined and
|
|
167
|
-
# return expressions, so we need to do this manually
|
|
168
|
-
new_list = []
|
|
169
|
-
for cur in self.get_list():
|
|
170
|
-
if cur in self.set:
|
|
171
|
-
new_list.append(cur)
|
|
172
|
-
self.list = new_list
|
|
173
|
-
|
|
174
|
-
def clear(self):
|
|
175
|
-
if self.set is not None:
|
|
176
|
-
self.set.clear()
|
|
177
|
-
if self.list is not None:
|
|
178
|
-
self.list.clear()
|
|
179
|
-
|
|
180
|
-
def pop(self) -> T:
|
|
181
|
-
item = self.get_list().pop()
|
|
182
|
-
self.get_set().remove(item)
|
|
183
|
-
return item
|
|
184
|
-
|
|
185
|
-
def first(self) -> T:
|
|
186
|
-
assert len(self.get_list()) > 0
|
|
187
|
-
return self.get_list()[0]
|
|
188
|
-
|
|
189
|
-
def some(self) -> T:
|
|
190
|
-
return self.first()
|
|
191
|
-
|
|
192
|
-
def frozen(self) -> FrozenOrderedSet[T]:
|
|
193
|
-
return FrozenOrderedSet(self.get_list())
|
|
194
|
-
|
|
195
|
-
def version(self) -> tuple[int, T|None]:
|
|
196
|
-
return (len(self.list) if self.list else 0, self.list[-1] if self.list and len(self.list) > 0 else None)
|
|
197
|
-
|
|
198
|
-
def has_changed(self, version:tuple[int, T|None]) -> bool:
|
|
199
|
-
if version[0] != len(self.get_list()):
|
|
200
|
-
return True
|
|
201
|
-
if version[1] is None:
|
|
202
|
-
return len(self.get_list()) > 0
|
|
203
|
-
if version[1] is not self.get_list()[-1]:
|
|
204
|
-
return True
|
|
205
|
-
return False
|
|
206
|
-
|
|
207
|
-
def includes(self, other: Iterable[T]) -> bool:
|
|
208
|
-
""" True iff all items in other are in this set. """
|
|
209
|
-
for x in other:
|
|
210
|
-
if x not in self:
|
|
211
|
-
return False
|
|
212
|
-
return True
|
|
213
|
-
|
|
214
|
-
def __hash__(self) -> int:
|
|
215
|
-
return hash((tuple(self.get_list())))
|
|
216
|
-
|
|
217
|
-
def __contains__(self, item:T):
|
|
218
|
-
return self.set and item in self.set
|
|
219
|
-
|
|
220
|
-
def __bool__(self):
|
|
221
|
-
return bool(self.set)
|
|
222
|
-
|
|
223
|
-
def __getitem__(self, ix) -> T:
|
|
224
|
-
if not self.list or ix >= len(self.get_list()):
|
|
225
|
-
raise IndexError
|
|
226
|
-
return self.get_list()[ix]
|
|
227
|
-
|
|
228
|
-
def __iter__(self):
|
|
229
|
-
return iter(self.list) if self.list else iter([])
|
|
230
|
-
|
|
231
|
-
def __len__(self):
|
|
232
|
-
return len(self.list) if self.list is not None else 0
|
|
233
|
-
|
|
234
|
-
def __sub__(self, other:Optional[Iterable[T]]) -> OrderedSet[T]:
|
|
235
|
-
if not other:
|
|
236
|
-
return self
|
|
237
|
-
# set difference guaranteeing deterministic order
|
|
238
|
-
new = OrderedSet[T]()
|
|
239
|
-
new.update(self)
|
|
240
|
-
for item in other:
|
|
241
|
-
new.remove(item)
|
|
242
|
-
return new
|
|
243
|
-
|
|
244
|
-
def __and__(self, other: Optional[Iterable[T]]) -> OrderedSet[T]:
|
|
245
|
-
if not other:
|
|
246
|
-
# intersetion is empty
|
|
247
|
-
return ordered_set()
|
|
248
|
-
# set intersection guaranteeing deterministic order
|
|
249
|
-
new = OrderedSet[T]()
|
|
250
|
-
for item in self:
|
|
251
|
-
if item in other:
|
|
252
|
-
new.add(item)
|
|
253
|
-
return new
|
|
254
|
-
|
|
255
|
-
def __or__(self, other: Optional[Iterable[T]]) -> OrderedSet[T]:
|
|
256
|
-
if not other:
|
|
257
|
-
return self
|
|
258
|
-
# set union guaranteeing deterministic order
|
|
259
|
-
new = OrderedSet[T]()
|
|
260
|
-
new.update(self)
|
|
261
|
-
new.update(other)
|
|
262
|
-
return new
|
|
263
|
-
|
|
264
|
-
def __isub__(self, other: Iterable[T]) -> OrderedSet[T]:
|
|
265
|
-
for item in other:
|
|
266
|
-
self.remove(item)
|
|
267
|
-
return self
|
|
268
|
-
|
|
269
|
-
def __ior__(self, other: Iterable[T]) -> OrderedSet[T]:
|
|
270
|
-
self.update(other)
|
|
271
|
-
return self
|
|
272
|
-
|
|
273
|
-
def __iand__(self, other: Iterable[T]) -> OrderedSet[T]:
|
|
274
|
-
for item in other:
|
|
275
|
-
if item not in self:
|
|
276
|
-
self.remove(item)
|
|
277
|
-
return self
|
|
278
|
-
|
|
279
|
-
def __str__(self) -> str:
|
|
280
|
-
return self.list.__str__()
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
T = TypeVar('T')
|
|
284
|
-
def ordered_set(*items: T) -> OrderedSet[T]:
|
|
285
|
-
""" Create an OrderedSet with these items. """
|
|
286
|
-
s = OrderedSet()
|
|
287
|
-
if items is not None:
|
|
288
|
-
s.update(items)
|
|
289
|
-
return s
|
|
290
|
-
|
|
291
|
-
def frozen(*items: T) -> FrozenOrderedSet[T]:
|
|
292
|
-
""" Create a FrozenOrderedSet with these items."""
|
|
293
|
-
return FrozenOrderedSet(items)
|
|
294
|
-
|
|
295
|
-
V = TypeVar('V')
|
|
296
|
-
K = TypeVar('K')
|
|
297
|
-
def index_by(s: Iterable[V], f:Callable[[V], K]) -> dict[K, V]:
|
|
298
|
-
""" Create an index for the sequence by computing a key for each value using this function. """
|
|
299
|
-
d = dict()
|
|
300
|
-
for v in s:
|
|
301
|
-
d[f(v)] = v
|
|
302
|
-
return d
|
|
303
|
-
|
|
304
|
-
V = TypeVar('V')
|
|
305
|
-
K = TypeVar('K')
|
|
306
|
-
def group_by(s: Iterable[V], f:Callable[[V], K]) -> dict[K, OrderedSet[V]]:
|
|
307
|
-
""" Group elements of the sequence by a key computed for each value using this function. """
|
|
308
|
-
d = dict()
|
|
309
|
-
for v in s:
|
|
310
|
-
key = f(v)
|
|
311
|
-
if key not in d:
|
|
312
|
-
d[key] = OrderedSet()
|
|
313
|
-
d[key].add(v)
|
|
314
|
-
return d
|
|
315
|
-
|
|
316
|
-
def split_by(s: Iterable[V], f:Callable[[V], bool]) -> Tuple[list[V], list[V]]:
|
|
317
|
-
""" Split the iterable in 2 groups depending on the result of the callable: [True, False]."""
|
|
318
|
-
trues = []
|
|
319
|
-
falses = []
|
|
320
|
-
for v in s:
|
|
321
|
-
trues.append(v) if f(v) else falses.append(v)
|
|
322
|
-
return (trues, falses)
|
|
323
|
-
|
|
324
|
-
def filter_by_type(s: Iterable[V], types)-> list[V]:
|
|
325
|
-
""" Filter the iterable keeping only elements of these types. """
|
|
326
|
-
r = []
|
|
327
|
-
for v in s:
|
|
328
|
-
if isinstance(v, types):
|
|
329
|
-
r.append(v)
|
|
330
|
-
return r
|
|
331
|
-
|
|
332
|
-
def rewrite_set(t: type[T], f: Callable[[T], T], items: FrozenOrderedSet[T]) -> FrozenOrderedSet[T]:
|
|
333
|
-
""" Map a function over a set, returning a new set with the results. Avoid allocating a new set if the function is the identity. """
|
|
334
|
-
new_items: Optional[list[T]] = None
|
|
335
|
-
for i in range(len(items)):
|
|
336
|
-
item = items[i]
|
|
337
|
-
assert isinstance(item, t), f"Expected {t}, got {type(item)}" # shut up type checker
|
|
338
|
-
new_item = cast(T, f(item))
|
|
339
|
-
assert isinstance(new_item, t), f"Expected {t}, got {type(new_item)}" # shut up type checker
|
|
340
|
-
if new_item is not item:
|
|
341
|
-
if new_items is None:
|
|
342
|
-
new_items = cast(list[T], list(items))
|
|
343
|
-
new_items[i] = new_item
|
|
344
|
-
if new_items is None:
|
|
345
|
-
return items
|
|
346
|
-
return ordered_set(*new_items).frozen()
|
|
347
|
-
|
|
348
|
-
def rewrite_list(t: type[T], f: Callable[[T], T], items: Tuple[T, ...]) -> Tuple[T, ...]:
|
|
349
|
-
""" Map a function over a list, returning a new list with the results. Avoid allocating a new list if the function is the identity. """
|
|
350
|
-
new_items: Optional[list[T]] = None
|
|
351
|
-
for i in range(len(items)):
|
|
352
|
-
item = items[i]
|
|
353
|
-
new_item = cast(T, f(item))
|
|
354
|
-
if new_item is not item:
|
|
355
|
-
if new_items is None:
|
|
356
|
-
new_items = cast(list[T], list(items))
|
|
357
|
-
new_items[i] = new_item
|
|
358
|
-
if new_items is None:
|
|
359
|
-
return items
|
|
360
|
-
return tuple(new_items)
|
|
361
|
-
|
|
362
|
-
def flatten_iter(items: Iterable[object], t: type[T]) -> Generator[T, None, None]:
|
|
363
|
-
"""Yield items from a nested iterable structure one at a time."""
|
|
364
|
-
for item in items:
|
|
365
|
-
if isinstance(item, (list, tuple, OrderedSet)):
|
|
366
|
-
yield from flatten_iter(item, t)
|
|
367
|
-
elif isinstance(item, t):
|
|
368
|
-
yield item
|
|
369
|
-
|
|
370
|
-
def flatten_tuple(items: Iterable[object], t: type[T]) -> tuple[T, ...]:
|
|
371
|
-
""" Flatten the nested iterable structure into a tuple."""
|
|
372
|
-
return tuple(flatten_iter(items, t))
|
|
373
|
-
|
|
374
|
-
@dataclass(frozen=True)
|
|
375
|
-
class NameCache:
|
|
376
|
-
# support to generate object names with a count when there's collision
|
|
377
|
-
# the next count to use as a suffix for an object with this name
|
|
378
|
-
name_next_count: dict[Hashable, dict[str, int]] = field(default_factory=dict)
|
|
379
|
-
# cache of the precomputed name for the object with this key
|
|
380
|
-
name_cache: dict[Hashable, str] = field(default_factory=dict)
|
|
381
|
-
# whether to use _ or not
|
|
382
|
-
use_underscore: bool = True
|
|
383
|
-
# whether the first entry should start with a 1 or with nothing
|
|
384
|
-
start_from_one: bool = False
|
|
385
|
-
|
|
386
|
-
def get_name(self, key: Hashable, name: str, prefix: str = "") -> str:
|
|
387
|
-
"""
|
|
388
|
-
Generate a unique name for the given key and base name, avoiding name collisions.
|
|
389
|
-
|
|
390
|
-
Names are tracked and deduplicated using an internal counter. If a name has already
|
|
391
|
-
been generated for the given key, the cached name is returned.
|
|
392
|
-
|
|
393
|
-
For tuple keys (e.g., (relation_id, var_id)), the first element is used as the scope
|
|
394
|
-
for counting name collisions. Only tuples of length 2 are supported; an assertion will
|
|
395
|
-
fail otherwise.
|
|
396
|
-
|
|
397
|
-
Parameters:
|
|
398
|
-
key (Hashable): A unique key identifying the object. Can be an int or a (scope_id, local_id) tuple.
|
|
399
|
-
name (str): Base name to use.
|
|
400
|
-
prefix (str): Optional prefix to prepend to the name.
|
|
401
|
-
|
|
402
|
-
Returns:
|
|
403
|
-
str: A unique name string for the given key.
|
|
404
|
-
|
|
405
|
-
Examples:
|
|
406
|
-
# Global naming
|
|
407
|
-
get_name(1, "var") => "var"
|
|
408
|
-
get_name(2, "var") => "var_2"
|
|
409
|
-
get_name(3, "var") => "var_3"
|
|
410
|
-
|
|
411
|
-
# Scoped naming (e.g., per relation)
|
|
412
|
-
get_name((10, 1), "x") => "x"
|
|
413
|
-
get_name((10, 2), "x") => "x_2"
|
|
414
|
-
get_name((20, 1), "x") => "x" # Different scope, starts again
|
|
415
|
-
get_name((20, 2), "x") => "x_2"
|
|
416
|
-
|
|
417
|
-
# With prefix and custom suffix start
|
|
418
|
-
n = NameCache()
|
|
419
|
-
n.get_name(1, "val", prefix="t_") => "t_val"
|
|
420
|
-
|
|
421
|
-
n = NameCache(start_from_one=True)
|
|
422
|
-
n.get_name(1, "val", prefix="t_") => "t_val_1"
|
|
423
|
-
"""
|
|
424
|
-
if key in self.name_cache:
|
|
425
|
-
return self.name_cache[key]
|
|
426
|
-
|
|
427
|
-
# Derive the count scope from the key
|
|
428
|
-
scope = None
|
|
429
|
-
if isinstance(key, tuple):
|
|
430
|
-
assert len(key) == 2, f"Expected tuple key of length 2, got {len(key)}: {key}"
|
|
431
|
-
scope = key[0] # e.g., relation_id
|
|
432
|
-
|
|
433
|
-
# get the dict specific for the scope, or create one
|
|
434
|
-
if scope in self.name_next_count:
|
|
435
|
-
next_count = self.name_next_count[scope]
|
|
436
|
-
else:
|
|
437
|
-
next_count = dict()
|
|
438
|
-
self.name_next_count[scope] = next_count
|
|
439
|
-
|
|
440
|
-
# find the next available name
|
|
441
|
-
name = self._find_next(f"{prefix}{name}", next_count)
|
|
442
|
-
|
|
443
|
-
# register it for the key
|
|
444
|
-
self.name_cache[key] = name
|
|
445
|
-
return name
|
|
446
|
-
|
|
447
|
-
def _find_next(self, name: str, next_count: dict):
|
|
448
|
-
if name in next_count:
|
|
449
|
-
# name is already in use, so append the next count
|
|
450
|
-
c = next_count[name]
|
|
451
|
-
next_count[name] = c + 1
|
|
452
|
-
new_name = self._concat(name, c)
|
|
453
|
-
|
|
454
|
-
else:
|
|
455
|
-
# name not in use yet, so register it
|
|
456
|
-
next_count[name] = 2
|
|
457
|
-
if self.start_from_one:
|
|
458
|
-
new_name = self._concat(name, 1)
|
|
459
|
-
else:
|
|
460
|
-
new_name = name
|
|
461
|
-
|
|
462
|
-
if new_name != name:
|
|
463
|
-
if new_name in next_count:
|
|
464
|
-
# if the modified name is also in use, recurse
|
|
465
|
-
return self._find_next(name, next_count)
|
|
466
|
-
else:
|
|
467
|
-
# otherwise, record that the modified name was used
|
|
468
|
-
next_count[new_name] = 2
|
|
469
|
-
return new_name
|
|
470
|
-
|
|
471
|
-
def _concat(self, name: str, c: int):
|
|
472
|
-
return f"{name}_{c}" if self.use_underscore else f"{name}{c}"
|
|
473
|
-
|
|
474
|
-
@dataclass(frozen=True)
|
|
475
|
-
class Printer():
|
|
476
|
-
""" Helper class to print ASTs into an IO object. """
|
|
477
|
-
io: Optional[IO[str]] = None
|
|
478
|
-
|
|
479
|
-
def _nl(self) -> None:
|
|
480
|
-
""" Print a new line character. """
|
|
481
|
-
self._print("\n")
|
|
482
|
-
|
|
483
|
-
def _print(self, arg) -> None:
|
|
484
|
-
""" Print the argument into the io without indentation. """
|
|
485
|
-
if self.io is None:
|
|
486
|
-
print(arg, end='')
|
|
487
|
-
else:
|
|
488
|
-
self.io.write(arg)
|
|
489
|
-
|
|
490
|
-
def _print_nl(self, arg) -> None:
|
|
491
|
-
""" Helper for the common case of calling _print followed by _nl. """
|
|
492
|
-
self._print(arg)
|
|
493
|
-
self._nl()
|
|
494
|
-
|
|
495
|
-
def _indent_print(self, depth, arg) -> None:
|
|
496
|
-
""" Print the argument into the io with indentation based on depth. """
|
|
497
|
-
if self.io is None:
|
|
498
|
-
print(" " * depth + str(arg), end='')
|
|
499
|
-
else:
|
|
500
|
-
self.io.write(" " * depth + str(arg))
|
|
501
|
-
|
|
502
|
-
def _indent_print_nl(self, depth, arg) -> None:
|
|
503
|
-
""" Helper for the common case of calling _indent_print followed by _nl. """
|
|
504
|
-
self._indent_print(depth, arg)
|
|
505
|
-
self._nl()
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
The RelationalAI Semantics Reasoners Module.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
# Mark this package's docstrings for inclusion
|
|
6
|
-
# in automatically generated web documentation,
|
|
7
|
-
# by default as early access.
|
|
8
|
-
from v0.relationalai.docutils import ProductStage
|
|
9
|
-
__include_in_docs__ = True
|
|
10
|
-
__rai_product_stage__ = ProductStage.EARLY_ACCESS
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
RelationalAI Graph Library
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
__version__ = "0.0.0"
|
|
6
|
-
|
|
7
|
-
import warnings
|
|
8
|
-
from v0.relationalai.docutils import ProductStage
|
|
9
|
-
from .core import Graph
|
|
10
|
-
|
|
11
|
-
# Mark this package's docstrings for inclusion
|
|
12
|
-
# in automatically generated web documentation.
|
|
13
|
-
__include_in_docs__ = True
|
|
14
|
-
__rai_product_stage__ = ProductStage.EARLY_ACCESS
|
|
15
|
-
|
|
16
|
-
# Warn on import that this package is at an early stage of development,
|
|
17
|
-
# intended for internal consumers only, and ask those internal consumers
|
|
18
|
-
# to contact the symbolic reasoning team such that we can track usage,
|
|
19
|
-
# get feedback, and help folks through breaking changes.
|
|
20
|
-
warnings.warn(
|
|
21
|
-
(
|
|
22
|
-
"\n\nThis library is still in early stages of development and is intended "
|
|
23
|
-
"for internal use only. Among other considerations, interfaces will change, "
|
|
24
|
-
"and performance is appropriate only for exploring small graphs. Please "
|
|
25
|
-
"see this package's README for additional information.\n\n"
|
|
26
|
-
"If you are an internal user seeing this, please also contact "
|
|
27
|
-
"the symbolic reasoning team such that we can track usage, get "
|
|
28
|
-
"feedback, and help you through breaking changes.\n"
|
|
29
|
-
),
|
|
30
|
-
FutureWarning,
|
|
31
|
-
stacklevel=2
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
# Finally make this package's core functionality publicly available.
|
|
35
|
-
__all__ = [
|
|
36
|
-
"Graph",
|
|
37
|
-
]
|