datajunction-server 0.0.1a35.dev1__tar.gz → 0.0.1a36__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.1a36/.env +2 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/PKG-INFO +1 -1
- datajunction_server-0.0.1a36/datajunction_server/__about__.py +4 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/data.py +11 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/helpers.py +7 -5
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/namespaces.py +22 -1
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/construction/build.py +4 -3
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/namespaces.py +196 -1
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/node.py +3 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/dag.py +4 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/ast.py +2 -7
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/dj.demo.db +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/dj.internal.db +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/cubes_test.py +113 -95
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/data_test.py +78 -78
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/djql_test.py +53 -52
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/metrics_test.py +290 -7
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/namespaces_test.py +81 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/nodes_test.py +183 -134
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/sql_test.py +790 -835
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/construction/build_test.py +13 -13
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/construction/fixtures.py +17 -17
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/examples.py +4 -5
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/dag_test.py +30 -4
- datajunction_server-0.0.1a36/tests/sql/utils.py +40 -0
- datajunction_server-0.0.1a35.dev1/.env +0 -3
- datajunction_server-0.0.1a35.dev1/alembic/versions/2023_11_21_1611-d1a8716cf2d2_add_materialization_strategy_and_job_.py +0 -69
- datajunction_server-0.0.1a35.dev1/datajunction_server/__about__.py +0 -4
- datajunction_server-0.0.1a35.dev1/tests/sql/utils.py +0 -73
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/.coveragerc +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/.env.integration +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/.flake8 +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/.gitignore +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/.isort.cfg +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/.pre-commit-config.yaml +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/.pylintrc +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/Dockerfile +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/Makefile +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/README.md +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/README +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/env.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/script.py.mako +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_07_07_2006-4e1ff36c27c6_initial_migration.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_07_11_2337-bd313a10e2a8_add_bound_dimensions_attribute_to_.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_07_14_0428-5c3d0c958c3c_add_node_to_history.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_07_30_1608-4147da2ac841_add_deactivated_to_materialization.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_08_02_0055-ccc77abcf899_add_deactivated_to_namespace.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_08_08_1856-cde75f986a62_user_model.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_08_18_2348-fe8d3dbe512a_store_column_level_lineage.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_09_18_1346-f2e9ef937daf_add_measures.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_09_20_2049-879128f3e778_add_display_name_to_column.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_09_21_0033-b75e5163b09d_add_description_and_display_name_to_.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_10_02_1642-d8fa1e6371a7_add_url_to_availability_state.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_10_08_1438-58e246fba34b_add_partitions_and_backfills.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic/versions/2023_10_24_0354-87cf9c00ac00_add_metric_metadata.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/alembic.ini +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/access/authentication/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/access/authentication/basic.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/access/authentication/github.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/access/authentication/google.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/access/authentication/whoami.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/attributes.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/catalogs.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/client.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/cubes.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/dimensions.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/djsql.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/engines.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/graphql/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/graphql/catalogs.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/graphql/engines.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/graphql/main.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/health.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/history.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/logging.conf +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/main.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/materializations.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/measures.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/metrics.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/nodes.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/sql.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/tags.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/config.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/constants.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/construction/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/construction/dimensions.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/construction/dj_query.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/construction/exceptions.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/construction/utils.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/errors.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/access/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/access/authentication/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/access/authentication/basic.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/access/authentication/github.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/access/authentication/google.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/access/authentication/http.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/access/authentication/tokens.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/access/authorization.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/engines.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/materializations.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/internal/nodes.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/materialization/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/materialization/jobs/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/materialization/jobs/cube_materialization.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/materialization/jobs/materialization_job.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/access.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/attribute.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/base.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/catalog.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/column.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/cube.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/database.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/engine.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/history.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/materialization.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/measure.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/metric.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/partition.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/query.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/table.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/tag.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/models/user.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/service_clients.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/functions.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/antlr4.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/exceptions.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/grammar/SqlBaseLexer.g4 +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/grammar/SqlBaseParser.g4 +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/grammar/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.interp +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.tokens +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.interp +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.tokens +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserListener.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserVisitor.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/parsing/types.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/superset.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/transpilation.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/typing.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/utils.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/default.duckdb +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/dj.copy.db +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/dj.test.db +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/pdm.lock +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/pyproject.toml +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/requirements/docker.txt +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/requirements/test.txt +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/scripts/docs-snippets.js +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/scripts/docs-snippets.sh +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/scripts/generate-openapi.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/attributes_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/catalog_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/client_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/dimensions_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/engine_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/graphql/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/graphql/catalog_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/graphql/engine_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/health_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/helpers_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/history_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/measures_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/node_update_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/routers_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/api/tags_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/conftest.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/construction/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/construction/compile_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/construction/exceptions_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/construction/inference_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/construction/utils_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/default.duckdb +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/duckdb.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/errors_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/fixes_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/integration/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/integration/basic_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/internal/authentication/basic_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/internal/authentication/github_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/internal/authentication/http_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/internal/authentication/token_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/internal/authentication/whoami_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/migrations_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/models/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/models/catalog_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/models/hash_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/models/measure_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/models/node_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/models/query_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/service_clients_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/functions_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/backends/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/backends/antlr4_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/backends/types_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/__init__.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query1.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query10.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query11.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query12.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query13.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query14.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query15.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query16.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query17.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query18.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query19.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query2.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query20.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query21.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query22.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query23.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query24.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query25.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query26.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query27.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query28.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query29.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query3.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query30.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query31.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query32.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query33.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query34.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query35.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query36.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query37.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query38.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query39.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query4.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query40.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query41.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query42.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query43.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query44.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query45.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query46.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query47.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query48.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query49.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query5.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query50.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query51.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query52.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query53.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query54.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query55.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query56.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query57.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query58.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query59.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query6.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query60.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query61.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query62.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query63.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query64.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query65.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query66.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query67.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query68.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query69.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query7.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query70.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query71.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query72.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query73.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query74.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query75.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query76.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query77.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query78.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query79.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query8.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query80.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query81.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query82.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query83.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query84.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query85.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query86.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query87.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query88.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query89.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query9.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query90.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query91.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query92.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query93.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query94.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query95.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query96.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query97.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query98.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/ansi/query99.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query1.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query10.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query11.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query12.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query13.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query14.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query15.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query16.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query17.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query18.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query19.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query2.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query20.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query21.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query22.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query23.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query24.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query25.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query26.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query27.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query28.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query29.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query3.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query30.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query31.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query32.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query33.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query34.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query35.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query36.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query37.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query38.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query39.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query4.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query40.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query41.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query42.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query43.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query44.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query45.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query46.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query47.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query48.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query49.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query5.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query50.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query51.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query52.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query53.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query54.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query55.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query56.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query57.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query58.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query59.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query6.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query60.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query61.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query62.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query63.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query64.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query65.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query66.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query67.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query68.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query69.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query7.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query70.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query71.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query72.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query73.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query74.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query75.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query76.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query77.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query78.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query79.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query8.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query80.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query81.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query82.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query83.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query84.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query85.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query86.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query87.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query88.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query89.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query9.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query90.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query91.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query92.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query93.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query94.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query95.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query96.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query97.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query98.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/sparksql/query99.sql +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/queries/tpcds/test_tpcds.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/sql/parsing/test_ast.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/superset_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/tests/transpilation_test.py +0 -0
- {datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/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.
|
|
3
|
+
Version: 0.0.1a36
|
|
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>
|
{datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/api/data.py
RENAMED
|
@@ -253,10 +253,20 @@ def get_data_for_metrics( # pylint: disable=R0914, R0913
|
|
|
253
253
|
query_service_client: QueryServiceClient = Depends(get_query_service_client),
|
|
254
254
|
engine_name: Optional[str] = None,
|
|
255
255
|
engine_version: Optional[str] = None,
|
|
256
|
+
current_user: Optional[User] = Depends(get_current_user),
|
|
257
|
+
validate_access: access.ValidateAccessFn = Depends( # pylint: disable=W0621
|
|
258
|
+
validate_access,
|
|
259
|
+
),
|
|
256
260
|
) -> QueryWithResults:
|
|
257
261
|
"""
|
|
258
262
|
Return data for a set of metrics with dimensions and filters
|
|
259
263
|
"""
|
|
264
|
+
access_control = access.AccessControlStore(
|
|
265
|
+
validate_access=validate_access,
|
|
266
|
+
user=current_user,
|
|
267
|
+
base_verb=access.ResourceRequestVerb.READ,
|
|
268
|
+
)
|
|
269
|
+
|
|
260
270
|
translated_sql, engine, catalog = build_sql_for_multiple_metrics(
|
|
261
271
|
session,
|
|
262
272
|
metrics,
|
|
@@ -266,6 +276,7 @@ def get_data_for_metrics( # pylint: disable=R0914, R0913
|
|
|
266
276
|
limit,
|
|
267
277
|
engine_name,
|
|
268
278
|
engine_version,
|
|
279
|
+
access_control,
|
|
269
280
|
)
|
|
270
281
|
|
|
271
282
|
query_create = QueryCreate(
|
|
@@ -651,6 +651,7 @@ def validate_cube( # pylint: disable=too-many-locals
|
|
|
651
651
|
session: Session,
|
|
652
652
|
metric_names: List[str],
|
|
653
653
|
dimension_names: List[str],
|
|
654
|
+
require_dimensions: bool = True,
|
|
654
655
|
) -> Tuple[List[Column], List[Node], List[Node], List[Column], Optional[Catalog]]:
|
|
655
656
|
"""
|
|
656
657
|
Validate that a set of metrics and dimensions can be built together.
|
|
@@ -689,20 +690,20 @@ def validate_cube( # pylint: disable=too-many-locals
|
|
|
689
690
|
|
|
690
691
|
# Verify that the provided dimension attributes exist
|
|
691
692
|
for dimension_attribute in dimension_names:
|
|
692
|
-
node_name, column_name = dimension_attribute.rsplit(".", 1)
|
|
693
693
|
try:
|
|
694
|
+
node_name, column_name = dimension_attribute.rsplit(".", 1)
|
|
694
695
|
dimension_node = get_node_by_name(session=session, name=node_name)
|
|
695
|
-
except DJNodeNotFound as exc: # pragma: no cover
|
|
696
|
+
except (ValueError, DJNodeNotFound) as exc: # pragma: no cover
|
|
696
697
|
raise DJException(
|
|
697
|
-
f"
|
|
698
|
-
|
|
698
|
+
f"Please make sure that `{dimension_attribute}` "
|
|
699
|
+
"is a dimensional attribute.",
|
|
699
700
|
) from exc
|
|
700
701
|
dimension_nodes.append(dimension_node)
|
|
701
702
|
columns = {col.name: col for col in dimension_node.current.columns}
|
|
702
703
|
if column_name in columns: # pragma: no cover
|
|
703
704
|
dimensions.append(columns[column_name])
|
|
704
705
|
|
|
705
|
-
if not dimensions:
|
|
706
|
+
if require_dimensions and not dimensions:
|
|
706
707
|
raise DJException(
|
|
707
708
|
message=("At least one dimension is required"),
|
|
708
709
|
http_status_code=http.client.UNPROCESSABLE_ENTITY,
|
|
@@ -817,6 +818,7 @@ def build_sql_for_multiple_metrics( # pylint: disable=too-many-arguments,too-ma
|
|
|
817
818
|
session,
|
|
818
819
|
metrics,
|
|
819
820
|
dimensions,
|
|
821
|
+
require_dimensions=False,
|
|
820
822
|
)
|
|
821
823
|
leading_metric_node = get_node_by_name(session, metrics[0])
|
|
822
824
|
available_engines = leading_metric_node.current.catalog.engines
|
|
@@ -3,7 +3,7 @@ Node namespace related APIs.
|
|
|
3
3
|
"""
|
|
4
4
|
import logging
|
|
5
5
|
from http import HTTPStatus
|
|
6
|
-
from typing import List, Optional
|
|
6
|
+
from typing import Dict, List, Optional
|
|
7
7
|
|
|
8
8
|
from fastapi import Depends, Query
|
|
9
9
|
from fastapi.responses import JSONResponse
|
|
@@ -24,6 +24,8 @@ from datajunction_server.internal.access.authorization import (
|
|
|
24
24
|
from datajunction_server.internal.namespaces import (
|
|
25
25
|
create_namespace,
|
|
26
26
|
get_nodes_in_namespace,
|
|
27
|
+
get_nodes_in_namespace_detailed,
|
|
28
|
+
get_project_config,
|
|
27
29
|
hard_delete_namespace,
|
|
28
30
|
mark_namespace_deactivated,
|
|
29
31
|
mark_namespace_restored,
|
|
@@ -300,3 +302,22 @@ def hard_delete_node_namespace(
|
|
|
300
302
|
"impact": impacts,
|
|
301
303
|
},
|
|
302
304
|
)
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
@router.get(
|
|
308
|
+
"/namespaces/{namespace}/export/",
|
|
309
|
+
name="Export a namespace as a single project's metadata",
|
|
310
|
+
)
|
|
311
|
+
def export_a_namespace(
|
|
312
|
+
namespace: str,
|
|
313
|
+
*,
|
|
314
|
+
session: Session = Depends(get_session),
|
|
315
|
+
) -> List[Dict]:
|
|
316
|
+
"""
|
|
317
|
+
Generates a zip of YAML files for the contents of the given namespace
|
|
318
|
+
as well as a project definition file.
|
|
319
|
+
"""
|
|
320
|
+
return get_project_config(
|
|
321
|
+
nodes=get_nodes_in_namespace_detailed(session, namespace),
|
|
322
|
+
namespace_requested=namespace,
|
|
323
|
+
)
|
|
@@ -930,9 +930,10 @@ def build_metric_nodes(
|
|
|
930
930
|
# bind the table for this built metric to all columns in the
|
|
931
931
|
organization = cast(ast.Organization, parent_ast.select.organization)
|
|
932
932
|
parent_ast.select.organization = None
|
|
933
|
-
|
|
934
|
-
col.
|
|
935
|
-
|
|
933
|
+
if organization: # pragma: no cover
|
|
934
|
+
for col in organization.find_all(ast.Column):
|
|
935
|
+
col.add_table(current_cte_as_table)
|
|
936
|
+
orderby_sort_items += organization.order # type: ignore
|
|
936
937
|
|
|
937
938
|
final_select_columns = [
|
|
938
939
|
ast.Column(
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Helper methods for namespaces endpoints.
|
|
3
3
|
"""
|
|
4
|
+
import os
|
|
4
5
|
from datetime import datetime
|
|
5
|
-
from typing import Dict, List, Optional
|
|
6
|
+
from typing import Dict, List, Optional, Tuple
|
|
6
7
|
|
|
7
8
|
from sqlalchemy import or_
|
|
8
9
|
from sqlalchemy.sql.operators import is_
|
|
@@ -15,6 +16,7 @@ from datajunction_server.errors import (
|
|
|
15
16
|
DJInvalidInputException,
|
|
16
17
|
)
|
|
17
18
|
from datajunction_server.models import History, User
|
|
19
|
+
from datajunction_server.models.cube import CubeRevisionMetadata
|
|
18
20
|
from datajunction_server.models.history import ActivityType, EntityType
|
|
19
21
|
from datajunction_server.models.node import Node, NodeNamespace, NodeRevision, NodeType
|
|
20
22
|
from datajunction_server.typing import UTCDatetime
|
|
@@ -56,6 +58,27 @@ def get_nodes_in_namespace(
|
|
|
56
58
|
return session.exec(list_nodes_query).all()
|
|
57
59
|
|
|
58
60
|
|
|
61
|
+
def get_nodes_in_namespace_detailed(
|
|
62
|
+
session: Session,
|
|
63
|
+
namespace: str,
|
|
64
|
+
node_type: NodeType = None,
|
|
65
|
+
) -> List[Node]:
|
|
66
|
+
"""
|
|
67
|
+
Gets a list of node names (w/ full details) in the namespace
|
|
68
|
+
"""
|
|
69
|
+
get_node_namespace(session, namespace)
|
|
70
|
+
list_nodes_query = select(Node).where(
|
|
71
|
+
or_(
|
|
72
|
+
col(Node.namespace).like(f"{namespace}.%"), # pylint: disable=no-member
|
|
73
|
+
Node.namespace == namespace,
|
|
74
|
+
),
|
|
75
|
+
Node.current_version == NodeRevision.version,
|
|
76
|
+
Node.name == NodeRevision.name,
|
|
77
|
+
Node.type == node_type if node_type else True,
|
|
78
|
+
)
|
|
79
|
+
return session.exec(list_nodes_query).all()
|
|
80
|
+
|
|
81
|
+
|
|
59
82
|
def list_namespaces_in_hierarchy( # pylint: disable=too-many-arguments
|
|
60
83
|
session: Session,
|
|
61
84
|
namespace: str,
|
|
@@ -234,3 +257,175 @@ def hard_delete_namespace(
|
|
|
234
257
|
}
|
|
235
258
|
session.delete(_namespace)
|
|
236
259
|
return impacts
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
def _get_dir_and_filename(
|
|
263
|
+
node_name: str,
|
|
264
|
+
node_type: str,
|
|
265
|
+
namespace_requested: str,
|
|
266
|
+
) -> Tuple[str, str]:
|
|
267
|
+
"""
|
|
268
|
+
Get the directory and filename where a node name would be located
|
|
269
|
+
"""
|
|
270
|
+
dot_split = node_name.replace(f"{namespace_requested}.", "").split(".")
|
|
271
|
+
filename = f"{dot_split[-1]}.{node_type}.yaml"
|
|
272
|
+
directory = os.path.sep.join(dot_split[:-1])
|
|
273
|
+
return filename, directory
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
def _source_project_config(node: Node, namespace_requested: str) -> Dict:
|
|
277
|
+
"""
|
|
278
|
+
Returns a project config definition for a source node
|
|
279
|
+
"""
|
|
280
|
+
filename, directory = _get_dir_and_filename(
|
|
281
|
+
node_name=node.name,
|
|
282
|
+
node_type=node.type,
|
|
283
|
+
namespace_requested=namespace_requested,
|
|
284
|
+
)
|
|
285
|
+
return {
|
|
286
|
+
"filename": filename,
|
|
287
|
+
"directory": directory,
|
|
288
|
+
"description": node.current.description,
|
|
289
|
+
"table": f"{node.current.catalog}.{node.current.schema_}.{node.current.table}",
|
|
290
|
+
"columns": [
|
|
291
|
+
{"name": column.name, "type": str(column.type)}
|
|
292
|
+
for column in node.current.columns
|
|
293
|
+
],
|
|
294
|
+
"dimension_links": {
|
|
295
|
+
column.name: {"dimension": column.dimension.name}
|
|
296
|
+
for column in node.current.columns
|
|
297
|
+
if column.dimension
|
|
298
|
+
},
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
def _transform_project_config(node: Node, namespace_requested: str) -> Dict:
|
|
303
|
+
"""
|
|
304
|
+
Returns a project config definition for a transform node
|
|
305
|
+
"""
|
|
306
|
+
filename, directory = _get_dir_and_filename(
|
|
307
|
+
node_name=node.name,
|
|
308
|
+
node_type=node.type,
|
|
309
|
+
namespace_requested=namespace_requested,
|
|
310
|
+
)
|
|
311
|
+
return {
|
|
312
|
+
"filename": filename,
|
|
313
|
+
"directory": directory,
|
|
314
|
+
"description": node.current.description,
|
|
315
|
+
"query": node.current.query,
|
|
316
|
+
"dimension_links": {
|
|
317
|
+
column.name: {"dimension": column.dimension.name}
|
|
318
|
+
for column in node.current.columns
|
|
319
|
+
if column.dimension
|
|
320
|
+
},
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
def _dimension_project_config(node: Node, namespace_requested: str) -> Dict:
|
|
325
|
+
"""
|
|
326
|
+
Returns a project config definition for a dimension node
|
|
327
|
+
"""
|
|
328
|
+
filename, directory = _get_dir_and_filename(
|
|
329
|
+
node_name=node.name,
|
|
330
|
+
node_type=node.type,
|
|
331
|
+
namespace_requested=namespace_requested,
|
|
332
|
+
)
|
|
333
|
+
return {
|
|
334
|
+
"filename": filename,
|
|
335
|
+
"directory": directory,
|
|
336
|
+
"description": node.current.description,
|
|
337
|
+
"query": node.current.query,
|
|
338
|
+
"primary_key": [pk.name for pk in node.current.primary_key()],
|
|
339
|
+
"dimension_links": {
|
|
340
|
+
column.name: {"dimension": column.dimension.name}
|
|
341
|
+
for column in node.current.columns
|
|
342
|
+
if column.dimension
|
|
343
|
+
},
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
def _metric_project_config(node: Node, namespace_requested: str) -> Dict:
|
|
348
|
+
"""
|
|
349
|
+
Returns a project config definition for a metric node
|
|
350
|
+
"""
|
|
351
|
+
filename, directory = _get_dir_and_filename(
|
|
352
|
+
node_name=node.name,
|
|
353
|
+
node_type=node.type,
|
|
354
|
+
namespace_requested=namespace_requested,
|
|
355
|
+
)
|
|
356
|
+
return {
|
|
357
|
+
"filename": filename,
|
|
358
|
+
"directory": directory,
|
|
359
|
+
"description": node.current.description,
|
|
360
|
+
"query": node.current.query,
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
def _cube_project_config(node: Node, namespace_requested: str) -> Dict:
|
|
365
|
+
"""
|
|
366
|
+
Returns a project config definition for a cube node
|
|
367
|
+
"""
|
|
368
|
+
filename, directory = _get_dir_and_filename(
|
|
369
|
+
node_name=node.name,
|
|
370
|
+
node_type=NodeType.CUBE,
|
|
371
|
+
namespace_requested=namespace_requested,
|
|
372
|
+
)
|
|
373
|
+
cube_revision = CubeRevisionMetadata.from_orm(node.current)
|
|
374
|
+
metrics = []
|
|
375
|
+
dimensions = []
|
|
376
|
+
for element in cube_revision.cube_elements:
|
|
377
|
+
if element.type == NodeType.METRIC:
|
|
378
|
+
metrics.append(element.node_name)
|
|
379
|
+
else:
|
|
380
|
+
dimensions.append(f"{element.node_name}.{element.name}")
|
|
381
|
+
return {
|
|
382
|
+
"filename": filename,
|
|
383
|
+
"directory": directory,
|
|
384
|
+
"description": cube_revision.description,
|
|
385
|
+
"metrics": metrics,
|
|
386
|
+
"dimensions": dimensions,
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
def get_project_config(nodes: List[Node], namespace_requested: str) -> List[Dict]:
|
|
391
|
+
"""
|
|
392
|
+
Returns a project config definition
|
|
393
|
+
"""
|
|
394
|
+
project_components = []
|
|
395
|
+
for node in nodes:
|
|
396
|
+
if node.type == NodeType.SOURCE:
|
|
397
|
+
project_components.append(
|
|
398
|
+
_source_project_config(
|
|
399
|
+
node=node,
|
|
400
|
+
namespace_requested=namespace_requested,
|
|
401
|
+
),
|
|
402
|
+
)
|
|
403
|
+
elif node.type == NodeType.TRANSFORM:
|
|
404
|
+
project_components.append(
|
|
405
|
+
_transform_project_config(
|
|
406
|
+
node=node,
|
|
407
|
+
namespace_requested=namespace_requested,
|
|
408
|
+
),
|
|
409
|
+
)
|
|
410
|
+
elif node.type == NodeType.DIMENSION:
|
|
411
|
+
project_components.append(
|
|
412
|
+
_dimension_project_config(
|
|
413
|
+
node=node,
|
|
414
|
+
namespace_requested=namespace_requested,
|
|
415
|
+
),
|
|
416
|
+
)
|
|
417
|
+
elif node.type == NodeType.METRIC:
|
|
418
|
+
project_components.append(
|
|
419
|
+
_metric_project_config(
|
|
420
|
+
node=node,
|
|
421
|
+
namespace_requested=namespace_requested,
|
|
422
|
+
),
|
|
423
|
+
)
|
|
424
|
+
else:
|
|
425
|
+
project_components.append(
|
|
426
|
+
_cube_project_config(
|
|
427
|
+
node=node,
|
|
428
|
+
namespace_requested=namespace_requested,
|
|
429
|
+
),
|
|
430
|
+
)
|
|
431
|
+
return project_components
|
{datajunction_server-0.0.1a35.dev1 → datajunction_server-0.0.1a36}/datajunction_server/sql/dag.py
RENAMED
|
@@ -73,6 +73,10 @@ def get_dimensions(
|
|
|
73
73
|
dimensions.append(
|
|
74
74
|
DimensionAttributeOutput(
|
|
75
75
|
name=f"{current_node.name}.{column.name}",
|
|
76
|
+
node_name=current_node.current.name,
|
|
77
|
+
node_display_name=current_node.current.display_name,
|
|
78
|
+
is_primary_key=column.name
|
|
79
|
+
in {pk.name for pk in current_node.current.primary_key()},
|
|
76
80
|
type=column.type,
|
|
77
81
|
path=join_path_str,
|
|
78
82
|
),
|
|
@@ -1365,6 +1365,7 @@ class BinaryOpKind(DJEnum):
|
|
|
1365
1365
|
Plus = "+"
|
|
1366
1366
|
Minus = "-"
|
|
1367
1367
|
Modulo = "%"
|
|
1368
|
+
NullSafeEq = "<=>"
|
|
1368
1369
|
|
|
1369
1370
|
|
|
1370
1371
|
@dataclass(eq=False)
|
|
@@ -2174,7 +2175,7 @@ class FunctionTable(FunctionTableExpression):
|
|
|
2174
2175
|
if self.column_list
|
|
2175
2176
|
else ""
|
|
2176
2177
|
)
|
|
2177
|
-
column_list_str = f"({cols})" if
|
|
2178
|
+
column_list_str = f"({cols})" if cols else ""
|
|
2178
2179
|
args_str = f"({', '.join(str(col) for col in self.args)})" if self.args else ""
|
|
2179
2180
|
return f"{self.name}{args_str}{as_}{alias}{column_list_str}"
|
|
2180
2181
|
|
|
@@ -2555,9 +2556,3 @@ class Query(TableExpression, UnNamed):
|
|
|
2555
2556
|
access_control,
|
|
2556
2557
|
)
|
|
2557
2558
|
self.select.add_aliases_to_unnamed_columns()
|
|
2558
|
-
|
|
2559
|
-
# Make the generated query deterministic
|
|
2560
|
-
self.select.projection = sorted(
|
|
2561
|
-
self.select.projection,
|
|
2562
|
-
key=lambda x: str(x.alias_or_name),
|
|
2563
|
-
)[:]
|
|
Binary file
|