datajunction-server 0.0.1a37.dev4__tar.gz → 0.0.1a37.dev6__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 (416) hide show
  1. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/PKG-INFO +1 -1
  2. datajunction_server-0.0.1a37.dev6/datajunction_server/__about__.py +4 -0
  3. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/helpers.py +1 -78
  4. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/nodes.py +27 -18
  5. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/nodes.py +1 -1
  6. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/materialization/jobs/materialization_job.py +1 -1
  7. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/node.py +41 -8
  8. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/dag.py +194 -25
  9. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/nodes_test.py +1 -1
  10. datajunction_server-0.0.1a37.dev4/datajunction_server/__about__.py +0 -4
  11. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/.coveragerc +0 -0
  12. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/.env +0 -0
  13. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/.env.integration +0 -0
  14. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/.flake8 +0 -0
  15. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/.gitignore +0 -0
  16. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/.isort.cfg +0 -0
  17. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/.pre-commit-config.yaml +0 -0
  18. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/.pylintrc +0 -0
  19. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/Dockerfile +0 -0
  20. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/Makefile +0 -0
  21. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/README.md +0 -0
  22. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/README +0 -0
  23. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/env.py +0 -0
  24. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/script.py.mako +0 -0
  25. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_07_07_2006-4e1ff36c27c6_initial_migration.py +0 -0
  26. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_07_11_2337-bd313a10e2a8_add_bound_dimensions_attribute_to_.py +0 -0
  27. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_07_14_0428-5c3d0c958c3c_add_node_to_history.py +0 -0
  28. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_07_30_1608-4147da2ac841_add_deactivated_to_materialization.py +0 -0
  29. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_08_02_0055-ccc77abcf899_add_deactivated_to_namespace.py +0 -0
  30. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_08_08_1856-cde75f986a62_user_model.py +0 -0
  31. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_08_18_2348-fe8d3dbe512a_store_column_level_lineage.py +0 -0
  32. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_09_18_1346-f2e9ef937daf_add_measures.py +0 -0
  33. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_09_20_2049-879128f3e778_add_display_name_to_column.py +0 -0
  34. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_09_21_0033-b75e5163b09d_add_description_and_display_name_to_.py +0 -0
  35. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_10_02_1642-d8fa1e6371a7_add_url_to_availability_state.py +0 -0
  36. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_10_08_1438-58e246fba34b_add_partitions_and_backfills.py +0 -0
  37. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_10_24_0354-87cf9c00ac00_add_metric_metadata.py +0 -0
  38. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic/versions/2023_11_21_1611-d1a8716cf2d2_add_materialization_strategy_and_job_.py +0 -0
  39. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/alembic.ini +0 -0
  40. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/curl-format.txt +0 -0
  41. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/__init__.py +0 -0
  42. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/__init__.py +0 -0
  43. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/access/authentication/__init__.py +0 -0
  44. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/access/authentication/basic.py +0 -0
  45. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/access/authentication/github.py +0 -0
  46. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/access/authentication/google.py +0 -0
  47. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/access/authentication/whoami.py +0 -0
  48. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/attributes.py +0 -0
  49. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/catalogs.py +0 -0
  50. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/client.py +0 -0
  51. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/cubes.py +0 -0
  52. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/data.py +0 -0
  53. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/dimensions.py +0 -0
  54. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/djsql.py +0 -0
  55. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/engines.py +0 -0
  56. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/graphql/__init__.py +0 -0
  57. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/graphql/catalogs.py +0 -0
  58. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/graphql/engines.py +0 -0
  59. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/graphql/main.py +0 -0
  60. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/health.py +0 -0
  61. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/history.py +0 -0
  62. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/logging.conf +0 -0
  63. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/main.py +0 -0
  64. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/materializations.py +0 -0
  65. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/measures.py +0 -0
  66. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/metrics.py +0 -0
  67. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/namespaces.py +0 -0
  68. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/sql.py +0 -0
  69. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/api/tags.py +0 -0
  70. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/config.py +0 -0
  71. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/constants.py +0 -0
  72. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/construction/__init__.py +0 -0
  73. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/construction/build.py +0 -0
  74. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/construction/dimensions.py +0 -0
  75. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/construction/dj_query.py +0 -0
  76. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/construction/exceptions.py +0 -0
  77. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/construction/utils.py +0 -0
  78. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/enum.py +0 -0
  79. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/errors.py +0 -0
  80. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/__init__.py +0 -0
  81. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/access/__init__.py +0 -0
  82. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/access/authentication/__init__.py +0 -0
  83. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/access/authentication/basic.py +0 -0
  84. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/access/authentication/github.py +0 -0
  85. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/access/authentication/google.py +0 -0
  86. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/access/authentication/http.py +0 -0
  87. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/access/authentication/tokens.py +0 -0
  88. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/access/authorization.py +0 -0
  89. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/engines.py +0 -0
  90. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/materializations.py +0 -0
  91. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/internal/namespaces.py +0 -0
  92. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/materialization/__init__.py +0 -0
  93. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/materialization/jobs/__init__.py +0 -0
  94. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/materialization/jobs/cube_materialization.py +0 -0
  95. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/materialization/jobs/job_types.py +0 -0
  96. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/__init__.py +0 -0
  97. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/access.py +0 -0
  98. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/attribute.py +0 -0
  99. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/base.py +0 -0
  100. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/catalog.py +0 -0
  101. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/column.py +0 -0
  102. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/cube.py +0 -0
  103. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/database.py +0 -0
  104. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/engine.py +0 -0
  105. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/history.py +0 -0
  106. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/materialization.py +0 -0
  107. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/measure.py +0 -0
  108. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/metric.py +0 -0
  109. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/node_type.py +0 -0
  110. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/partition.py +0 -0
  111. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/query.py +0 -0
  112. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/table.py +0 -0
  113. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/tag.py +0 -0
  114. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/models/user.py +0 -0
  115. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/service_clients.py +0 -0
  116. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/__init__.py +0 -0
  117. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/functions.py +0 -0
  118. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/__init__.py +0 -0
  119. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/ast.py +0 -0
  120. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/__init__.py +0 -0
  121. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/antlr4.py +0 -0
  122. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/exceptions.py +0 -0
  123. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/grammar/SqlBaseLexer.g4 +0 -0
  124. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/grammar/SqlBaseParser.g4 +0 -0
  125. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/grammar/__init__.py +0 -0
  126. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.interp +0 -0
  127. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.py +0 -0
  128. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.tokens +0 -0
  129. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.interp +0 -0
  130. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.py +0 -0
  131. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.tokens +0 -0
  132. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserListener.py +0 -0
  133. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserVisitor.py +0 -0
  134. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/sql/parsing/types.py +0 -0
  135. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/superset.py +0 -0
  136. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/transpilation.py +0 -0
  137. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/typing.py +0 -0
  138. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/datajunction_server/utils.py +0 -0
  139. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/default.duckdb +0 -0
  140. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/dj.copy.db +0 -0
  141. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/dj.demo.db +0 -0
  142. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/dj.internal.db +0 -0
  143. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/dj.test.db +0 -0
  144. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/output.txt +0 -0
  145. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/pdm.lock +0 -0
  146. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/pyproject.toml +0 -0
  147. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/requirements/docker.txt +0 -0
  148. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/requirements/test.txt +0 -0
  149. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/scripts/docs-snippets.js +0 -0
  150. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/scripts/docs-snippets.sh +0 -0
  151. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/scripts/generate-openapi.py +0 -0
  152. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tester.py +0 -0
  153. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/__init__.py +0 -0
  154. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/__init__.py +0 -0
  155. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/attributes_test.py +0 -0
  156. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/catalog_test.py +0 -0
  157. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/client_test.py +0 -0
  158. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/cubes_test.py +0 -0
  159. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/data_test.py +0 -0
  160. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/dimensions_test.py +0 -0
  161. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/djql_test.py +0 -0
  162. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/engine_test.py +0 -0
  163. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/graphql/__init__.py +0 -0
  164. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/graphql/catalog_test.py +0 -0
  165. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/graphql/engine_test.py +0 -0
  166. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/health_test.py +0 -0
  167. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/helpers_test.py +0 -0
  168. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/history_test.py +0 -0
  169. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/materializations_test.py +0 -0
  170. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/measures_test.py +0 -0
  171. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/metrics_test.py +0 -0
  172. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/namespaces_test.py +0 -0
  173. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/node_update_test.py +0 -0
  174. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/routers_test.py +0 -0
  175. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/sql_test.py +0 -0
  176. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/api/tags_test.py +0 -0
  177. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/conftest.py +0 -0
  178. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/construction/__init__.py +0 -0
  179. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/construction/build_test.py +0 -0
  180. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/construction/compile_test.py +0 -0
  181. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/construction/exceptions_test.py +0 -0
  182. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/construction/fixtures.py +0 -0
  183. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/construction/inference_test.py +0 -0
  184. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/construction/utils_test.py +0 -0
  185. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/default.duckdb +0 -0
  186. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/duckdb.sql +0 -0
  187. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/errors_test.py +0 -0
  188. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/examples.py +0 -0
  189. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/fixes_test.py +0 -0
  190. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/integration/__init__.py +0 -0
  191. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/integration/basic_test.py +0 -0
  192. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/internal/authentication/basic_test.py +0 -0
  193. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/internal/authentication/github_test.py +0 -0
  194. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/internal/authentication/http_test.py +0 -0
  195. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/internal/authentication/token_test.py +0 -0
  196. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/internal/authentication/whoami_test.py +0 -0
  197. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/migrations_test.py +0 -0
  198. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/models/__init__.py +0 -0
  199. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/models/catalog_test.py +0 -0
  200. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/models/hash_test.py +0 -0
  201. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/models/measure_test.py +0 -0
  202. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/models/node_test.py +0 -0
  203. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/models/query_test.py +0 -0
  204. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/service_clients_test.py +0 -0
  205. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/__init__.py +0 -0
  206. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/dag_test.py +0 -0
  207. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/functions_test.py +0 -0
  208. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/__init__.py +0 -0
  209. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/backends/__init__.py +0 -0
  210. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/backends/antlr4_test.py +0 -0
  211. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/backends/types_test.py +0 -0
  212. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/__init__.py +0 -0
  213. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query1.sql +0 -0
  214. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query10.sql +0 -0
  215. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query11.sql +0 -0
  216. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query12.sql +0 -0
  217. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query13.sql +0 -0
  218. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query14.sql +0 -0
  219. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query15.sql +0 -0
  220. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query16.sql +0 -0
  221. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query17.sql +0 -0
  222. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query18.sql +0 -0
  223. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query19.sql +0 -0
  224. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query2.sql +0 -0
  225. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query20.sql +0 -0
  226. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query21.sql +0 -0
  227. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query22.sql +0 -0
  228. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query23.sql +0 -0
  229. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query24.sql +0 -0
  230. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query25.sql +0 -0
  231. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query26.sql +0 -0
  232. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query27.sql +0 -0
  233. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query28.sql +0 -0
  234. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query29.sql +0 -0
  235. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query3.sql +0 -0
  236. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query30.sql +0 -0
  237. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query31.sql +0 -0
  238. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query32.sql +0 -0
  239. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query33.sql +0 -0
  240. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query34.sql +0 -0
  241. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query35.sql +0 -0
  242. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query36.sql +0 -0
  243. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query37.sql +0 -0
  244. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query38.sql +0 -0
  245. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query39.sql +0 -0
  246. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query4.sql +0 -0
  247. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query40.sql +0 -0
  248. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query41.sql +0 -0
  249. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query42.sql +0 -0
  250. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query43.sql +0 -0
  251. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query44.sql +0 -0
  252. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query45.sql +0 -0
  253. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query46.sql +0 -0
  254. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query47.sql +0 -0
  255. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query48.sql +0 -0
  256. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query49.sql +0 -0
  257. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query5.sql +0 -0
  258. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query50.sql +0 -0
  259. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query51.sql +0 -0
  260. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query52.sql +0 -0
  261. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query53.sql +0 -0
  262. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query54.sql +0 -0
  263. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query55.sql +0 -0
  264. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query56.sql +0 -0
  265. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query57.sql +0 -0
  266. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query58.sql +0 -0
  267. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query59.sql +0 -0
  268. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query6.sql +0 -0
  269. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query60.sql +0 -0
  270. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query61.sql +0 -0
  271. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query62.sql +0 -0
  272. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query63.sql +0 -0
  273. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query64.sql +0 -0
  274. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query65.sql +0 -0
  275. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query66.sql +0 -0
  276. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query67.sql +0 -0
  277. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query68.sql +0 -0
  278. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query69.sql +0 -0
  279. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query7.sql +0 -0
  280. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query70.sql +0 -0
  281. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query71.sql +0 -0
  282. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query72.sql +0 -0
  283. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query73.sql +0 -0
  284. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query74.sql +0 -0
  285. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query75.sql +0 -0
  286. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query76.sql +0 -0
  287. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query77.sql +0 -0
  288. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query78.sql +0 -0
  289. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query79.sql +0 -0
  290. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query8.sql +0 -0
  291. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query80.sql +0 -0
  292. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query81.sql +0 -0
  293. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query82.sql +0 -0
  294. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query83.sql +0 -0
  295. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query84.sql +0 -0
  296. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query85.sql +0 -0
  297. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query86.sql +0 -0
  298. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query87.sql +0 -0
  299. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query88.sql +0 -0
  300. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query89.sql +0 -0
  301. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query9.sql +0 -0
  302. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query90.sql +0 -0
  303. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query91.sql +0 -0
  304. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query92.sql +0 -0
  305. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query93.sql +0 -0
  306. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query94.sql +0 -0
  307. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query95.sql +0 -0
  308. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query96.sql +0 -0
  309. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query97.sql +0 -0
  310. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query98.sql +0 -0
  311. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/ansi/query99.sql +0 -0
  312. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query1.sql +0 -0
  313. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query10.sql +0 -0
  314. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query11.sql +0 -0
  315. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query12.sql +0 -0
  316. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query13.sql +0 -0
  317. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query14.sql +0 -0
  318. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query15.sql +0 -0
  319. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query16.sql +0 -0
  320. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query17.sql +0 -0
  321. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query18.sql +0 -0
  322. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query19.sql +0 -0
  323. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query2.sql +0 -0
  324. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query20.sql +0 -0
  325. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query21.sql +0 -0
  326. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query22.sql +0 -0
  327. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query23.sql +0 -0
  328. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query24.sql +0 -0
  329. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query25.sql +0 -0
  330. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query26.sql +0 -0
  331. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query27.sql +0 -0
  332. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query28.sql +0 -0
  333. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query29.sql +0 -0
  334. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query3.sql +0 -0
  335. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query30.sql +0 -0
  336. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query31.sql +0 -0
  337. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query32.sql +0 -0
  338. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query33.sql +0 -0
  339. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query34.sql +0 -0
  340. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query35.sql +0 -0
  341. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query36.sql +0 -0
  342. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query37.sql +0 -0
  343. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query38.sql +0 -0
  344. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query39.sql +0 -0
  345. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query4.sql +0 -0
  346. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query40.sql +0 -0
  347. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query41.sql +0 -0
  348. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query42.sql +0 -0
  349. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query43.sql +0 -0
  350. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query44.sql +0 -0
  351. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query45.sql +0 -0
  352. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query46.sql +0 -0
  353. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query47.sql +0 -0
  354. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query48.sql +0 -0
  355. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query49.sql +0 -0
  356. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query5.sql +0 -0
  357. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query50.sql +0 -0
  358. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query51.sql +0 -0
  359. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query52.sql +0 -0
  360. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query53.sql +0 -0
  361. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query54.sql +0 -0
  362. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query55.sql +0 -0
  363. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query56.sql +0 -0
  364. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query57.sql +0 -0
  365. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query58.sql +0 -0
  366. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query59.sql +0 -0
  367. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query6.sql +0 -0
  368. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query60.sql +0 -0
  369. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query61.sql +0 -0
  370. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query62.sql +0 -0
  371. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query63.sql +0 -0
  372. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query64.sql +0 -0
  373. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query65.sql +0 -0
  374. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query66.sql +0 -0
  375. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query67.sql +0 -0
  376. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query68.sql +0 -0
  377. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query69.sql +0 -0
  378. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query7.sql +0 -0
  379. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query70.sql +0 -0
  380. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query71.sql +0 -0
  381. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query72.sql +0 -0
  382. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query73.sql +0 -0
  383. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query74.sql +0 -0
  384. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query75.sql +0 -0
  385. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query76.sql +0 -0
  386. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query77.sql +0 -0
  387. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query78.sql +0 -0
  388. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query79.sql +0 -0
  389. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query8.sql +0 -0
  390. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query80.sql +0 -0
  391. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query81.sql +0 -0
  392. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query82.sql +0 -0
  393. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query83.sql +0 -0
  394. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query84.sql +0 -0
  395. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query85.sql +0 -0
  396. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query86.sql +0 -0
  397. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query87.sql +0 -0
  398. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query88.sql +0 -0
  399. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query89.sql +0 -0
  400. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query9.sql +0 -0
  401. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query90.sql +0 -0
  402. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query91.sql +0 -0
  403. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query92.sql +0 -0
  404. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query93.sql +0 -0
  405. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query94.sql +0 -0
  406. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query95.sql +0 -0
  407. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query96.sql +0 -0
  408. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query97.sql +0 -0
  409. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query98.sql +0 -0
  410. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/sparksql/query99.sql +0 -0
  411. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/queries/tpcds/test_tpcds.py +0 -0
  412. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/parsing/test_ast.py +0 -0
  413. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/sql/utils.py +0 -0
  414. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/superset_test.py +0 -0
  415. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/tests/transpilation_test.py +0 -0
  416. {datajunction_server-0.0.1a37.dev4 → datajunction_server-0.0.1a37.dev6}/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.1a37.dev4
