datajunction-server 0.0.1a45.dev0__tar.gz → 0.0.1a45.dev2__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.
- datajunction_server-0.0.1a45.dev2/.env +2 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/PKG-INFO +1 -3
- datajunction_server-0.0.1a45.dev2/datajunction_server/__about__.py +4 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/access/authentication/basic.py +13 -10
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/access/authentication/google.py +7 -9
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/attributes.py +23 -13
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/catalogs.py +23 -29
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/client.py +50 -49
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/cubes.py +18 -18
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/data.py +23 -33
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/dimensions.py +17 -17
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/djsql.py +8 -8
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/engines.py +11 -13
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/graphql/catalogs.py +2 -2
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/graphql/engines.py +2 -2
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/health.py +6 -6
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/helpers.py +142 -248
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/history.py +12 -14
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/materializations.py +31 -47
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/measures.py +26 -36
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/metrics.py +18 -30
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/namespaces.py +51 -47
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/nodes.py +238 -335
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/sql.py +11 -11
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/tags.py +26 -40
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/construction/build.py +73 -97
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/construction/dimensions.py +5 -12
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/construction/dj_query.py +22 -29
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/construction/utils.py +7 -20
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/attributetype.py +1 -49
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/catalog.py +0 -1
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/column.py +1 -1
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/dimensionlink.py +0 -1
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/materialization.py +0 -1
- datajunction_server-0.0.1a45.dev2/datajunction_server/database/namespace.py +25 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/node.py +4 -163
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/access/authentication/basic.py +8 -10
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/access/authentication/http.py +4 -7
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/engines.py +3 -3
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/materializations.py +16 -21
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/namespaces.py +86 -64
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/nodes.py +169 -286
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/access.py +4 -4
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/node.py +2 -8
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/dag.py +56 -101
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/ast.py +69 -98
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/utils.py +36 -21
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/pdm.lock +43 -119
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/pyproject.toml +9 -7
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/requirements/docker.txt +2 -4
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/requirements/test.txt +3 -7
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/attributes_test.py +9 -12
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/catalog_test.py +53 -69
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/client_test.py +22 -31
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/cubes_test.py +93 -108
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/data_test.py +155 -186
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/dimension_links_test.py +57 -73
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/dimensions_test.py +21 -31
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/djql_test.py +30 -40
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/engine_test.py +19 -23
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/graphql/catalog_test.py +9 -10
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/graphql/engine_test.py +8 -9
- datajunction_server-0.0.1a45.dev2/tests/api/health_test.py +26 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/helpers_test.py +6 -16
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/history_test.py +7 -11
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/materializations_test.py +60 -79
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/measures_test.py +22 -31
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/metrics_test.py +53 -71
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/namespaces_test.py +65 -88
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/node_update_test.py +6 -8
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/nodes_test.py +395 -493
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/routers_test.py +8 -10
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/sql_test.py +100 -104
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/tags_test.py +37 -42
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/conftest.py +101 -168
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/construction/build_test.py +50 -64
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/construction/compile_test.py +22 -39
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/construction/fixtures.py +6 -7
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/construction/inference_test.py +31 -45
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/construction/utils_test.py +6 -11
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/internal/authentication/basic_test.py +25 -51
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/internal/authentication/whoami_test.py +6 -8
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/models/node_test.py +2 -2
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/dag_test.py +5 -6
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/functions_test.py +400 -592
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/test_ast.py +77 -83
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/utils_test.py +4 -5
- datajunction_server-0.0.1a45.dev0/.env +0 -2
- datajunction_server-0.0.1a45.dev0/datajunction_server/__about__.py +0 -4
- datajunction_server-0.0.1a45.dev0/datajunction_server/database/namespace.py +0 -128
- datajunction_server-0.0.1a45.dev0/tests/api/health_test.py +0 -35
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/.coveragerc +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/.env.integration +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/.flake8 +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/.gitignore +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/.isort.cfg +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/.pre-commit-config.yaml +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/.pylintrc +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/Dockerfile +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/Makefile +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/README.md +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/alembic/README +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/alembic/env.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/alembic/script.py.mako +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/alembic/versions/2023_12_20_1829-724445d2b29d_initial_migration.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/alembic/versions/2024_01_08_2034-945d44abcd32_add_dimension_links.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/alembic/versions/2024_01_11_2032-c74b11566d82_add_column_order.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/alembic/versions/2024_01_18_2011-20f060b02772_switch_enum_values.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/alembic/versions/2024_01_23_0617-c9cef8864ecb_add_missing_table_attribute_to_source_.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/alembic/versions/2024_01_23_1655-a8e22109be24_availability_state_s_valid_through_ts_.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/alembic/versions/2024_02_22_0713-d61fb7e48cc3_cascade_deletes_to_dimension_links.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/alembic.ini +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/alembic_version.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/attributetype.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/availabilitystate.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/backfill.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/catalog.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/catalogengines.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/column.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/columnattribute.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/cube.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/database.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/engine.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/history.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/materialization.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/measures.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/metric_required_dimensions.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/metricmetadata.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/missingparent.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/node.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/nodeavailabilitystate.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/nodecolumns.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/nodemissingparents.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/nodenamespace.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/noderelationship.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/noderevision.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/partition.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/alembic_version.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/attributetype.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/availabilitystate.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/backfill.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/catalog.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/catalogengines.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/column.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/columnattribute.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/cube.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/database.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/engine.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/history.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/materialization.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/measures.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/metric_required_dimensions.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/metricmetadata.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/missingparent.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/node.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/nodeavailabilitystate.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/nodecolumns.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/nodemissingparents.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/nodenamespace.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/noderelationship.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/noderevision.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/partition.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/table.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/tablecolumns.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/tag.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/tagnoderelationship.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/prod/backup/users.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/table.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/tablecolumns.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/tag.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/tagnoderelationship.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/alembic_version.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/attributetype.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/availabilitystate.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/backfill.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/catalog.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/catalogengines.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/column.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/columnattribute.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/cube.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/database.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/engine.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/history.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/materialization.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/measures.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/metric_required_dimensions.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/metricmetadata.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/missingparent.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/node.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/nodeavailabilitystate.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/nodecolumns.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/nodemissingparents.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/nodenamespace.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/noderelationship.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/noderevision.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/partition.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/table.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/tablecolumns.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/tag.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/tagnoderelationship.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/test/backup/users.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/backup/users.csv +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/curl-format.txt +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/access/authentication/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/access/authentication/github.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/access/authentication/whoami.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/graphql/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/graphql/main.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/logging.conf +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/api/main.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/config.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/constants.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/construction/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/construction/exceptions.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/availabilitystate.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/backfill.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/base.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/database.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/engine.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/history.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/measure.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/metricmetadata.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/partition.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/tag.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/database/user.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/enum.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/errors.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/access/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/access/authentication/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/access/authentication/github.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/access/authentication/google.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/access/authentication/tokens.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/internal/access/authorization.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/materialization/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/materialization/jobs/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/materialization/jobs/cube_materialization.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/materialization/jobs/job_types.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/materialization/jobs/materialization_job.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/attribute.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/base.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/catalog.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/column.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/cube.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/database.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/dimensionlink.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/engine.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/history.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/materialization.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/measure.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/metric.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/node_type.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/partition.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/query.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/table.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/tag.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/models/user.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/naming.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/service_clients.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/functions.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/antlr4.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/exceptions.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/grammar/SqlBaseLexer.g4 +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/grammar/SqlBaseParser.g4 +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/grammar/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.interp +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.tokens +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.interp +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.tokens +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserListener.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserVisitor.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/sql/parsing/types.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/superset.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/transpilation.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/datajunction_server/typing.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/default.duckdb +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/dj.copy.db +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/dj.internal.db +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/dj.test.db +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/dj.tt.db +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/dj_prod.dump +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/dj_prod.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/scripts/docs-snippets.js +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/scripts/docs-snippets.sh +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/scripts/generate-openapi.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tester.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/druid_measures_cube.full.druid_spec.json +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/druid_measures_cube.full.partition.druid_spec.json +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/druid_measures_cube.full.partition.query.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/druid_measures_cube.full.query.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/druid_measures_cube.incremental.druid_spec.json +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/druid_measures_cube.incremental.patched.query.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/druid_measures_cube.incremental.query.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/druid_metrics_cube.incremental.druid_spec.json +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/druid_metrics_cube.incremental.query.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/spark_sql.full.config.json +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/spark_sql.full.materializations.json +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/spark_sql.full.partition.config.json +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/spark_sql.full.partition.materializations.json +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/spark_sql.full.partition.query.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/spark_sql.full.query.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/spark_sql.incremental.additional.query.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/spark_sql.incremental.config.json +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/files/materializations_test/spark_sql.incremental.query.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/api/graphql/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/construction/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/construction/exceptions_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/default.duckdb +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/duckdb.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/errors_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/examples.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/fixes_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/integration/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/integration/basic_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/internal/authentication/github_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/internal/authentication/http_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/internal/authentication/token_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/migrations_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/models/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/models/catalog_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/models/hash_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/models/measure_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/models/query_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/service_clients_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/backends/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/backends/antlr4_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/backends/types_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/__init__.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query1.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query10.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query11.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query12.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query13.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query14.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query15.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query16.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query17.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query18.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query19.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query2.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query20.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query21.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query22.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query23.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query24.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query25.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query26.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query27.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query28.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query29.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query3.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query30.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query31.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query32.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query33.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query34.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query35.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query36.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query37.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query38.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query39.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query4.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query40.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query41.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query42.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query43.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query44.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query45.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query46.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query47.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query48.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query49.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query5.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query50.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query51.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query52.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query53.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query54.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query55.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query56.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query57.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query58.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query59.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query6.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query60.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query61.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query62.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query63.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query64.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query65.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query66.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query67.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query68.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query69.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query7.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query70.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query71.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query72.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query73.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query74.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query75.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query76.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query77.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query78.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query79.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query8.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query80.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query81.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query82.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query83.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query84.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query85.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query86.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query87.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query88.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query89.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query9.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query90.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query91.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query92.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query93.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query94.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query95.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query96.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query97.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query98.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/ansi/query99.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query1.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query10.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query11.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query12.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query13.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query14.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query15.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query16.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query17.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query18.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query19.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query2.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query20.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query21.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query22.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query23.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query24.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query25.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query26.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query27.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query28.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query29.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query3.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query30.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query31.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query32.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query33.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query34.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query35.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query36.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query37.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query38.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query39.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query4.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query40.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query41.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query42.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query43.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query44.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query45.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query46.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query47.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query48.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query49.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query5.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query50.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query51.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query52.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query53.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query54.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query55.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query56.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query57.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query58.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query59.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query6.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query60.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query61.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query62.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query63.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query64.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query65.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query66.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query67.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query68.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query69.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query7.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query70.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query71.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query72.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query73.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query74.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query75.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query76.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query77.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query78.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query79.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query8.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query80.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query81.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query82.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query83.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query84.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query85.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query86.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query87.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query88.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query89.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query9.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query90.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query91.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query92.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query93.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query94.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query95.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query96.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query97.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query98.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/sparksql/query99.sql +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/parsing/queries/tpcds/test_tpcds.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/sql/utils.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/superset_test.py +0 -0
- {datajunction_server-0.0.1a45.dev0 → datajunction_server-0.0.1a45.dev2}/tests/transpilation_test.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: datajunction-server
|
|
3
|
-
Version: 0.0.1a45.
|
|
3
|
+
Version: 0.0.1a45.dev2
|
|
4
4
|
Summary: DataJunction server library for running to a DataJunction server
|
|
5
5
|
Project-URL: repository, https://github.com/DataJunction/dj
|
|
6
6
|
Author-email: DataJunction Authors <yian.shang@gmail.com>
|
|
@@ -14,11 +14,9 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
15
|
Requires-Python: <4.0,>=3.8
|
|
16
16
|
Requires-Dist: accept-types<1.0.0,>=0.4.1
|
|
17
|
-
Requires-Dist: aiosqlite>=0.20.0
|
|
18
17
|
Requires-Dist: alembic>=1.10.3
|
|
19
18
|
Requires-Dist: antlr4-python3-runtime==4.12.0
|
|
20
19
|
Requires-Dist: asciidag<1.0.0,>=0.2.0
|
|
21
|
-
Requires-Dist: asyncpg>=0.29.0
|
|
22
20
|
Requires-Dist: bcrypt>=4.0.1
|
|
23
21
|
Requires-Dist: cachelib<1.0.0,>=0.10.2
|
|
24
22
|
Requires-Dist: cachetools>=5.3.1
|
|
@@ -8,7 +8,7 @@ from fastapi import APIRouter, Depends, Form
|
|
|
8
8
|
from fastapi.responses import JSONResponse, Response
|
|
9
9
|
from fastapi.security import OAuth2PasswordRequestForm
|
|
10
10
|
from sqlalchemy import select
|
|
11
|
-
from sqlalchemy.
|
|
11
|
+
from sqlalchemy.orm import Session
|
|
12
12
|
|
|
13
13
|
from datajunction_server.constants import AUTH_COOKIE, LOGGED_IN_FLAG_COOKIE
|
|
14
14
|
from datajunction_server.database.user import OAuthProvider, User
|
|
@@ -24,17 +24,20 @@ router = APIRouter(tags=["Basic OAuth2"])
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
@router.post("/basic/user/")
|
|
27
|
-
|
|
27
|
+
def create_a_user(
|
|
28
28
|
email: str = Form(),
|
|
29
29
|
username: str = Form(),
|
|
30
30
|
password: str = Form(),
|
|
31
|
-
session:
|
|
31
|
+
session: Session = Depends(get_session),
|
|
32
32
|
) -> JSONResponse:
|
|
33
33
|
"""
|
|
34
34
|
Create a new user
|
|
35
35
|
"""
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
if (
|
|
37
|
+
session.execute(select(User).where(User.username == username))
|
|
38
|
+
.scalars()
|
|
39
|
+
.one_or_none()
|
|
40
|
+
):
|
|
38
41
|
raise DJException(
|
|
39
42
|
http_status_code=HTTPStatus.CONFLICT,
|
|
40
43
|
errors=[
|
|
@@ -51,8 +54,8 @@ async def create_a_user(
|
|
|
51
54
|
oauth_provider=OAuthProvider.BASIC,
|
|
52
55
|
)
|
|
53
56
|
session.add(new_user)
|
|
54
|
-
|
|
55
|
-
|
|
57
|
+
session.commit()
|
|
58
|
+
session.refresh(new_user)
|
|
56
59
|
return JSONResponse(
|
|
57
60
|
content={"message": "User successfully created"},
|
|
58
61
|
status_code=HTTPStatus.CREATED,
|
|
@@ -60,14 +63,14 @@ async def create_a_user(
|
|
|
60
63
|
|
|
61
64
|
|
|
62
65
|
@router.post("/basic/login/")
|
|
63
|
-
|
|
66
|
+
def login(
|
|
64
67
|
form_data: OAuth2PasswordRequestForm = Depends(),
|
|
65
|
-
session:
|
|
68
|
+
session: Session = Depends(get_session),
|
|
66
69
|
):
|
|
67
70
|
"""
|
|
68
71
|
Get a JWT token and set it as an HTTP only cookie
|
|
69
72
|
"""
|
|
70
|
-
user =
|
|
73
|
+
user = validate_user_password(
|
|
71
74
|
username=form_data.username,
|
|
72
75
|
password=form_data.password,
|
|
73
76
|
session=session,
|
|
@@ -14,7 +14,7 @@ import requests
|
|
|
14
14
|
from fastapi import APIRouter, Depends, Request
|
|
15
15
|
from google.oauth2 import id_token
|
|
16
16
|
from sqlalchemy import select
|
|
17
|
-
from sqlalchemy.
|
|
17
|
+
from sqlalchemy.orm import Session
|
|
18
18
|
from starlette.responses import RedirectResponse
|
|
19
19
|
|
|
20
20
|
from datajunction_server.constants import AUTH_COOKIE, LOGGED_IN_FLAG_COOKIE
|
|
@@ -46,11 +46,11 @@ def login(target: Optional[str] = None):
|
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
@router.get("/google/token/")
|
|
49
|
-
|
|
49
|
+
def get_access_token(
|
|
50
50
|
request: Request,
|
|
51
51
|
state: Optional[str] = None,
|
|
52
52
|
error: Optional[str] = None,
|
|
53
|
-
session:
|
|
53
|
+
session: Session = Depends(get_session),
|
|
54
54
|
setting: Settings = Depends(get_settings),
|
|
55
55
|
):
|
|
56
56
|
"""
|
|
@@ -75,10 +75,8 @@ async def get_access_token(
|
|
|
75
75
|
audience=setting.google_oauth_client_id,
|
|
76
76
|
)
|
|
77
77
|
|
|
78
|
-
existing_user = (
|
|
79
|
-
|
|
80
|
-
select(User).where(User.email == user_data["email"]),
|
|
81
|
-
)
|
|
78
|
+
existing_user = session.execute(
|
|
79
|
+
select(User).where(User.email == user_data["email"]),
|
|
82
80
|
).scalar()
|
|
83
81
|
if existing_user:
|
|
84
82
|
_logger.info("OAuth user found")
|
|
@@ -93,8 +91,8 @@ async def get_access_token(
|
|
|
93
91
|
oauth_provider=OAuthProvider.GOOGLE,
|
|
94
92
|
)
|
|
95
93
|
session.add(new_user)
|
|
96
|
-
|
|
97
|
-
|
|
94
|
+
session.commit()
|
|
95
|
+
session.refresh(new_user)
|
|
98
96
|
user = new_user
|
|
99
97
|
response = RedirectResponse(url=urljoin(settings.frontend_host, state)) # type: ignore
|
|
100
98
|
response.set_cookie(
|
|
@@ -7,7 +7,7 @@ from typing import List
|
|
|
7
7
|
|
|
8
8
|
from fastapi import Depends
|
|
9
9
|
from sqlalchemy import select
|
|
10
|
-
from sqlalchemy.
|
|
10
|
+
from sqlalchemy.orm import Session
|
|
11
11
|
|
|
12
12
|
from datajunction_server.database.attributetype import AttributeType
|
|
13
13
|
from datajunction_server.errors import DJAlreadyExistsException, DJException
|
|
@@ -26,13 +26,13 @@ router = SecureAPIRouter(tags=["attributes"])
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
@router.get("/attributes/", response_model=List[AttributeTypeBase])
|
|
29
|
-
|
|
30
|
-
*, session:
|
|
29
|
+
def list_attributes(
|
|
30
|
+
*, session: Session = Depends(get_session)
|
|
31
31
|
) -> List[AttributeTypeBase]:
|
|
32
32
|
"""
|
|
33
33
|
List all available attribute types.
|
|
34
34
|
"""
|
|
35
|
-
attributes =
|
|
35
|
+
attributes = session.execute(select(AttributeType)).scalars().all()
|
|
36
36
|
return [AttributeTypeBase.from_orm(attr) for attr in attributes]
|
|
37
37
|
|
|
38
38
|
|
|
@@ -42,8 +42,8 @@ async def list_attributes(
|
|
|
42
42
|
status_code=201,
|
|
43
43
|
name="Add an Attribute Type",
|
|
44
44
|
)
|
|
45
|
-
|
|
46
|
-
data: MutableAttributeTypeFields, *, session:
|
|
45
|
+
def add_attribute_type(
|
|
46
|
+
data: MutableAttributeTypeFields, *, session: Session = Depends(get_session)
|
|
47
47
|
) -> AttributeTypeBase:
|
|
48
48
|
"""
|
|
49
49
|
Add a new attribute type
|
|
@@ -52,16 +52,26 @@ async def add_attribute_type(
|
|
|
52
52
|
raise DJException(
|
|
53
53
|
message="Cannot use `system` as the attribute type namespace as it is reserved.",
|
|
54
54
|
)
|
|
55
|
-
|
|
55
|
+
statement = select(AttributeType).where(AttributeType.name == data.name)
|
|
56
|
+
attribute_type = session.execute(statement).unique().one_or_none()
|
|
56
57
|
if attribute_type:
|
|
57
58
|
raise DJAlreadyExistsException(
|
|
58
59
|
message=f"Attribute type `{data.name}` already exists!",
|
|
59
60
|
)
|
|
60
|
-
attribute_type =
|
|
61
|
-
|
|
61
|
+
attribute_type = AttributeType(
|
|
62
|
+
namespace=data.namespace,
|
|
63
|
+
name=data.name,
|
|
64
|
+
description=data.description,
|
|
65
|
+
allowed_node_types=data.allowed_node_types,
|
|
66
|
+
uniqueness_scope=data.uniqueness_scope if data.uniqueness_scope else [],
|
|
67
|
+
)
|
|
68
|
+
session.add(attribute_type)
|
|
69
|
+
session.commit()
|
|
70
|
+
session.refresh(attribute_type)
|
|
71
|
+
return attribute_type
|
|
62
72
|
|
|
63
73
|
|
|
64
|
-
|
|
74
|
+
def default_attribute_types(session: Session = Depends(get_session)):
|
|
65
75
|
"""
|
|
66
76
|
Loads all the column attribute types that are supported by the system
|
|
67
77
|
by default into the database.
|
|
@@ -95,7 +105,7 @@ async def default_attribute_types(session: AsyncSession = Depends(get_session)):
|
|
|
95
105
|
set(default_attribute_type_names.keys()),
|
|
96
106
|
),
|
|
97
107
|
)
|
|
98
|
-
attribute_types =
|
|
108
|
+
attribute_types = session.execute(statement).scalars().all()
|
|
99
109
|
for type_ in attribute_types:
|
|
100
110
|
# if type_: # pragma: no cover
|
|
101
111
|
type_.name = default_attribute_type_names[type_.name].name
|
|
@@ -113,7 +123,7 @@ async def default_attribute_types(session: AsyncSession = Depends(get_session)):
|
|
|
113
123
|
new_types = set(default_attribute_type_names.keys()) - {
|
|
114
124
|
type_.name for type_ in attribute_types if type_
|
|
115
125
|
}
|
|
116
|
-
session.
|
|
126
|
+
session.bulk_save_objects(
|
|
117
127
|
[default_attribute_type_names[name] for name in new_types],
|
|
118
128
|
)
|
|
119
|
-
|
|
129
|
+
session.commit()
|
|
@@ -8,8 +8,7 @@ from typing import List
|
|
|
8
8
|
|
|
9
9
|
from fastapi import Depends, HTTPException
|
|
10
10
|
from sqlalchemy import select
|
|
11
|
-
from sqlalchemy.
|
|
12
|
-
from sqlalchemy.orm import joinedload
|
|
11
|
+
from sqlalchemy.orm import Session
|
|
13
12
|
|
|
14
13
|
from datajunction_server.api.engines import EngineInfo
|
|
15
14
|
from datajunction_server.api.helpers import get_catalog_by_name
|
|
@@ -29,27 +28,22 @@ UNKNOWN_CATALOG_ID = 0
|
|
|
29
28
|
|
|
30
29
|
|
|
31
30
|
@router.get("/catalogs/", response_model=List[CatalogInfo])
|
|
32
|
-
|
|
33
|
-
*, session: AsyncSession = Depends(get_session)
|
|
34
|
-
) -> List[CatalogInfo]:
|
|
31
|
+
def list_catalogs(*, session: Session = Depends(get_session)) -> List[CatalogInfo]:
|
|
35
32
|
"""
|
|
36
33
|
List all available catalogs
|
|
37
34
|
"""
|
|
38
|
-
statement = select(Catalog).options(joinedload(Catalog.engines))
|
|
39
35
|
return [
|
|
40
36
|
CatalogInfo.from_orm(catalog)
|
|
41
|
-
for catalog in
|
|
37
|
+
for catalog in session.execute(select(Catalog)).scalars()
|
|
42
38
|
]
|
|
43
39
|
|
|
44
40
|
|
|
45
41
|
@router.get("/catalogs/{name}/", response_model=CatalogInfo, name="Get a Catalog")
|
|
46
|
-
|
|
47
|
-
name: str, *, session: AsyncSession = Depends(get_session)
|
|
48
|
-
) -> CatalogInfo:
|
|
42
|
+
def get_catalog(name: str, *, session: Session = Depends(get_session)) -> CatalogInfo:
|
|
49
43
|
"""
|
|
50
44
|
Return a catalog by name
|
|
51
45
|
"""
|
|
52
|
-
return
|
|
46
|
+
return get_catalog_by_name(session, name)
|
|
53
47
|
|
|
54
48
|
|
|
55
49
|
@router.post(
|
|
@@ -58,16 +52,16 @@ async def get_catalog(
|
|
|
58
52
|
status_code=201,
|
|
59
53
|
name="Add A Catalog",
|
|
60
54
|
)
|
|
61
|
-
|
|
55
|
+
def add_catalog(
|
|
62
56
|
data: CatalogInfo,
|
|
63
57
|
*,
|
|
64
|
-
session:
|
|
58
|
+
session: Session = Depends(get_session),
|
|
65
59
|
) -> CatalogInfo:
|
|
66
60
|
"""
|
|
67
61
|
Add a Catalog
|
|
68
62
|
"""
|
|
69
63
|
try:
|
|
70
|
-
|
|
64
|
+
get_catalog_by_name(session, data.name)
|
|
71
65
|
except DJException:
|
|
72
66
|
pass
|
|
73
67
|
else:
|
|
@@ -89,15 +83,15 @@ async def add_catalog(
|
|
|
89
83
|
],
|
|
90
84
|
)
|
|
91
85
|
catalog.engines.extend(
|
|
92
|
-
|
|
86
|
+
list_new_engines(
|
|
93
87
|
session=session,
|
|
94
88
|
catalog=catalog,
|
|
95
89
|
create_engines=data.engines, # type: ignore
|
|
96
90
|
),
|
|
97
91
|
)
|
|
98
92
|
session.add(catalog)
|
|
99
|
-
|
|
100
|
-
|
|
93
|
+
session.commit()
|
|
94
|
+
session.refresh(catalog)
|
|
101
95
|
|
|
102
96
|
return CatalogInfo.from_orm(catalog)
|
|
103
97
|
|
|
@@ -108,27 +102,27 @@ async def add_catalog(
|
|
|
108
102
|
status_code=201,
|
|
109
103
|
name="Add Engines to a Catalog",
|
|
110
104
|
)
|
|
111
|
-
|
|
105
|
+
def add_engines_to_catalog(
|
|
112
106
|
name: str,
|
|
113
107
|
data: List[EngineInfo],
|
|
114
108
|
*,
|
|
115
|
-
session:
|
|
109
|
+
session: Session = Depends(get_session),
|
|
116
110
|
) -> CatalogInfo:
|
|
117
111
|
"""
|
|
118
112
|
Attach one or more engines to a catalog
|
|
119
113
|
"""
|
|
120
|
-
catalog =
|
|
114
|
+
catalog = get_catalog_by_name(session, name)
|
|
121
115
|
catalog.engines.extend(
|
|
122
|
-
|
|
116
|
+
list_new_engines(session=session, catalog=catalog, create_engines=data),
|
|
123
117
|
)
|
|
124
118
|
session.add(catalog)
|
|
125
|
-
|
|
126
|
-
|
|
119
|
+
session.commit()
|
|
120
|
+
session.refresh(catalog)
|
|
127
121
|
return CatalogInfo.from_orm(catalog)
|
|
128
122
|
|
|
129
123
|
|
|
130
|
-
|
|
131
|
-
session:
|
|
124
|
+
def list_new_engines(
|
|
125
|
+
session: Session,
|
|
132
126
|
catalog: Catalog,
|
|
133
127
|
create_engines: List[EngineInfo],
|
|
134
128
|
) -> List[Engine]:
|
|
@@ -138,7 +132,7 @@ async def list_new_engines(
|
|
|
138
132
|
new_engines = []
|
|
139
133
|
for engine_ref in create_engines:
|
|
140
134
|
already_set = False
|
|
141
|
-
engine =
|
|
135
|
+
engine = get_engine(session, engine_ref.name, engine_ref.version)
|
|
142
136
|
for set_engine in catalog.engines:
|
|
143
137
|
if engine.name == set_engine.name and engine.version == set_engine.version:
|
|
144
138
|
already_set = True
|
|
@@ -147,17 +141,17 @@ async def list_new_engines(
|
|
|
147
141
|
return new_engines
|
|
148
142
|
|
|
149
143
|
|
|
150
|
-
|
|
144
|
+
def default_catalog(session: Session = Depends(get_session)):
|
|
151
145
|
"""
|
|
152
146
|
Loads a default catalog for nodes that are pure SQL and don't belong in any
|
|
153
147
|
particular catalog. This typically applies to on-the-fly user-defined dimensions.
|
|
154
148
|
"""
|
|
155
149
|
statement = select(Catalog).filter(Catalog.id == UNKNOWN_CATALOG_ID)
|
|
156
|
-
catalogs =
|
|
150
|
+
catalogs = session.execute(statement).all()
|
|
157
151
|
if not catalogs:
|
|
158
152
|
unknown = Catalog(
|
|
159
153
|
id=UNKNOWN_CATALOG_ID,
|
|
160
154
|
name="unknown",
|
|
161
155
|
)
|
|
162
156
|
session.add(unknown)
|
|
163
|
-
|
|
157
|
+
session.commit()
|
|
@@ -6,13 +6,12 @@ import json
|
|
|
6
6
|
import logging
|
|
7
7
|
|
|
8
8
|
from fastapi import Depends
|
|
9
|
-
from sqlalchemy.
|
|
10
|
-
from sqlalchemy.orm import joinedload
|
|
9
|
+
from sqlalchemy.orm import Session
|
|
11
10
|
|
|
12
11
|
from datajunction_server.api.helpers import get_node_by_name
|
|
13
|
-
from datajunction_server.database import Node, NodeRevision
|
|
14
12
|
from datajunction_server.internal.access.authentication.http import SecureAPIRouter
|
|
15
13
|
from datajunction_server.models.materialization import MaterializationJobTypeEnum
|
|
14
|
+
from datajunction_server.models.node import NodeOutput
|
|
16
15
|
from datajunction_server.models.node_type import NodeType
|
|
17
16
|
from datajunction_server.utils import get_session, get_settings
|
|
18
17
|
|
|
@@ -22,58 +21,62 @@ router = SecureAPIRouter(tags=["client"])
|
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
@router.get("/datajunction-clients/python/new_node/{node_name}", response_model=str)
|
|
25
|
-
|
|
26
|
-
node_name: str, *, session:
|
|
24
|
+
def client_code_for_creating_node(
|
|
25
|
+
node_name: str, *, session: Session = Depends(get_session)
|
|
27
26
|
) -> str:
|
|
28
27
|
"""
|
|
29
28
|
Generate the Python client code used for creating this node
|
|
30
29
|
"""
|
|
31
30
|
node_short_name = node_name.split(".")[-1]
|
|
32
|
-
node =
|
|
33
|
-
|
|
34
|
-
node_name,
|
|
35
|
-
options=[
|
|
36
|
-
joinedload(Node.current).options(
|
|
37
|
-
*NodeRevision.default_load_options(),
|
|
38
|
-
joinedload(NodeRevision.cube_elements),
|
|
39
|
-
),
|
|
40
|
-
],
|
|
41
|
-
raise_if_not_exists=True,
|
|
42
|
-
)
|
|
31
|
+
node = get_node_by_name(session, node_name)
|
|
32
|
+
|
|
43
33
|
# Generic user-configurable node creation params
|
|
44
|
-
params =
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
34
|
+
params = NodeOutput.from_orm(node).dict(
|
|
35
|
+
exclude={
|
|
36
|
+
"id",
|
|
37
|
+
"version",
|
|
38
|
+
"type",
|
|
39
|
+
"catalog_id",
|
|
40
|
+
"lineage",
|
|
41
|
+
"status",
|
|
42
|
+
"metric_metadata_id",
|
|
43
|
+
"mode",
|
|
44
|
+
"node_id",
|
|
45
|
+
"updated_at",
|
|
46
|
+
"materializations",
|
|
47
|
+
"columns",
|
|
48
|
+
"catalog",
|
|
49
|
+
"parents",
|
|
50
|
+
"metric_metadata",
|
|
51
|
+
"query" if node.type == NodeType.CUBE else "",
|
|
52
|
+
"dimension_links",
|
|
53
|
+
"created_at",
|
|
54
|
+
"current_version",
|
|
55
|
+
"missing_table",
|
|
56
|
+
"namespace",
|
|
57
|
+
"tags",
|
|
58
|
+
},
|
|
59
|
+
exclude_none=True,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
params["primary_key"] = [col.name for col in node.current.primary_key()]
|
|
54
63
|
|
|
55
|
-
for key in params:
|
|
56
|
-
if (
|
|
57
|
-
not isinstance(params[key], list)
|
|
58
|
-
and key != "query"
|
|
59
|
-
and key != "lineage"
|
|
60
|
-
and params[key]
|
|
61
|
-
):
|
|
64
|
+
for key in params:
|
|
65
|
+
if not isinstance(params[key], list) and key != "query" and key != "lineage":
|
|
62
66
|
params[key] = f'"{params[key]}"'
|
|
63
|
-
if key == "query"
|
|
67
|
+
if key == "query":
|
|
64
68
|
params[key] = f'"""{params[key]}"""'
|
|
65
69
|
|
|
66
70
|
# Cube-specific params
|
|
67
71
|
cube_params = []
|
|
68
|
-
if node.type == NodeType.CUBE:
|
|
72
|
+
if node.type == NodeType.CUBE:
|
|
69
73
|
ordering = {
|
|
70
|
-
col.name: col.order or idx
|
|
71
|
-
for idx, col in enumerate(node.current.columns) # type: ignore
|
|
74
|
+
col.name: col.order or idx for idx, col in enumerate(node.current.columns)
|
|
72
75
|
}
|
|
73
76
|
metrics_list = sorted(
|
|
74
77
|
[
|
|
75
78
|
elem.node_revisions[-1].name
|
|
76
|
-
for elem in node.current.cube_elements
|
|
79
|
+
for elem in node.current.cube_elements
|
|
77
80
|
if elem.node_revisions[-1].type == NodeType.METRIC
|
|
78
81
|
],
|
|
79
82
|
key=lambda x: ordering[x],
|
|
@@ -81,7 +84,7 @@ async def client_code_for_creating_node(
|
|
|
81
84
|
dimensions_list = sorted(
|
|
82
85
|
[
|
|
83
86
|
elem.node_revisions[-1].name + "." + elem.name
|
|
84
|
-
for elem in node.current.cube_elements
|
|
87
|
+
for elem in node.current.cube_elements
|
|
85
88
|
if elem.node_revisions[-1].type == NodeType.DIMENSION
|
|
86
89
|
],
|
|
87
90
|
key=lambda x: ordering[x],
|
|
@@ -94,14 +97,12 @@ async def client_code_for_creating_node(
|
|
|
94
97
|
]
|
|
95
98
|
|
|
96
99
|
formatted_params = ",\n".join(
|
|
97
|
-
[f" {k}={params[k]}" for k in sorted(params.keys())
|
|
98
|
-
+ cube_params,
|
|
100
|
+
[f" {k}={params[k]}" for k in sorted(params.keys())] + cube_params,
|
|
99
101
|
)
|
|
100
102
|
|
|
101
|
-
node_type = node.type # type: ignore
|
|
102
103
|
client_code = f"""dj = DJBuilder(DJ_URL)
|
|
103
104
|
|
|
104
|
-
{node_short_name} = dj.create_{
|
|
105
|
+
{node_short_name} = dj.create_{node.type}(
|
|
105
106
|
{formatted_params}
|
|
106
107
|
)"""
|
|
107
108
|
return client_code # type: ignore
|
|
@@ -111,17 +112,17 @@ async def client_code_for_creating_node(
|
|
|
111
112
|
"/datajunction-clients/python/add_materialization/{node_name}/{materialization_name}",
|
|
112
113
|
response_model=str,
|
|
113
114
|
)
|
|
114
|
-
|
|
115
|
+
def client_code_for_adding_materialization(
|
|
115
116
|
node_name: str,
|
|
116
117
|
materialization_name: str,
|
|
117
118
|
*,
|
|
118
|
-
session:
|
|
119
|
+
session: Session = Depends(get_session),
|
|
119
120
|
) -> str:
|
|
120
121
|
"""
|
|
121
122
|
Generate the Python client code used for adding this materialization
|
|
122
123
|
"""
|
|
123
124
|
node_short_name = node_name.split(".")[-1]
|
|
124
|
-
node =
|
|
125
|
+
node = get_node_by_name(session, node_name)
|
|
125
126
|
materialization = [
|
|
126
127
|
materialization
|
|
127
128
|
for materialization in node.current.materializations
|
|
@@ -159,18 +160,18 @@ materialization = MaterializationConfig(
|
|
|
159
160
|
"/datajunction-clients/python/link_dimension/{node_name}/{column}/{dimension}/",
|
|
160
161
|
response_model=str,
|
|
161
162
|
)
|
|
162
|
-
|
|
163
|
+
def client_code_for_linking_dimension_to_node(
|
|
163
164
|
node_name: str,
|
|
164
165
|
column: str,
|
|
165
166
|
dimension: str,
|
|
166
167
|
*,
|
|
167
|
-
session:
|
|
168
|
+
session: Session = Depends(get_session),
|
|
168
169
|
) -> str:
|
|
169
170
|
"""
|
|
170
171
|
Generate the Python client code used for linking this node's column to a dimension
|
|
171
172
|
"""
|
|
172
173
|
node_short_name = node_name.split(".")[-1]
|
|
173
|
-
node =
|
|
174
|
+
node = get_node_by_name(session, node_name)
|
|
174
175
|
client_code = f"""dj = DJBuilder(DJ_URL)
|
|
175
176
|
{node_short_name} = dj.{node.type}(
|
|
176
177
|
"{node.name}"
|
|
@@ -6,11 +6,10 @@ import logging
|
|
|
6
6
|
from typing import List, Optional
|
|
7
7
|
|
|
8
8
|
from fastapi import Depends, Query
|
|
9
|
-
from sqlalchemy.
|
|
9
|
+
from sqlalchemy.orm import Session
|
|
10
10
|
|
|
11
|
-
from datajunction_server.api.helpers import get_catalog_by_name
|
|
11
|
+
from datajunction_server.api.helpers import get_catalog_by_name, get_node_by_name
|
|
12
12
|
from datajunction_server.construction.dimensions import build_dimensions_from_cube_query
|
|
13
|
-
from datajunction_server.database.node import Node
|
|
14
13
|
from datajunction_server.internal.access.authentication.http import SecureAPIRouter
|
|
15
14
|
from datajunction_server.internal.access.authorization import validate_access
|
|
16
15
|
from datajunction_server.internal.nodes import get_cube_revision_metadata
|
|
@@ -21,6 +20,7 @@ from datajunction_server.models.cube import (
|
|
|
21
20
|
DimensionValues,
|
|
22
21
|
)
|
|
23
22
|
from datajunction_server.models.metric import TranslatedSQL
|
|
23
|
+
from datajunction_server.models.node_type import NodeType
|
|
24
24
|
from datajunction_server.models.query import QueryCreate
|
|
25
25
|
from datajunction_server.naming import from_amenable_name
|
|
26
26
|
from datajunction_server.service_clients import QueryServiceClient
|
|
@@ -36,17 +36,17 @@ router = SecureAPIRouter(tags=["cubes"])
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
@router.get("/cubes/{name}/", name="Get a Cube")
|
|
39
|
-
|
|
40
|
-
name: str, *, session:
|
|
39
|
+
def get_cube(
|
|
40
|
+
name: str, *, session: Session = Depends(get_session)
|
|
41
41
|
) -> CubeRevisionMetadata:
|
|
42
42
|
"""
|
|
43
43
|
Get information on a cube
|
|
44
44
|
"""
|
|
45
|
-
return
|
|
45
|
+
return get_cube_revision_metadata(session, name)
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
@router.get("/cubes/{name}/dimensions/sql", name="Dimensions SQL for Cube")
|
|
49
|
-
|
|
49
|
+
def get_cube_dimension_sql(
|
|
50
50
|
name: str,
|
|
51
51
|
*,
|
|
52
52
|
dimensions: List[str] = Query([], description="Dimensions to get values for"),
|
|
@@ -59,7 +59,7 @@ async def get_cube_dimension_sql(
|
|
|
59
59
|
description="Number of rows to limit the data retrieved to",
|
|
60
60
|
),
|
|
61
61
|
include_counts: bool = False,
|
|
62
|
-
session:
|
|
62
|
+
session: Session = Depends(get_session),
|
|
63
63
|
validate_access: access.ValidateAccessFn = Depends( # pylint: disable=redefined-outer-name
|
|
64
64
|
validate_access,
|
|
65
65
|
),
|
|
@@ -67,11 +67,11 @@ async def get_cube_dimension_sql(
|
|
|
67
67
|
"""
|
|
68
68
|
Generates SQL to retrieve all unique values of a dimension for the cube
|
|
69
69
|
"""
|
|
70
|
-
node =
|
|
71
|
-
|
|
72
|
-
return
|
|
70
|
+
node = get_node_by_name(session=session, name=name, node_type=NodeType.CUBE)
|
|
71
|
+
cube = node.current
|
|
72
|
+
return build_dimensions_from_cube_query(
|
|
73
73
|
session,
|
|
74
|
-
|
|
74
|
+
cube,
|
|
75
75
|
dimensions,
|
|
76
76
|
filters,
|
|
77
77
|
limit,
|
|
@@ -84,7 +84,7 @@ async def get_cube_dimension_sql(
|
|
|
84
84
|
"/cubes/{name}/dimensions/data",
|
|
85
85
|
name="Dimensions Values for Cube",
|
|
86
86
|
)
|
|
87
|
-
|
|
87
|
+
def get_cube_dimension_values( # pylint: disable=too-many-locals
|
|
88
88
|
name: str,
|
|
89
89
|
*,
|
|
90
90
|
dimensions: List[str] = Query([], description="Dimensions to get values for"),
|
|
@@ -98,7 +98,7 @@ async def get_cube_dimension_values( # pylint: disable=too-many-locals
|
|
|
98
98
|
),
|
|
99
99
|
include_counts: bool = False,
|
|
100
100
|
async_: bool = False,
|
|
101
|
-
session:
|
|
101
|
+
session: Session = Depends(get_session),
|
|
102
102
|
query_service_client: QueryServiceClient = Depends(get_query_service_client),
|
|
103
103
|
validate_access: access.ValidateAccessFn = Depends( # pylint: disable=redefined-outer-name
|
|
104
104
|
validate_access,
|
|
@@ -107,9 +107,9 @@ async def get_cube_dimension_values( # pylint: disable=too-many-locals
|
|
|
107
107
|
"""
|
|
108
108
|
All unique values of a dimension from the cube
|
|
109
109
|
"""
|
|
110
|
-
node =
|
|
111
|
-
cube = node.current
|
|
112
|
-
translated_sql =
|
|
110
|
+
node = get_node_by_name(session=session, name=name, node_type=NodeType.CUBE)
|
|
111
|
+
cube = node.current
|
|
112
|
+
translated_sql = build_dimensions_from_cube_query(
|
|
113
113
|
session,
|
|
114
114
|
cube,
|
|
115
115
|
dimensions,
|
|
@@ -119,7 +119,7 @@ async def get_cube_dimension_values( # pylint: disable=too-many-locals
|
|
|
119
119
|
validate_access,
|
|
120
120
|
)
|
|
121
121
|
if cube.availability:
|
|
122
|
-
catalog =
|
|
122
|
+
catalog = get_catalog_by_name( # pragma: no cover
|
|
123
123
|
session,
|
|
124
124
|
cube.availability.catalog, # type: ignore
|
|
125
125
|
)
|