datajunction-server 0.0.1a35.dev0__tar.gz → 0.0.1a35.dev1__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.1a35.dev1/.env +3 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.gitignore +3 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/PKG-INFO +2 -1
- datajunction_server-0.0.1a35.dev1/alembic/versions/2023_11_21_1611-d1a8716cf2d2_add_materialization_strategy_and_job_.py +69 -0
- datajunction_server-0.0.1a35.dev1/datajunction_server/__about__.py +4 -0
- datajunction_server-0.0.1a35.dev1/datajunction_server/api/cubes.py +155 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/data.py +1 -1
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/helpers.py +28 -20
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/main.py +10 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/materializations.py +11 -1
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/nodes.py +18 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/sql.py +1 -1
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/config.py +3 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/constants.py +1 -1
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/construction/build.py +132 -61
- datajunction_server-0.0.1a35.dev1/datajunction_server/construction/dimensions.py +125 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/materializations.py +159 -191
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/nodes.py +50 -99
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/materialization/jobs/cube_materialization.py +10 -71
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/column.py +17 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/cube.py +20 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/materialization.py +135 -1
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/metric.py +1 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/node.py +10 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/partition.py +11 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/query.py +1 -1
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/ast.py +12 -1
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/dj.internal.db +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/pdm.lock +230 -1
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/pyproject.toml +1 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/cubes_test.py +660 -580
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/data_test.py +35 -27
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/sql_test.py +96 -92
- datajunction_server-0.0.1a35.dev0/.env +0 -2
- datajunction_server-0.0.1a35.dev0/datajunction_server/__about__.py +0 -4
- datajunction_server-0.0.1a35.dev0/datajunction_server/api/cubes.py +0 -28
- datajunction_server-0.0.1a35.dev0/tests/default.duckdb +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.coveragerc +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.env.integration +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.flake8 +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.isort.cfg +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.pre-commit-config.yaml +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.pylintrc +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/Dockerfile +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/Makefile +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/README.md +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/README +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/env.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/script.py.mako +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_07_07_2006-4e1ff36c27c6_initial_migration.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_07_11_2337-bd313a10e2a8_add_bound_dimensions_attribute_to_.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_07_14_0428-5c3d0c958c3c_add_node_to_history.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_07_30_1608-4147da2ac841_add_deactivated_to_materialization.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_08_02_0055-ccc77abcf899_add_deactivated_to_namespace.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_08_08_1856-cde75f986a62_user_model.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_08_18_2348-fe8d3dbe512a_store_column_level_lineage.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_09_18_1346-f2e9ef937daf_add_measures.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_09_20_2049-879128f3e778_add_display_name_to_column.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_09_21_0033-b75e5163b09d_add_description_and_display_name_to_.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_10_02_1642-d8fa1e6371a7_add_url_to_availability_state.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_10_08_1438-58e246fba34b_add_partitions_and_backfills.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_10_24_0354-87cf9c00ac00_add_metric_metadata.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic.ini +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/access/authentication/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/access/authentication/basic.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/access/authentication/github.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/access/authentication/google.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/access/authentication/whoami.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/attributes.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/catalogs.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/client.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/dimensions.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/djsql.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/engines.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/graphql/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/graphql/catalogs.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/graphql/engines.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/graphql/main.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/health.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/history.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/logging.conf +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/measures.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/metrics.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/namespaces.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/tags.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/construction/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/construction/dj_query.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/construction/exceptions.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/construction/utils.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/errors.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authentication/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authentication/basic.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authentication/github.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authentication/google.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authentication/http.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authentication/tokens.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authorization.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/engines.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/namespaces.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/materialization/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/materialization/jobs/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/materialization/jobs/materialization_job.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/access.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/attribute.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/base.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/catalog.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/database.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/engine.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/history.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/measure.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/table.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/tag.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/user.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/service_clients.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/dag.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/functions.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/antlr4.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/exceptions.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/SqlBaseLexer.g4 +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/SqlBaseParser.g4 +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.interp +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.tokens +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.interp +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.tokens +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserListener.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserVisitor.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/types.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/superset.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/transpilation.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/typing.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/utils.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/default.duckdb +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/dj.copy.db +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/dj.demo.db +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/dj.test.db +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/requirements/docker.txt +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/requirements/test.txt +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/scripts/docs-snippets.js +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/scripts/docs-snippets.sh +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/scripts/generate-openapi.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/attributes_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/catalog_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/client_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/dimensions_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/djql_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/engine_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/graphql/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/graphql/catalog_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/graphql/engine_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/health_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/helpers_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/history_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/measures_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/metrics_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/namespaces_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/node_update_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/nodes_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/routers_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/tags_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/conftest.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/build_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/compile_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/exceptions_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/fixtures.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/inference_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/utils_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0/tests/api → datajunction_server-0.0.1a35.dev1/tests}/default.duckdb +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/duckdb.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/errors_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/examples.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/fixes_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/integration/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/integration/basic_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/internal/authentication/basic_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/internal/authentication/github_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/internal/authentication/http_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/internal/authentication/token_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/internal/authentication/whoami_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/migrations_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/models/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/models/catalog_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/models/hash_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/models/measure_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/models/node_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/models/query_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/service_clients_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/dag_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/functions_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/backends/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/backends/antlr4_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/backends/types_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query1.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query10.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query11.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query12.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query13.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query14.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query15.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query16.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query17.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query18.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query19.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query2.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query20.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query21.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query22.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query23.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query24.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query25.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query26.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query27.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query28.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query29.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query3.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query30.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query31.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query32.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query33.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query34.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query35.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query36.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query37.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query38.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query39.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query4.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query40.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query41.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query42.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query43.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query44.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query45.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query46.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query47.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query48.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query49.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query5.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query50.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query51.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query52.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query53.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query54.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query55.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query56.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query57.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query58.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query59.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query6.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query60.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query61.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query62.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query63.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query64.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query65.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query66.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query67.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query68.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query69.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query7.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query70.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query71.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query72.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query73.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query74.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query75.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query76.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query77.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query78.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query79.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query8.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query80.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query81.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query82.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query83.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query84.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query85.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query86.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query87.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query88.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query89.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query9.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query90.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query91.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query92.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query93.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query94.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query95.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query96.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query97.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query98.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query99.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query1.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query10.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query11.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query12.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query13.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query14.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query15.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query16.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query17.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query18.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query19.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query2.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query20.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query21.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query22.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query23.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query24.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query25.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query26.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query27.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query28.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query29.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query3.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query30.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query31.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query32.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query33.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query34.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query35.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query36.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query37.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query38.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query39.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query4.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query40.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query41.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query42.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query43.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query44.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query45.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query46.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query47.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query48.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query49.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query5.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query50.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query51.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query52.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query53.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query54.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query55.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query56.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query57.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query58.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query59.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query6.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query60.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query61.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query62.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query63.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query64.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query65.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query66.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query67.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query68.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query69.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query7.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query70.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query71.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query72.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query73.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query74.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query75.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query76.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query77.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query78.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query79.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query8.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query80.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query81.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query82.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query83.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query84.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query85.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query86.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query87.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query88.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query89.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query9.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query90.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query91.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query92.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query93.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query94.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query95.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query96.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query97.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query98.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query99.sql +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/test_tpcds.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/test_ast.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/utils.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/superset_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/transpilation_test.py +0 -0
- {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/utils_test.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: datajunction-server
|
|
3
|
-
Version: 0.0.1a35.
|
|
3
|
+
Version: 0.0.1a35.dev1
|
|
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>
|
|
@@ -22,6 +22,7 @@ Requires-Dist: cachelib<1.0.0,>=0.10.2
|
|
|
22
22
|
Requires-Dist: cachetools>=5.3.1
|
|
23
23
|
Requires-Dist: celery<6.0.0,>=5.2.7
|
|
24
24
|
Requires-Dist: cryptography>=41.0.3
|
|
25
|
+
Requires-Dist: fastapi-cache2>=0.2.1
|
|
25
26
|
Requires-Dist: fastapi<0.80.0,>=0.79.0
|
|
26
27
|
Requires-Dist: google-api-python-client>=2.95.0
|
|
27
28
|
Requires-Dist: google-auth-httplib2>=0.1.0
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""Add materialization strategy and job type
|
|
2
|
+
|
|
3
|
+
Revision ID: d1a8716cf2d2
|
|
4
|
+
Revises: 87cf9c00ac00
|
|
5
|
+
Create Date: 2023-11-21 16:11:01.741721+00:00
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
# pylint: disable=no-member, invalid-name, missing-function-docstring, unused-import, no-name-in-module
|
|
9
|
+
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
import sqlmodel
|
|
12
|
+
|
|
13
|
+
from alembic import op
|
|
14
|
+
|
|
15
|
+
# revision identifiers, used by Alembic.
|
|
16
|
+
revision = "d1a8716cf2d2"
|
|
17
|
+
down_revision = "87cf9c00ac00"
|
|
18
|
+
branch_labels = None
|
|
19
|
+
depends_on = None
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def upgrade():
|
|
23
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
24
|
+
with op.batch_alter_table("materialization", schema=None) as batch_op:
|
|
25
|
+
batch_op.add_column(
|
|
26
|
+
sa.Column(
|
|
27
|
+
"strategy",
|
|
28
|
+
sa.Enum(
|
|
29
|
+
"FULL",
|
|
30
|
+
"SNAPSHOT",
|
|
31
|
+
"INCREMENTAL_TIME",
|
|
32
|
+
"VIEW",
|
|
33
|
+
name="materializationstrategy",
|
|
34
|
+
),
|
|
35
|
+
nullable=True,
|
|
36
|
+
),
|
|
37
|
+
)
|
|
38
|
+
# batch_op.drop_constraint("node_revision_engine_uniq", type_="unique")
|
|
39
|
+
batch_op.create_unique_constraint(
|
|
40
|
+
"name_node_revision_uniq",
|
|
41
|
+
["name", "node_revision_id"],
|
|
42
|
+
)
|
|
43
|
+
batch_op.drop_constraint(
|
|
44
|
+
"fk_materialization_engine_id_engine",
|
|
45
|
+
type_="foreignkey",
|
|
46
|
+
)
|
|
47
|
+
batch_op.drop_column("engine_id")
|
|
48
|
+
|
|
49
|
+
# ### end Alembic commands ###
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def downgrade():
|
|
53
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
54
|
+
with op.batch_alter_table("materialization", schema=None) as batch_op:
|
|
55
|
+
batch_op.add_column(sa.Column("engine_id", sa.INTEGER(), nullable=False))
|
|
56
|
+
batch_op.create_foreign_key(
|
|
57
|
+
"fk_materialization_engine_id_engine",
|
|
58
|
+
"engine",
|
|
59
|
+
["engine_id"],
|
|
60
|
+
["id"],
|
|
61
|
+
)
|
|
62
|
+
batch_op.drop_constraint("name_node_revision_uniq", type_="unique")
|
|
63
|
+
batch_op.create_unique_constraint(
|
|
64
|
+
"node_revision_engine_uniq",
|
|
65
|
+
["name", "node_revision_id", "engine_id"],
|
|
66
|
+
)
|
|
67
|
+
batch_op.drop_column("strategy")
|
|
68
|
+
|
|
69
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Cube related APIs.
|
|
3
|
+
"""
|
|
4
|
+
import logging
|
|
5
|
+
from typing import List, Optional
|
|
6
|
+
|
|
7
|
+
from fastapi import Depends, Query
|
|
8
|
+
from sqlmodel import Session
|
|
9
|
+
|
|
10
|
+
from datajunction_server.api.helpers import get_catalog_by_name, get_node_by_name
|
|
11
|
+
from datajunction_server.construction.dimensions import build_dimensions_from_cube_query
|
|
12
|
+
from datajunction_server.internal.access.authentication.http import SecureAPIRouter
|
|
13
|
+
from datajunction_server.internal.access.authorization import validate_access
|
|
14
|
+
from datajunction_server.models import access
|
|
15
|
+
from datajunction_server.models.cube import (
|
|
16
|
+
CubeRevisionMetadata,
|
|
17
|
+
DimensionValue,
|
|
18
|
+
DimensionValues,
|
|
19
|
+
)
|
|
20
|
+
from datajunction_server.models.metric import TranslatedSQL
|
|
21
|
+
from datajunction_server.models.node import NodeType
|
|
22
|
+
from datajunction_server.models.query import QueryCreate
|
|
23
|
+
from datajunction_server.service_clients import QueryServiceClient
|
|
24
|
+
from datajunction_server.utils import (
|
|
25
|
+
from_amenable_name,
|
|
26
|
+
get_query_service_client,
|
|
27
|
+
get_session,
|
|
28
|
+
get_settings,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
_logger = logging.getLogger(__name__)
|
|
32
|
+
settings = get_settings()
|
|
33
|
+
router = SecureAPIRouter(tags=["cubes"])
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@router.get("/cubes/{name}/", response_model=CubeRevisionMetadata, name="Get a Cube")
|
|
37
|
+
def get_cube(
|
|
38
|
+
name: str, *, session: Session = Depends(get_session)
|
|
39
|
+
) -> CubeRevisionMetadata:
|
|
40
|
+
"""
|
|
41
|
+
Get information on a cube
|
|
42
|
+
"""
|
|
43
|
+
node = get_node_by_name(session=session, name=name, node_type=NodeType.CUBE)
|
|
44
|
+
return node.current
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@router.get("/cubes/{name}/dimensions/sql", name="Dimensions SQL for Cube")
|
|
48
|
+
def get_cube_dimension_sql(
|
|
49
|
+
name: str,
|
|
50
|
+
*,
|
|
51
|
+
dimensions: List[str] = Query([], description="Dimensions to get values for"),
|
|
52
|
+
filters: Optional[str] = Query(
|
|
53
|
+
None,
|
|
54
|
+
description="Filters on dimensional attributes",
|
|
55
|
+
),
|
|
56
|
+
limit: Optional[int] = Query(
|
|
57
|
+
None,
|
|
58
|
+
description="Number of rows to limit the data retrieved to",
|
|
59
|
+
),
|
|
60
|
+
include_counts: bool = False,
|
|
61
|
+
session: Session = Depends(get_session),
|
|
62
|
+
validate_access: access.ValidateAccessFn = Depends( # pylint: disable=redefined-outer-name
|
|
63
|
+
validate_access,
|
|
64
|
+
),
|
|
65
|
+
) -> TranslatedSQL:
|
|
66
|
+
"""
|
|
67
|
+
Generates SQL to retrieve all unique values of a dimension for the cube
|
|
68
|
+
"""
|
|
69
|
+
node = get_node_by_name(session=session, name=name, node_type=NodeType.CUBE)
|
|
70
|
+
cube = node.current
|
|
71
|
+
return build_dimensions_from_cube_query(
|
|
72
|
+
session,
|
|
73
|
+
cube,
|
|
74
|
+
dimensions,
|
|
75
|
+
filters,
|
|
76
|
+
limit,
|
|
77
|
+
include_counts,
|
|
78
|
+
validate_access=validate_access,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
@router.get(
|
|
83
|
+
"/cubes/{name}/dimensions/data",
|
|
84
|
+
name="Dimensions Values for Cube",
|
|
85
|
+
)
|
|
86
|
+
def get_cube_dimension_values( # pylint: disable=too-many-locals
|
|
87
|
+
name: str,
|
|
88
|
+
*,
|
|
89
|
+
dimensions: List[str] = Query([], description="Dimensions to get values for"),
|
|
90
|
+
filters: Optional[str] = Query(
|
|
91
|
+
None,
|
|
92
|
+
description="Filters on dimensional attributes",
|
|
93
|
+
),
|
|
94
|
+
limit: Optional[int] = Query(
|
|
95
|
+
None,
|
|
96
|
+
description="Number of rows to limit the data retrieved to",
|
|
97
|
+
),
|
|
98
|
+
include_counts: bool = False,
|
|
99
|
+
async_: bool = False,
|
|
100
|
+
session: Session = Depends(get_session),
|
|
101
|
+
query_service_client: QueryServiceClient = Depends(get_query_service_client),
|
|
102
|
+
validate_access: access.ValidateAccessFn = Depends( # pylint: disable=redefined-outer-name
|
|
103
|
+
validate_access,
|
|
104
|
+
),
|
|
105
|
+
) -> DimensionValues:
|
|
106
|
+
"""
|
|
107
|
+
All unique values of a dimension from the cube
|
|
108
|
+
"""
|
|
109
|
+
node = get_node_by_name(session=session, name=name, node_type=NodeType.CUBE)
|
|
110
|
+
cube = node.current
|
|
111
|
+
translated_sql = build_dimensions_from_cube_query(
|
|
112
|
+
session,
|
|
113
|
+
cube,
|
|
114
|
+
dimensions,
|
|
115
|
+
filters,
|
|
116
|
+
limit,
|
|
117
|
+
include_counts,
|
|
118
|
+
validate_access,
|
|
119
|
+
)
|
|
120
|
+
if cube.availability:
|
|
121
|
+
catalog = get_catalog_by_name( # pragma: no cover
|
|
122
|
+
session,
|
|
123
|
+
cube.availability.catalog, # type: ignore
|
|
124
|
+
)
|
|
125
|
+
else:
|
|
126
|
+
catalog = cube.catalog
|
|
127
|
+
query_create = QueryCreate(
|
|
128
|
+
engine_name=catalog.engines[0].name,
|
|
129
|
+
catalog_name=catalog.name,
|
|
130
|
+
engine_version=catalog.engines[0].version,
|
|
131
|
+
submitted_query=translated_sql.sql,
|
|
132
|
+
async_=async_,
|
|
133
|
+
)
|
|
134
|
+
result = query_service_client.submit_query(query_create)
|
|
135
|
+
count_column = [
|
|
136
|
+
idx
|
|
137
|
+
for idx, col in enumerate(translated_sql.columns) # type: ignore
|
|
138
|
+
if col.name == "count"
|
|
139
|
+
]
|
|
140
|
+
dimension_values = [ # pragma: no cover
|
|
141
|
+
DimensionValue(
|
|
142
|
+
value=row[0 : count_column[0]] if count_column else row,
|
|
143
|
+
count=row[count_column[0]] if count_column else None,
|
|
144
|
+
)
|
|
145
|
+
for row in result.results.__root__[0].rows
|
|
146
|
+
]
|
|
147
|
+
return DimensionValues( # pragma: no cover
|
|
148
|
+
dimensions=[
|
|
149
|
+
from_amenable_name(col.name)
|
|
150
|
+
for col in translated_sql.columns # type: ignore # pylint: disable=not-an-iterable
|
|
151
|
+
if col.name != "count"
|
|
152
|
+
],
|
|
153
|
+
values=dimension_values,
|
|
154
|
+
cardinality=len(dimension_values),
|
|
155
|
+
)
|
|
@@ -23,6 +23,7 @@ from datajunction_server.construction.build import (
|
|
|
23
23
|
build_metric_nodes,
|
|
24
24
|
build_node,
|
|
25
25
|
rename_columns,
|
|
26
|
+
validate_shared_dimensions,
|
|
26
27
|
)
|
|
27
28
|
from datajunction_server.construction.dj_query import build_dj_query
|
|
28
29
|
from datajunction_server.errors import (
|
|
@@ -69,7 +70,7 @@ from datajunction_server.sql.parsing import ast
|
|
|
69
70
|
from datajunction_server.sql.parsing.backends.antlr4 import SqlSyntaxError, parse
|
|
70
71
|
from datajunction_server.sql.parsing.backends.exceptions import DJParseException
|
|
71
72
|
from datajunction_server.typing import END_JOB_STATES, UTCDatetime
|
|
72
|
-
from datajunction_server.utils import LOOKUP_CHARS, SEPARATOR
|
|
73
|
+
from datajunction_server.utils import LOOKUP_CHARS, SEPARATOR
|
|
73
74
|
|
|
74
75
|
_logger = logging.getLogger(__name__)
|
|
75
76
|
|
|
@@ -719,6 +720,11 @@ def validate_cube( # pylint: disable=too-many-locals
|
|
|
719
720
|
message=("Metrics and dimensions must be part of a common catalog"),
|
|
720
721
|
)
|
|
721
722
|
|
|
723
|
+
validate_shared_dimensions(
|
|
724
|
+
metric_nodes,
|
|
725
|
+
[dim.full_name() for dim in dimensions],
|
|
726
|
+
[],
|
|
727
|
+
)
|
|
722
728
|
return metrics, metric_nodes, dimension_nodes, dimensions, catalog
|
|
723
729
|
|
|
724
730
|
|
|
@@ -900,7 +906,7 @@ def build_sql_for_multiple_metrics( # pylint: disable=too-many-arguments,too-ma
|
|
|
900
906
|
access_control=access_control,
|
|
901
907
|
)
|
|
902
908
|
columns = [
|
|
903
|
-
assemble_column_metadata(col
|
|
909
|
+
assemble_column_metadata(col) # type: ignore
|
|
904
910
|
for col in query_ast.select.projection
|
|
905
911
|
]
|
|
906
912
|
return (
|
|
@@ -1273,27 +1279,29 @@ def hard_delete_node(
|
|
|
1273
1279
|
|
|
1274
1280
|
def assemble_column_metadata(
|
|
1275
1281
|
column: ast.Column,
|
|
1276
|
-
node_name: Union[List[str], str],
|
|
1282
|
+
# node_name: Union[List[str], str],
|
|
1277
1283
|
) -> ColumnMetadata:
|
|
1278
1284
|
"""
|
|
1279
1285
|
Extract column metadata from AST
|
|
1280
1286
|
"""
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
node_name = [node_name]
|
|
1284
|
-
node_name_mapping = {amenable_name(name): name for name in node_name}
|
|
1285
|
-
metric_node = node_name_mapping.get(column_name_on_ast)
|
|
1286
|
-
|
|
1287
|
-
amenable_separator = f"_{LOOKUP_CHARS.get(SEPARATOR)}_"
|
|
1288
|
-
column_name_on_node = column_name_on_ast.split(amenable_separator)[-1]
|
|
1289
|
-
reference_node_name = ".".join(column_name_on_ast.split(amenable_separator)[0:-1])
|
|
1290
|
-
if metric_node:
|
|
1291
|
-
column_name_on_node = column_name_on_ast
|
|
1292
|
-
reference_node_name = metric_node
|
|
1293
|
-
|
|
1294
|
-
return ColumnMetadata(
|
|
1295
|
-
name=column_name_on_ast,
|
|
1287
|
+
metadata = ColumnMetadata(
|
|
1288
|
+
name=column.alias_or_name.name,
|
|
1296
1289
|
type=str(column.type),
|
|
1297
|
-
column=
|
|
1298
|
-
|
|
1290
|
+
column=(
|
|
1291
|
+
column.semantic_entity.split(SEPARATOR)[-1]
|
|
1292
|
+
if hasattr(column, "semantic_entity") and column.semantic_entity
|
|
1293
|
+
else None
|
|
1294
|
+
),
|
|
1295
|
+
node=(
|
|
1296
|
+
SEPARATOR.join(column.semantic_entity.split(SEPARATOR)[:-1])
|
|
1297
|
+
if hasattr(column, "semantic_entity") and column.semantic_entity
|
|
1298
|
+
else None
|
|
1299
|
+
),
|
|
1300
|
+
semantic_entity=column.semantic_entity
|
|
1301
|
+
if hasattr(column, "semantic_entity")
|
|
1302
|
+
else None,
|
|
1303
|
+
semantic_type=column.semantic_type
|
|
1304
|
+
if hasattr(column, "semantic_type")
|
|
1305
|
+
else None,
|
|
1299
1306
|
)
|
|
1307
|
+
return metadata
|
|
@@ -15,6 +15,8 @@ from typing import TYPE_CHECKING
|
|
|
15
15
|
|
|
16
16
|
from fastapi import Depends, FastAPI, Request
|
|
17
17
|
from fastapi.responses import JSONResponse, RedirectResponse, Response
|
|
18
|
+
from fastapi_cache import FastAPICache
|
|
19
|
+
from fastapi_cache.backends.inmemory import InMemoryBackend
|
|
18
20
|
from jose import JWTError
|
|
19
21
|
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
|
|
20
22
|
from sqlmodel import select
|
|
@@ -106,6 +108,14 @@ app.include_router(graphql_app, prefix="/graphql")
|
|
|
106
108
|
app.include_router(whoami.router)
|
|
107
109
|
|
|
108
110
|
|
|
111
|
+
@app.on_event("startup")
|
|
112
|
+
async def startup():
|
|
113
|
+
"""
|
|
114
|
+
Initialize FastAPI cache when the server starts up
|
|
115
|
+
"""
|
|
116
|
+
FastAPICache.init(InMemoryBackend(), prefix="inmemory-cache")
|
|
117
|
+
|
|
118
|
+
|
|
109
119
|
@app.exception_handler(DJException)
|
|
110
120
|
async def dj_exception_handler( # pylint: disable=unused-argument
|
|
111
121
|
request: Request,
|
|
@@ -14,11 +14,13 @@ from sqlmodel import Session
|
|
|
14
14
|
from datajunction_server.api.helpers import get_node_by_name
|
|
15
15
|
from datajunction_server.errors import DJDoesNotExistException, DJException
|
|
16
16
|
from datajunction_server.internal.access.authentication.http import SecureAPIRouter
|
|
17
|
+
from datajunction_server.internal.access.authorization import validate_access
|
|
17
18
|
from datajunction_server.internal.materializations import (
|
|
18
19
|
create_new_materialization,
|
|
19
20
|
schedule_materialization_jobs,
|
|
20
21
|
)
|
|
21
22
|
from datajunction_server.materialization.jobs import MaterializationJob
|
|
23
|
+
from datajunction_server.models import access
|
|
22
24
|
from datajunction_server.models.history import ActivityType, EntityType, History
|
|
23
25
|
from datajunction_server.models.materialization import (
|
|
24
26
|
MaterializationConfigInfoUnified,
|
|
@@ -54,6 +56,9 @@ def upsert_materialization( # pylint: disable=too-many-locals
|
|
|
54
56
|
session: Session = Depends(get_session),
|
|
55
57
|
query_service_client: QueryServiceClient = Depends(get_query_service_client),
|
|
56
58
|
current_user: Optional[User] = Depends(get_current_user),
|
|
59
|
+
validate_access: access.ValidateAccessFn = Depends( # pylint: disable=W0621
|
|
60
|
+
validate_access,
|
|
61
|
+
),
|
|
57
62
|
) -> JSONResponse:
|
|
58
63
|
"""
|
|
59
64
|
Add or update a materialization of the specified node. If a node_name is specified
|
|
@@ -69,7 +74,12 @@ def upsert_materialization( # pylint: disable=too-many-locals
|
|
|
69
74
|
old_materializations = {mat.name: mat for mat in current_revision.materializations}
|
|
70
75
|
|
|
71
76
|
# Create a new materialization
|
|
72
|
-
new_materialization = create_new_materialization(
|
|
77
|
+
new_materialization = create_new_materialization(
|
|
78
|
+
session,
|
|
79
|
+
current_revision,
|
|
80
|
+
data,
|
|
81
|
+
validate_access,
|
|
82
|
+
)
|
|
73
83
|
|
|
74
84
|
# Check to see if a materialization for this engine already exists with the exact same config
|
|
75
85
|
existing_materialization = old_materializations.get(new_materialization.name)
|
|
@@ -9,6 +9,7 @@ from typing import List, Optional, Union, cast
|
|
|
9
9
|
|
|
10
10
|
from fastapi import BackgroundTasks, Depends, Query, Response
|
|
11
11
|
from fastapi.responses import JSONResponse
|
|
12
|
+
from fastapi_cache.decorator import cache
|
|
12
13
|
from sqlalchemy.sql.operators import is_
|
|
13
14
|
from sqlmodel import Session, select
|
|
14
15
|
from starlette.requests import Request
|
|
@@ -215,6 +216,7 @@ def list_nodes(
|
|
|
215
216
|
|
|
216
217
|
|
|
217
218
|
@router.get("/nodes/details/", response_model=List[NodeIndexItem])
|
|
219
|
+
@cache(expire=settings.index_cache_expire)
|
|
218
220
|
def list_all_nodes_with_details(
|
|
219
221
|
node_type: Optional[NodeType] = None,
|
|
220
222
|
*,
|
|
@@ -352,6 +354,9 @@ def create_source(
|
|
|
352
354
|
session: Session = Depends(get_session),
|
|
353
355
|
current_user: Optional[User] = Depends(get_current_user),
|
|
354
356
|
query_service_client: QueryServiceClient = Depends(get_query_service_client),
|
|
357
|
+
validate_access: access.ValidateAccessFn = Depends( # pylint: disable=W0621
|
|
358
|
+
validate_access,
|
|
359
|
+
),
|
|
355
360
|
) -> NodeOutput:
|
|
356
361
|
"""
|
|
357
362
|
Create a source node. If columns are not provided, the source node's schema
|
|
@@ -366,6 +371,7 @@ def create_source(
|
|
|
366
371
|
session=session,
|
|
367
372
|
current_user=current_user,
|
|
368
373
|
query_service_client=query_service_client,
|
|
374
|
+
validate_access=validate_access,
|
|
369
375
|
):
|
|
370
376
|
return recreated_node
|
|
371
377
|
|
|
@@ -448,6 +454,9 @@ def create_node(
|
|
|
448
454
|
current_user: Optional[User] = Depends(get_current_user),
|
|
449
455
|
query_service_client: QueryServiceClient = Depends(get_query_service_client),
|
|
450
456
|
background_tasks: BackgroundTasks,
|
|
457
|
+
validate_access: access.ValidateAccessFn = Depends( # pylint: disable=W0621
|
|
458
|
+
validate_access,
|
|
459
|
+
),
|
|
451
460
|
) -> NodeOutput:
|
|
452
461
|
"""
|
|
453
462
|
Create a node.
|
|
@@ -467,6 +476,7 @@ def create_node(
|
|
|
467
476
|
current_user=current_user,
|
|
468
477
|
query_service_client=query_service_client,
|
|
469
478
|
background_tasks=background_tasks,
|
|
479
|
+
validate_access=validate_access,
|
|
470
480
|
):
|
|
471
481
|
return recreated_node # pragma: no cover
|
|
472
482
|
|
|
@@ -529,6 +539,9 @@ def create_cube(
|
|
|
529
539
|
query_service_client: QueryServiceClient = Depends(get_query_service_client),
|
|
530
540
|
current_user: Optional[User] = Depends(get_current_user),
|
|
531
541
|
background_tasks: BackgroundTasks,
|
|
542
|
+
validate_access: access.ValidateAccessFn = Depends( # pylint: disable=W0621
|
|
543
|
+
validate_access,
|
|
544
|
+
),
|
|
532
545
|
) -> NodeOutput:
|
|
533
546
|
"""
|
|
534
547
|
Create a cube node.
|
|
@@ -543,6 +556,7 @@ def create_cube(
|
|
|
543
556
|
current_user=current_user,
|
|
544
557
|
query_service_client=query_service_client,
|
|
545
558
|
background_tasks=background_tasks,
|
|
559
|
+
validate_access=validate_access,
|
|
546
560
|
):
|
|
547
561
|
return recreated_node # pragma: no cover
|
|
548
562
|
|
|
@@ -911,6 +925,9 @@ def update_node(
|
|
|
911
925
|
query_service_client: QueryServiceClient = Depends(get_query_service_client),
|
|
912
926
|
current_user: Optional[User] = Depends(get_current_user),
|
|
913
927
|
background_tasks: BackgroundTasks,
|
|
928
|
+
validate_access: access.ValidateAccessFn = Depends( # pylint: disable=W0621
|
|
929
|
+
validate_access,
|
|
930
|
+
),
|
|
914
931
|
) -> NodeOutput:
|
|
915
932
|
"""
|
|
916
933
|
Update a node.
|
|
@@ -922,6 +939,7 @@ def update_node(
|
|
|
922
939
|
query_service_client=query_service_client,
|
|
923
940
|
current_user=current_user,
|
|
924
941
|
background_tasks=background_tasks,
|
|
942
|
+
validate_access=validate_access,
|
|
925
943
|
)
|
|
926
944
|
return node # type: ignore
|
|
927
945
|
|
|
@@ -103,7 +103,7 @@ def get_sql(
|
|
|
103
103
|
access_control=access_control,
|
|
104
104
|
)
|
|
105
105
|
columns = [
|
|
106
|
-
assemble_column_metadata(col
|
|
106
|
+
assemble_column_metadata(col) # type: ignore
|
|
107
107
|
for col in query_ast.select.projection
|
|
108
108
|
]
|
|
109
109
|
return TranslatedSQL(
|
|
@@ -88,6 +88,9 @@ class Settings(
|
|
|
88
88
|
# Google OAuth application client secret file
|
|
89
89
|
google_oauth_client_secret_file: Optional[str] = None
|
|
90
90
|
|
|
91
|
+
# Interval in seconds with which to expire caching of any indexes
|
|
92
|
+
index_cache_expire = 60
|
|
93
|
+
|
|
91
94
|
@property
|
|
92
95
|
def celery(self) -> Celery:
|
|
93
96
|
"""
|