3
+ Version: 0.0.1a37.dev6
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,4 @@
1
+ """
2
+ Version for Hatch
3
+ """
4
+ __version__ = "0.0.1a37.dev6"
@@ -3,7 +3,6 @@
3
3
  Helpers for API endpoints
4
4
  """
5
5
  import asyncio
6
- import collections
7
6
  import http.client
8
7
  import json
9
8
  import logging
@@ -57,7 +56,6 @@ from datajunction_server.models.node import (
57
56
  Node,
58
57
  NodeMissingParents,
59
58
  NodeNamespace,
60
- NodeRelationship,
61
59
  NodeRevision,
62
60
  NodeRevisionBase,
63
61
  NodeStatus,
@@ -65,7 +63,7 @@ from datajunction_server.models.node import (
65
63
  from datajunction_server.models.node_type import NodeType
66
64
  from datajunction_server.models.query import ColumnMetadata, QueryWithResults
67
65
  from datajunction_server.service_clients import QueryServiceClient
68
- from datajunction_server.sql.dag import get_nodes_with_dimension
66
+ from datajunction_server.sql.dag import get_downstream_nodes, get_nodes_with_dimension
69
67
  from datajunction_server.sql.parsing import ast
70
68
  from datajunction_server.sql.parsing.backends.antlr4 import SqlSyntaxError, parse
71
69
  from datajunction_server.sql.parsing.backends.exceptions import DJParseException
@@ -235,81 +233,6 @@ def get_query( # pylint: disable=too-many-arguments
235
233
  return query_ast
236
234
 
237
235
 
238
- def get_downstream_nodes(
239
- session: Session,
240
- node_name: str,
241
- node_type: NodeType = None,
242
- ) -> List[Node]:
243
- """
244
- Gets all downstream children of the given node, filterable by node type.
245
- Uses a recursive CTE query to build out all descendants from the node.
246
- """
247
- node = get_node_by_name(session=session, name=node_name, include_inactive=True)
248
-
249
- dag = (
250
- select(
251
- NodeRelationship.parent_id,
252
- NodeRevision.node_id,
253
- )
254
- .where(NodeRelationship.parent_id == node.id)
255
- .join(NodeRevision, NodeRelationship.child_id == NodeRevision.id)
256
- .join(
257
- Node,
258
- (Node.id == NodeRevision.node_id)
259
- & (Node.current_version == NodeRevision.version),
260
- )
261
- ).cte("dag", recursive=True)
262
-
263
- paths = dag.union_all(
264
- select(
265
- dag.c.parent_id,
266
- NodeRevision.node_id,
267
- )
268
- .join(NodeRelationship, dag.c.node_id == NodeRelationship.parent_id)
269
- .join(NodeRevision, NodeRelationship.child_id == NodeRevision.id)
270
- .join(Node, Node.id == NodeRevision.node_id),
271
- )
272
-
273
- statement = (
274
- select(Node)
275
- .join(paths, paths.c.node_id == Node.id)
276
- .options(joinedload(Node.current))
277
- )
278
-
279
- results = session.exec(statement).unique().all()
280
-
281
- return [
282
- downstream
283
- for downstream in results
284
- if downstream.type == node_type or node_type is None
285
- ]
286
-
287
-
288
- def get_upstream_nodes(
289
- session: Session,
290
- node_name: str,
291
- node_type: NodeType = None,
292
- ) -> List[Node]:
293
- """
294
- Gets all upstream parents of the given node, filterable by node type.
295
- """
296
- node = get_node_by_name(session=session, name=node_name)
297
- queue = collections.deque([node])
298
- all_parents = set()
299
- while queue:
300
- node = queue.pop()
301
- for parent in node.current.parents:
302
- all_parents.add(parent)
303
- for parent in node.current.parents:
304
- queue.append(parent)
305
-
306
- return [
307
- upstream
308
- for upstream in all_parents
309
- if upstream.type == node_type or node_type is None
310
- ]
311
-
312
-
313
236
  def find_bound_dimensions(
314
237
  validated_node: NodeRevision,
315
238
  dependencies_map: Dict[NodeRevision, List[ast.Table]],
@@ -5,7 +5,7 @@ Node related APIs.
5
5
  import logging
6
6
  import os
7
7
  from http import HTTPStatus
8
- from typing import List, Optional, Union, cast
8
+ from typing import List, Optional, Union
9
9
 
10
10
  from fastapi import BackgroundTasks, Depends, Query, Response
11
11
  from fastapi.responses import JSONResponse
@@ -20,10 +20,8 @@ from datajunction_server.api.helpers import (
20
20
  deactivate_node,
21
21
  get_catalog_by_name,
22
22
  get_column,
23
- get_downstream_nodes,
24
23
  get_node_by_name,
25
24
  get_node_namespace,
26
- get_upstream_nodes,
27
25
  hard_delete_node,
28
26
  raise_if_node_exists,
29
27
  revalidate_node,
@@ -64,6 +62,7 @@ from datajunction_server.models.node import (
64
62
  CreateCubeNode,
65
63
  CreateNode,
66
64
  CreateSourceNode,
65
+ DAGNodeOutput,
67
66
  DimensionAttributeOutput,
68
67
  LineageColumn,
69
68
  Node,
@@ -86,7 +85,12 @@ from datajunction_server.models.partition import (
86
85
  )
87
86
  from datajunction_server.models.user import User
88
87
  from datajunction_server.service_clients import QueryServiceClient
89
- from datajunction_server.sql.dag import get_dimensions, get_nodes_with_dimension
88
+ from datajunction_server.sql.dag import (
89
+ get_dimensions,
90
+ get_downstream_nodes,
91
+ get_nodes_with_dimension,
92
+ get_upstream_nodes,
93
+ )
90
94
  from datajunction_server.sql.parsing.backends.antlr4 import parse
91
95
  from datajunction_server.utils import (
92
96
  Version,
@@ -966,12 +970,12 @@ def calculate_node_similarity(
966
970
 
967
971
  @router.get(
968
972
  "/nodes/{name}/downstream/",
969
- response_model=List[NodeOutput],
973
+ response_model=List[DAGNodeOutput],
970
974
  name="List Downstream Nodes For A Node",
971
975
  )
972
976
  def list_downstream_nodes(
973
977
  name: str, *, node_type: NodeType = None, session: Session = Depends(get_session)
974
- ) -> List[NodeOutput]:
978
+ ) -> List[DAGNodeOutput]:
975
979
  """
