datajunction-server 0.0.1a47.dev0__tar.gz → 0.0.1a49__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 (451) hide show
  1. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/Makefile +1 -1
  2. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/PKG-INFO +2 -2
  3. datajunction_server-0.0.1a49/alembic/versions/2024_05_21_0012-57fc93ef6947_add_query_id_to_queryrequest.py +28 -0
  4. datajunction_server-0.0.1a49/datajunction_server/__about__.py +4 -0
  5. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/data.py +97 -3
  6. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/nodes.py +0 -1
  7. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/sql.py +58 -21
  8. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/construction/build.py +27 -11
  9. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/availabilitystate.py +2 -1
  10. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/queryrequest.py +4 -1
  11. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/materializations.py +9 -1
  12. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/node.py +1 -1
  13. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/functions.py +2 -0
  14. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/ast.py +4 -1
  15. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/data_test.py +64 -1
  16. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/materializations_test.py +147 -0
  17. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/construction/build_test.py +9 -1
  18. datajunction_server-0.0.1a47.dev0/datajunction_server/__about__.py +0 -4
  19. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/.coveragerc +0 -0
  20. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/.env +0 -0
  21. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/.env.integration +0 -0
  22. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/.flake8 +0 -0
  23. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/.gitignore +0 -0
  24. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/.isort.cfg +0 -0
  25. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/.pre-commit-config.yaml +0 -0
  26. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/.pylintrc +0 -0
  27. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/Dockerfile +0 -0
  28. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/README.md +0 -0
  29. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic/README +0 -0
  30. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic/env.py +0 -0
  31. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic/script.py.mako +0 -0
  32. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic/versions/2023_12_20_1829-724445d2b29d_initial_migration.py +0 -0
  33. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic/versions/2024_01_08_2034-945d44abcd32_add_dimension_links.py +0 -0
  34. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic/versions/2024_01_11_2032-c74b11566d82_add_column_order.py +0 -0
  35. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic/versions/2024_01_18_2011-20f060b02772_switch_enum_values.py +0 -0
  36. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic/versions/2024_01_23_0617-c9cef8864ecb_add_missing_table_attribute_to_source_.py +0 -0
  37. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic/versions/2024_01_23_1655-a8e22109be24_availability_state_s_valid_through_ts_.py +0 -0
  38. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic/versions/2024_02_22_0713-d61fb7e48cc3_cascade_deletes_to_dimension_links.py +0 -0
  39. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic/versions/2024_04_30_1556-de7ec1c82fe0_add_query_requests.py +0 -0
  40. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic/versions/2024_05_09_1420-9b1227ff17f4_update_backfill_spec.py +0 -0
  41. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/alembic.ini +0 -0
  42. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/__init__.py +0 -0
  43. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/__init__.py +0 -0
  44. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/access/authentication/__init__.py +0 -0
  45. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/access/authentication/basic.py +0 -0
  46. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/access/authentication/github.py +0 -0
  47. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/access/authentication/google.py +0 -0
  48. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/access/authentication/whoami.py +0 -0
  49. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/attributes.py +0 -0
  50. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/catalogs.py +0 -0
  51. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/client.py +0 -0
  52. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/cubes.py +0 -0
  53. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/dimensions.py +0 -0
  54. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/djsql.py +0 -0
  55. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/engines.py +0 -0
  56. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/graphql/__init__.py +0 -0
  57. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/graphql/catalogs.py +0 -0
  58. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/graphql/engines.py +0 -0
  59. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/graphql/main.py +0 -0
  60. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/health.py +0 -0
  61. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/helpers.py +0 -0
  62. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/history.py +0 -0
  63. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/logging.conf +0 -0
  64. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/main.py +0 -0
  65. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/materializations.py +0 -0
  66. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/measures.py +0 -0
  67. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/metrics.py +0 -0
  68. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/namespaces.py +0 -0
  69. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/api/tags.py +0 -0
  70. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/config.py +0 -0
  71. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/constants.py +0 -0
  72. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/construction/__init__.py +0 -0
  73. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/construction/dimensions.py +0 -0
  74. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/construction/dj_query.py +0 -0
  75. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/construction/exceptions.py +0 -0
  76. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/construction/utils.py +0 -0
  77. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/__init__.py +0 -0
  78. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/attributetype.py +0 -0
  79. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/backfill.py +0 -0
  80. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/base.py +0 -0
  81. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/catalog.py +0 -0
  82. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/column.py +0 -0
  83. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/database.py +0 -0
  84. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/dimensionlink.py +0 -0
  85. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/engine.py +0 -0
  86. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/history.py +0 -0
  87. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/materialization.py +0 -0
  88. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/measure.py +0 -0
  89. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/metricmetadata.py +0 -0
  90. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/namespace.py +0 -0
  91. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/node.py +0 -0
  92. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/partition.py +0 -0
  93. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/tag.py +0 -0
  94. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/database/user.py +0 -0
  95. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/enum.py +0 -0
  96. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/errors.py +0 -0
  97. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/__init__.py +0 -0
  98. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/access/__init__.py +0 -0
  99. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/access/authentication/__init__.py +0 -0
  100. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/access/authentication/basic.py +0 -0
  101. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/access/authentication/github.py +0 -0
  102. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/access/authentication/google.py +0 -0
  103. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/access/authentication/http.py +0 -0
  104. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/access/authentication/tokens.py +0 -0
  105. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/access/authorization.py +0 -0
  106. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/engines.py +0 -0
  107. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/namespaces.py +0 -0
  108. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/nodes.py +0 -0
  109. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/internal/validation.py +0 -0
  110. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/materialization/__init__.py +0 -0
  111. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/materialization/jobs/__init__.py +0 -0
  112. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/materialization/jobs/cube_materialization.py +0 -0
  113. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/materialization/jobs/job_types.py +0 -0
  114. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/materialization/jobs/materialization_job.py +0 -0
  115. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/__init__.py +0 -0
  116. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/access.py +0 -0
  117. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/attribute.py +0 -0
  118. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/base.py +0 -0
  119. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/catalog.py +0 -0
  120. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/column.py +0 -0
  121. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/cube.py +0 -0
  122. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/database.py +0 -0
  123. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/dimensionlink.py +0 -0
  124. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/engine.py +0 -0
  125. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/history.py +0 -0
  126. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/materialization.py +0 -0
  127. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/measure.py +0 -0
  128. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/metric.py +0 -0
  129. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/node_type.py +0 -0
  130. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/partition.py +0 -0
  131. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/query.py +0 -0
  132. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/table.py +0 -0
  133. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/tag.py +0 -0
  134. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/models/user.py +0 -0
  135. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/naming.py +0 -0
  136. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/service_clients.py +0 -0
  137. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/__init__.py +0 -0
  138. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/dag.py +0 -0
  139. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/__init__.py +0 -0
  140. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/__init__.py +0 -0
  141. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/antlr4.py +0 -0
  142. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/exceptions.py +0 -0
  143. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/grammar/SqlBaseLexer.g4 +0 -0
  144. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/grammar/SqlBaseParser.g4 +0 -0
  145. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/grammar/__init__.py +0 -0
  146. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.interp +0 -0
  147. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.py +0 -0
  148. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.tokens +0 -0
  149. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.interp +0 -0
  150. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.py +0 -0
  151. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.tokens +0 -0
  152. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserListener.py +0 -0
  153. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserVisitor.py +0 -0
  154. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/sql/parsing/types.py +0 -0
  155. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/superset.py +0 -0
  156. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/transpilation.py +0 -0
  157. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/typing.py +0 -0
  158. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/datajunction_server/utils.py +0 -0
  159. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/pdm.lock +0 -0
  160. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/pyproject.toml +0 -0
  161. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/requirements/docker.txt +0 -0
  162. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/requirements/test.txt +0 -0
  163. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/scripts/docs-snippets.js +0 -0
  164. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/scripts/docs-snippets.sh +0 -0
  165. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/scripts/generate-openapi.py +0 -0
  166. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/__init__.py +0 -0
  167. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/__init__.py +0 -0
  168. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/attributes_test.py +0 -0
  169. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/catalog_test.py +0 -0
  170. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/client_test.py +0 -0
  171. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/cubes_test.py +0 -0
  172. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/dimension_links_test.py +0 -0
  173. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/dimensions_test.py +0 -0
  174. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/djql_test.py +0 -0
  175. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/engine_test.py +0 -0
  176. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/druid_measures_cube.full.druid_spec.json +0 -0
  177. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/druid_measures_cube.full.partition.druid_spec.json +0 -0
  178. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/druid_measures_cube.full.partition.query.sql +0 -0
  179. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/druid_measures_cube.full.query.sql +0 -0
  180. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/druid_measures_cube.incremental.categorical.query.sql +0 -0
  181. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/druid_measures_cube.incremental.druid_spec.json +0 -0
  182. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/druid_measures_cube.incremental.patched.query.sql +0 -0
  183. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/druid_measures_cube.incremental.query.sql +0 -0
  184. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/druid_metrics_cube.incremental.categorical.query.sql +0 -0
  185. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/druid_metrics_cube.incremental.druid_spec.json +0 -0
  186. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/druid_metrics_cube.incremental.query.sql +0 -0
  187. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/spark_sql.full.config.json +0 -0
  188. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/spark_sql.full.materializations.json +0 -0
  189. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/spark_sql.full.partition.config.json +0 -0
  190. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/spark_sql.full.partition.materializations.json +0 -0
  191. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/spark_sql.full.partition.query.sql +0 -0
  192. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/spark_sql.full.query.sql +0 -0
  193. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/spark_sql.incremental.additional.query.sql +0 -0
  194. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/spark_sql.incremental.categorical.query.sql +0 -0
  195. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/spark_sql.incremental.config.json +0 -0
  196. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/spark_sql.incremental.lookback.query.sql +0 -0
  197. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/files/materializations_test/spark_sql.incremental.query.sql +0 -0
  198. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/graphql/__init__.py +0 -0
  199. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/graphql/catalog_test.py +0 -0
  200. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/graphql/engine_test.py +0 -0
  201. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/health_test.py +0 -0
  202. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/helpers_test.py +0 -0
  203. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/history_test.py +0 -0
  204. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/measures_test.py +0 -0
  205. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/metrics_test.py +0 -0
  206. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/namespaces_test.py +0 -0
  207. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/node_update_test.py +0 -0
  208. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/nodes_test.py +0 -0
  209. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/routers_test.py +0 -0
  210. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/sql_test.py +0 -0
  211. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/api/tags_test.py +0 -0
  212. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/conftest.py +0 -0
  213. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/construction/__init__.py +0 -0
  214. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/construction/compile_test.py +0 -0
  215. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/construction/exceptions_test.py +0 -0
  216. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/construction/fixtures.py +0 -0
  217. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/construction/inference_test.py +0 -0
  218. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/construction/utils_test.py +0 -0
  219. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/default.duckdb +0 -0
  220. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/duckdb.sql +0 -0
  221. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/errors_test.py +0 -0
  222. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/examples.py +0 -0
  223. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/fixes_test.py +0 -0
  224. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/integration/__init__.py +0 -0
  225. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/integration/basic_test.py +0 -0
  226. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/internal/authentication/basic_test.py +0 -0
  227. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/internal/authentication/github_test.py +0 -0
  228. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/internal/authentication/http_test.py +0 -0
  229. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/internal/authentication/token_test.py +0 -0
  230. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/internal/authentication/whoami_test.py +0 -0
  231. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/migrations_test.py +0 -0
  232. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/models/__init__.py +0 -0
  233. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/models/catalog_test.py +0 -0
  234. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/models/hash_test.py +0 -0
  235. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/models/measure_test.py +0 -0
  236. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/models/node_test.py +0 -0
  237. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/models/query_test.py +0 -0
  238. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/pytest.ini +0 -0
  239. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/service_clients_test.py +0 -0
  240. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/__init__.py +0 -0
  241. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/dag_test.py +0 -0
  242. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/functions_test.py +0 -0
  243. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/__init__.py +0 -0
  244. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/backends/__init__.py +0 -0
  245. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/backends/antlr4_test.py +0 -0
  246. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/backends/types_test.py +0 -0
  247. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/__init__.py +0 -0
  248. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query1.sql +0 -0
  249. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query10.sql +0 -0
  250. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query11.sql +0 -0
  251. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query12.sql +0 -0
  252. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query13.sql +0 -0
  253. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query14.sql +0 -0
  254. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query15.sql +0 -0
  255. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query16.sql +0 -0
  256. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query17.sql +0 -0
  257. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query18.sql +0 -0
  258. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query19.sql +0 -0
  259. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query2.sql +0 -0
  260. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query20.sql +0 -0
  261. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query21.sql +0 -0
  262. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query22.sql +0 -0
  263. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query23.sql +0 -0
  264. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query24.sql +0 -0
  265. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query25.sql +0 -0
  266. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query26.sql +0 -0
  267. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query27.sql +0 -0
  268. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query28.sql +0 -0
  269. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query29.sql +0 -0
  270. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query3.sql +0 -0
  271. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query30.sql +0 -0
  272. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query31.sql +0 -0
  273. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query32.sql +0 -0
  274. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query33.sql +0 -0
  275. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query34.sql +0 -0
  276. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query35.sql +0 -0
  277. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query36.sql +0 -0
  278. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query37.sql +0 -0
  279. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query38.sql +0 -0
  280. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query39.sql +0 -0
  281. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query4.sql +0 -0
  282. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query40.sql +0 -0
  283. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query41.sql +0 -0
  284. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query42.sql +0 -0
  285. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query43.sql +0 -0
  286. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query44.sql +0 -0
  287. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query45.sql +0 -0
  288. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query46.sql +0 -0
  289. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query47.sql +0 -0
  290. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query48.sql +0 -0
  291. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query49.sql +0 -0
  292. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query5.sql +0 -0
  293. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query50.sql +0 -0
  294. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query51.sql +0 -0
  295. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query52.sql +0 -0
  296. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query53.sql +0 -0
  297. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query54.sql +0 -0
  298. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query55.sql +0 -0
  299. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query56.sql +0 -0
  300. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query57.sql +0 -0
  301. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query58.sql +0 -0
  302. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query59.sql +0 -0
  303. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query6.sql +0 -0
  304. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query60.sql +0 -0
  305. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query61.sql +0 -0
  306. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query62.sql +0 -0
  307. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query63.sql +0 -0
  308. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query64.sql +0 -0
  309. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query65.sql +0 -0
  310. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query66.sql +0 -0
  311. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query67.sql +0 -0
  312. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query68.sql +0 -0
  313. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query69.sql +0 -0
  314. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query7.sql +0 -0
  315. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query70.sql +0 -0
  316. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query71.sql +0 -0
  317. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query72.sql +0 -0
  318. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query73.sql +0 -0
  319. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query74.sql +0 -0
  320. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query75.sql +0 -0
  321. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query76.sql +0 -0
  322. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query77.sql +0 -0
  323. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query78.sql +0 -0
  324. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query79.sql +0 -0
  325. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query8.sql +0 -0
  326. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query80.sql +0 -0
  327. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query81.sql +0 -0
  328. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query82.sql +0 -0
  329. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query83.sql +0 -0
  330. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query84.sql +0 -0
  331. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query85.sql +0 -0
  332. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query86.sql +0 -0
  333. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query87.sql +0 -0
  334. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query88.sql +0 -0
  335. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query89.sql +0 -0
  336. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query9.sql +0 -0
  337. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query90.sql +0 -0
  338. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query91.sql +0 -0
  339. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query92.sql +0 -0
  340. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query93.sql +0 -0
  341. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query94.sql +0 -0
  342. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query95.sql +0 -0
  343. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query96.sql +0 -0
  344. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query97.sql +0 -0
  345. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query98.sql +0 -0
  346. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/ansi/query99.sql +0 -0
  347. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query1.sql +0 -0
  348. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query10.sql +0 -0
  349. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query11.sql +0 -0
  350. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query12.sql +0 -0
  351. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query13.sql +0 -0
  352. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query14.sql +0 -0
  353. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query15.sql +0 -0
  354. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query16.sql +0 -0
  355. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query17.sql +0 -0
  356. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query18.sql +0 -0
  357. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query19.sql +0 -0
  358. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query2.sql +0 -0
  359. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query20.sql +0 -0
  360. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query21.sql +0 -0
  361. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query22.sql +0 -0
  362. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query23.sql +0 -0
  363. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query24.sql +0 -0
  364. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query25.sql +0 -0
  365. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query26.sql +0 -0
  366. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query27.sql +0 -0
  367. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query28.sql +0 -0
  368. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query29.sql +0 -0
  369. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query3.sql +0 -0
  370. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query30.sql +0 -0
  371. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query31.sql +0 -0
  372. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query32.sql +0 -0
  373. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query33.sql +0 -0
  374. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query34.sql +0 -0
  375. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query35.sql +0 -0
  376. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query36.sql +0 -0
  377. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query37.sql +0 -0
  378. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query38.sql +0 -0
  379. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query39.sql +0 -0
  380. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query4.sql +0 -0
  381. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query40.sql +0 -0
  382. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query41.sql +0 -0
  383. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query42.sql +0 -0
  384. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query43.sql +0 -0
  385. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query44.sql +0 -0
  386. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query45.sql +0 -0
  387. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query46.sql +0 -0
  388. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query47.sql +0 -0
  389. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query48.sql +0 -0
  390. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query49.sql +0 -0
  391. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query5.sql +0 -0
  392. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query50.sql +0 -0
  393. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query51.sql +0 -0
  394. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query52.sql +0 -0
  395. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query53.sql +0 -0
  396. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query54.sql +0 -0
  397. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query55.sql +0 -0
  398. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query56.sql +0 -0
  399. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query57.sql +0 -0
  400. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query58.sql +0 -0
  401. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query59.sql +0 -0
  402. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query6.sql +0 -0
  403. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query60.sql +0 -0
  404. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query61.sql +0 -0
  405. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query62.sql +0 -0
  406. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query63.sql +0 -0
  407. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query64.sql +0 -0
  408. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query65.sql +0 -0
  409. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query66.sql +0 -0
  410. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query67.sql +0 -0
  411. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query68.sql +0 -0
  412. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query69.sql +0 -0
  413. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query7.sql +0 -0
  414. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query70.sql +0 -0
  415. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query71.sql +0 -0
  416. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query72.sql +0 -0
  417. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query73.sql +0 -0
  418. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query74.sql +0 -0
  419. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query75.sql +0 -0
  420. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query76.sql +0 -0
  421. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query77.sql +0 -0
  422. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query78.sql +0 -0
  423. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query79.sql +0 -0
  424. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query8.sql +0 -0
  425. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query80.sql +0 -0
  426. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query81.sql +0 -0
  427. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query82.sql +0 -0
  428. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query83.sql +0 -0
  429. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query84.sql +0 -0
  430. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query85.sql +0 -0
  431. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query86.sql +0 -0
  432. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query87.sql +0 -0
  433. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query88.sql +0 -0
  434. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query89.sql +0 -0
  435. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query9.sql +0 -0
  436. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query90.sql +0 -0
  437. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query91.sql +0 -0
  438. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query92.sql +0 -0
  439. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query93.sql +0 -0
  440. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query94.sql +0 -0
  441. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query95.sql +0 -0
  442. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query96.sql +0 -0
  443. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query97.sql +0 -0
  444. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query98.sql +0 -0
  445. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/sparksql/query99.sql +0 -0
  446. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/queries/tpcds/test_tpcds.py +0 -0
  447. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/parsing/test_ast.py +0 -0
  448. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/sql/utils.py +0 -0
  449. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/superset_test.py +0 -0
  450. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/transpilation_test.py +0 -0
  451. {datajunction_server-0.0.1a47.dev0 → datajunction_server-0.0.1a49}/tests/utils_test.py +0 -0
