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.
Files changed (412) hide show
  1. datajunction_server-0.0.1a35.dev1/.env +3 -0
  2. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.gitignore +3 -0
  3. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/PKG-INFO +2 -1
  4. datajunction_server-0.0.1a35.dev1/alembic/versions/2023_11_21_1611-d1a8716cf2d2_add_materialization_strategy_and_job_.py +69 -0
  5. datajunction_server-0.0.1a35.dev1/datajunction_server/__about__.py +4 -0
  6. datajunction_server-0.0.1a35.dev1/datajunction_server/api/cubes.py +155 -0
  7. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/data.py +1 -1
  8. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/helpers.py +28 -20
  9. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/main.py +10 -0
  10. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/materializations.py +11 -1
  11. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/nodes.py +18 -0
  12. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/sql.py +1 -1
  13. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/config.py +3 -0
  14. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/constants.py +1 -1
  15. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/construction/build.py +132 -61
  16. datajunction_server-0.0.1a35.dev1/datajunction_server/construction/dimensions.py +125 -0
  17. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/materializations.py +159 -191
  18. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/nodes.py +50 -99
  19. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/materialization/jobs/cube_materialization.py +10 -71
  20. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/column.py +17 -0
  21. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/cube.py +20 -0
  22. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/materialization.py +135 -1
  23. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/metric.py +1 -0
  24. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/node.py +10 -0
  25. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/partition.py +11 -0
  26. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/query.py +1 -1
  27. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/ast.py +12 -1
  28. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/dj.internal.db +0 -0
  29. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/pdm.lock +230 -1
  30. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/pyproject.toml +1 -0
  31. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/cubes_test.py +660 -580
  32. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/data_test.py +35 -27
  33. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/sql_test.py +96 -92
  34. datajunction_server-0.0.1a35.dev0/.env +0 -2
  35. datajunction_server-0.0.1a35.dev0/datajunction_server/__about__.py +0 -4
  36. datajunction_server-0.0.1a35.dev0/datajunction_server/api/cubes.py +0 -28
  37. datajunction_server-0.0.1a35.dev0/tests/default.duckdb +0 -0
  38. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.coveragerc +0 -0
  39. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.env.integration +0 -0
  40. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.flake8 +0 -0
  41. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.isort.cfg +0 -0
  42. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.pre-commit-config.yaml +0 -0
  43. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/.pylintrc +0 -0
  44. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/Dockerfile +0 -0
  45. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/Makefile +0 -0
  46. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/README.md +0 -0
  47. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/README +0 -0
  48. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/env.py +0 -0
  49. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/script.py.mako +0 -0
  50. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_07_07_2006-4e1ff36c27c6_initial_migration.py +0 -0
  51. {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
  52. {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
  53. {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
  54. {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
  55. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_08_08_1856-cde75f986a62_user_model.py +0 -0
  56. {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
  57. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic/versions/2023_09_18_1346-f2e9ef937daf_add_measures.py +0 -0
  58. {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
  59. {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
  60. {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
  61. {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
  62. {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
  63. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/alembic.ini +0 -0
  64. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/__init__.py +0 -0
  65. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/__init__.py +0 -0
  66. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/access/authentication/__init__.py +0 -0
  67. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/access/authentication/basic.py +0 -0
  68. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/access/authentication/github.py +0 -0
  69. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/access/authentication/google.py +0 -0
  70. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/access/authentication/whoami.py +0 -0
  71. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/attributes.py +0 -0
  72. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/catalogs.py +0 -0
  73. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/client.py +0 -0
  74. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/dimensions.py +0 -0
  75. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/djsql.py +0 -0
  76. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/engines.py +0 -0
  77. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/graphql/__init__.py +0 -0
  78. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/graphql/catalogs.py +0 -0
  79. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/graphql/engines.py +0 -0
  80. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/graphql/main.py +0 -0
  81. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/health.py +0 -0
  82. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/history.py +0 -0
  83. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/logging.conf +0 -0
  84. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/measures.py +0 -0
  85. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/metrics.py +0 -0
  86. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/namespaces.py +0 -0
  87. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/api/tags.py +0 -0
  88. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/construction/__init__.py +0 -0
  89. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/construction/dj_query.py +0 -0
  90. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/construction/exceptions.py +0 -0
  91. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/construction/utils.py +0 -0
  92. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/errors.py +0 -0
  93. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/__init__.py +0 -0
  94. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/__init__.py +0 -0
  95. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authentication/__init__.py +0 -0
  96. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authentication/basic.py +0 -0
  97. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authentication/github.py +0 -0
  98. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authentication/google.py +0 -0
  99. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authentication/http.py +0 -0
  100. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authentication/tokens.py +0 -0
  101. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/access/authorization.py +0 -0
  102. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/engines.py +0 -0
  103. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/internal/namespaces.py +0 -0
  104. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/materialization/__init__.py +0 -0
  105. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/materialization/jobs/__init__.py +0 -0
  106. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/materialization/jobs/materialization_job.py +0 -0
  107. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/__init__.py +0 -0
  108. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/access.py +0 -0
  109. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/attribute.py +0 -0
  110. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/base.py +0 -0
  111. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/catalog.py +0 -0
  112. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/database.py +0 -0
  113. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/engine.py +0 -0
  114. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/history.py +0 -0
  115. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/measure.py +0 -0
  116. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/table.py +0 -0
  117. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/tag.py +0 -0
  118. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/models/user.py +0 -0
  119. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/service_clients.py +0 -0
  120. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/__init__.py +0 -0
  121. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/dag.py +0 -0
  122. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/functions.py +0 -0
  123. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/__init__.py +0 -0
  124. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/__init__.py +0 -0
  125. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/antlr4.py +0 -0
  126. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/exceptions.py +0 -0
  127. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/SqlBaseLexer.g4 +0 -0
  128. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/SqlBaseParser.g4 +0 -0
  129. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/__init__.py +0 -0
  130. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.interp +0 -0
  131. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.py +0 -0
  132. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.tokens +0 -0
  133. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.interp +0 -0
  134. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.py +0 -0
  135. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.tokens +0 -0
  136. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserListener.py +0 -0
  137. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserVisitor.py +0 -0
  138. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/sql/parsing/types.py +0 -0
  139. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/superset.py +0 -0
  140. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/transpilation.py +0 -0
  141. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/typing.py +0 -0
  142. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/datajunction_server/utils.py +0 -0
  143. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/default.duckdb +0 -0
  144. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/dj.copy.db +0 -0
  145. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/dj.demo.db +0 -0
  146. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/dj.test.db +0 -0
  147. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/requirements/docker.txt +0 -0
  148. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/requirements/test.txt +0 -0
  149. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/scripts/docs-snippets.js +0 -0
  150. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/scripts/docs-snippets.sh +0 -0
  151. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/scripts/generate-openapi.py +0 -0
  152. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/__init__.py +0 -0
  153. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/__init__.py +0 -0
  154. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/attributes_test.py +0 -0
  155. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/catalog_test.py +0 -0
  156. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/client_test.py +0 -0
  157. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/dimensions_test.py +0 -0
  158. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/djql_test.py +0 -0
  159. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/engine_test.py +0 -0
  160. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/graphql/__init__.py +0 -0
  161. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/graphql/catalog_test.py +0 -0
  162. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/graphql/engine_test.py +0 -0
  163. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/health_test.py +0 -0
  164. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/helpers_test.py +0 -0
  165. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/history_test.py +0 -0
  166. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/measures_test.py +0 -0
  167. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/metrics_test.py +0 -0
  168. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/namespaces_test.py +0 -0
  169. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/node_update_test.py +0 -0
  170. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/nodes_test.py +0 -0
  171. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/routers_test.py +0 -0
  172. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/api/tags_test.py +0 -0
  173. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/conftest.py +0 -0
  174. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/__init__.py +0 -0
  175. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/build_test.py +0 -0
  176. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/compile_test.py +0 -0
  177. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/exceptions_test.py +0 -0
  178. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/fixtures.py +0 -0
  179. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/inference_test.py +0 -0
  180. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/construction/utils_test.py +0 -0
  181. {datajunction_server-0.0.1a35.dev0/tests/api → datajunction_server-0.0.1a35.dev1/tests}/default.duckdb +0 -0
  182. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/duckdb.sql +0 -0
  183. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/errors_test.py +0 -0
  184. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/examples.py +0 -0
  185. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/fixes_test.py +0 -0
  186. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/integration/__init__.py +0 -0
  187. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/integration/basic_test.py +0 -0
  188. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/internal/authentication/basic_test.py +0 -0
  189. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/internal/authentication/github_test.py +0 -0
  190. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/internal/authentication/http_test.py +0 -0
  191. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/internal/authentication/token_test.py +0 -0
  192. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/internal/authentication/whoami_test.py +0 -0
  193. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/migrations_test.py +0 -0
  194. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/models/__init__.py +0 -0
  195. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/models/catalog_test.py +0 -0
  196. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/models/hash_test.py +0 -0
  197. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/models/measure_test.py +0 -0
  198. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/models/node_test.py +0 -0
  199. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/models/query_test.py +0 -0
  200. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/service_clients_test.py +0 -0
  201. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/__init__.py +0 -0
  202. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/dag_test.py +0 -0
  203. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/functions_test.py +0 -0
  204. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/__init__.py +0 -0
  205. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/backends/__init__.py +0 -0
  206. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/backends/antlr4_test.py +0 -0
  207. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/backends/types_test.py +0 -0
  208. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/__init__.py +0 -0
  209. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query1.sql +0 -0
  210. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query10.sql +0 -0
  211. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query11.sql +0 -0
  212. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query12.sql +0 -0
  213. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query13.sql +0 -0
  214. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query14.sql +0 -0
  215. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query15.sql +0 -0
  216. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query16.sql +0 -0
  217. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query17.sql +0 -0
  218. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query18.sql +0 -0
  219. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query19.sql +0 -0
  220. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query2.sql +0 -0
  221. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query20.sql +0 -0
  222. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query21.sql +0 -0
  223. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query22.sql +0 -0
  224. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query23.sql +0 -0
  225. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query24.sql +0 -0
  226. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query25.sql +0 -0
  227. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query26.sql +0 -0
  228. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query27.sql +0 -0
  229. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query28.sql +0 -0
  230. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query29.sql +0 -0
  231. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query3.sql +0 -0
  232. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query30.sql +0 -0
  233. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query31.sql +0 -0
  234. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query32.sql +0 -0
  235. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query33.sql +0 -0
  236. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query34.sql +0 -0
  237. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query35.sql +0 -0
  238. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query36.sql +0 -0
  239. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query37.sql +0 -0
  240. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query38.sql +0 -0
  241. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query39.sql +0 -0
  242. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query4.sql +0 -0
  243. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query40.sql +0 -0
  244. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query41.sql +0 -0
  245. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query42.sql +0 -0
  246. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query43.sql +0 -0
  247. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query44.sql +0 -0
  248. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query45.sql +0 -0
  249. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query46.sql +0 -0
  250. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query47.sql +0 -0
  251. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query48.sql +0 -0
  252. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query49.sql +0 -0
  253. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query5.sql +0 -0
  254. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query50.sql +0 -0
  255. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query51.sql +0 -0
  256. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query52.sql +0 -0
  257. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query53.sql +0 -0
  258. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query54.sql +0 -0
  259. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query55.sql +0 -0
  260. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query56.sql +0 -0
  261. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query57.sql +0 -0
  262. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query58.sql +0 -0
  263. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query59.sql +0 -0
  264. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query6.sql +0 -0
  265. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query60.sql +0 -0
  266. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query61.sql +0 -0
  267. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query62.sql +0 -0
  268. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query63.sql +0 -0
  269. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query64.sql +0 -0
  270. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query65.sql +0 -0
  271. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query66.sql +0 -0
  272. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query67.sql +0 -0
  273. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query68.sql +0 -0
  274. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query69.sql +0 -0
  275. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query7.sql +0 -0
  276. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query70.sql +0 -0
  277. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query71.sql +0 -0
  278. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query72.sql +0 -0
  279. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query73.sql +0 -0
  280. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query74.sql +0 -0
  281. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query75.sql +0 -0
  282. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query76.sql +0 -0
  283. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query77.sql +0 -0
  284. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query78.sql +0 -0
  285. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query79.sql +0 -0
  286. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query8.sql +0 -0
  287. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query80.sql +0 -0
  288. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query81.sql +0 -0
  289. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query82.sql +0 -0
  290. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query83.sql +0 -0
  291. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query84.sql +0 -0
  292. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query85.sql +0 -0
  293. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query86.sql +0 -0
  294. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query87.sql +0 -0
  295. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query88.sql +0 -0
  296. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query89.sql +0 -0
  297. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query9.sql +0 -0
  298. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query90.sql +0 -0
  299. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query91.sql +0 -0
  300. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query92.sql +0 -0
  301. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query93.sql +0 -0
  302. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query94.sql +0 -0
  303. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query95.sql +0 -0
  304. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query96.sql +0 -0
  305. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query97.sql +0 -0
  306. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query98.sql +0 -0
  307. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/ansi/query99.sql +0 -0
  308. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query1.sql +0 -0
  309. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query10.sql +0 -0
  310. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query11.sql +0 -0
  311. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query12.sql +0 -0
  312. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query13.sql +0 -0
  313. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query14.sql +0 -0
  314. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query15.sql +0 -0
  315. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query16.sql +0 -0
  316. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query17.sql +0 -0
  317. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query18.sql +0 -0
  318. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query19.sql +0 -0
  319. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query2.sql +0 -0
  320. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query20.sql +0 -0
  321. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query21.sql +0 -0
  322. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query22.sql +0 -0
  323. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query23.sql +0 -0
  324. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query24.sql +0 -0
  325. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query25.sql +0 -0
  326. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query26.sql +0 -0
  327. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query27.sql +0 -0
  328. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query28.sql +0 -0
  329. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query29.sql +0 -0
  330. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query3.sql +0 -0
  331. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query30.sql +0 -0
  332. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query31.sql +0 -0
  333. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query32.sql +0 -0
  334. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query33.sql +0 -0
  335. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query34.sql +0 -0
  336. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query35.sql +0 -0
  337. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query36.sql +0 -0
  338. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query37.sql +0 -0
  339. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query38.sql +0 -0
  340. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query39.sql +0 -0
  341. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query4.sql +0 -0
  342. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query40.sql +0 -0
  343. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query41.sql +0 -0
  344. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query42.sql +0 -0
  345. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query43.sql +0 -0
  346. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query44.sql +0 -0
  347. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query45.sql +0 -0
  348. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query46.sql +0 -0
  349. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query47.sql +0 -0
  350. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query48.sql +0 -0
  351. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query49.sql +0 -0
  352. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query5.sql +0 -0
  353. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query50.sql +0 -0
  354. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query51.sql +0 -0
  355. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query52.sql +0 -0
  356. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query53.sql +0 -0
  357. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query54.sql +0 -0
  358. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query55.sql +0 -0
  359. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query56.sql +0 -0
  360. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query57.sql +0 -0
  361. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query58.sql +0 -0
  362. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query59.sql +0 -0
  363. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query6.sql +0 -0
  364. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query60.sql +0 -0
  365. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query61.sql +0 -0
  366. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query62.sql +0 -0
  367. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query63.sql +0 -0
  368. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query64.sql +0 -0
  369. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query65.sql +0 -0
  370. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query66.sql +0 -0
  371. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query67.sql +0 -0
  372. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query68.sql +0 -0
  373. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query69.sql +0 -0
  374. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query7.sql +0 -0
  375. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query70.sql +0 -0
  376. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query71.sql +0 -0
  377. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query72.sql +0 -0
  378. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query73.sql +0 -0
  379. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query74.sql +0 -0
  380. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query75.sql +0 -0
  381. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query76.sql +0 -0
  382. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query77.sql +0 -0
  383. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query78.sql +0 -0
  384. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query79.sql +0 -0
  385. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query8.sql +0 -0
  386. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query80.sql +0 -0
  387. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query81.sql +0 -0
  388. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query82.sql +0 -0
  389. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query83.sql +0 -0
  390. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query84.sql +0 -0
  391. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query85.sql +0 -0
  392. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query86.sql +0 -0
  393. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query87.sql +0 -0
  394. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query88.sql +0 -0
  395. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query89.sql +0 -0
  396. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query9.sql +0 -0
  397. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query90.sql +0 -0
  398. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query91.sql +0 -0
  399. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query92.sql +0 -0
  400. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query93.sql +0 -0
  401. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query94.sql +0 -0
  402. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query95.sql +0 -0
  403. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query96.sql +0 -0
  404. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query97.sql +0 -0
  405. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query98.sql +0 -0
  406. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/sparksql/query99.sql +0 -0
  407. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/queries/tpcds/test_tpcds.py +0 -0
  408. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/parsing/test_ast.py +0 -0
  409. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/sql/utils.py +0 -0
  410. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/superset_test.py +0 -0
  411. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/transpilation_test.py +0 -0
  412. {datajunction_server-0.0.1a35.dev0 → datajunction_server-0.0.1a35.dev1}/tests/utils_test.py +0 -0
@@ -0,0 +1,3 @@
1
+ QUERY_SERVICE=http://host.docker.internal:8002
2
+ INDEX=sqlite:///dj.internal.db?check_same_thread=False
3
+ SECRET=a-fake-secretkey
@@ -117,3 +117,6 @@ djqs.db
117
117
 
118
118
  # oauth credentials
119
119
  client_secret*
120
+
121
+ # random notebooks
122
+ Untitled*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: datajunction-server
3
- Version: 0.0.1a35.dev0
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,4 @@
1
+ """
2
+ Version for Hatch
3
+ """
4
+ __version__ = "0.0.1a35.dev1"
@@ -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
+ )
@@ -195,7 +195,7 @@ def get_data( # pylint: disable=too-many-locals
195
195
  )
196
196
 
197
197
  columns = [
198
- assemble_column_metadata(col, node_name) # type: ignore
198
+ assemble_column_metadata(col) # type: ignore
199
199
  for col in query_ast.select.projection
200
200
  ]
201
201
 
@@ -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, amenable_name
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, metrics) # type: ignore
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
- column_name_on_ast = column.alias_or_name.name
1282
- if not isinstance(node_name, List):
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=column_name_on_node,
1298
- node=reference_node_name,
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(session, current_revision, data)
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, node_name) # type: ignore
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
  """
@@ -20,4 +20,4 @@ AUTH_COOKIE = "__dj"
20
20
  LOGGED_IN_FLAG_COOKIE = "__djlif"
21
21
 
22
22
  # Maximum amount of nodes to return for requests to list all nodes
23
- NODE_LIST_MAX = 50000
23
+ NODE_LIST_MAX = 1000