976
980
  List all nodes that are downstream from the given node, filterable by type.
977
981
  """
@@ -980,41 +984,46 @@ def list_downstream_nodes(
980
984
 
981
985
  @router.get(
982
986
  "/nodes/{name}/upstream/",
983
- response_model=List[NodeOutput],
987
+ response_model=List[DAGNodeOutput],
984
988
  name="List Upstream Nodes For A Node",
985
989
  )
986
990
  def list_upstream_nodes(
987
991
  name: str, *, node_type: NodeType = None, session: Session = Depends(get_session)
988
- ) -> List[NodeOutput]:
992
+ ) -> List[DAGNodeOutput]:
989
993
  """
990
994
  List all nodes that are upstream from the given node, filterable by type.
991
995
  """
992
- return get_upstream_nodes(session, name, node_type) # type: ignore
996
+ return get_upstream_nodes(session, name, node_type)
993
997
 
994
998
 
995
999
  @router.get(
996
1000
  "/nodes/{name}/dag/",
997
- response_model=List[NodeOutput],
1001
+ response_model=List[DAGNodeOutput],
998
1002
  name="List All Connected Nodes (Upstreams + Downstreams)",
999
1003
  )
1000
1004
  def list_node_dag(
1001
1005
  name: str, *, session: Session = Depends(get_session)
1002
- ) -> List[NodeOutput]:
1006
+ ) -> List[DAGNodeOutput]:
1003
1007
  """