@@ -18,7 +18,7 @@ docker-run:
18
18
  docker compose up
19
19
 
20
20
  test:
21
- pdm run pytest -n auto --cov=datajunction_server --cov-report=html -vv tests/ --doctest-modules datajunction_server --without-integration --without-slow-integration ${PYTEST_ARGS}
21
+ pdm run pytest -n auto --cov=datajunction_server -vv tests/ --doctest-modules datajunction_server --without-integration --without-slow-integration ${PYTEST_ARGS}
22
22
 
23
23
  integration:
24
24
  pdm run pytest --cov=dj -vv tests/ --doctest-modules datajunction_server --with-integration --with-slow-integration
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: datajunction-server
3
- Version: 0.0.1a47.dev0
3
+ Version: 0.0.1a49
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,28 @@
1
+ """Add query_id to queryrequest
2
+
3
+ Revision ID: 57fc93ef6947
4
+ Revises: 9b1227ff17f4
5
+ Create Date: 2024-05-21 00:12:11.303914+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
+
12
+ from alembic import op
13
+
14
+ # revision identifiers, used by Alembic.
15
+ revision = "57fc93ef6947"
16
+ down_revision = "9b1227ff17f4"
17
+ branch_labels = None
18
+ depends_on = None
19
+
20
+
21
+ def upgrade():
22
+ with op.batch_alter_table("queryrequest", schema=None) as batch_op:
23
+ batch_op.add_column(sa.Column("query_id", sa.String(), nullable=True))
24
+
25
+
26
+ def downgrade():
27
+ with op.batch_alter_table("queryrequest", schema=None) as batch_op:
28
+ batch_op.drop_column("query_id")
@@ -0,0 +1,4 @@
1
+ """
2
+ Version for Hatch
3
+ """
4
+ __version__ = "0.0.1a49"
@@ -15,7 +15,7 @@ from datajunction_server.api.helpers import (
15
15
  build_sql_for_multiple_metrics,
16
16
  query_event_stream,
17
17
  )
18
- from datajunction_server.api.sql import get_sql
18
+ from datajunction_server.api.sql import get_node_sql
19
19
  from datajunction_server.database.availabilitystate import AvailabilityState
20
20
  from datajunction_server.database.history import ActivityType, EntityType, History
21
21
  from datajunction_server.database.node import Node, NodeRevision
@@ -185,7 +185,7 @@ async def get_data( # pylint: disable=too-many-locals
185
185
  """
