datajunction-server 0.0.1a36__tar.gz → 0.0.1a37.dev0__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 (415) hide show
  1. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/PKG-INFO +1 -1
  2. datajunction_server-0.0.1a37.dev0/alembic/versions/2023_11_21_1611-d1a8716cf2d2_add_materialization_strategy_and_job_.py +69 -0
  3. datajunction_server-0.0.1a37.dev0/curl-format.txt +9 -0
  4. datajunction_server-0.0.1a37.dev0/datajunction_server/__about__.py +4 -0
  5. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/attributes.py +1 -1
  6. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/client.py +4 -5
  7. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/cubes.py +1 -1
  8. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/data.py +2 -5
  9. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/dimensions.py +2 -1
  10. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/health.py +2 -2
  11. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/helpers.py +6 -4
  12. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/main.py +1 -0
  13. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/materializations.py +35 -2
  14. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/metrics.py +18 -22
  15. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/namespaces.py +1 -1
  16. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/nodes.py +1 -1
  17. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/tags.py +2 -1
  18. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/construction/build.py +19 -4
  19. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/construction/dj_query.py +2 -1
  20. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/construction/utils.py +2 -1
  21. datajunction_server-0.0.1a37.dev0/datajunction_server/enum.py +21 -0
  22. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/errors.py +3 -2
  23. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/materializations.py +10 -38
  24. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/namespaces.py +2 -1
  25. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/nodes.py +17 -4
  26. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/materialization/jobs/__init__.py +0 -2
  27. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/materialization/jobs/cube_materialization.py +2 -0
  28. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/materialization/jobs/materialization_job.py +23 -20
  29. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/attribute.py +3 -3
  30. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/column.py +2 -2
  31. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/cube.py +2 -1
  32. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/engine.py +2 -2
  33. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/history.py +3 -3
  34. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/materialization.py +170 -51
  35. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/measure.py +2 -2
  36. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/node.py +7 -33
  37. datajunction_server-0.0.1a37.dev0/datajunction_server/models/node_type.py +22 -0
  38. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/partition.py +25 -12
  39. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/query.py +2 -2
  40. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/dag.py +18 -14
  41. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/ast.py +1 -2
  42. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/types.py +3 -2
  43. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/typing.py +4 -3
  44. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/utils.py +3 -2
  45. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/dj.internal.db +0 -0
  46. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/pyproject.toml +3 -0
  47. datajunction_server-0.0.1a37.dev0/tester.py +24 -0
  48. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/client_test.py +6 -9
  49. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/cubes_test.py +31 -29
  50. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/data_test.py +50 -7
  51. datajunction_server-0.0.1a37.dev0/tests/api/materializations_test.py +43 -0
  52. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/metrics_test.py +4 -9
  53. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/nodes_test.py +195 -90
  54. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/sql_test.py +2 -1
  55. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/construction/build_test.py +2 -1
  56. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/construction/fixtures.py +19 -3
  57. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/construction/utils_test.py +7 -7
  58. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/models/node_test.py +1 -1
  59. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/service_clients_test.py +13 -2
  60. datajunction_server-0.0.1a37.dev0/tests/sql/parsing/queries/__init__.py +0 -0
  61. datajunction_server-0.0.1a36/datajunction_server/__about__.py +0 -4
  62. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/.coveragerc +0 -0
  63. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/.env +0 -0
  64. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/.env.integration +0 -0
  65. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/.flake8 +0 -0
  66. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/.gitignore +0 -0
  67. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/.isort.cfg +0 -0
  68. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/.pre-commit-config.yaml +0 -0
  69. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/.pylintrc +0 -0
  70. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/Dockerfile +0 -0
  71. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/Makefile +0 -0
  72. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/README.md +0 -0
  73. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/README +0 -0
  74. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/env.py +0 -0
  75. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/script.py.mako +0 -0
  76. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_07_07_2006-4e1ff36c27c6_initial_migration.py +0 -0
  77. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_07_11_2337-bd313a10e2a8_add_bound_dimensions_attribute_to_.py +0 -0
  78. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_07_14_0428-5c3d0c958c3c_add_node_to_history.py +0 -0
  79. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_07_30_1608-4147da2ac841_add_deactivated_to_materialization.py +0 -0
  80. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_08_02_0055-ccc77abcf899_add_deactivated_to_namespace.py +0 -0
  81. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_08_08_1856-cde75f986a62_user_model.py +0 -0
  82. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_08_18_2348-fe8d3dbe512a_store_column_level_lineage.py +0 -0
  83. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_09_18_1346-f2e9ef937daf_add_measures.py +0 -0
  84. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_09_20_2049-879128f3e778_add_display_name_to_column.py +0 -0
  85. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_09_21_0033-b75e5163b09d_add_description_and_display_name_to_.py +0 -0
  86. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_10_02_1642-d8fa1e6371a7_add_url_to_availability_state.py +0 -0
  87. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_10_08_1438-58e246fba34b_add_partitions_and_backfills.py +0 -0
  88. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic/versions/2023_10_24_0354-87cf9c00ac00_add_metric_metadata.py +0 -0
  89. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/alembic.ini +0 -0
  90. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/__init__.py +0 -0
  91. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/__init__.py +0 -0
  92. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/access/authentication/__init__.py +0 -0
  93. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/access/authentication/basic.py +0 -0
  94. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/access/authentication/github.py +0 -0
  95. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/access/authentication/google.py +0 -0
  96. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/access/authentication/whoami.py +0 -0
  97. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/catalogs.py +0 -0
  98. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/djsql.py +0 -0
  99. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/engines.py +0 -0
  100. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/graphql/__init__.py +0 -0
  101. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/graphql/catalogs.py +0 -0
  102. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/graphql/engines.py +0 -0
  103. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/graphql/main.py +0 -0
  104. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/history.py +0 -0
  105. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/logging.conf +0 -0
  106. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/measures.py +0 -0
  107. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/api/sql.py +0 -0
  108. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/config.py +0 -0
  109. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/constants.py +0 -0
  110. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/construction/__init__.py +0 -0
  111. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/construction/dimensions.py +0 -0
  112. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/construction/exceptions.py +0 -0
  113. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/__init__.py +0 -0
  114. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/access/__init__.py +0 -0
  115. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/access/authentication/__init__.py +0 -0
  116. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/access/authentication/basic.py +0 -0
  117. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/access/authentication/github.py +0 -0
  118. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/access/authentication/google.py +0 -0
  119. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/access/authentication/http.py +0 -0
  120. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/access/authentication/tokens.py +0 -0
  121. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/access/authorization.py +0 -0
  122. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/internal/engines.py +0 -0
  123. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/materialization/__init__.py +0 -0
  124. /datajunction_server-0.0.1a36/datajunction_server/sql/parsing/backends/__init__.py → /datajunction_server-0.0.1a37.dev0/datajunction_server/materialization/jobs/job_types.py +0 -0
  125. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/__init__.py +0 -0
  126. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/access.py +0 -0
  127. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/base.py +0 -0
  128. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/catalog.py +0 -0
  129. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/database.py +0 -0
  130. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/metric.py +0 -0
  131. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/table.py +0 -0
  132. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/tag.py +0 -0
  133. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/models/user.py +0 -0
  134. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/service_clients.py +0 -0
  135. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/__init__.py +0 -0
  136. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/functions.py +0 -0
  137. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/__init__.py +0 -0
  138. {datajunction_server-0.0.1a36/datajunction_server/sql/parsing/backends/grammar → datajunction_server-0.0.1a37.dev0/datajunction_server/sql/parsing/backends}/__init__.py +0 -0
  139. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/backends/antlr4.py +0 -0
  140. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/backends/exceptions.py +0 -0
  141. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/backends/grammar/SqlBaseLexer.g4 +0 -0
  142. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/backends/grammar/SqlBaseParser.g4 +0 -0
  143. {datajunction_server-0.0.1a36/tests → datajunction_server-0.0.1a37.dev0/datajunction_server/sql/parsing/backends/grammar}/__init__.py +0 -0
  144. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.interp +0 -0
  145. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.py +0 -0
  146. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.tokens +0 -0
  147. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.interp +0 -0
  148. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.py +0 -0
  149. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.tokens +0 -0
  150. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserListener.py +0 -0
  151. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserVisitor.py +0 -0
  152. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/superset.py +0 -0
  153. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/datajunction_server/transpilation.py +0 -0
  154. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/default.duckdb +0 -0
  155. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/dj.copy.db +0 -0
  156. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/dj.demo.db +0 -0
  157. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/dj.test.db +0 -0
  158. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/pdm.lock +0 -0
  159. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/requirements/docker.txt +0 -0
  160. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/requirements/test.txt +0 -0
  161. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/scripts/docs-snippets.js +0 -0
  162. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/scripts/docs-snippets.sh +0 -0
  163. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/scripts/generate-openapi.py +0 -0
  164. {datajunction_server-0.0.1a36/tests/api → datajunction_server-0.0.1a37.dev0/tests}/__init__.py +0 -0
  165. {datajunction_server-0.0.1a36/tests/api/graphql → datajunction_server-0.0.1a37.dev0/tests/api}/__init__.py +0 -0
  166. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/attributes_test.py +0 -0
  167. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/catalog_test.py +0 -0
  168. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/dimensions_test.py +0 -0
  169. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/djql_test.py +0 -0
  170. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/engine_test.py +0 -0
  171. {datajunction_server-0.0.1a36/tests/construction → datajunction_server-0.0.1a37.dev0/tests/api/graphql}/__init__.py +0 -0
  172. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/graphql/catalog_test.py +0 -0
  173. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/graphql/engine_test.py +0 -0
  174. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/health_test.py +0 -0
  175. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/helpers_test.py +0 -0
  176. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/history_test.py +0 -0
  177. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/measures_test.py +0 -0
  178. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/namespaces_test.py +0 -0
  179. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/node_update_test.py +0 -0
  180. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/routers_test.py +0 -0
  181. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/api/tags_test.py +0 -0
  182. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/conftest.py +0 -0
  183. {datajunction_server-0.0.1a36/tests/integration → datajunction_server-0.0.1a37.dev0/tests/construction}/__init__.py +0 -0
  184. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/construction/compile_test.py +0 -0
  185. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/construction/exceptions_test.py +0 -0
  186. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/construction/inference_test.py +0 -0
  187. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/default.duckdb +0 -0
  188. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/duckdb.sql +0 -0
  189. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/errors_test.py +0 -0
  190. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/examples.py +0 -0
  191. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/fixes_test.py +0 -0
  192. {datajunction_server-0.0.1a36/tests/models → datajunction_server-0.0.1a37.dev0/tests/integration}/__init__.py +0 -0
  193. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/integration/basic_test.py +0 -0
  194. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/internal/authentication/basic_test.py +0 -0
  195. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/internal/authentication/github_test.py +0 -0
  196. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/internal/authentication/http_test.py +0 -0
  197. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/internal/authentication/token_test.py +0 -0
  198. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/internal/authentication/whoami_test.py +0 -0
  199. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/migrations_test.py +0 -0
  200. {datajunction_server-0.0.1a36/tests/sql → datajunction_server-0.0.1a37.dev0/tests/models}/__init__.py +0 -0
  201. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/models/catalog_test.py +0 -0
  202. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/models/hash_test.py +0 -0
  203. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/models/measure_test.py +0 -0
  204. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/models/query_test.py +0 -0
  205. {datajunction_server-0.0.1a36/tests/sql/parsing → datajunction_server-0.0.1a37.dev0/tests/sql}/__init__.py +0 -0
  206. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/dag_test.py +0 -0
  207. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/functions_test.py +0 -0
  208. {datajunction_server-0.0.1a36/tests/sql/parsing/backends → datajunction_server-0.0.1a37.dev0/tests/sql/parsing}/__init__.py +0 -0
  209. {datajunction_server-0.0.1a36/tests/sql/parsing/queries → datajunction_server-0.0.1a37.dev0/tests/sql/parsing/backends}/__init__.py +0 -0
  210. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/backends/antlr4_test.py +0 -0
  211. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/backends/types_test.py +0 -0
  212. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query1.sql +0 -0
  213. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query10.sql +0 -0
  214. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query11.sql +0 -0
  215. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query12.sql +0 -0
  216. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query13.sql +0 -0
  217. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query14.sql +0 -0
  218. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query15.sql +0 -0
  219. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query16.sql +0 -0
  220. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query17.sql +0 -0
  221. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query18.sql +0 -0
  222. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query19.sql +0 -0
  223. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query2.sql +0 -0
  224. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query20.sql +0 -0
  225. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query21.sql +0 -0
  226. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query22.sql +0 -0
  227. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query23.sql +0 -0
  228. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query24.sql +0 -0
  229. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query25.sql +0 -0
  230. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query26.sql +0 -0
  231. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query27.sql +0 -0
  232. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query28.sql +0 -0
  233. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query29.sql +0 -0
  234. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query3.sql +0 -0
  235. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query30.sql +0 -0
  236. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query31.sql +0 -0
  237. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query32.sql +0 -0
  238. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query33.sql +0 -0
  239. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query34.sql +0 -0
  240. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query35.sql +0 -0
  241. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query36.sql +0 -0
  242. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query37.sql +0 -0
  243. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query38.sql +0 -0
  244. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query39.sql +0 -0
  245. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query4.sql +0 -0
  246. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query40.sql +0 -0
  247. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query41.sql +0 -0
  248. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query42.sql +0 -0
  249. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query43.sql +0 -0
  250. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query44.sql +0 -0
  251. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query45.sql +0 -0
  252. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query46.sql +0 -0
  253. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query47.sql +0 -0
  254. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query48.sql +0 -0
  255. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query49.sql +0 -0
  256. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query5.sql +0 -0
  257. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query50.sql +0 -0
  258. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query51.sql +0 -0
  259. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query52.sql +0 -0
  260. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query53.sql +0 -0
  261. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query54.sql +0 -0
  262. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query55.sql +0 -0
  263. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query56.sql +0 -0
  264. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query57.sql +0 -0
  265. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query58.sql +0 -0
  266. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query59.sql +0 -0
  267. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query6.sql +0 -0
  268. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query60.sql +0 -0
  269. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query61.sql +0 -0
  270. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query62.sql +0 -0
  271. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query63.sql +0 -0
  272. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query64.sql +0 -0
  273. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query65.sql +0 -0
  274. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query66.sql +0 -0
  275. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query67.sql +0 -0
  276. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query68.sql +0 -0
  277. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query69.sql +0 -0
  278. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query7.sql +0 -0
  279. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query70.sql +0 -0
  280. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query71.sql +0 -0
  281. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query72.sql +0 -0
  282. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query73.sql +0 -0
  283. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query74.sql +0 -0
  284. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query75.sql +0 -0
  285. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query76.sql +0 -0
  286. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query77.sql +0 -0
  287. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query78.sql +0 -0
  288. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query79.sql +0 -0
  289. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query8.sql +0 -0
  290. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query80.sql +0 -0
  291. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query81.sql +0 -0
  292. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query82.sql +0 -0
  293. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query83.sql +0 -0
  294. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query84.sql +0 -0
  295. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query85.sql +0 -0
  296. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query86.sql +0 -0
  297. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query87.sql +0 -0
  298. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query88.sql +0 -0
  299. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query89.sql +0 -0
  300. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query9.sql +0 -0
  301. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query90.sql +0 -0
  302. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query91.sql +0 -0
  303. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query92.sql +0 -0
  304. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query93.sql +0 -0
  305. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query94.sql +0 -0
  306. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query95.sql +0 -0
  307. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query96.sql +0 -0
  308. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query97.sql +0 -0
  309. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query98.sql +0 -0
  310. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/ansi/query99.sql +0 -0
  311. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query1.sql +0 -0
  312. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query10.sql +0 -0
  313. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query11.sql +0 -0
  314. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query12.sql +0 -0
  315. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query13.sql +0 -0
  316. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query14.sql +0 -0
  317. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query15.sql +0 -0
  318. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query16.sql +0 -0
  319. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query17.sql +0 -0
  320. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query18.sql +0 -0
  321. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query19.sql +0 -0
  322. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query2.sql +0 -0
  323. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query20.sql +0 -0
  324. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query21.sql +0 -0
  325. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query22.sql +0 -0
  326. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query23.sql +0 -0
  327. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query24.sql +0 -0
  328. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query25.sql +0 -0
  329. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query26.sql +0 -0
  330. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query27.sql +0 -0
  331. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query28.sql +0 -0
  332. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query29.sql +0 -0
  333. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query3.sql +0 -0
  334. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query30.sql +0 -0
  335. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query31.sql +0 -0
  336. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query32.sql +0 -0
  337. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query33.sql +0 -0
  338. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query34.sql +0 -0
  339. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query35.sql +0 -0
  340. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query36.sql +0 -0
  341. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query37.sql +0 -0
  342. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query38.sql +0 -0
  343. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query39.sql +0 -0
  344. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query4.sql +0 -0
  345. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query40.sql +0 -0
  346. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query41.sql +0 -0
  347. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query42.sql +0 -0
  348. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query43.sql +0 -0
  349. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query44.sql +0 -0
  350. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query45.sql +0 -0
  351. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query46.sql +0 -0
  352. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query47.sql +0 -0
  353. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query48.sql +0 -0
  354. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query49.sql +0 -0
  355. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query5.sql +0 -0
  356. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query50.sql +0 -0
  357. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query51.sql +0 -0
  358. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query52.sql +0 -0
  359. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query53.sql +0 -0
  360. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query54.sql +0 -0
  361. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query55.sql +0 -0
  362. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query56.sql +0 -0
  363. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query57.sql +0 -0
  364. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query58.sql +0 -0
  365. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query59.sql +0 -0
  366. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query6.sql +0 -0
  367. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query60.sql +0 -0
  368. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query61.sql +0 -0
  369. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query62.sql +0 -0
  370. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query63.sql +0 -0
  371. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query64.sql +0 -0
  372. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query65.sql +0 -0
  373. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query66.sql +0 -0
  374. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query67.sql +0 -0
  375. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query68.sql +0 -0
  376. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query69.sql +0 -0
  377. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query7.sql +0 -0
  378. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query70.sql +0 -0
  379. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query71.sql +0 -0
  380. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query72.sql +0 -0
  381. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query73.sql +0 -0
  382. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query74.sql +0 -0
  383. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query75.sql +0 -0
  384. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query76.sql +0 -0
  385. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query77.sql +0 -0
  386. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query78.sql +0 -0
  387. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query79.sql +0 -0
  388. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query8.sql +0 -0
  389. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query80.sql +0 -0
  390. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query81.sql +0 -0
  391. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query82.sql +0 -0
  392. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query83.sql +0 -0
  393. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query84.sql +0 -0
  394. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query85.sql +0 -0
  395. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query86.sql +0 -0
  396. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query87.sql +0 -0
  397. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query88.sql +0 -0
  398. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query89.sql +0 -0
  399. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query9.sql +0 -0
  400. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query90.sql +0 -0
  401. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query91.sql +0 -0
  402. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query92.sql +0 -0
  403. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query93.sql +0 -0
  404. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query94.sql +0 -0
  405. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query95.sql +0 -0
  406. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query96.sql +0 -0
  407. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query97.sql +0 -0
  408. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query98.sql +0 -0
  409. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query99.sql +0 -0
  410. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/queries/tpcds/test_tpcds.py +0 -0
  411. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/parsing/test_ast.py +0 -0
  412. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/sql/utils.py +0 -0
  413. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/superset_test.py +0 -0
  414. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/tests/transpilation_test.py +0 -0
  415. {datajunction_server-0.0.1a36 → datajunction_server-0.0.1a37.dev0}/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.1a36
