datajunction-server 0.0.1a45.dev4__tar.gz → 0.0.1a45.dev5__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.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/.coveragerc +1 -0
  2. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/PKG-INFO +3 -1
  3. datajunction_server-0.0.1a45.dev5/datajunction_server/__about__.py +4 -0
  4. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/access/authentication/basic.py +10 -13
  5. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/access/authentication/google.py +9 -7
  6. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/access/authentication/whoami.py +2 -2
  7. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/attributes.py +13 -23
  8. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/catalogs.py +29 -23
  9. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/client.py +49 -50
  10. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/cubes.py +18 -18
  11. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/data.py +33 -23
  12. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/dimensions.py +17 -17
  13. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/djsql.py +8 -8
  14. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/engines.py +13 -11
  15. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/graphql/catalogs.py +2 -2
  16. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/graphql/engines.py +2 -2
  17. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/health.py +6 -6
  18. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/helpers.py +255 -147
  19. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/history.py +14 -12
  20. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/main.py +1 -1
  21. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/materializations.py +47 -31
  22. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/measures.py +36 -26
  23. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/metrics.py +30 -18
  24. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/namespaces.py +47 -51
  25. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/nodes.py +333 -238
  26. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/sql.py +11 -11
  27. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/tags.py +40 -26
  28. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/construction/build.py +103 -73
  29. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/construction/dimensions.py +12 -5
  30. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/construction/dj_query.py +31 -24
  31. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/construction/utils.py +20 -7
  32. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/attributetype.py +49 -1
  33. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/catalog.py +1 -0
  34. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/column.py +1 -1
  35. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/dimensionlink.py +1 -0
  36. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/materialization.py +1 -0
  37. datajunction_server-0.0.1a45.dev5/datajunction_server/database/namespace.py +128 -0
  38. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/node.py +164 -4
  39. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/access/authentication/basic.py +10 -8
  40. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/access/authentication/http.py +7 -4
  41. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/engines.py +3 -3
  42. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/materializations.py +21 -16
  43. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/namespaces.py +64 -86
  44. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/nodes.py +287 -169
  45. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/access.py +4 -4
  46. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/node.py +26 -2
  47. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/dag.py +101 -56
  48. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/ast.py +95 -66
  49. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/utils.py +21 -36
  50. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/pdm.lock +230 -43
  51. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/pyproject.toml +9 -8
  52. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/requirements/docker.txt +4 -2
  53. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/requirements/test.txt +7 -3
  54. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/attributes_test.py +12 -9
  55. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/catalog_test.py +69 -53
  56. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/client_test.py +31 -22
  57. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/cubes_test.py +108 -93
  58. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/data_test.py +186 -155
  59. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/dimension_links_test.py +73 -57
  60. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/dimensions_test.py +31 -21
  61. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/djql_test.py +40 -30
  62. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/engine_test.py +23 -19
  63. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/graphql/catalog_test.py +10 -9
  64. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/graphql/engine_test.py +9 -8
  65. datajunction_server-0.0.1a45.dev5/tests/api/health_test.py +35 -0
  66. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/helpers_test.py +16 -6
  67. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/history_test.py +11 -7
  68. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/materializations_test.py +79 -60
  69. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/measures_test.py +31 -22
  70. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/metrics_test.py +71 -53
  71. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/namespaces_test.py +88 -65
  72. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/node_update_test.py +8 -6
  73. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/nodes_test.py +501 -395
  74. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/routers_test.py +10 -8
  75. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/sql_test.py +104 -100
  76. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/tags_test.py +42 -37
  77. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/conftest.py +169 -102
  78. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/construction/build_test.py +64 -50
  79. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/construction/compile_test.py +39 -22
  80. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/construction/fixtures.py +7 -6
  81. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/construction/inference_test.py +45 -31
  82. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/construction/utils_test.py +11 -6
  83. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/internal/authentication/basic_test.py +51 -25
  84. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/internal/authentication/whoami_test.py +8 -6
  85. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/models/node_test.py +2 -2
  86. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/dag_test.py +6 -5
  87. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/functions_test.py +592 -400
  88. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/test_ast.py +84 -62
  89. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/utils_test.py +5 -4
  90. datajunction_server-0.0.1a45.dev4/datajunction_server/__about__.py +0 -4
  91. datajunction_server-0.0.1a45.dev4/datajunction_server/database/namespace.py +0 -25
  92. datajunction_server-0.0.1a45.dev4/tests/api/health_test.py +0 -26
  93. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/.env +0 -0
  94. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/.env.integration +0 -0
  95. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/.flake8 +0 -0
  96. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/.gitignore +0 -0
  97. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/.isort.cfg +0 -0
  98. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/.pre-commit-config.yaml +0 -0
  99. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/.pylintrc +0 -0
  100. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/Dockerfile +0 -0
  101. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/Makefile +0 -0
  102. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/README.md +0 -0
  103. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/alembic/README +0 -0
  104. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/alembic/env.py +0 -0
  105. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/alembic/script.py.mako +0 -0
  106. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/alembic/versions/2023_12_20_1829-724445d2b29d_initial_migration.py +0 -0
  107. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/alembic/versions/2024_01_08_2034-945d44abcd32_add_dimension_links.py +0 -0
  108. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/alembic/versions/2024_01_11_2032-c74b11566d82_add_column_order.py +0 -0
  109. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/alembic/versions/2024_01_18_2011-20f060b02772_switch_enum_values.py +0 -0
  110. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/alembic/versions/2024_01_23_0617-c9cef8864ecb_add_missing_table_attribute_to_source_.py +0 -0
  111. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/alembic/versions/2024_01_23_1655-a8e22109be24_availability_state_s_valid_through_ts_.py +0 -0
  112. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/alembic/versions/2024_02_22_0713-d61fb7e48cc3_cascade_deletes_to_dimension_links.py +0 -0
  113. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/alembic.ini +0 -0
  114. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/alembic_version.csv +0 -0
  115. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/attributetype.csv +0 -0
  116. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/availabilitystate.csv +0 -0
  117. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/backfill.csv +0 -0
  118. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/catalog.csv +0 -0
  119. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/catalogengines.csv +0 -0
  120. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/column.csv +0 -0
  121. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/columnattribute.csv +0 -0
  122. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/cube.csv +0 -0
  123. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/database.csv +0 -0
  124. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/engine.csv +0 -0
  125. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/history.csv +0 -0
  126. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/materialization.csv +0 -0
  127. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/measures.csv +0 -0
  128. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/metric_required_dimensions.csv +0 -0
  129. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/metricmetadata.csv +0 -0
  130. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/missingparent.csv +0 -0
  131. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/node.csv +0 -0
  132. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/nodeavailabilitystate.csv +0 -0
  133. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/nodecolumns.csv +0 -0
  134. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/nodemissingparents.csv +0 -0
  135. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/nodenamespace.csv +0 -0
  136. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/noderelationship.csv +0 -0
  137. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/noderevision.csv +0 -0
  138. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/partition.csv +0 -0
  139. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/alembic_version.csv +0 -0
  140. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/attributetype.csv +0 -0
  141. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/availabilitystate.csv +0 -0
  142. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/backfill.csv +0 -0
  143. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/catalog.csv +0 -0
  144. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/catalogengines.csv +0 -0
  145. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/column.csv +0 -0
  146. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/columnattribute.csv +0 -0
  147. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/cube.csv +0 -0
  148. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/database.csv +0 -0
  149. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/engine.csv +0 -0
  150. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/history.csv +0 -0
  151. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/materialization.csv +0 -0
  152. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/measures.csv +0 -0
  153. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/metric_required_dimensions.csv +0 -0
  154. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/metricmetadata.csv +0 -0
  155. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/missingparent.csv +0 -0
  156. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/node.csv +0 -0
  157. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/nodeavailabilitystate.csv +0 -0
  158. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/nodecolumns.csv +0 -0
  159. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/nodemissingparents.csv +0 -0
  160. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/nodenamespace.csv +0 -0
  161. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/noderelationship.csv +0 -0
  162. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/noderevision.csv +0 -0
  163. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/partition.csv +0 -0
  164. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/table.csv +0 -0
  165. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/tablecolumns.csv +0 -0
  166. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/tag.csv +0 -0
  167. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/tagnoderelationship.csv +0 -0
  168. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/prod/backup/users.csv +0 -0
  169. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/table.csv +0 -0
  170. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/tablecolumns.csv +0 -0
  171. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/tag.csv +0 -0
  172. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/tagnoderelationship.csv +0 -0
  173. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/alembic_version.csv +0 -0
  174. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/attributetype.csv +0 -0
  175. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/availabilitystate.csv +0 -0
  176. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/backfill.csv +0 -0
  177. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/catalog.csv +0 -0
  178. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/catalogengines.csv +0 -0
  179. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/column.csv +0 -0
  180. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/columnattribute.csv +0 -0
  181. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/cube.csv +0 -0
  182. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/database.csv +0 -0
  183. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/engine.csv +0 -0
  184. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/history.csv +0 -0
  185. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/materialization.csv +0 -0
  186. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/measures.csv +0 -0
  187. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/metric_required_dimensions.csv +0 -0
  188. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/metricmetadata.csv +0 -0
  189. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/missingparent.csv +0 -0
  190. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/node.csv +0 -0
  191. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/nodeavailabilitystate.csv +0 -0
  192. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/nodecolumns.csv +0 -0
  193. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/nodemissingparents.csv +0 -0
  194. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/nodenamespace.csv +0 -0
  195. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/noderelationship.csv +0 -0
  196. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/noderevision.csv +0 -0
  197. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/partition.csv +0 -0
  198. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/table.csv +0 -0
  199. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/tablecolumns.csv +0 -0
  200. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/tag.csv +0 -0
  201. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/tagnoderelationship.csv +0 -0
  202. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/test/backup/users.csv +0 -0
  203. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/backup/users.csv +0 -0
  204. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/curl-format.txt +0 -0
  205. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/__init__.py +0 -0
  206. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/__init__.py +0 -0
  207. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/access/authentication/__init__.py +0 -0
  208. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/access/authentication/github.py +0 -0
  209. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/graphql/__init__.py +0 -0
  210. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/graphql/main.py +0 -0
  211. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/api/logging.conf +0 -0
  212. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/config.py +0 -0
  213. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/constants.py +0 -0
  214. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/construction/__init__.py +0 -0
  215. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/construction/exceptions.py +0 -0
  216. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/__init__.py +0 -0
  217. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/availabilitystate.py +0 -0
  218. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/backfill.py +0 -0
  219. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/base.py +0 -0
  220. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/database.py +0 -0
  221. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/engine.py +0 -0
  222. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/history.py +0 -0
  223. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/measure.py +0 -0
  224. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/metricmetadata.py +0 -0
  225. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/partition.py +0 -0
  226. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/tag.py +0 -0
  227. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/database/user.py +0 -0
  228. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/enum.py +0 -0
  229. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/errors.py +0 -0
  230. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/__init__.py +0 -0
  231. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/access/__init__.py +0 -0
  232. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/access/authentication/__init__.py +0 -0
  233. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/access/authentication/github.py +0 -0
  234. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/access/authentication/google.py +0 -0
  235. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/access/authentication/tokens.py +0 -0
  236. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/internal/access/authorization.py +0 -0
  237. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/materialization/__init__.py +0 -0
  238. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/materialization/jobs/__init__.py +0 -0
  239. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/materialization/jobs/cube_materialization.py +0 -0
  240. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/materialization/jobs/job_types.py +0 -0
  241. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/materialization/jobs/materialization_job.py +0 -0
  242. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/__init__.py +0 -0
  243. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/attribute.py +0 -0
  244. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/base.py +0 -0
  245. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/catalog.py +0 -0
  246. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/column.py +0 -0
  247. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/cube.py +0 -0
  248. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/database.py +0 -0
  249. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/dimensionlink.py +0 -0
  250. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/engine.py +0 -0
  251. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/history.py +0 -0
  252. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/materialization.py +0 -0
  253. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/measure.py +0 -0
  254. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/metric.py +0 -0
  255. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/node_type.py +0 -0
  256. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/partition.py +0 -0
  257. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/query.py +0 -0
  258. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/table.py +0 -0
  259. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/tag.py +0 -0
  260. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/models/user.py +0 -0
  261. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/naming.py +0 -0
  262. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/service_clients.py +0 -0
  263. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/__init__.py +0 -0
  264. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/functions.py +0 -0
  265. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/__init__.py +0 -0
  266. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/__init__.py +0 -0
  267. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/antlr4.py +0 -0
  268. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/exceptions.py +0 -0
  269. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/grammar/SqlBaseLexer.g4 +0 -0
  270. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/grammar/SqlBaseParser.g4 +0 -0
  271. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/grammar/__init__.py +0 -0
  272. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.interp +0 -0
  273. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.py +0 -0
  274. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.tokens +0 -0
  275. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.interp +0 -0
  276. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.py +0 -0
  277. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.tokens +0 -0
  278. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserListener.py +0 -0
  279. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserVisitor.py +0 -0
  280. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/sql/parsing/types.py +0 -0
  281. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/superset.py +0 -0
  282. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/transpilation.py +0 -0
  283. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/datajunction_server/typing.py +0 -0
  284. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/default.duckdb +0 -0
  285. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/dj.copy.db +0 -0
  286. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/dj.internal.db +0 -0
  287. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/dj.test.db +0 -0
  288. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/dj.tt.db +0 -0
  289. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/dj_prod.dump +0 -0
  290. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/dj_prod.sql +0 -0
  291. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/scripts/docs-snippets.js +0 -0
  292. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/scripts/docs-snippets.sh +0 -0
  293. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/scripts/generate-openapi.py +0 -0
  294. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tester.py +0 -0
  295. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/__init__.py +0 -0
  296. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/__init__.py +0 -0
  297. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/druid_measures_cube.full.druid_spec.json +0 -0
  298. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/druid_measures_cube.full.partition.druid_spec.json +0 -0
  299. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/druid_measures_cube.full.partition.query.sql +0 -0
  300. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/druid_measures_cube.full.query.sql +0 -0
  301. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/druid_measures_cube.incremental.druid_spec.json +0 -0
  302. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/druid_measures_cube.incremental.patched.query.sql +0 -0
  303. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/druid_measures_cube.incremental.query.sql +0 -0
  304. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/druid_metrics_cube.incremental.druid_spec.json +0 -0
  305. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/druid_metrics_cube.incremental.query.sql +0 -0
  306. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/spark_sql.full.config.json +0 -0
  307. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/spark_sql.full.materializations.json +0 -0
  308. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/spark_sql.full.partition.config.json +0 -0
  309. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/spark_sql.full.partition.materializations.json +0 -0
  310. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/spark_sql.full.partition.query.sql +0 -0
  311. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/spark_sql.full.query.sql +0 -0
  312. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/spark_sql.incremental.additional.query.sql +0 -0
  313. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/spark_sql.incremental.config.json +0 -0
  314. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/files/materializations_test/spark_sql.incremental.query.sql +0 -0
  315. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/api/graphql/__init__.py +0 -0
  316. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/construction/__init__.py +0 -0
  317. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/construction/exceptions_test.py +0 -0
  318. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/default.duckdb +0 -0
  319. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/duckdb.sql +0 -0
  320. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/errors_test.py +0 -0
  321. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/examples.py +0 -0
  322. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/fixes_test.py +0 -0
  323. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/integration/__init__.py +0 -0
  324. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/integration/basic_test.py +0 -0
  325. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/internal/authentication/github_test.py +0 -0
  326. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/internal/authentication/http_test.py +0 -0
  327. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/internal/authentication/token_test.py +0 -0
  328. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/migrations_test.py +0 -0
  329. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/models/__init__.py +0 -0
  330. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/models/catalog_test.py +0 -0
  331. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/models/hash_test.py +0 -0
  332. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/models/measure_test.py +0 -0
  333. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/models/query_test.py +0 -0
  334. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/service_clients_test.py +0 -0
  335. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/__init__.py +0 -0
  336. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/__init__.py +0 -0
  337. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/backends/__init__.py +0 -0
  338. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/backends/antlr4_test.py +0 -0
  339. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/backends/types_test.py +0 -0
  340. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/__init__.py +0 -0
  341. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query1.sql +0 -0
  342. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query10.sql +0 -0
  343. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query11.sql +0 -0
  344. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query12.sql +0 -0
  345. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query13.sql +0 -0
  346. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query14.sql +0 -0
  347. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query15.sql +0 -0
  348. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query16.sql +0 -0
  349. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query17.sql +0 -0
  350. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query18.sql +0 -0
  351. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query19.sql +0 -0
  352. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query2.sql +0 -0
  353. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query20.sql +0 -0
  354. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query21.sql +0 -0
  355. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query22.sql +0 -0
  356. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query23.sql +0 -0
  357. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query24.sql +0 -0
  358. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query25.sql +0 -0
  359. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query26.sql +0 -0
  360. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query27.sql +0 -0
  361. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query28.sql +0 -0
  362. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query29.sql +0 -0
  363. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query3.sql +0 -0
  364. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query30.sql +0 -0
  365. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query31.sql +0 -0
  366. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query32.sql +0 -0
  367. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query33.sql +0 -0
  368. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query34.sql +0 -0
  369. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query35.sql +0 -0
  370. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query36.sql +0 -0
  371. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query37.sql +0 -0
  372. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query38.sql +0 -0
  373. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query39.sql +0 -0
  374. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query4.sql +0 -0
  375. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query40.sql +0 -0
  376. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query41.sql +0 -0
  377. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query42.sql +0 -0
  378. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query43.sql +0 -0
  379. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query44.sql +0 -0
  380. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query45.sql +0 -0
  381. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query46.sql +0 -0
  382. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query47.sql +0 -0
  383. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query48.sql +0 -0
  384. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query49.sql +0 -0
  385. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query5.sql +0 -0
  386. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query50.sql +0 -0
  387. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query51.sql +0 -0
  388. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query52.sql +0 -0
  389. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query53.sql +0 -0
  390. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query54.sql +0 -0
  391. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query55.sql +0 -0
  392. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query56.sql +0 -0
  393. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query57.sql +0 -0
  394. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query58.sql +0 -0
  395. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query59.sql +0 -0
  396. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query6.sql +0 -0
  397. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query60.sql +0 -0
  398. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query61.sql +0 -0
  399. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query62.sql +0 -0
  400. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query63.sql +0 -0
  401. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query64.sql +0 -0
  402. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query65.sql +0 -0
  403. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query66.sql +0 -0
  404. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query67.sql +0 -0
  405. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query68.sql +0 -0
  406. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query69.sql +0 -0
  407. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query7.sql +0 -0
  408. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query70.sql +0 -0
  409. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query71.sql +0 -0
  410. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query72.sql +0 -0
  411. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query73.sql +0 -0
  412. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query74.sql +0 -0
  413. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query75.sql +0 -0
  414. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query76.sql +0 -0
  415. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query77.sql +0 -0
  416. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query78.sql +0 -0
  417. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query79.sql +0 -0
  418. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query8.sql +0 -0
  419. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query80.sql +0 -0
  420. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query81.sql +0 -0
  421. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query82.sql +0 -0
  422. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query83.sql +0 -0
  423. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query84.sql +0 -0
  424. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query85.sql +0 -0
  425. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query86.sql +0 -0
  426. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query87.sql +0 -0
  427. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query88.sql +0 -0
  428. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query89.sql +0 -0
  429. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query9.sql +0 -0
  430. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query90.sql +0 -0
  431. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query91.sql +0 -0
  432. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query92.sql +0 -0
  433. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query93.sql +0 -0
  434. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query94.sql +0 -0
  435. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query95.sql +0 -0
  436. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query96.sql +0 -0
  437. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query97.sql +0 -0
  438. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query98.sql +0 -0
  439. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/ansi/query99.sql +0 -0
  440. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query1.sql +0 -0
  441. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query10.sql +0 -0
  442. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query11.sql +0 -0
  443. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query12.sql +0 -0
  444. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query13.sql +0 -0
  445. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query14.sql +0 -0
  446. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query15.sql +0 -0
  447. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query16.sql +0 -0
  448. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query17.sql +0 -0
  449. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query18.sql +0 -0
  450. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query19.sql +0 -0
  451. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query2.sql +0 -0
  452. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query20.sql +0 -0
  453. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query21.sql +0 -0
  454. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query22.sql +0 -0
  455. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query23.sql +0 -0
  456. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query24.sql +0 -0
  457. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query25.sql +0 -0
  458. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query26.sql +0 -0
  459. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query27.sql +0 -0
  460. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query28.sql +0 -0
  461. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query29.sql +0 -0
  462. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query3.sql +0 -0
  463. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query30.sql +0 -0
  464. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query31.sql +0 -0
  465. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query32.sql +0 -0
  466. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query33.sql +0 -0
  467. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query34.sql +0 -0
  468. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query35.sql +0 -0
  469. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query36.sql +0 -0
  470. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query37.sql +0 -0
  471. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query38.sql +0 -0
  472. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query39.sql +0 -0
  473. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query4.sql +0 -0
  474. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query40.sql +0 -0
  475. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query41.sql +0 -0
  476. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query42.sql +0 -0
  477. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query43.sql +0 -0
  478. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query44.sql +0 -0
  479. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query45.sql +0 -0
  480. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query46.sql +0 -0
  481. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query47.sql +0 -0
  482. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query48.sql +0 -0
  483. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query49.sql +0 -0
  484. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query5.sql +0 -0
  485. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query50.sql +0 -0
  486. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query51.sql +0 -0
  487. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query52.sql +0 -0
  488. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query53.sql +0 -0
  489. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query54.sql +0 -0
  490. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query55.sql +0 -0
  491. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query56.sql +0 -0
  492. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query57.sql +0 -0
  493. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query58.sql +0 -0
  494. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query59.sql +0 -0
  495. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query6.sql +0 -0
  496. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query60.sql +0 -0
  497. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query61.sql +0 -0
  498. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query62.sql +0 -0
  499. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query63.sql +0 -0
  500. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query64.sql +0 -0
  501. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query65.sql +0 -0
  502. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query66.sql +0 -0
  503. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query67.sql +0 -0
  504. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query68.sql +0 -0
  505. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query69.sql +0 -0
  506. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query7.sql +0 -0
  507. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query70.sql +0 -0
  508. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query71.sql +0 -0
  509. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query72.sql +0 -0
  510. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query73.sql +0 -0
  511. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query74.sql +0 -0
  512. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query75.sql +0 -0
  513. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query76.sql +0 -0
  514. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query77.sql +0 -0
  515. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query78.sql +0 -0
  516. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query79.sql +0 -0
  517. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query8.sql +0 -0
  518. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query80.sql +0 -0
  519. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query81.sql +0 -0
  520. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query82.sql +0 -0
  521. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query83.sql +0 -0
  522. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query84.sql +0 -0
  523. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query85.sql +0 -0
  524. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query86.sql +0 -0
  525. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query87.sql +0 -0
  526. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query88.sql +0 -0
  527. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query89.sql +0 -0
  528. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query9.sql +0 -0
  529. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query90.sql +0 -0
  530. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query91.sql +0 -0
  531. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query92.sql +0 -0
  532. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query93.sql +0 -0
  533. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query94.sql +0 -0
  534. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query95.sql +0 -0
  535. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query96.sql +0 -0
  536. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query97.sql +0 -0
  537. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query98.sql +0 -0
  538. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/sparksql/query99.sql +0 -0
  539. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/parsing/queries/tpcds/test_tpcds.py +0 -0
  540. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/sql/utils.py +0 -0
  541. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/superset_test.py +0 -0
  542. {datajunction_server-0.0.1a45.dev4 → datajunction_server-0.0.1a45.dev5}/tests/transpilation_test.py +0 -0
@@ -1,5 +1,6 @@
1
1
  # .coveragerc to control coverage.py
2
2
  [run]
3
+ concurrency = thread,greenlet
3
4
  branch = True
4
5
  source = datajunction_server
5
6
  omit =
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: datajunction-server
3
- Version: 0.0.1a45.dev4
3
+ Version: 0.0.1a45.dev5
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.dev5"
@@ -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(
@@ -18,7 +18,7 @@ router = SecureAPIRouter(tags=["Who am I?"])
18
18
 
19
19
 
20
20
  @router.get("/whoami/", response_model=UserOutput)
21
- def get_user(current_user: User = Depends(get_current_user)) -> UserOutput:
21
+ async def get_user(current_user: User = Depends(get_current_user)) -> UserOutput:
22
22
  """
23
23
  Returns the current authenticated user
24
24
  """
@@ -26,7 +26,7 @@ def get_user(current_user: User = Depends(get_current_user)) -> UserOutput:
26
26
 
27
27
 
28
28
  @router.get("/token/")
29
- def get_short_lived_token(request: Request) -> JSONResponse:
29
+ async def get_short_lived_token(request: Request) -> JSONResponse:
30
30
  """
31
31
  Returns a token that expires in 24 hours
32
32
  """
@@ -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}"