186
186
  Gets data for a node
187
187
  """
188
- query = await get_sql(
188
+ query, query_request = await get_node_sql(
189
189
  node_name,
190
190
  dimensions,
191
191
  filters,
@@ -221,12 +221,106 @@ async def get_data( # pylint: disable=too-many-locals
221
221
  query_create,
222
222
  headers={"Cache-Control": cache_control},
223
223
  )
224
+ query_request.query_id = result.id
225
+
224
226
  # Inject column info if there are results
225
227
  if result.results.__root__: # pragma: no cover
226
- result.results.__root__[0].columns = query.columns
228
+ result.results.__root__[0].columns = query.columns # type: ignore
227
229
  return result
228
230
 
229
231
 
232
+ @router.get("/stream/{node_name}", response_model=QueryWithResults)
233
+ async def get_data_stream_for_node( # pylint: disable=R0914, R0913
234
+ node_name: str,
235
+ *,
236
+ dimensions: List[str] = Query([], description="Dimensional attributes to group by"),
237
+ filters: List[str] = Query([], description="Filters on dimensional attributes"),
238
+ orderby: List[str] = Query([], description="Expression to order by"),
239
+ limit: Optional[int] = Query(
240
+ None,
241
+ description="Number of rows to limit the data retrieved to",
242
+ ),
243
+ cache_control: Annotated[str, Header()] = "",
244
+ session: AsyncSession = Depends(get_session),
245
+ request: Request,
246
+ query_service_client: QueryServiceClient = Depends(get_query_service_client),
247
+ engine_name: Optional[str] = None,
248
+ engine_version: Optional[str] = None,
249
+ current_user: Optional[User] = Depends(get_current_user),
250
+ validate_access: access.ValidateAccessFn = Depends( # pylint: disable=W0621
251
+ validate_access,
252
+ ),
253
+ ) -> QueryWithResults:
254
+ """
255
+ Return data for a node using server side events
256
+ """
257
+ query, query_request = await get_node_sql(
258
+ node_name,
259
+ dimensions,
260
+ filters,
261
+ orderby,
262
+ limit,
263
+ session=session,
264
+ engine_name=engine_name,
265
+ engine_version=engine_version,
266
+ current_user=current_user,
267
+ validate_access=validate_access,
268
+ )
269
+ if query_request and query_request.query_id:
270
+ return EventSourceResponse(
271
+ query_event_stream(
272
+ query=QueryWithResults(
273
+ id=query_request.query_id,
274
+ submitted_query=query_request.query,
275
+ results=[],
276
+ errors=[],
277
+ ),
278
+ query_service_client=query_service_client,
279
+ columns=query.columns, # type: ignore
280
+ request=request,
281
+ ),
282
+ )
283
+
284
+ node = await Node.get_by_name(session, node_name, raise_if_not_exists=True)
285
+ available_engines = node.current.catalog.engines # type: ignore
286
+ engine = (
287
+ await get_engine(session, engine_name, engine_version) # type: ignore
288
+ if engine_name
289
+ else available_engines[0]
290
+ )
291
+ if engine not in available_engines:
292
+ raise DJInvalidInputException( # pragma: no cover
293
+ f"The selected engine is not available for the node {node_name}. "
294
+ f"Available engines include: {', '.join(engine.name for engine in available_engines)}",
295
+ )
296
+
297
+ query_create = QueryCreate(
298
+ engine_name=engine.name,
299
+ catalog_name=node.current.catalog.name, # type: ignore
300
+ engine_version=engine.version,
301
+ submitted_query=query.sql,
302
+ async_=True,
303
+ )
304
+ initial_query_info = query_service_client.submit_query(
305
+ query_create,
306
+ headers={"Cache-Control": cache_control or "max-age=86400"},
307
+ )
308
+
309
+ # Save the external query id reference
310
+ query_request.query_id = initial_query_info.id
311
+ session.add(query_request)
312
+ await session.commit()
313
+
314
+ return EventSourceResponse(
315
+ query_event_stream(
316
+ query=initial_query_info,
317
+ query_service_client=query_service_client,
318
+ columns=query.columns, # type: ignore
319
+ request=request,
320
+ ),
321
+ )
322
+
323
+
230
324
  @router.get(
231
325
  "/data/query/{query_id}",
232
326
  response_model=QueryWithResults,
@@ -622,7 +622,6 @@ async def create_cube(
622
622
  """