1004
1008
  List all nodes that are part of the DAG of the given node. This means getting all upstreams,
1005
1009
  downstreams, and linked dimension nodes.
1006
1010
  """
1007
- node = get_node_by_name(session, name)
1011
+ node = get_node_by_name(session, name, with_current=True)
1008
1012
  dimension_nodes = (
1009
- get_dimensions(session, node.current.parents[0], attributes=False)
1013
+ get_dimensions(session, node.current.parents[0], with_attributes=False)
1010
1014
  + node.current.parents
1011
1015
  if node.type == NodeType.METRIC
1012
- else get_dimensions(session, node, attributes=False)
1016
+ else get_dimensions(session, node, with_attributes=False)
1013
1017
  )
1014
1018
  dimension_nodes += [node]
1015
- downstreams = get_downstream_nodes(session, name)
1016
- upstreams = get_upstream_nodes(session, name)
1017
- return list(set(cast(List[Node], dimension_nodes) + downstreams + upstreams)) # type: ignore
1019
+ downstreams = get_downstream_nodes(
1020
+ session,
1021
+ name,
1022
+ include_deactivated=False,
1023
+ include_cubes=False,
1024
+ )
1025
+ upstreams = get_upstream_nodes(session, name, include_deactivated=False)
1026
+ return list(set(dimension_nodes + downstreams + upstreams)) # type: ignore
1018
1027
 
1019
1028
 
1020
1029
  @router.get(
@@ -1029,7 +1038,7 @@ def list_all_dimension_attributes(
1029
1038
  List all available dimension attributes for the given node.
1030
1039
  """
