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