623
623
  Create a cube node.
624
624
  """
625
- print("data", data)
626
625
  await raise_if_node_exists(session, data.name)
627
626
 
628
627
  # if the node previously existed and now is inactive
@@ -3,7 +3,7 @@
3
3
  SQL related APIs.
4
4
  """
5
5
  import logging
6
- from typing import List, Optional
6
+ from typing import List, Optional, Tuple
7
7
 
8
8
  from fastapi import Depends, Query
9
9
  from sqlalchemy.ext.asyncio import AsyncSession
@@ -108,12 +108,7 @@ async def get_measures_sql_for_cube(
108
108
  return measures_query
109
109
 
110
110
 
111
- @router.get(
112
- "/sql/{node_name}/",
113
- response_model=TranslatedSQL,
114
- name="Get SQL For A Node",
115
- )
116
- async def get_sql( # pylint: disable=too-many-locals
111
+ async def get_node_sql( # pylint: disable=too-many-locals
117
112
  node_name: str,
118
113
  dimensions: List[str] = Query([]),
119
114
  filters: List[str] = Query([]),
@@ -123,11 +118,9 @@ async def get_sql( # pylint: disable=too-many-locals
123
118
  session: AsyncSession = Depends(get_session),
124
119
  engine_name: Optional[str] = None,
125
120
  engine_version: Optional[str] = None,
126
- current_user: Optional[User] = Depends(get_current_user),
127
- validate_access: access.ValidateAccessFn = Depends( # pylint: disable=W0621
128
- validate_access,
129
- ),
130
- ) -> TranslatedSQL:
121
+ current_user: Optional[User],
122
+ validate_access: access.ValidateAccessFn, # pylint: disable=redefined-outer-name
123
+ ) -> Tuple[TranslatedSQL, QueryRequest]:
131
124
  """
132
125
  Return SQL for a node.
133
126
  """
@@ -156,10 +149,13 @@ async def get_sql( # pylint: disable=too-many-locals
156
149
  engine_version=engine.version if engine else None,
157
150
  query_type=QueryBuildType.NODE,
158
151
  ):
159
- return TranslatedSQL(
160
- sql=query_request.query,
161
- columns=query_request.columns,
162
- dialect=engine.dialect if engine else None,
152
+ return (
153
+ TranslatedSQL(
154
+ sql=query_request.query,
155
+ columns=query_request.columns,
156
+ dialect=engine.dialect if engine else None,
157
+ ),
158
+ query_request,
163
159
  )
164
160
 
165
161
  query_ast = await get_query(
@@ -177,7 +173,7 @@ async def get_sql( # pylint: disable=too-many-locals
177
173
  for col in query_ast.select.projection
178
174
  ]
179
175
  query = str(query_ast)
180
- await QueryRequest.save_query_request(
176
+ query_request = await QueryRequest.save_query_request(
181
177
  session=session,
182
178
  nodes=[node_name],
183
179
  dimensions=dimensions,
@@ -190,11 +186,52 @@ async def get_sql( # pylint: disable=too-many-locals
190
186
  query=query,
191
187
  columns=[col.dict() for col in columns],
192
188
  )
193
- return TranslatedSQL(
194
- sql=query,
195
- columns=columns,
196
- dialect=engine.dialect if engine else None,
189
+ return (
190
+ TranslatedSQL(
191
+ sql=query,
192
+ columns=columns,
193
+ dialect=engine.dialect if engine else None,
194
+ ),
195
+ query_request,
196
+ )
197
+
198
+
199
+ @router.get(
200
+ "/sql/{node_name}/",
201
+ response_model=TranslatedSQL,
202
+ name="Get SQL For A Node",
203
+ )
204
+ async def get_sql( # pylint: disable=too-many-locals
205
+ node_name: str,
206
+ dimensions: List[str] = Query([]),
207
+ filters: List[str] = Query([]),
208
+ orderby: List[str] = Query([]),
209
+ limit: Optional[int] = None,
210
+ *,
211
+ session: AsyncSession = Depends(get_session),
212
+ engine_name: Optional[str] = None,
213
+ engine_version: Optional[str] = None,
214
+ current_user: Optional[User] = Depends(get_current_user),
215
+ validate_access: access.ValidateAccessFn = Depends( # pylint: disable=W0621
216
+ validate_access,
217
+ ),
218
+ ) -> TranslatedSQL:
219
+ """
220
+ Return SQL for a node.
221
+ """
222
+ translated_sql, _ = await get_node_sql(
223
+ node_name,
224
+ dimensions,
225
+ filters,
226
+ orderby,
227
+ limit,
228
+ session=session,
229
+ engine_name=engine_name,
230
+ engine_version=engine_version,
231
+ current_user=current_user,
232
+ validate_access=validate_access,
197
233
  )
234
+ return translated_sql
198
235
 
199
236
 
200
237
  @router.get("/sql/", response_model=TranslatedSQL, name="Get SQL For Metrics")
@@ -773,6 +773,9 @@ def _get_node_table(
773
773
  If a node has a materialization available, return the materialized table
774
774
  """
775
775
  table = None
776
+ can_use_materialization = (
777
+ build_criteria and node.name != build_criteria.target_node_name
778
+ )
776
779
  if node.type == NodeType.SOURCE:
777
780
  if node.table:
778
781
  name = ast.Name(
@@ -796,8 +799,12 @@ def _get_node_table(
796
799
  ],
797
800
  _dj_node=node,
798
801
  )
799
- elif node.availability and node.availability.is_available(
800
- criteria=build_criteria,
802
+ elif (
803
+ can_use_materialization
804
+ and node.availability
805
+ and node.availability.is_available(
806
+ criteria=build_criteria,
807
+ )
801
808
  ): # pragma: no cover
802
809
  table = ast.Table(
803
810
  ast.Name(
@@ -822,6 +829,23 @@ def _get_node_table(
822
829
  return table
823
830
 
824
831
 
832
+ def get_default_criteria(
833
+ node: NodeRevision,
834
+ ) -> BuildCriteria:
835
+ """
836
+ Get the default build criteria for a node.
837
+ """
838
+ return BuildCriteria(
839
+ # set the dialect by finding available engines for this node, or default to Spark
840
+ dialect=(
841
+ node.catalog.engines[0].dialect
842
+ if node.catalog and node.catalog.engines and node.catalog.engines[0].dialect
843
+ else Dialect.SPARK
844
+ ),
845
+ target_node_name=node.name,
846
+ )
847
+
848
+
825
849
  async def build_node( # pylint: disable=too-many-arguments
826
850
  session: AsyncSession,
827
851
  node: NodeRevision,
@@ -844,15 +868,7 @@ async def build_node( # pylint: disable=too-many-arguments
844
868
 
845
869
  # Set the dialect by finding available engines for this node, or default to Spark
846
870
  if not build_criteria:
847
- build_criteria = BuildCriteria(
848
- dialect=(
849
- node.catalog.engines[0].dialect
850
- if node.catalog
851
- and node.catalog.engines
852
- and node.catalog.engines[0].dialect
853
- else Dialect.SPARK
854
- ),
855
- )
871
+ build_criteria = get_default_criteria(node)
856
872
 
857
873
  # get dimension columns which are required
858
874
  # in the stated bound dimensions on the metric node
@@ -70,7 +70,8 @@ class AvailabilityState(Base): # pylint: disable=too-few-public-methods
70
70
  """
71
71
  Determine whether an availability state is useable given criteria
72
72
  """
73
- # Criteria to determine if an availability state should be used needs to be added
73
+ # TODO: we should evaluate this availability state against the criteria. # pylint: disable=fixme
74
+ # Remember that VTTS can be also evaluated at runtime dependency.
74
75
  return True
75
76
 
76
77
 
@@ -159,6 +159,8 @@ class QueryRequest(Base): # type: ignore # pylint: disable=too-few-public-meth
159
159
  DateTime(timezone=True),
160
160
  default=partial(datetime.now, timezone.utc),
161
161
  )
162
+ # External identifier for the query
163
+ query_id: Mapped[Optional[str]]
162
164
 
163
165
  @classmethod
164
166
  async def get_query_request(
@@ -220,7 +222,7 @@ class QueryRequest(Base): # type: ignore # pylint: disable=too-few-public-meth
220
222
  query: str,
221
223
  columns: List[Dict[str, Any]],
222
224
  other_args: Optional[Dict[str, Any]] = None,
223
- ):
225
+ ) -> "QueryRequest":
224
226
  """
225
227
  Retrieves saved query for a node SQL request
226
228
  """
@@ -266,6 +268,7 @@ class QueryRequest(Base): # type: ignore # pylint: disable=too-few-public-meth
266
268
  )
267
269
  session.add(query_request)
268
270
  await session.commit()
271
+ return query_request
269
272
 
270
273
  @classmethod
271
274
  async def to_versioned_query_request( # pylint: disable=too-many-locals
@@ -7,7 +7,11 @@ from sqlalchemy.exc import InvalidRequestError
7
7
  from sqlalchemy.ext.asyncio import AsyncSession
8
8
 
9
9
  from datajunction_server.api.helpers import build_sql_for_multiple_metrics
10
- from datajunction_server.construction.build import build_node, get_measures_query
10
+ from datajunction_server.construction.build import (
11
+ build_node,
12
+ get_default_criteria,
13
+ get_measures_query,
14
+ )
11
15
  from datajunction_server.database.materialization import Materialization
12
16
  from datajunction_server.database.node import NodeRevision
13
17
  from datajunction_server.errors import DJException, DJInvalidInputException
@@ -183,11 +187,15 @@ async def build_non_cube_materialization_config(
183
187
  """
184
188
  Build materialization config for non-cube nodes (transforms and dimensions).
185
189
  """
190
+ build_criteria = get_default_criteria(
191
+ node=current_revision,
192
+ )
186
193
  materialization_ast = await build_node(
187
194
  session=session,
188
195
  node=current_revision,
189
196
  dimensions=[],
190
197
  orderby=[],
198
+ build_criteria=build_criteria,
191
199
  )
192
200
  generic_config = GenericMaterializationConfig(
193
201
  lookback_window=upsert.config.lookback_window,
@@ -45,7 +45,7 @@ class BuildCriteria:
45
45
 
46
46
  timestamp: Optional[UTCDatetime] = None
47
47
  dialect: Dialect = Dialect.SPARK
48
- for_materialization: bool = False
48
+ target_node_name: Optional[str] = None
49
49
 
50
50
 
51
51
  class NodeMode(StrEnum):
@@ -278,6 +278,8 @@ class Aggregate(Function):
278
278
  ast,
279
279
  )
280
280
 
281
+ # aggregate's lambda function can take three or four arguments, depending on whether
282
+ # an optional finish function is provided
281
283
  if len(args) == 4:
282
284
  expr, start, merge, finish = args
283
285
  else:
@@ -1734,7 +1734,10 @@ class Function(Named, Operation):
1734
1734
  try:
1735
1735
  self.function().compile_lambda(*self.args)
1736
1736
  except DJParseException as parse_exc:
1737
- logger.warning(parse_exc)
1737
+ if "Cannot resolve type of column" in parse_exc.message:
1738
+ logger.warning(parse_exc)
1739
+ else:
1740
+ raise parse_exc
1738
1741
 
1739
1742
  for child in self.children:
1740
1743
  if not child.is_compiled():
@@ -13,7 +13,9 @@ from sqlalchemy.ext.asyncio import AsyncSession
13
13
  from sqlalchemy.orm import joinedload
14
14
 
15
15
  from datajunction_server.api.main import app
16
+ from datajunction_server.database import QueryRequest
16
17
  from datajunction_server.database.node import Node, NodeRevision
18
+ from datajunction_server.database.queryrequest import QueryBuildType
17
19
  from datajunction_server.internal.access.authorization import validate_access
18
20
  from datajunction_server.models import access
19
21
  from datajunction_server.models.node import AvailabilityStateBase
@@ -552,10 +554,13 @@ class TestDataForNode:
552
554
  @pytest.mark.asyncio
553
555
  async def test_stream_multiple_metrics_and_dimensions_data(
554
556
  self,
557
+ session: AsyncSession,
555
558
  client_with_query_service_example_loader,
556
559
  ) -> None:
557
560
  """
558
- Test streaming query status for multiple metrics and dimensions
561
+ Test streaming query status for
562
+ (a) multiple metrics and dimensions and
563
+ (b) node data
559
564
  """
560
565
  custom_client = await client_with_query_service_example_loader(["ROADS"])
561
566
  async with custom_client.stream(
@@ -567,6 +572,64 @@ class TestDataForNode:
567
572
  },
568
573
  ) as response:
569
574
  assert response.status_code == 200
575
+ full_text = "".join([text async for text in response.aiter_text()])
576
+ assert "event: message" in full_text
577
+ assert "avg(repair_order_details.price)" in full_text
578
+
579
+ # Test streaming of node data for a metric
580
+ async with custom_client.stream(
581
+ "GET",
582
+ "/stream/default.num_repair_orders?dimensions=default.dispatcher.company_name&limit=10",
583
+ headers={
584
+ "Accept": "text/event-stream",
585
+ },
586
+ ) as response:
587
+ assert response.status_code == 200
588
+ full_text = "".join([text async for text in response.aiter_text()])
589
+ assert "event: message" in full_text
590
+ assert "count(default_DOT_repair_orders_fact.repair_order_id)" in full_text
591
+
592
+ # Test streaming of node data for a transform
593
+ async with custom_client.stream(
594
+ "GET",
595
+ "/stream/default.repair_orders_fact?"
596
+ "dimensions=default.dispatcher.company_name&limit=10",
597
+ headers={
598
+ "Accept": "text/event-stream",
599
+ },
600
+ ) as response:
601
+ assert response.status_code == 200
602
+ full_text = "\n".join([text async for text in response.aiter_lines()])
603
+ assert "event: message" in full_text
604
+ assert "SELECT default_DOT_repair_orders_fact.repair_order_id" in full_text
605
+
606
+ # Check that the query request for the above transform has an external query id saved
607
+ query_request = await QueryRequest.get_query_request(
608
+ session=session,
609
+ query_type=QueryBuildType.NODE,
610
+ nodes=["default.repair_orders_fact"],
611
+ dimensions=["default.dispatcher.company_name"],
612
+ engine_name=None,
613
+ engine_version=None,
614
+ filters=[],
615
+ limit=10,
616
+ orderby=[],
617
+ )
618
+ assert query_request.query_id == "bd98d6be-e2d2-413e-94c7-96d9411ddee2" # type: ignore
619
+
620
+ # Hit the same SSE stream again
621
+ async with custom_client.stream(
622
+ "GET",
623
+ "/stream/default.repair_orders_fact?"
624
+ "dimensions=default.dispatcher.company_name&limit=10",
625
+ headers={
626
+ "Accept": "text/event-stream",
627
+ },
628
+ ) as response:
629
+ assert response.status_code == 200
630
+ full_text = "\n".join([text async for text in response.aiter_lines()])
631
+ assert "event: message" in full_text
632
+ assert "SELECT default_DOT_repair_orders_fact.repair_order_id" in full_text
570
633
 
571
634
  @pytest.mark.asyncio
572
635
  async def test_get_data_for_query_id(