3
+ Version: 0.0.1a37.dev0
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>
@@ -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,9 @@
1
+ time_namelookup: %{time_namelookup}s\n
2
+ time_connect: %{time_connect}s\n
3
+ time_appconnect: %{time_appconnect}s\n
4
+ time_pretransfer: %{time_pretransfer}s\n
5
+ time_redirect: %{time_redirect}s\n
6
+ time_starttransfer: %{time_starttransfer}s\n
7
+ ----------\n
8
+ time_total: %{time_total}s\n
9
+
@@ -0,0 +1,4 @@
1
+ """
2
+ Version for Hatch
3
+ """
4
+ __version__ = "0.0.1a37.dev0"
@@ -15,7 +15,7 @@ from datajunction_server.models.attribute import (
15
15
  AttributeType,
16
16
  MutableAttributeTypeFields,
17
17
  )
18
- from datajunction_server.models.node import NodeType
18
+ from datajunction_server.models.node_type import NodeType
19
19
  from datajunction_server.utils import get_session, get_settings
20
20
 
21
21
  _logger = logging.getLogger(__name__)
@@ -10,7 +10,8 @@ from sqlmodel import Session
10
10
 
11
11
  from datajunction_server.api.helpers import get_node_by_name
12
12
  from datajunction_server.internal.access.authentication.http import SecureAPIRouter
