datajunction-server 0.0.1a44.dev10__tar.gz → 0.0.1a45.dev0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (542) hide show
  1. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/PKG-INFO +3 -1
  2. datajunction_server-0.0.1a45.dev0/datajunction_server/__about__.py +4 -0
  3. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/access/authentication/basic.py +10 -13
  4. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/access/authentication/google.py +9 -7
  5. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/attributes.py +13 -23
  6. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/catalogs.py +29 -23
  7. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/client.py +49 -50
  8. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/cubes.py +18 -18
  9. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/data.py +33 -23
  10. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/dimensions.py +17 -17
  11. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/djsql.py +8 -8
  12. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/engines.py +13 -11
  13. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/graphql/catalogs.py +2 -2
  14. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/graphql/engines.py +2 -2
  15. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/health.py +6 -6
  16. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/helpers.py +248 -142
  17. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/history.py +14 -12
  18. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/materializations.py +47 -31
  19. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/measures.py +36 -26
  20. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/metrics.py +30 -18
  21. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/namespaces.py +47 -51
  22. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/nodes.py +335 -238
  23. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/sql.py +11 -11
  24. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/tags.py +40 -26
  25. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/construction/build.py +97 -73
  26. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/construction/dimensions.py +12 -5
  27. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/construction/dj_query.py +29 -22
  28. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/construction/utils.py +20 -7
  29. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/attributetype.py +49 -1
  30. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/catalog.py +1 -0
  31. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/column.py +1 -1
  32. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/dimensionlink.py +1 -0
  33. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/materialization.py +1 -0
  34. datajunction_server-0.0.1a45.dev0/datajunction_server/database/namespace.py +128 -0
  35. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/node.py +163 -4
  36. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/access/authentication/basic.py +10 -8
  37. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/access/authentication/github.py +1 -1
  38. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/access/authentication/google.py +1 -1
  39. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/access/authentication/http.py +7 -4
  40. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/engines.py +3 -3
  41. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/materializations.py +21 -16
  42. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/namespaces.py +64 -86
  43. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/nodes.py +286 -169
  44. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/access.py +4 -4
  45. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/node.py +8 -2
  46. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/dag.py +101 -56
  47. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/functions.py +15 -0
  48. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/ast.py +95 -66
  49. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/utils.py +19 -13
  50. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/pdm.lock +119 -43
  51. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/pyproject.toml +7 -9
  52. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/requirements/docker.txt +4 -2
  53. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/requirements/test.txt +7 -3
  54. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/attributes_test.py +12 -9
  55. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/catalog_test.py +69 -53
  56. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/client_test.py +31 -22
  57. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/cubes_test.py +108 -93
  58. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/data_test.py +186 -155
  59. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/dimension_links_test.py +73 -57
  60. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/dimensions_test.py +31 -21
  61. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/djql_test.py +40 -30
  62. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/engine_test.py +23 -19
  63. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/graphql/catalog_test.py +10 -9
  64. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/graphql/engine_test.py +9 -8
  65. datajunction_server-0.0.1a45.dev0/tests/api/health_test.py +35 -0
  66. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/helpers_test.py +16 -6
  67. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/history_test.py +11 -7
  68. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/materializations_test.py +79 -60
  69. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/measures_test.py +31 -22
  70. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/metrics_test.py +71 -53
  71. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/namespaces_test.py +88 -65
  72. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/node_update_test.py +8 -6
  73. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/nodes_test.py +493 -395
  74. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/routers_test.py +10 -8
  75. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/sql_test.py +104 -100
  76. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/tags_test.py +42 -37
  77. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/conftest.py +168 -101
  78. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/construction/build_test.py +64 -50
  79. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/construction/compile_test.py +39 -22
  80. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/construction/fixtures.py +7 -6
  81. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/construction/inference_test.py +45 -31
  82. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/construction/utils_test.py +11 -6
  83. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/internal/authentication/basic_test.py +51 -25
  84. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/internal/authentication/whoami_test.py +8 -6
  85. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/models/node_test.py +2 -2
  86. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/dag_test.py +6 -5
  87. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/functions_test.py +613 -397
  88. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/test_ast.py +81 -60
  89. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/utils_test.py +12 -13
  90. datajunction_server-0.0.1a44.dev10/datajunction_server/__about__.py +0 -4
  91. datajunction_server-0.0.1a44.dev10/datajunction_server/database/namespace.py +0 -25
  92. datajunction_server-0.0.1a44.dev10/tests/api/health_test.py +0 -26
  93. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/.coveragerc +0 -0
  94. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/.env +0 -0
  95. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/.env.integration +0 -0
  96. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/.flake8 +0 -0
  97. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/.gitignore +0 -0
  98. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/.isort.cfg +0 -0
  99. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/.pre-commit-config.yaml +0 -0
  100. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/.pylintrc +0 -0
  101. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/Dockerfile +0 -0
  102. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/Makefile +0 -0
  103. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/README.md +0 -0
  104. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/alembic/README +0 -0
  105. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/alembic/env.py +0 -0
  106. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/alembic/script.py.mako +0 -0
  107. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/alembic/versions/2023_12_20_1829-724445d2b29d_initial_migration.py +0 -0
  108. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/alembic/versions/2024_01_08_2034-945d44abcd32_add_dimension_links.py +0 -0
  109. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/alembic/versions/2024_01_11_2032-c74b11566d82_add_column_order.py +0 -0
  110. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/alembic/versions/2024_01_18_2011-20f060b02772_switch_enum_values.py +0 -0
  111. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/alembic/versions/2024_01_23_0617-c9cef8864ecb_add_missing_table_attribute_to_source_.py +0 -0
  112. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/alembic/versions/2024_01_23_1655-a8e22109be24_availability_state_s_valid_through_ts_.py +0 -0
  113. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/alembic/versions/2024_02_22_0713-d61fb7e48cc3_cascade_deletes_to_dimension_links.py +0 -0
  114. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/alembic.ini +0 -0
  115. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/alembic_version.csv +0 -0
  116. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/attributetype.csv +0 -0
  117. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/availabilitystate.csv +0 -0
  118. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/backfill.csv +0 -0
  119. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/catalog.csv +0 -0
  120. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/catalogengines.csv +0 -0
  121. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/column.csv +0 -0
  122. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/columnattribute.csv +0 -0
  123. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/cube.csv +0 -0
  124. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/database.csv +0 -0
  125. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/engine.csv +0 -0
  126. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/history.csv +0 -0
  127. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/materialization.csv +0 -0
  128. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/measures.csv +0 -0
  129. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/metric_required_dimensions.csv +0 -0
  130. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/metricmetadata.csv +0 -0
  131. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/missingparent.csv +0 -0
  132. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/node.csv +0 -0
  133. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/nodeavailabilitystate.csv +0 -0
  134. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/nodecolumns.csv +0 -0
  135. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/nodemissingparents.csv +0 -0
  136. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/nodenamespace.csv +0 -0
  137. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/noderelationship.csv +0 -0
  138. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/noderevision.csv +0 -0
  139. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/partition.csv +0 -0
  140. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/alembic_version.csv +0 -0
  141. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/attributetype.csv +0 -0
  142. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/availabilitystate.csv +0 -0
  143. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/backfill.csv +0 -0
  144. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/catalog.csv +0 -0
  145. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/catalogengines.csv +0 -0
  146. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/column.csv +0 -0
  147. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/columnattribute.csv +0 -0
  148. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/cube.csv +0 -0
  149. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/database.csv +0 -0
  150. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/engine.csv +0 -0
  151. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/history.csv +0 -0
  152. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/materialization.csv +0 -0
  153. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/measures.csv +0 -0
  154. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/metric_required_dimensions.csv +0 -0
  155. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/metricmetadata.csv +0 -0
  156. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/missingparent.csv +0 -0
  157. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/node.csv +0 -0
  158. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/nodeavailabilitystate.csv +0 -0
  159. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/nodecolumns.csv +0 -0
  160. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/nodemissingparents.csv +0 -0
  161. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/nodenamespace.csv +0 -0
  162. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/noderelationship.csv +0 -0
  163. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/noderevision.csv +0 -0
  164. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/partition.csv +0 -0
  165. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/table.csv +0 -0
  166. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/tablecolumns.csv +0 -0
  167. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/tag.csv +0 -0
  168. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/tagnoderelationship.csv +0 -0
  169. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/prod/backup/users.csv +0 -0
  170. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/table.csv +0 -0
  171. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/tablecolumns.csv +0 -0
  172. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/tag.csv +0 -0
  173. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/tagnoderelationship.csv +0 -0
  174. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/alembic_version.csv +0 -0
  175. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/attributetype.csv +0 -0
  176. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/availabilitystate.csv +0 -0
  177. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/backfill.csv +0 -0
  178. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/catalog.csv +0 -0
  179. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/catalogengines.csv +0 -0
  180. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/column.csv +0 -0
  181. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/columnattribute.csv +0 -0
  182. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/cube.csv +0 -0
  183. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/database.csv +0 -0
  184. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/engine.csv +0 -0
  185. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/history.csv +0 -0
  186. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/materialization.csv +0 -0
  187. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/measures.csv +0 -0
  188. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/metric_required_dimensions.csv +0 -0
  189. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/metricmetadata.csv +0 -0
  190. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/missingparent.csv +0 -0
  191. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/node.csv +0 -0
  192. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/nodeavailabilitystate.csv +0 -0
  193. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/nodecolumns.csv +0 -0
  194. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/nodemissingparents.csv +0 -0
  195. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/nodenamespace.csv +0 -0
  196. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/noderelationship.csv +0 -0
  197. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/noderevision.csv +0 -0
  198. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/partition.csv +0 -0
  199. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/table.csv +0 -0
  200. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/tablecolumns.csv +0 -0
  201. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/tag.csv +0 -0
  202. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/tagnoderelationship.csv +0 -0
  203. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/test/backup/users.csv +0 -0
  204. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/backup/users.csv +0 -0
  205. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/curl-format.txt +0 -0
  206. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/__init__.py +0 -0
  207. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/__init__.py +0 -0
  208. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/access/authentication/__init__.py +0 -0
  209. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/access/authentication/github.py +0 -0
  210. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/access/authentication/whoami.py +0 -0
  211. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/graphql/__init__.py +0 -0
  212. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/graphql/main.py +0 -0
  213. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/logging.conf +0 -0
  214. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/api/main.py +0 -0
  215. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/config.py +0 -0
  216. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/constants.py +0 -0
  217. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/construction/__init__.py +0 -0
  218. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/construction/exceptions.py +0 -0
  219. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/__init__.py +0 -0
  220. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/availabilitystate.py +0 -0
  221. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/backfill.py +0 -0
  222. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/base.py +0 -0
  223. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/database.py +0 -0
  224. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/engine.py +0 -0
  225. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/history.py +0 -0
  226. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/measure.py +0 -0
  227. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/metricmetadata.py +0 -0
  228. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/partition.py +0 -0
  229. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/tag.py +0 -0
  230. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/database/user.py +0 -0
  231. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/enum.py +0 -0
  232. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/errors.py +0 -0
  233. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/__init__.py +0 -0
  234. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/access/__init__.py +0 -0
  235. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/access/authentication/__init__.py +0 -0
  236. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/access/authentication/tokens.py +0 -0
  237. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/internal/access/authorization.py +0 -0
  238. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/materialization/__init__.py +0 -0
  239. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/materialization/jobs/__init__.py +0 -0
  240. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/materialization/jobs/cube_materialization.py +0 -0
  241. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/materialization/jobs/job_types.py +0 -0
  242. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/materialization/jobs/materialization_job.py +0 -0
  243. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/__init__.py +0 -0
  244. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/attribute.py +0 -0
  245. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/base.py +0 -0
  246. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/catalog.py +0 -0
  247. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/column.py +0 -0
  248. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/cube.py +0 -0
  249. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/database.py +0 -0
  250. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/dimensionlink.py +0 -0
  251. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/engine.py +0 -0
  252. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/history.py +0 -0
  253. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/materialization.py +0 -0
  254. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/measure.py +0 -0
  255. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/metric.py +0 -0
  256. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/node_type.py +0 -0
  257. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/partition.py +0 -0
  258. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/query.py +0 -0
  259. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/table.py +0 -0
  260. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/tag.py +0 -0
  261. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/models/user.py +0 -0
  262. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/naming.py +0 -0
  263. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/service_clients.py +0 -0
  264. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/__init__.py +0 -0
  265. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/__init__.py +0 -0
  266. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/__init__.py +0 -0
  267. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/antlr4.py +0 -0
  268. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/exceptions.py +0 -0
  269. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/grammar/SqlBaseLexer.g4 +0 -0
  270. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/grammar/SqlBaseParser.g4 +0 -0
  271. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/grammar/__init__.py +0 -0
  272. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.interp +0 -0
  273. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.py +0 -0
  274. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.tokens +0 -0
  275. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.interp +0 -0
  276. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.py +0 -0
  277. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.tokens +0 -0
  278. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserListener.py +0 -0
  279. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserVisitor.py +0 -0
  280. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/sql/parsing/types.py +0 -0
  281. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/superset.py +0 -0
  282. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/transpilation.py +0 -0
  283. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/datajunction_server/typing.py +0 -0
  284. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/default.duckdb +0 -0
  285. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/dj.copy.db +0 -0
  286. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/dj.internal.db +0 -0
  287. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/dj.test.db +0 -0
  288. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/dj.tt.db +0 -0
  289. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/dj_prod.dump +0 -0
  290. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/dj_prod.sql +0 -0
  291. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/scripts/docs-snippets.js +0 -0
  292. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/scripts/docs-snippets.sh +0 -0
  293. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/scripts/generate-openapi.py +0 -0
  294. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tester.py +0 -0
  295. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/__init__.py +0 -0
  296. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/__init__.py +0 -0
  297. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/druid_measures_cube.full.druid_spec.json +0 -0
  298. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/druid_measures_cube.full.partition.druid_spec.json +0 -0
  299. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/druid_measures_cube.full.partition.query.sql +0 -0
  300. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/druid_measures_cube.full.query.sql +0 -0
  301. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/druid_measures_cube.incremental.druid_spec.json +0 -0
  302. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/druid_measures_cube.incremental.patched.query.sql +0 -0
  303. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/druid_measures_cube.incremental.query.sql +0 -0
  304. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/druid_metrics_cube.incremental.druid_spec.json +0 -0
  305. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/druid_metrics_cube.incremental.query.sql +0 -0
  306. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/spark_sql.full.config.json +0 -0
  307. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/spark_sql.full.materializations.json +0 -0
  308. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/spark_sql.full.partition.config.json +0 -0
  309. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/spark_sql.full.partition.materializations.json +0 -0
  310. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/spark_sql.full.partition.query.sql +0 -0
  311. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/spark_sql.full.query.sql +0 -0
  312. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/spark_sql.incremental.additional.query.sql +0 -0
  313. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/spark_sql.incremental.config.json +0 -0
  314. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/files/materializations_test/spark_sql.incremental.query.sql +0 -0
  315. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/api/graphql/__init__.py +0 -0
  316. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/construction/__init__.py +0 -0
  317. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/construction/exceptions_test.py +0 -0
  318. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/default.duckdb +0 -0
  319. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/duckdb.sql +0 -0
  320. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/errors_test.py +0 -0
  321. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/examples.py +0 -0
  322. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/fixes_test.py +0 -0
  323. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/integration/__init__.py +0 -0
  324. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/integration/basic_test.py +0 -0
  325. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/internal/authentication/github_test.py +0 -0
  326. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/internal/authentication/http_test.py +0 -0
  327. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/internal/authentication/token_test.py +0 -0
  328. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/migrations_test.py +0 -0
  329. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/models/__init__.py +0 -0
  330. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/models/catalog_test.py +0 -0
  331. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/models/hash_test.py +0 -0
  332. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/models/measure_test.py +0 -0
  333. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/models/query_test.py +0 -0
  334. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/service_clients_test.py +0 -0
  335. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/__init__.py +0 -0
  336. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/__init__.py +0 -0
  337. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/backends/__init__.py +0 -0
  338. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/backends/antlr4_test.py +0 -0
  339. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/backends/types_test.py +0 -0
  340. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/__init__.py +0 -0
  341. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query1.sql +0 -0
  342. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query10.sql +0 -0
  343. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query11.sql +0 -0
  344. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query12.sql +0 -0
  345. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query13.sql +0 -0
  346. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query14.sql +0 -0
  347. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query15.sql +0 -0
  348. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query16.sql +0 -0
  349. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query17.sql +0 -0
  350. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query18.sql +0 -0
  351. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query19.sql +0 -0
  352. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query2.sql +0 -0
  353. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query20.sql +0 -0
  354. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query21.sql +0 -0
  355. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query22.sql +0 -0
  356. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query23.sql +0 -0
  357. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query24.sql +0 -0
  358. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query25.sql +0 -0
  359. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query26.sql +0 -0
  360. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query27.sql +0 -0
  361. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query28.sql +0 -0
  362. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query29.sql +0 -0
  363. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query3.sql +0 -0
  364. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query30.sql +0 -0
  365. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query31.sql +0 -0
  366. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query32.sql +0 -0
  367. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query33.sql +0 -0
  368. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query34.sql +0 -0
  369. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query35.sql +0 -0
  370. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query36.sql +0 -0
  371. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query37.sql +0 -0
  372. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query38.sql +0 -0
  373. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query39.sql +0 -0
  374. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query4.sql +0 -0
  375. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query40.sql +0 -0
  376. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query41.sql +0 -0
  377. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query42.sql +0 -0
  378. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query43.sql +0 -0
  379. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query44.sql +0 -0
  380. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query45.sql +0 -0
  381. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query46.sql +0 -0
  382. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query47.sql +0 -0
  383. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query48.sql +0 -0
  384. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query49.sql +0 -0
  385. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query5.sql +0 -0
  386. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query50.sql +0 -0
  387. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query51.sql +0 -0
  388. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query52.sql +0 -0
  389. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query53.sql +0 -0
  390. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query54.sql +0 -0
  391. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query55.sql +0 -0
  392. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query56.sql +0 -0
  393. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query57.sql +0 -0
  394. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query58.sql +0 -0
  395. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query59.sql +0 -0
  396. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query6.sql +0 -0
  397. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query60.sql +0 -0
  398. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query61.sql +0 -0
  399. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query62.sql +0 -0
  400. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query63.sql +0 -0
  401. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query64.sql +0 -0
  402. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query65.sql +0 -0
  403. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query66.sql +0 -0
  404. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query67.sql +0 -0
  405. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query68.sql +0 -0
  406. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query69.sql +0 -0
  407. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query7.sql +0 -0
  408. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query70.sql +0 -0
  409. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query71.sql +0 -0
  410. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query72.sql +0 -0
  411. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query73.sql +0 -0
  412. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query74.sql +0 -0
  413. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query75.sql +0 -0
  414. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query76.sql +0 -0
  415. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query77.sql +0 -0
  416. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query78.sql +0 -0
  417. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query79.sql +0 -0
  418. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query8.sql +0 -0
  419. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query80.sql +0 -0
  420. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query81.sql +0 -0
  421. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query82.sql +0 -0
  422. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query83.sql +0 -0
  423. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query84.sql +0 -0
  424. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query85.sql +0 -0
  425. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query86.sql +0 -0
  426. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query87.sql +0 -0
  427. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query88.sql +0 -0
  428. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query89.sql +0 -0
  429. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query9.sql +0 -0
  430. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query90.sql +0 -0
  431. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query91.sql +0 -0
  432. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query92.sql +0 -0
  433. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query93.sql +0 -0
  434. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query94.sql +0 -0
  435. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query95.sql +0 -0
  436. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query96.sql +0 -0
  437. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query97.sql +0 -0
  438. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query98.sql +0 -0
  439. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/ansi/query99.sql +0 -0
  440. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query1.sql +0 -0
  441. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query10.sql +0 -0
  442. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query11.sql +0 -0
  443. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query12.sql +0 -0
  444. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query13.sql +0 -0
  445. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query14.sql +0 -0
  446. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query15.sql +0 -0
  447. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query16.sql +0 -0
  448. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query17.sql +0 -0
  449. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query18.sql +0 -0
  450. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query19.sql +0 -0
  451. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query2.sql +0 -0
  452. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query20.sql +0 -0
  453. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query21.sql +0 -0
  454. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query22.sql +0 -0
  455. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query23.sql +0 -0
  456. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query24.sql +0 -0
  457. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query25.sql +0 -0
  458. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query26.sql +0 -0
  459. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query27.sql +0 -0
  460. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query28.sql +0 -0
  461. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query29.sql +0 -0
  462. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query3.sql +0 -0
  463. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query30.sql +0 -0
  464. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query31.sql +0 -0
  465. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query32.sql +0 -0
  466. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query33.sql +0 -0
  467. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query34.sql +0 -0
  468. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query35.sql +0 -0
  469. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query36.sql +0 -0
  470. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query37.sql +0 -0
  471. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query38.sql +0 -0
  472. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query39.sql +0 -0
  473. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query4.sql +0 -0
  474. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query40.sql +0 -0
  475. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query41.sql +0 -0
  476. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query42.sql +0 -0
  477. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query43.sql +0 -0
  478. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query44.sql +0 -0
  479. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query45.sql +0 -0
  480. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query46.sql +0 -0
  481. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query47.sql +0 -0
  482. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query48.sql +0 -0
  483. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query49.sql +0 -0
  484. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query5.sql +0 -0
  485. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query50.sql +0 -0
  486. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query51.sql +0 -0
  487. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query52.sql +0 -0
  488. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query53.sql +0 -0
  489. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query54.sql +0 -0
  490. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query55.sql +0 -0
  491. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query56.sql +0 -0
  492. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query57.sql +0 -0
  493. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query58.sql +0 -0
  494. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query59.sql +0 -0
  495. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query6.sql +0 -0
  496. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query60.sql +0 -0
  497. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query61.sql +0 -0
  498. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query62.sql +0 -0
  499. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query63.sql +0 -0
  500. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query64.sql +0 -0
  501. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query65.sql +0 -0
  502. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query66.sql +0 -0
  503. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query67.sql +0 -0
  504. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query68.sql +0 -0
  505. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query69.sql +0 -0
  506. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query7.sql +0 -0
  507. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query70.sql +0 -0
  508. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query71.sql +0 -0
  509. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query72.sql +0 -0
  510. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query73.sql +0 -0
  511. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query74.sql +0 -0
  512. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query75.sql +0 -0
  513. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query76.sql +0 -0
  514. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query77.sql +0 -0
  515. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query78.sql +0 -0
  516. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query79.sql +0 -0
  517. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query8.sql +0 -0
  518. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query80.sql +0 -0
  519. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query81.sql +0 -0
  520. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query82.sql +0 -0
  521. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query83.sql +0 -0
  522. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query84.sql +0 -0
  523. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query85.sql +0 -0
  524. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query86.sql +0 -0
  525. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query87.sql +0 -0
  526. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query88.sql +0 -0
  527. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query89.sql +0 -0
  528. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query9.sql +0 -0
  529. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query90.sql +0 -0
  530. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query91.sql +0 -0
  531. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query92.sql +0 -0
  532. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query93.sql +0 -0
  533. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query94.sql +0 -0
  534. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query95.sql +0 -0
  535. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query96.sql +0 -0
  536. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query97.sql +0 -0
  537. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query98.sql +0 -0
  538. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query99.sql +0 -0
  539. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/parsing/queries/tpcds/test_tpcds.py +0 -0
  540. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/sql/utils.py +0 -0
  541. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/superset_test.py +0 -0
  542. {datajunction_server-0.0.1a44.dev10 → datajunction_server-0.0.1a45.dev0}/tests/transpilation_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: datajunction-server