1031
1040
  node = get_node_by_name(session, name)
1032
- return get_dimensions(session, node, attributes=True)
1041
+ return get_dimensions(session, node, with_attributes=True)
1033
1042
 
1034
1043
 
1035
1044
  @router.get(
@@ -1190,7 +1190,7 @@ def get_cube_revision_metadata(session: Session, name: str):
1190
1190
  )
1191
1191
  result = session.execute(statement).unique().first()
1192
1192
  if not result:
1193
- raise DJNodeNotFound(
1193
+ raise DJNodeNotFound( # pragma: no cover
1194
1194
  message=f"A cube node with name `{name}` does not exist.",
1195
1195
  http_status_code=404,
1196
1196
  )
@@ -120,7 +120,7 @@ class SparkSqlMaterializationJob( # pylint: disable=too-few-public-methods # pr
120
120
  ),
121
121
  ctes=query_ast.ctes,
122
122
  )
123
- print("QUERY!!!", str(final_query))
123
+
124
124
  result = query_service_client.materialize(
125
125
  GenericMaterializationInput(
126
126
  name=materialization.name, # type: ignore
@@ -1123,7 +1123,7 @@ class ColumnOutput(BaseSQLModel):
1123
1123
 
1124
1124
  name: str
1125
1125
  display_name: Optional[str]
1126
- type: ColumnType
1126
+ type: str
1127
1127
  attributes: Optional[List[AttributeOutput]]
1128
1128
  dimension: Optional[NodeNameOutput]
1129
1129
  partition: Optional[PartitionOutput]
@@ -1135,13 +1135,9 @@ class ColumnOutput(BaseSQLModel):
1135
1135
 
1136
1136
  validate_assignment = True
1137
1137
 
1138
- @root_validator
1139
- def type_string(cls, values): # pylint: disable=no-self-argument
1140
- """
1141
- Extracts the type as a string
1142
- """
1143
- values["type"] = str(values.get("type"))
1144
- return values
1138
+ _extract_type = validator("type", pre=True, allow_reuse=True)(
1139
+ lambda raw: str(raw), # pylint: disable=unnecessary-lambda
1140
+ )
1145
1141
 
1146
1142
 
1147
1143
  class SourceColumnOutput(SQLModel):
@@ -1339,6 +1335,43 @@ class NodeOutput(OutputModel):
1339
1335
  current_version: str
1340
1336
 
1341
1337
 
1338
+ class DAGNodeRevisionOutput(SQLModel):
1339
+ """
1340
+ Output for a node revision with information about columns and if it is a metric.
1341
+ """
1342
+
1343
+ id: int = Field(alias="node_revision_id")
1344
+ node_id: int
1345
+ type: NodeType
1346
+ name: str
1347
+ display_name: str
1348
+ version: str
1349
+ status: NodeStatus
1350
+ mode: NodeMode
1351
+ catalog: Optional[Catalog]
1352
+ schema_: Optional[str]
1353
+ table: Optional[str]
1354
+ description: str = ""
1355
+ columns: List[ColumnOutput]
1356
+ updated_at: UTCDatetime
1357
+ parents: List[NodeNameOutput]
1358
+
1359
+ class Config: # pylint: disable=missing-class-docstring,too-few-public-methods
1360
+ allow_population_by_field_name = True
1361
+
1362
+
1363
+ class DAGNodeOutput(OutputModel):
1364
+ """
1365
+ Output for a node in another node's DAG
1366
+ """
1367
+
1368
+ namespace: str
1369
+ current: DAGNodeRevisionOutput = PydanticField(flatten=True)
1370
+ created_at: UTCDatetime
1371
+ tags: List["Tag"] = []
1372
+ current_version: str
1373
+
1374
+
1342
1375
  class NodeValidation(SQLModel):
1343
1376
  """
1344
1377
  A validation of a provided node definition
@@ -23,15 +23,165 @@ from datajunction_server.utils import SEPARATOR, get_settings
23
23
  settings = get_settings()
24
24
 
25
25
 
26
+ def _node_output_options():
27
+ """
28
+ Statement options to retrieve all NodeOutput objects in one query
29
+ """
30
+ return [
31
+ joinedload(Node.current).options(
32
+ joinedload(NodeRevision.columns).options(
33
+ joinedload(Column.attributes).joinedload(
34
+ ColumnAttribute.attribute_type,
35
+ ),
36
+ joinedload(Column.dimension),
37
+ joinedload(Column.partition),
38
+ ),
39
+ joinedload(NodeRevision.catalog),
40
+ joinedload(NodeRevision.parents),
41
+ ),
42
+ joinedload(Node.tags),
43
+ ]
44
+
45
+
46
+ def get_downstream_nodes(
47
+ session: Session,
48
+ node_name: str,
49
+ node_type: NodeType = None,
50
+ include_deactivated: bool = True,
51
+ include_cubes: bool = True,
52
+ ) -> List[Node]:
53
+ """
54
+ Gets all downstream children of the given node, filterable by node type.
55
+ Uses a recursive CTE query to build out all descendants from the node.
56
+ """
57
+ node = session.exec(select(Node).where(Node.name == node_name)).one()
58
+
59
+ initial_dag = (
60
+ select(
61
+ NodeRelationship.parent_id,
62
+ NodeRevision.node_id,
63
+ )
64
+ .where(NodeRelationship.parent_id == node.id)
65
+ .join(NodeRevision, NodeRelationship.child_id == NodeRevision.id)
66
+ .join(
67
+ Node,
68
+ (Node.id == NodeRevision.node_id)
69
+ & (Node.current_version == NodeRevision.version),
70
+ )
71
+ )
72
+ if not include_cubes:
73
+ initial_dag = initial_dag.where((NodeRevision.type != NodeType.CUBE))
74
+ dag = initial_dag.cte("downstreams", recursive=True)
75
+
76
+ next_layer = (
77
+ select(
78
+ dag.c.parent_id,
79
+ NodeRevision.node_id,
80
+ )
81
+ .join(NodeRelationship, dag.c.node_id == NodeRelationship.parent_id)
82
+ .join(NodeRevision, NodeRelationship.child_id == NodeRevision.id)
83
+ .join(Node, Node.id == NodeRevision.node_id)
84
+ )
85
+ if not include_cubes:
86
+ next_layer = next_layer.where(NodeRevision.type != NodeType.CUBE)
87
+
88
+ paths = dag.union_all(next_layer)
89
+
90
+ final_select = select(Node)
91
+ if not include_deactivated:
92
+ final_select = final_select.where(is_(Node.deactivated_at, None))
93
+ statement = final_select.join(paths, paths.c.node_id == Node.id).options(
94
+ *_node_output_options()
95
+ )
96
+ results = session.exec(statement).unique().all()
97
+
98
+ return [
99
+ downstream
100
+ for downstream in results
101
+ if downstream.type == node_type or node_type is None
102
+ ]
103
+
104
+
105
+ def get_upstream_nodes(
106
+ session: Session,
107
+ node_name: str,
108
+ node_type: NodeType = None,
109
+ include_deactivated: bool = True,
110
+ ) -> List[Node]:
111
+ """
112
+ Gets all upstreams of the given node, filterable by node type.
113
+ Uses a recursive CTE query to build out all parents of the node.
114
+ """
115
+ node = (
116
+ session.exec(
117
+ select(Node).where(
118
+ (Node.name == node_name) & (is_(Node.deactivated_at, None)),
119
+ ),
120
+ )
121
+ .unique()
122
+ .one()
123
+ )
124
+
125
+ dag = (
126
+ select(
127
+ NodeRelationship.child_id,
128
+ NodeRevision.id,
129
+ NodeRevision.node_id,
130
+ )
131
+ .where(NodeRelationship.child_id == node.current.id)
132
+ .join(Node, NodeRelationship.parent_id == Node.id)
133
+ .join(
134
+ NodeRevision,
135
+ (Node.id == NodeRevision.node_id)
136
+ & (Node.current_version == NodeRevision.version),
137
+ )
138
+ ).cte("upstreams", recursive=True)
139
+
140
+ paths = dag.union_all(
141
+ select(
142
+ dag.c.child_id,
143
+ NodeRevision.id,
144
+ NodeRevision.node_id,
145
+ )
146
+ .join(NodeRelationship, dag.c.id == NodeRelationship.child_id)
147
+ .join(Node, NodeRelationship.parent_id == Node.id)
148
+ .join(
149
+ NodeRevision,
150
+ (Node.id == NodeRevision.node_id)
151
+ & (Node.current_version == NodeRevision.version),
152
+ ),
153
+ )
154
+
155
+ node_selector = select(Node)
156
+ if not include_deactivated:
157
+ node_selector = node_selector.where(is_(Node.deactivated_at, None))
158
+ statement = (
159
+ node_selector.join(paths, paths.c.node_id == Node.id)
160
+ .join(
161
+ NodeRevision,
162
+ (Node.current_version == NodeRevision.version)
163
+ & (Node.id == NodeRevision.node_id),
164
+ )
165
+ .options(*_node_output_options())
166
+ )
167
+
168
+ results = session.exec(statement).unique().all()
169
+ return [
170
+ upstream
171
+ for upstream in results
172
+ if upstream.type == node_type or node_type is None
173
+ ]
174
+
175
+
26
176
  def get_dimensions_dag(
27
177
  session: Session,
28
178
  node_revision: NodeRevision,
29
- attributes: bool = True,
179
+ with_attributes: bool = True,
30
180
  ) -> List[Union[DimensionAttributeOutput, Node]]:
31
181
  """
32
- Gets the dimensions graph of the given node revision with a single
33
- recursive CTE query. This graph is split out into attributes or nodes
34
- depending on the `attributes` flag.
182
+ Gets the dimensions graph of the given node revision with a single recursive CTE query.
183
+ This graph is split out into dimension attributes or dimension nodes depending on the
184
+ `with_attributes` flag.
35
185
  """
36
186
 
37
187
  initial_node = aliased(NodeRevision, name="initial_node")
@@ -129,13 +279,13 @@ def get_dimensions_dag(
129
279
  # Final SELECT statements
130
280
  # ----
131
281
  # If attributes was set to False, we only need to return the dimension nodes
132
- if not attributes:
282
+ if not with_attributes:
133
283
  return (
134
284
  session.exec(
135
285
  select(Node)
136
- .options(joinedload(Node.current))
137
286
  .select_from(paths)
138
- .join(Node, paths.c.node_name == Node.name),
287
+ .join(Node, paths.c.node_name == Node.name)
288
+ .options(*_node_output_options()),
139
289
  )
140
290
  .unique()
141
291
  .all()
@@ -211,26 +361,41 @@ def get_dimensions_dag(
211
361
  )
212
362
  )
213
363
 
364
+ # Only include a given column it's an attribute on a dimension node or
365
+ # if the column is tagged with the attribute type 'dimension'
214
366
  return sorted(
215
367
  [
216
368
  DimensionAttributeOutput(
217
- name=f"{row[0]}.{row[2]}",
218
- node_name=row[0],
219
- node_display_name=row[1],
220
- is_primary_key=row[4] == "primary_key",
221
- type=str(row[3]),
222
- path=row[5].split(",")[:-1] if row[5] else [],
369
+ name=f"{node_name}.{column_name}",
370
+ node_name=node_name,
371
+ node_display_name=node_display_name,
372
+ is_primary_key=(
373
+ attribute_types is not None and "primary_key" in attribute_types
374
+ ),
375
+ type=str(column_type),
376
+ path=join_path.split(",")[:-1] if join_path else [],
223
377
  )
224
- for row in session.exec(final_query).all()
225
- if row[5] != ""
226
- or (
227
- row[5] == ""
228
- and row[4] is not None
229
- and ("dimension" in row[4] or "primary_key" in row[4])
378
+ for (
379
+ node_name,
380
+ node_display_name,
381
+ column_name,
382
+ column_type,
383
+ attribute_types,
384
+ join_path,
385
+ ) in session.exec(
386
+ final_query,
387
+ ).all()
388
+ if ( # column has dimension attribute
389
+ join_path == ""
390
+ and attribute_types is not None
391
+ and ("dimension" in attribute_types or "primary_key" in attribute_types)
230
392
  )
231
- or (
232
- row[0] == node_revision.name
233
- and node_revision.type == NodeType.DIMENSION
393
+ or ( # column is on dimension node
394
+ join_path != ""
395
+ or (
396
+ node_name == node_revision.name
397
+ and node_revision.type == NodeType.DIMENSION
398
+ )
234
399
  )
235
400
  ],
236
401
  key=lambda x: x.name,
@@ -240,7 +405,7 @@ def get_dimensions_dag(
240
405
  def get_dimensions(
241
406
  session: Session,
242
407
  node: Node,
243
- attributes: bool = True,
408
+ with_attributes: bool = True,
244
409
  ) -> List[Union[DimensionAttributeOutput, Node]]:
245
410
  """
246
411
  Return all available dimensions for a given node.
@@ -248,8 +413,12 @@ def get_dimensions(
248
413
  * Setting `attributes` to False will return a list of dimension nodes
249
414
  """
250
415
  if node.type == NodeType.METRIC:
251
- return get_dimensions_dag(session, node.current.parents[0].current, attributes)
252
- return get_dimensions_dag(session, node.current, attributes)
416
+ return get_dimensions_dag(
417
+ session,
418
+ node.current.parents[0].current,
419
+ with_attributes,
420
+ )
421
+ return get_dimensions_dag(session, node.current, with_attributes)
253
422
 
254
423
 
255
424
  def check_convergence(path1: List[str], path2: List[str]) -> bool:
@@ -11,7 +11,6 @@ import pytest
11
11
  from fastapi.testclient import TestClient
12
12
  from sqlmodel import Session, select
13
13
 
14
- from datajunction_server.api.helpers import get_upstream_nodes
15
14
  from datajunction_server.internal.materializations import decompose_expression
16
15
  from datajunction_server.models import Database, Table
17
16
  from datajunction_server.models.column import Column
@@ -24,6 +23,7 @@ from datajunction_server.models.node import (
24
23
  from datajunction_server.models.node_type import NodeType
25
24
  from datajunction_server.models.partition import PartitionBackfill
26
25
  from datajunction_server.service_clients import QueryServiceClient
26
+ from datajunction_server.sql.dag import get_upstream_nodes
27
27
  from datajunction_server.sql.parsing import ast, types
28
28
  from datajunction_server.sql.parsing.types import IntegerType, StringType, TimestampType
29
29
  from tests.sql.utils import compare_query_strings
@@ -1,4 +0,0 @@
1
- """
2
- Version for Hatch
3
- """
4
- __version__ = "0.0.1a37.dev4"