13
- from datajunction_server.models.node import NodeType
13
+ from datajunction_server.models.materialization import MaterializationJobTypeEnum
14
+ from datajunction_server.models.node_type import NodeType
14
15
  from datajunction_server.utils import get_session, get_settings
15
16
 
16
17
  _logger = logging.getLogger(__name__)
@@ -125,10 +126,8 @@ def client_code_for_adding_materialization(
125
126
  "{node.name}"
126
127
  )
127
128
  materialization = MaterializationConfig(
128
- engine=Engine(
129
- name="{materialization.engine.name}",
130
- version="{materialization.engine.version}",
131
- ),
129
+ job="{MaterializationJobTypeEnum.find_match(materialization.job).name.lower()}",
130
+ strategy="{materialization.strategy}",
132
131
  schedule="{materialization.schedule}",
133
132
  config={with_b.strip()},
134
133
  )
@@ -18,7 +18,7 @@ from datajunction_server.models.cube import (
18
18
  DimensionValues,
19
19
  )
20
20
  from datajunction_server.models.metric import TranslatedSQL
21
- from datajunction_server.models.node import NodeType
21
+ from datajunction_server.models.node_type import NodeType
22
22
  from datajunction_server.models.query import QueryCreate
23
23
  from datajunction_server.service_clients import QueryServiceClient