3
- Version: 0.0.1a44.dev10
3
+ Version: 0.0.1a45.dev0
4
4
  Summary: DataJunction server library for running to a DataJunction server
5
5
  Project-URL: repository, https://github.com/DataJunction/dj
6
6
  Author-email: DataJunction Authors <yian.shang@gmail.com>
@@ -14,9 +14,11 @@ Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Requires-Python: <4.0,>=3.8
16
16
  Requires-Dist: accept-types<1.0.0,>=0.4.1
17
+ Requires-Dist: aiosqlite>=0.20.0
17
18
  Requires-Dist: alembic>=1.10.3
18
19
  Requires-Dist: antlr4-python3-runtime==4.12.0
19
20
  Requires-Dist: asciidag<1.0.0,>=0.2.0
21
+ Requires-Dist: asyncpg>=0.29.0
20
22
  Requires-Dist: bcrypt>=4.0.1
21
23
  Requires-Dist: cachelib<1.0.0,>=0.10.2
22
24
  Requires-Dist: cachetools>=5.3.1
@@ -0,0 +1,4 @@
1
+ """
2
+ Version for Hatch
3
+ """
4
+ __version__ = "0.0.1a45.dev0"
@@ -8,7 +8,7 @@ from fastapi import APIRouter, Depends, Form
8
8
  from fastapi.responses import JSONResponse, Response