24
24
  from datajunction_server.utils import (
@@ -31,11 +31,8 @@ from datajunction_server.internal.engines import get_engine
31
31
  from datajunction_server.models import History, User, access
32
32
  from datajunction_server.models.history import ActivityType, EntityType
33
33
  from datajunction_server.models.metric import TranslatedSQL
34
- from datajunction_server.models.node import (
35
- AvailabilityState,
36
- AvailabilityStateBase,
37
- NodeType,
38
- )
34
+ from datajunction_server.models.node import AvailabilityState, AvailabilityStateBase
35
+ from datajunction_server.models.node_type import NodeType
39
36
  from datajunction_server.models.query import QueryCreate, QueryWithResults
40
37
  from datajunction_server.service_clients import QueryServiceClient
41
38
  from datajunction_server.utils import (
@@ -16,7 +16,8 @@ from datajunction_server.internal.access.authorization import (
16
16
  validate_access_requests,
17
17
  )
18
18
  from datajunction_server.models import User, access
19
- from datajunction_server.models.node import NodeRevisionOutput, NodeType
19
+ from datajunction_server.models.node import NodeRevisionOutput
20
+ from datajunction_server.models.node_type import NodeType
20
21
  from datajunction_server.sql.dag import (
21
22
  get_nodes_with_common_dimensions,
22
23
  get_nodes_with_dimension,
@@ -2,13 +2,13 @@
2
2
  Application healthchecks.
3
3
  """
4
4
 
5
- import enum
6
5
  from typing import List
7
6
 
8
7
  from fastapi import APIRouter, Depends
9
8
  from sqlalchemy import select
10
9
  from sqlmodel import Session, SQLModel
11
10
 
11
+ from datajunction_server.enum import StrEnum
12
12
  from datajunction_server.utils import get_session, get_settings
13
13
 
14
14
  settings = get_settings()
@@ -16,7 +16,7 @@ settings = get_settings()
16
16
  router = APIRouter(tags=["health"])
17
17
 
18
18
 
19
- class HealthcheckStatus(str, enum.Enum):
19
+ class HealthcheckStatus(StrEnum):
20
20
  """
21
21
  Possible health statuses.
22
22
  """
@@ -61,8 +61,8 @@ from datajunction_server.models.node import (
61
61
  NodeRevision,
62
62
  NodeRevisionBase,
63
63
  NodeStatus,
64
- NodeType,
65
64
  )
65
+ from datajunction_server.models.node_type import NodeType
66
66
  from datajunction_server.models.query import ColumnMetadata, QueryWithResults
67
67
  from datajunction_server.service_clients import QueryServiceClient
68
68
  from datajunction_server.sql.dag import get_nodes_with_dimension
@@ -953,9 +953,11 @@ async def query_event_stream( # pylint: disable=too-many-arguments
953
953
  break
954
954
 
955
955
  # Check the current state of the query
956
- query_next = query_service_client.get_query(query_id=query_id) # type: ignore
957
- if query_next.state in END_JOB_STATES:
958
- _logger.info(
956
+ query_next = query_service_client.get_query( # type: ignore # pragma: no cover
957
+ query_id=query_id,
958
+ )
959
+ if query_next.state in END_JOB_STATES: # pragma: no cover
960
+ _logger.info( # pragma: no cover
959
961
  "query end state detected (%s), sending final event to the client",
960
962
  query_next.state,
961
963
  )
@@ -79,6 +79,7 @@ app = FastAPI(
79
79
  },
80
80
  dependencies=dependencies,
81
81
  )
82
+
82
83
  app.add_middleware(
83
84
  CORSMiddleware,
84
85
  allow_origins=settings.cors_origin_whitelist,
@@ -21,13 +21,16 @@ from datajunction_server.internal.materializations import (
21
21
  )
22
22
  from datajunction_server.materialization.jobs import MaterializationJob
23
23
  from datajunction_server.models import access
24
+ from datajunction_server.models.base import labelize
24
25
  from datajunction_server.models.history import ActivityType, EntityType, History
25
26
  from datajunction_server.models.materialization import (
26
27
  MaterializationConfigInfoUnified,
27
28
  MaterializationInfo,
29
+ MaterializationJobTypeEnum,
30
+ MaterializationStrategy,
28
31
  UpsertMaterialization,
29
32
  )
30
- from datajunction_server.models.node import NodeType
33
+ from datajunction_server.models.node_type import NodeType
31
34
  from datajunction_server.models.partition import Backfill, PartitionBackfill
32
35
  from datajunction_server.models.user import User
33
36
  from datajunction_server.service_clients import QueryServiceClient
@@ -44,6 +47,27 @@ settings = get_settings()
44
47
  router = SecureAPIRouter(tags=["materializations"])
45
48
 
46
49
 
50
+ @router.get(
51
+ "/materialization/info",
52
+ status_code=200,
53
+ name="Materialization Jobs Info",
54
+ )
55
+ def materialization_jobs_info() -> JSONResponse:
56
+ """
57
+ Materialization job types and strategies
58
+ """
59
+ return JSONResponse(
60
+ status_code=200,
61
+ content={
62
+ "job_types": [value.value.dict() for value in MaterializationJobTypeEnum],
63
+ "strategies": [
64
+ {"name": value, "label": labelize(value)}
65
+ for value in MaterializationStrategy
66
+ ],
67
+ },
68
+ )
69
+
70
+
47
71
  @router.post(
48
72
  "/nodes/{node_name}/materialization/",
49
73
  status_code=201,
@@ -73,6 +97,14 @@ def upsert_materialization( # pylint: disable=too-many-locals
73
97
  current_revision = node.current
74
98
  old_materializations = {mat.name: mat for mat in current_revision.materializations}
75
99
 
100
+ if data.strategy == MaterializationStrategy.INCREMENTAL_TIME:
101
+ if not node.current.temporal_partition_columns():
102
+ raise DJException( # pragma: no cover
103
+ http_status_code=HTTPStatus.BAD_REQUEST,
104
+ message="Cannot create materialization with strategy "
105
+ f"`{data.strategy}` without specifying a time partition column!",
106
+ )
107
+
76
108
  # Create a new materialization
77
109
  new_materialization = create_new_materialization(
78
110
  session,
@@ -204,9 +236,10 @@ def list_node_materializations(
204
236
  node.current.version, # type: ignore
205
237
  materialization.name, # type: ignore
206
238
  )
239
+ if materialization.strategy != MaterializationStrategy.INCREMENTAL_TIME:
240
+ info.urls = [info.urls[0]]
207
241
  materialization = MaterializationConfigInfoUnified(
208
242
  **materialization.dict(),
209
- **{"engine": materialization.engine.dict()},
210
243
  **info.dict(),
211
244
  backfills=materialization.backfills,
212
245
  )
@@ -6,7 +6,6 @@ from http import HTTPStatus
6
6
  from typing import List, Optional
7
7
 
8
8
  from fastapi import Depends, HTTPException, Query
9
- from sqlalchemy.exc import NoResultFound
10
9
  from sqlalchemy.sql.operators import is_
11
10
  from sqlmodel import Session, select
12
11
 
@@ -23,8 +22,8 @@ from datajunction_server.models.node import (
23
22
  MetricMetadataOptions,
24
23
  MetricUnit,
25
24
  Node,
26
- NodeType,
27
25
  )
26
+ from datajunction_server.models.node_type import NodeType
28
27
  from datajunction_server.sql.dag import get_shared_dimensions
29
28
  from datajunction_server.utils import get_current_user, get_session, get_settings
30
29
 
@@ -103,31 +102,28 @@ async def get_common_dimensions(
103
102
  """
104
103
  Return common dimensions for a set of metrics.
105
104
  """
106
- metric_nodes = []
107
105
  errors = []
108
- for node_name in metric:
109
- statement = (
110
- select(Node)
111
- .where(Node.name == node_name)
112
- .where(is_(Node.deactivated_at, None))
113
- )
114
- try:
115
- node = session.exec(statement).one()
116
- if node.type != NodeType.METRIC:
117
- errors.append(
118
- DJError(
119
- message=f"Not a metric node: {node_name}",
120
- code=ErrorCode.NODE_TYPE_ERROR,
121
- ),
122
- )
123
- metric_nodes.append(node)
124
- except NoResultFound:
106
+ statement = (
107
+ select(Node)
108
+ .where(Node.name.in_(metric)) # type: ignore # pylint: disable=no-member
109
+ .where(is_(Node.deactivated_at, None))
110
+ )
111
+ metric_nodes = session.exec(statement).all()
112
+ for node in metric_nodes:
113
+ if node.type != NodeType.METRIC:
125
114
  errors.append(
126
115
  DJError(
127
- message=f"Metric node not found: {node_name}",
128
- code=ErrorCode.UNKNOWN_NODE,
116
+ message=f"Not a metric node: {node.name}",
117
+ code=ErrorCode.NODE_TYPE_ERROR,
129
118
  ),
130
119
  )
120
+ if not metric_nodes:
121
+ errors.append(
122
+ DJError(
123
+ message=f"Metric nodes not found: {','.join(metric)}",
124
+ code=ErrorCode.UNKNOWN_NODE,
125
+ ),
126
+ )
131
127
 
132
128
  if errors:
133
129
  raise DJException(errors=errors)
@@ -37,8 +37,8 @@ from datajunction_server.models.node import (
37
37
  Node,
38
38
  NodeMinimumDetail,
39
39
  NodeNamespace,
40
- NodeType,
41
40
  )
41
+ from datajunction_server.models.node_type import NodeType
42
42
  from datajunction_server.utils import get_current_user, get_session, get_settings
43
43
 
44
44
  _logger = logging.getLogger(__name__)
@@ -74,10 +74,10 @@ from datajunction_server.models.node import (
74
74
  NodeRevisionBase,
75
75
  NodeRevisionOutput,
76
76
  NodeStatus,
77
- NodeType,
78
77
  NodeValidation,
79
78
  UpdateNode,
80
79
  )
80
+ from datajunction_server.models.node_type import NodeType
81
81
  from datajunction_server.models.partition import (
82
82
  Granularity,
83
83
  Partition,
@@ -12,7 +12,8 @@ from datajunction_server.errors import DJDoesNotExistException, DJException
12
12
  from datajunction_server.internal.access.authentication.http import SecureAPIRouter
13
13
  from datajunction_server.models import History, User
14
14
  from datajunction_server.models.history import ActivityType, EntityType
15
- from datajunction_server.models.node import NodeMinimumDetail, NodeType
15
+ from datajunction_server.models.node import NodeMinimumDetail
16
+ from datajunction_server.models.node_type import NodeType
16
17
  from datajunction_server.models.tag import CreateTag, Tag, TagOutput, UpdateTag
17
18
  from datajunction_server.utils import get_current_user, get_session, get_settings
18
19
 
@@ -17,7 +17,8 @@ from datajunction_server.models.column import Column, SemanticType
17
17
  from datajunction_server.models.engine import Dialect
18
18
  from datajunction_server.models.materialization import GenericCubeConfig
19
19
  from datajunction_server.models.metric import TranslatedSQL
20
- from datajunction_server.models.node import BuildCriteria, Node, NodeRevision, NodeType
20
+ from datajunction_server.models.node import BuildCriteria, Node, NodeRevision
21
+ from datajunction_server.models.node_type import NodeType
21
22
  from datajunction_server.sql.dag import get_shared_dimensions
22
23
  from datajunction_server.sql.parsing.ast import CompileContext
23
24
  from datajunction_server.sql.parsing.backends.antlr4 import ast, parse
@@ -583,7 +584,14 @@ def _get_node_table(
583
584
  )
584
585
  else:
585
586
  name = to_namespaced_name(node.name)
586
- table = ast.Table(name, _dj_node=node)
587
+ table = ast.Table(
588
+ name,
589
+ _columns=[
590
+ ast.Column(name=ast.Name(col.name), _type=col.type)
591
+ for col in node.columns
592
+ ],
593
+ _dj_node=node,
594
+ )
587
595
  elif node.availability and node.availability.is_available(
588
596
  criteria=build_criteria,
589
597
  ): # pragma: no cover
@@ -596,11 +604,15 @@ def _get_node_table(
596
604
  else None
597
605
  ),
598
606
  ),
607
+ _columns=[
608
+ ast.Column(name=ast.Name(col.name), _type=col.type)
609
+ for col in node.columns
610
+ ],
599
611
  _dj_node=node,
600
612
  )
601
613
  if table and as_select: # pragma: no cover
602
614
  return ast.Select(
603
- projection=[ast.Wildcard()],
615
+ projection=table.columns, # type: ignore
604
616
  from_=ast.From(relations=[ast.Relation(table)]),
605
617
  )
606
618
  return table
@@ -736,7 +748,10 @@ def rename_columns(built_ast: ast.Query, node: NodeRevision):
736
748
  projection.append(expression)
737
749
  else:
738
750
  expression = expression.copy()
739
- if isinstance(expression, ast.Aliasable) and not isinstance(
751
+ if isinstance(
752
+ expression,
753
+ ast.Aliasable,
754
+ ) and not isinstance( # pragma: no cover
740
755
  expression,
741
756
  ast.Wildcard,
742
757
  ):
@@ -7,7 +7,8 @@ from sqlmodel import Session
7
7
 
8
8
  from datajunction_server.construction.build import build_metric_nodes, build_node
9
9
  from datajunction_server.construction.utils import try_get_dj_node
10
- from datajunction_server.models.node import Node, NodeType
10
+ from datajunction_server.models.node import Node
11
+ from datajunction_server.models.node_type import NodeType
11
12
  from datajunction_server.sql.parsing import ast
12
13
  from datajunction_server.sql.parsing.backends.antlr4 import parse
13
14
  from datajunction_server.utils import amenable_name
@@ -8,7 +8,8 @@ from sqlalchemy.orm.exc import NoResultFound
8
8
  from sqlmodel import Session, select
9
9
 
10
10
  from datajunction_server.errors import DJError, DJErrorException, ErrorCode
11
- from datajunction_server.models.node import Node, NodeRevision, NodeType
11
+ from datajunction_server.models.node import Node, NodeRevision
12
+ from datajunction_server.models.node_type import NodeType
12
13
 
13
14
  if TYPE_CHECKING:
14
15
  from datajunction_server.sql.parsing.ast import Column, Name
@@ -0,0 +1,21 @@
1
+ """
2
+ Backwards-compatible StrEnum for both Python >= and < 3.11
3
+ """
4
+ import enum
5
+ import sys
6
+
7
+ if sys.version_info >= (3, 11):
8
+ from enum import ( # noqa # pylint: disable=unused-import # pragma: no cover
9
+ IntEnum,
10
+ StrEnum,
11
+ )
12
+ else:
13
+
14
+ class StrEnum(str, enum.Enum): # pragma: no cover
15
+ """Backwards compatible StrEnum for Python < 3.11""" # pragma: no cover
16
+
17
+ def __str__(self):
18
+ return str(self.value)
19
+
20
+ class IntEnum(int, enum.Enum): # pragma: no cover
21
+ """Backwards compatible IntEnum for Python < 3.11""" # pragma: no cover
@@ -2,13 +2,14 @@
2
2
  Errors and warnings.
3
3
  """
4
4
 
5
- from enum import Enum
6
5
  from typing import Any, Dict, List, Literal, Optional, TypedDict
7
6
 
8
7
  from sqlmodel import SQLModel
9
8
 
9
+ from datajunction_server.enum import IntEnum
10
10
 
11
- class ErrorCode(int, Enum):
11
+
12
+ class ErrorCode(IntEnum):
12
13
  """
13
14
  Error codes.
14
15
  """
@@ -7,16 +7,9 @@ from sqlmodel import Session
7
7
 
8
8
  from datajunction_server.construction.build import build_node, get_measures_query
9
9
  from datajunction_server.errors import DJException, DJInvalidInputException
10
- from datajunction_server.internal.engines import get_engine
11
- from datajunction_server.materialization.jobs import (
12
- DruidCubeMaterializationJob,
13
- MaterializationJob,
14
- SparkSqlMaterializationJob,
15
- TrinoMaterializationJob,
16
- )
17
- from datajunction_server.models import Engine, NodeRevision, access
10
+ from datajunction_server.materialization.jobs import MaterializationJob
11
+ from datajunction_server.models import NodeRevision, access
18
12
  from datajunction_server.models.column import SemanticType
19
- from datajunction_server.models.engine import Dialect
20
13
  from datajunction_server.models.materialization import (
21
14
  DruidCubeConfig,
22
15
  GenericMaterializationConfig,
@@ -27,7 +20,7 @@ from datajunction_server.models.materialization import (
27
20
  UpsertMaterialization,
28
21
  )
29
22
  from datajunction_server.models.metric import TranslatedSQL
30
- from datajunction_server.models.node import NodeType
23
+ from datajunction_server.models.node_type import NodeType
31
24
  from datajunction_server.models.query import ColumnMetadata
32
25
  from datajunction_server.service_clients import QueryServiceClient
33
26
  from datajunction_server.sql.parsing import ast
@@ -38,24 +31,6 @@ from datajunction_server.utils import SEPARATOR
38
31
  MAX_COLUMN_NAME_LENGTH = 128
39
32
 
40
33
 
41
- def materialization_job_from_engine(engine: Engine) -> MaterializationJob:
42
- """
43
- Finds the appropriate materialization job based on the choice of engine.
44
- """
45
- engine_to_job_mapping = {
46
- Dialect.SPARK: SparkSqlMaterializationJob,
47
- Dialect.TRINO: TrinoMaterializationJob,
48
- Dialect.DRUID: DruidCubeMaterializationJob,
49
- None: SparkSqlMaterializationJob,
50
- }
51
- if engine.dialect not in engine_to_job_mapping:
52
- raise DJInvalidInputException( # pragma: no cover
53
- f"The engine used for materialization ({engine.name}) "
54
- "must have a dialect configured.",
55
- )
56
- return engine_to_job_mapping[engine.dialect] # type: ignore
57
-
58
-
59
34
  def rewrite_metrics_expressions(
60
35
  session: Session,
61
36
  current_revision: NodeRevision,
@@ -111,7 +86,6 @@ def rewrite_metrics_expressions(
111
86
  def build_cube_materialization_config(
112
87
  session: Session,
113
88
  current_revision: NodeRevision,
114
- engine: Engine,
115
89
  upsert: UpsertMaterialization,
116
90
  validate_access: access.ValidateAccessFn,
117
91
  ) -> DruidCubeConfig:
@@ -157,9 +131,9 @@ def build_cube_materialization_config(
157
131
  raise DJInvalidInputException( # pragma: no cover
158
132
  message=(
159
133
  "No change has been made to the materialization config for "
160
- f"node `{current_revision.name}` and engine `{engine.name}` as"
134
+ f"node `{current_revision.name}` and job `{upsert.job.name}` as"
161
135
  " the config does not have valid configuration for "
162
- f"engine `{engine.name}`."
136
+ f"engine `{upsert.job.name}`."
163
137
  ),
164
138
  ) from exc
165
139
 
@@ -179,6 +153,7 @@ def build_non_cube_materialization_config(
179
153
  orderby=[],
180
154
  )
181
155
  generic_config = GenericMaterializationConfig(
156
+ lookback_window=upsert.config.lookback_window,
182
157
  query=str(materialization_ast),
183
158
  spark=upsert.config.spark if upsert.config.spark else {},
184
159
  upstream_tables=[
@@ -203,7 +178,6 @@ def create_new_materialization(
203
178
  Create a new materialization based on the input values.
204
179
  """
205
180
  generic_config = None
206
- engine = get_engine(session, upsert.engine.name, upsert.engine.version)
207
181
  temporal_partition = current_revision.temporal_partition_columns()
208
182
  if current_revision.type in (
209
183
  NodeType.DIMENSION,
@@ -225,22 +199,20 @@ def create_new_materialization(
225
199
  generic_config = build_cube_materialization_config(
226
200
  session,
227
201
  current_revision,
228
- engine,
229
202
  upsert,
230
203
  validate_access,
231
204
  )
232
205
  materialization_name = (
233
- f"{temporal_partition[0].name}_{engine.name}"
234
- if temporal_partition
235
- else engine.name
206
+ f"{upsert.job.name.lower()}__{upsert.strategy.name.lower()}"
207
+ + (f"__{temporal_partition[0].name}" if temporal_partition else "")
236
208
  )
237
209
  return Materialization(
238
210
  name=materialization_name,
239
211
  node_revision=current_revision,
240
- engine=engine,
241
212
  config=generic_config,
242
213
  schedule=upsert.schedule or "@daily",
243
- job=materialization_job_from_engine(engine).__name__, # type: ignore
214
+ strategy=upsert.strategy,
215
+ job=upsert.job.value.job_class, # type: ignore
244
216
  )
245
217
 
246
218
 
@@ -18,7 +18,8 @@ from datajunction_server.errors import (
18
18
  from datajunction_server.models import History, User
19
19
  from datajunction_server.models.cube import CubeRevisionMetadata
20
20
  from datajunction_server.models.history import ActivityType, EntityType
21
- from datajunction_server.models.node import Node, NodeNamespace, NodeRevision, NodeType
21
+ from datajunction_server.models.node import Node, NodeNamespace, NodeRevision
22
+ from datajunction_server.models.node_type import NodeType
22
23
  from datajunction_server.typing import UTCDatetime
23
24
  from datajunction_server.utils import SEPARATOR
24
25