9
9
  from fastapi.security import OAuth2PasswordRequestForm
10
10
  from sqlalchemy import select
11
- from sqlalchemy.orm import Session
11
+ from sqlalchemy.ext.asyncio import AsyncSession
12
12
 
13
13
  from datajunction_server.constants import AUTH_COOKIE, LOGGED_IN_FLAG_COOKIE
14
14
  from datajunction_server.database.user import OAuthProvider, User
@@ -24,20 +24,17 @@ router = APIRouter(tags=["Basic OAuth2"])
24
24
 
25
25
 
26
26
  @router.post("/basic/user/")
27
- def create_a_user(
27
+ async def create_a_user(
28
28
  email: str = Form(),
29
29
  username: str = Form(),
30
30
  password: str = Form(),
31
- session: Session = Depends(get_session),
31
+ session: AsyncSession = Depends(get_session),
32
32
  ) -> JSONResponse:
33
33
  """
34
34
  Create a new user
35
35
  """
36
- if (
37
- session.execute(select(User).where(User.username == username))
38
- .scalars()
39
- .one_or_none()
40
- ):
36
+ user_result = await session.execute(select(User).where(User.username == username))
37
+ if user_result.scalar_one_or_none():
41
38
  raise DJException(
42
39
  http_status_code=HTTPStatus.CONFLICT,
43
40
  errors=[
@@ -54,8 +51,8 @@ def create_a_user(
54
51
  oauth_provider=OAuthProvider.BASIC,
55
52
  )
56
53
  session.add(new_user)
57
- session.commit()
58
- session.refresh(new_user)
54
+ await session.commit()
55
+ await session.refresh(new_user)
59
56
  return JSONResponse(
60
57
  content={"message": "User successfully created"},
61
58
  status_code=HTTPStatus.CREATED,
@@ -63,14 +60,14 @@ def create_a_user(
63
60
 
64
61
 
65
62
  @router.post("/basic/login/")
66
- def login(
63
+ async def login(
67
64
  form_data: OAuth2PasswordRequestForm = Depends(),
68
- session: Session = Depends(get_session),
65
+ session: AsyncSession = Depends(get_session),
69
66
  ):
70
67
  """
71
68
  Get a JWT token and set it as an HTTP only cookie
72
69
  """
73
- user = validate_user_password(
70
+ user = await validate_user_password(
74
71
  username=form_data.username,
75
72
  password=form_data.password,
76
73
  session=session,
@@ -14,7 +14,7 @@ import requests
14
14
  from fastapi import APIRouter, Depends, Request
15
15
  from google.oauth2 import id_token
16
16
  from sqlalchemy import select
17
- from sqlalchemy.orm import Session
17
+ from sqlalchemy.ext.asyncio import AsyncSession
18
18
  from starlette.responses import RedirectResponse
19
19
 
20
20
  from datajunction_server.constants import AUTH_COOKIE, LOGGED_IN_FLAG_COOKIE
@@ -46,11 +46,11 @@ def login(target: Optional[str] = None):
46
46
 
47
47
 
48
48
  @router.get("/google/token/")
49
- def get_access_token(
49
+ async def get_access_token(
50
50
  request: Request,
51
51
  state: Optional[str] = None,
52
52
  error: Optional[str] = None,
53
- session: Session = Depends(get_session),
53
+ session: AsyncSession = Depends(get_session),
54
54
  setting: Settings = Depends(get_settings),
55
55
  ):
56
56
  """
@@ -75,8 +75,10 @@ def get_access_token(
75
75
  audience=setting.google_oauth_client_id,
76
76
  )
77
77
 
78
- existing_user = session.execute(
79
- select(User).where(User.email == user_data["email"]),
78
+ existing_user = (
79
+ await session.execute(
80
+ select(User).where(User.email == user_data["email"]),
81
+ )
80
82
  ).scalar()
81
83
  if existing_user:
82
84
  _logger.info("OAuth user found")
@@ -91,8 +93,8 @@ def get_access_token(
91
93
  oauth_provider=OAuthProvider.GOOGLE,
92
94
  )
93
95
  session.add(new_user)
94
- session.commit()
95
- session.refresh(new_user)
96
+ await session.commit()
97
+ await session.refresh(new_user)
96
98
  user = new_user
97
99
  response = RedirectResponse(url=urljoin(settings.frontend_host, state)) # type: ignore
98
100
  response.set_cookie(
@@ -7,7 +7,7 @@ from typing import List
7
7
 
8
8
  from fastapi import Depends
9
9
  from sqlalchemy import select
10
- from sqlalchemy.orm import Session
10
+ from sqlalchemy.ext.asyncio import AsyncSession
11
11
 
12
12
  from datajunction_server.database.attributetype import AttributeType
13
13
  from datajunction_server.errors import DJAlreadyExistsException, DJException
@@ -26,13 +26,13 @@ router = SecureAPIRouter(tags=["attributes"])
26
26
 
27
27
 
28
28
  @router.get("/attributes/", response_model=List[AttributeTypeBase])
29
- def list_attributes(
30
- *, session: Session = Depends(get_session)
29
+ async def list_attributes(
30
+ *, session: AsyncSession = Depends(get_session)
31
31
  ) -> List[AttributeTypeBase]:
32
32
  """
33
33
  List all available attribute types.
34
34
  """
35
- attributes = session.execute(select(AttributeType)).scalars().all()
35
+ attributes = await AttributeType.get_all(session)
36
36
  return [AttributeTypeBase.from_orm(attr) for attr in attributes]
37
37
 
38
38
 
@@ -42,8 +42,8 @@ def list_attributes(
42
42
  status_code=201,
43
43
  name="Add an Attribute Type",
44
44
  )
45
- def add_attribute_type(
46
- data: MutableAttributeTypeFields, *, session: Session = Depends(get_session)
45
+ async def add_attribute_type(
46
+ data: MutableAttributeTypeFields, *, session: AsyncSession = Depends(get_session)
47
47
  ) -> AttributeTypeBase:
48
48
  """
49
49
  Add a new attribute type
@@ -52,26 +52,16 @@ def add_attribute_type(
52
52
  raise DJException(
53
53
  message="Cannot use `system` as the attribute type namespace as it is reserved.",
54
54
  )
55
- statement = select(AttributeType).where(AttributeType.name == data.name)
56
- attribute_type = session.execute(statement).unique().one_or_none()
55
+ attribute_type = await AttributeType.get_by_name(session, data.name)
57
56
  if attribute_type:
58
57
  raise DJAlreadyExistsException(
59
58
  message=f"Attribute type `{data.name}` already exists!",
60
59
  )
61
- attribute_type = AttributeType(
62
- namespace=data.namespace,
63
- name=data.name,
64
- description=data.description,
65
- allowed_node_types=data.allowed_node_types,
66
- uniqueness_scope=data.uniqueness_scope if data.uniqueness_scope else [],
67
- )
68
- session.add(attribute_type)
69
- session.commit()
70
- session.refresh(attribute_type)
71
- return attribute_type
60
+ attribute_type = await AttributeType.create(session, data)
61
+ return AttributeTypeBase.from_orm(attribute_type)
72
62
 
73
63
 
74
- def default_attribute_types(session: Session = Depends(get_session)):
64
+ async def default_attribute_types(session: AsyncSession = Depends(get_session)):
75
65
  """
76
66
  Loads all the column attribute types that are supported by the system
77
67
  by default into the database.
@@ -105,7 +95,7 @@ def default_attribute_types(session: Session = Depends(get_session)):
105
95
  set(default_attribute_type_names.keys()),
106
96
  ),
107
97
  )
108
- attribute_types = session.execute(statement).scalars().all()
98
+ attribute_types = (await session.execute(statement)).scalars().all()
109
99
  for type_ in attribute_types:
110
100
  # if type_: # pragma: no cover
111
101
  type_.name = default_attribute_type_names[type_.name].name
@@ -123,7 +113,7 @@ def default_attribute_types(session: Session = Depends(get_session)):
123
113
  new_types = set(default_attribute_type_names.keys()) - {
124
114
  type_.name for type_ in attribute_types if type_
125
115
  }
126
- session.bulk_save_objects(
116
+ session.add_all(
127
117
  [default_attribute_type_names[name] for name in new_types],
128
118
  )
129
- session.commit()
119
+ await session.commit()
@@ -8,7 +8,8 @@ from typing import List
8
8
 
9
9
  from fastapi import Depends, HTTPException
10
10
  from sqlalchemy import select
11
- from sqlalchemy.orm import Session
11
+ from sqlalchemy.ext.asyncio import AsyncSession
12
+ from sqlalchemy.orm import joinedload
12
13
 
13
14
  from datajunction_server.api.engines import EngineInfo
14
15
  from datajunction_server.api.helpers import get_catalog_by_name
@@ -28,22 +29,27 @@ UNKNOWN_CATALOG_ID = 0
28
29
 
29
30
 
30
31
  @router.get("/catalogs/", response_model=List[CatalogInfo])
31
- def list_catalogs(*, session: Session = Depends(get_session)) -> List[CatalogInfo]:
32
+ async def list_catalogs(
33
+ *, session: AsyncSession = Depends(get_session)
34
+ ) -> List[CatalogInfo]:
32
35
  """
33
36
  List all available catalogs
34
37
  """
38
+ statement = select(Catalog).options(joinedload(Catalog.engines))
35
39
  return [
36
40
  CatalogInfo.from_orm(catalog)
37
- for catalog in session.execute(select(Catalog)).scalars()
41
+ for catalog in (await session.execute(statement)).unique().scalars()
38
42
  ]
39
43
 
40
44
 
41
45
  @router.get("/catalogs/{name}/", response_model=CatalogInfo, name="Get a Catalog")
42
- def get_catalog(name: str, *, session: Session = Depends(get_session)) -> CatalogInfo:
46
+ async def get_catalog(
47
+ name: str, *, session: AsyncSession = Depends(get_session)
48
+ ) -> CatalogInfo:
43
49
  """
44
50
  Return a catalog by name
45
51
  """
46
- return get_catalog_by_name(session, name)
52
+ return await get_catalog_by_name(session, name)
47
53
 
48
54
 
49
55
  @router.post(
@@ -52,16 +58,16 @@ def get_catalog(name: str, *, session: Session = Depends(get_session)) -> Catalo
52
58
  status_code=201,
53
59
  name="Add A Catalog",
54
60
  )
55
- def add_catalog(
61
+ async def add_catalog(
56
62
  data: CatalogInfo,
57
63
  *,
58
- session: Session = Depends(get_session),
64
+ session: AsyncSession = Depends(get_session),
59
65
  ) -> CatalogInfo:
60
66
  """
61
67
  Add a Catalog
62
68
  """
63
69
  try:
64
- get_catalog_by_name(session, data.name)
70
+ await get_catalog_by_name(session, data.name)
65
71
  except DJException:
66
72
  pass
67
73
  else:
@@ -83,15 +89,15 @@ def add_catalog(
83
89
  ],
84
90
  )
85
91
  catalog.engines.extend(
86
- list_new_engines(
92
+ await list_new_engines(
87
93
  session=session,
88
94
  catalog=catalog,
89
95
  create_engines=data.engines, # type: ignore
90
96
  ),
91
97
  )
92
98
  session.add(catalog)
93
- session.commit()
94
- session.refresh(catalog)
99
+ await session.commit()
100
+ await session.refresh(catalog, ["engines"])
95
101
 
96
102
  return CatalogInfo.from_orm(catalog)
97
103
 
@@ -102,27 +108,27 @@ def add_catalog(
102
108
  status_code=201,
103
109
  name="Add Engines to a Catalog",
104
110
  )
105
- def add_engines_to_catalog(
111
+ async def add_engines_to_catalog(
106
112
  name: str,
107
113
  data: List[EngineInfo],
108
114
  *,
109
- session: Session = Depends(get_session),
115
+ session: AsyncSession = Depends(get_session),
110
116
  ) -> CatalogInfo:
111
117
  """
112
118
  Attach one or more engines to a catalog
113
119
  """
114
- catalog = get_catalog_by_name(session, name)
120
+ catalog = await get_catalog_by_name(session, name)
115
121
  catalog.engines.extend(
116
- list_new_engines(session=session, catalog=catalog, create_engines=data),
122
+ await list_new_engines(session=session, catalog=catalog, create_engines=data),
117
123
  )
118
124
  session.add(catalog)
119
- session.commit()
120
- session.refresh(catalog)
125
+ await session.commit()
126
+ await session.refresh(catalog)
121
127
  return CatalogInfo.from_orm(catalog)
122
128
 
123
129
 
124
- def list_new_engines(
125
- session: Session,
130
+ async def list_new_engines(
131
+ session: AsyncSession,
126
132
  catalog: Catalog,
127
133
  create_engines: List[EngineInfo],
128
134
  ) -> List[Engine]:
@@ -132,7 +138,7 @@ def list_new_engines(
132
138
  new_engines = []
133
139
  for engine_ref in create_engines:
134
140
  already_set = False
135
- engine = get_engine(session, engine_ref.name, engine_ref.version)
141
+ engine = await get_engine(session, engine_ref.name, engine_ref.version)
136
142
  for set_engine in catalog.engines:
137
143
  if engine.name == set_engine.name and engine.version == set_engine.version:
138
144
  already_set = True
@@ -141,17 +147,17 @@ def list_new_engines(
141
147
  return new_engines
142
148
 
143
149
 
144
- def default_catalog(session: Session = Depends(get_session)):
150
+ async def default_catalog(session: AsyncSession = Depends(get_session)):
145
151
  """
146
152
  Loads a default catalog for nodes that are pure SQL and don't belong in any
147
153
  particular catalog. This typically applies to on-the-fly user-defined dimensions.
148
154
  """
149
155
  statement = select(Catalog).filter(Catalog.id == UNKNOWN_CATALOG_ID)
150
- catalogs = session.execute(statement).all()
156
+ catalogs = (await session.execute(statement)).all()
151
157
  if not catalogs:
152
158
  unknown = Catalog(
153
159
  id=UNKNOWN_CATALOG_ID,
154
160
  name="unknown",
155
161
  )
156
162
  session.add(unknown)
157
- session.commit()
163
+ await session.commit()
@@ -6,12 +6,13 @@ import json
6
6
  import logging
7
7
 
8
8
  from fastapi import Depends
9
- from sqlalchemy.orm import Session
9
+ from sqlalchemy.ext.asyncio import AsyncSession
10
+ from sqlalchemy.orm import joinedload
10
11
 
11
12
  from datajunction_server.api.helpers import get_node_by_name
13
+ from datajunction_server.database import Node, NodeRevision
12
14
  from datajunction_server.internal.access.authentication.http import SecureAPIRouter
13
15
  from datajunction_server.models.materialization import MaterializationJobTypeEnum
14
- from datajunction_server.models.node import NodeOutput
15
16
  from datajunction_server.models.node_type import NodeType
16
17
  from datajunction_server.utils import get_session, get_settings
17
18
 
@@ -21,62 +22,58 @@ router = SecureAPIRouter(tags=["client"])
21
22
 
22
23
 
23
24
  @router.get("/datajunction-clients/python/new_node/{node_name}", response_model=str)
24
- def client_code_for_creating_node(
25
- node_name: str, *, session: Session = Depends(get_session)
25
+ async def client_code_for_creating_node(
26
+ node_name: str, *, session: AsyncSession = Depends(get_session)
26
27
  ) -> str:
27
28
  """
28
29
  Generate the Python client code used for creating this node
29
30
  """
30
31
  node_short_name = node_name.split(".")[-1]
31
- node = get_node_by_name(session, node_name)
32
-
33
- # Generic user-configurable node creation params
34
- params = NodeOutput.from_orm(node).dict(
35
- exclude={
36
- "id",
37
- "version",
38
- "type",
39
- "catalog_id",
40
- "lineage",
41
- "status",
42
- "metric_metadata_id",
43
- "mode",
44
- "node_id",
45
- "updated_at",
46
- "materializations",
47
- "columns",
48
- "catalog",
49
- "parents",
50
- "metric_metadata",
51
- "query" if node.type == NodeType.CUBE else "",
52
- "dimension_links",
53
- "created_at",
54
- "current_version",
55
- "missing_table",
56
- "namespace",
57
- "tags",
58
- },
59
- exclude_none=True,
32
+ node = await Node.get_by_name(
33
+ session,
34
+ node_name,
35
+ options=[
36
+ joinedload(Node.current).options(
37
+ *NodeRevision.default_load_options(),
38
+ joinedload(NodeRevision.cube_elements),
39
+ ),
40
+ ],
41
+ raise_if_not_exists=True,
60
42
  )
43
+ # Generic user-configurable node creation params
44
+ params = {
45
+ "name": node.name, # type: ignore
46
+ "display_name": node.current.display_name, # type: ignore
47
+ "description": node.current.description, # type: ignore
48
+ "mode": node.current.mode, # type: ignore
49
+ "query": node.current.query, # type: ignore
50
+ "schema_": node.current.schema_, # type: ignore
51
+ "table": node.current.table, # type: ignore
52
+ "primary_key": [col.name for col in node.current.primary_key()], # type: ignore
53
+ }
61
54
 
62
- params["primary_key"] = [col.name for col in node.current.primary_key()]
63
-
64
- for key in params:
65
- if not isinstance(params[key], list) and key != "query" and key != "lineage":
55
+ for key in params: # pylint: disable=consider-using-dict-items
56
+ if (
57
+ not isinstance(params[key], list)
58
+ and key != "query"
59
+ and key != "lineage"
60
+ and params[key]
61
+ ):
66
62
  params[key] = f'"{params[key]}"'
67
- if key == "query":
63
+ if key == "query" and params[key]:
68
64
  params[key] = f'"""{params[key]}"""'
69
65
 
70
66
  # Cube-specific params
71
67
  cube_params = []
72
- if node.type == NodeType.CUBE:
68
+ if node.type == NodeType.CUBE: # type: ignore
73
69
  ordering = {
74
- col.name: col.order or idx for idx, col in enumerate(node.current.columns)
70
+ col.name: col.order or idx
71
+ for idx, col in enumerate(node.current.columns) # type: ignore
75
72
  }
76
73
  metrics_list = sorted(
77
74
  [
78
75
  elem.node_revisions[-1].name
79
- for elem in node.current.cube_elements
76
+ for elem in node.current.cube_elements # type: ignore
80
77
  if elem.node_revisions[-1].type == NodeType.METRIC
81
78
  ],
82
79
  key=lambda x: ordering[x],
@@ -84,7 +81,7 @@ def client_code_for_creating_node(
84
81
  dimensions_list = sorted(
85
82
  [
86
83
  elem.node_revisions[-1].name + "." + elem.name
87
- for elem in node.current.cube_elements
84
+ for elem in node.current.cube_elements # type: ignore
88
85
  if elem.node_revisions[-1].type == NodeType.DIMENSION
89
86
  ],
90
87
  key=lambda x: ordering[x],
@@ -97,12 +94,14 @@ def client_code_for_creating_node(
97
94
  ]
98
95
 
99
96
  formatted_params = ",\n".join(
100
- [f" {k}={params[k]}" for k in sorted(params.keys())] + cube_params,
97
+ [f" {k}={params[k]}" for k in sorted(params.keys()) if params[k]]
98
+ + cube_params,
101
99
  )
102
100
 
101
+ node_type = node.type # type: ignore
103
102
  client_code = f"""dj = DJBuilder(DJ_URL)
104
103
 
105
- {node_short_name} = dj.create_{node.type}(
104
+ {node_short_name} = dj.create_{node_type}(
106
105
  {formatted_params}
107
106
  )"""
108
107
  return client_code # type: ignore
@@ -112,17 +111,17 @@ def client_code_for_creating_node(
112
111
  "/datajunction-clients/python/add_materialization/{node_name}/{materialization_name}",
113
112
  response_model=str,
114
113
  )
115
- def client_code_for_adding_materialization(
114
+ async def client_code_for_adding_materialization(
116
115
  node_name: str,
117
116
  materialization_name: str,
118
117
  *,
119
- session: Session = Depends(get_session),
118
+ session: AsyncSession = Depends(get_session),
120
119
  ) -> str:
121
120
  """
122
121
  Generate the Python client code used for adding this materialization
123
122
  """
124
123
  node_short_name = node_name.split(".")[-1]
125
- node = get_node_by_name(session, node_name)
124
+ node = await get_node_by_name(session, node_name)
126
125
  materialization = [
127
126
  materialization
128
127
  for materialization in node.current.materializations
@@ -160,18 +159,18 @@ materialization = MaterializationConfig(
160
159
  "/datajunction-clients/python/link_dimension/{node_name}/{column}/{dimension}/",
161
160
  response_model=str,
162
161
  )
163
- def client_code_for_linking_dimension_to_node(
162
+ async def client_code_for_linking_dimension_to_node(
164
163
  node_name: str,
165
164
  column: str,
166
165
  dimension: str,
167
166
  *,
168
- session: Session = Depends(get_session),
167
+ session: AsyncSession = Depends(get_session),
169
168
  ) -> str:
170
169
  """
171
170
  Generate the Python client code used for linking this node's column to a dimension
172
171
  """
173
172
  node_short_name = node_name.split(".")[-1]
174
- node = get_node_by_name(session, node_name)
173
+ node = await get_node_by_name(session, node_name)
175
174
  client_code = f"""dj = DJBuilder(DJ_URL)
176
175
  {node_short_name} = dj.{node.type}(
177
176
  "{node.name}"
@@ -6,10 +6,11 @@ import logging
6
6
  from typing import List, Optional
7
7
 
8
8
  from fastapi import Depends, Query
9
- from sqlalchemy.orm import Session
9
+ from sqlalchemy.ext.asyncio import AsyncSession
10
10
 
11
- from datajunction_server.api.helpers import get_catalog_by_name, get_node_by_name
11
+ from datajunction_server.api.helpers import get_catalog_by_name
12
12
  from datajunction_server.construction.dimensions import build_dimensions_from_cube_query
13
+ from datajunction_server.database.node import Node
13
14
  from datajunction_server.internal.access.authentication.http import SecureAPIRouter
14
15
  from datajunction_server.internal.access.authorization import validate_access
15
16
  from datajunction_server.internal.nodes import get_cube_revision_metadata
@@ -20,7 +21,6 @@ from datajunction_server.models.cube import (
20
21
  DimensionValues,
21
22
  )
22
23
  from datajunction_server.models.metric import TranslatedSQL
23
- from datajunction_server.models.node_type import NodeType
24
24
  from datajunction_server.models.query import QueryCreate
25
25
  from datajunction_server.naming import from_amenable_name
26
26
  from datajunction_server.service_clients import QueryServiceClient
@@ -36,17 +36,17 @@ router = SecureAPIRouter(tags=["cubes"])
36
36
 
37
37
 
38
38
  @router.get("/cubes/{name}/", name="Get a Cube")
39
- def get_cube(
40
- name: str, *, session: Session = Depends(get_session)
39
+ async def get_cube(
40
+ name: str, *, session: AsyncSession = Depends(get_session)
41
41
  ) -> CubeRevisionMetadata:
42
42
  """
43
43
  Get information on a cube
44
44
  """
45
- return get_cube_revision_metadata(session, name)
45
+ return await get_cube_revision_metadata(session, name)
46
46
 
47
47
 
48
48
  @router.get("/cubes/{name}/dimensions/sql", name="Dimensions SQL for Cube")
49
- def get_cube_dimension_sql(
49
+ async def get_cube_dimension_sql(
50
50
  name: str,
51
51
  *,
52
52
  dimensions: List[str] = Query([], description="Dimensions to get values for"),
@@ -59,7 +59,7 @@ def get_cube_dimension_sql(
59
59
  description="Number of rows to limit the data retrieved to",
60
60
  ),
61
61
  include_counts: bool = False,
62
- session: Session = Depends(get_session),
62
+ session: AsyncSession = Depends(get_session),
63
63
  validate_access: access.ValidateAccessFn = Depends( # pylint: disable=redefined-outer-name
64
64
  validate_access,
65
65
  ),
@@ -67,11 +67,11 @@ def get_cube_dimension_sql(
67
67
  """
68
68
  Generates SQL to retrieve all unique values of a dimension for the cube
69
69
  """
70
- node = get_node_by_name(session=session, name=name, node_type=NodeType.CUBE)
71
- cube = node.current
72
- return build_dimensions_from_cube_query(
70
+ node = await Node.get_cube_by_name(session, name)
71
+ node_revision = node.current # type: ignore
72
+ return await build_dimensions_from_cube_query(
73
73
  session,
74
- cube,
74
+ node_revision,
75
75
  dimensions,
76
76
  filters,
77
77
  limit,
@@ -84,7 +84,7 @@ def get_cube_dimension_sql(
84
84
  "/cubes/{name}/dimensions/data",
85
85
  name="Dimensions Values for Cube",
86
86
  )
87
- def get_cube_dimension_values( # pylint: disable=too-many-locals
87
+ async def get_cube_dimension_values( # pylint: disable=too-many-locals
88
88
  name: str,
89
89
  *,
90
90
  dimensions: List[str] = Query([], description="Dimensions to get values for"),
@@ -98,7 +98,7 @@ def get_cube_dimension_values( # pylint: disable=too-many-locals
98
98
  ),
99
99
  include_counts: bool = False,
100
100
  async_: bool = False,
101
- session: Session = Depends(get_session),
101
+ session: AsyncSession = Depends(get_session),
102
102
  query_service_client: QueryServiceClient = Depends(get_query_service_client),
103
103
  validate_access: access.ValidateAccessFn = Depends( # pylint: disable=redefined-outer-name
104
104
  validate_access,
@@ -107,9 +107,9 @@ def get_cube_dimension_values( # pylint: disable=too-many-locals
107
107
  """
108
108
  All unique values of a dimension from the cube
109
109
  """
110
- node = get_node_by_name(session=session, name=name, node_type=NodeType.CUBE)
111
- cube = node.current
112
- translated_sql = build_dimensions_from_cube_query(
110
+ node = await Node.get_cube_by_name(session, name)
111
+ cube = node.current # type: ignore
112
+ translated_sql = await build_dimensions_from_cube_query(
113
113
  session,
114
114
  cube,
115
115
  dimensions,
@@ -119,7 +119,7 @@ def get_cube_dimension_values( # pylint: disable=too-many-locals
119
119
  validate_access,
120
120
  )
121
121
  if cube.availability:
122
- catalog = get_catalog_by_name( # pragma: no cover
122
+ catalog = await get_catalog_by_name( # pragma: no cover
123
123
  session,
124
124
  cube.availability.catalog, # type: ignore
125
125
  )