datajunction-server 0.0.1a94.dev0__tar.gz → 0.0.1a95.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 (537) hide show
  1. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/PKG-INFO +1 -1
  2. datajunction_server-0.0.1a95.dev0/datajunction_server/__about__.py +5 -0
  3. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/data.py +2 -1
  4. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/resolvers/nodes.py +5 -1
  5. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/scalars/node.py +8 -1
  6. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/helpers.py +2 -1
  7. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/history.py +35 -15
  8. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/materializations.py +2 -1
  9. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/nodes.py +2 -1
  10. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/notifications.py +2 -1
  11. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/tags.py +2 -1
  12. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/users.py +2 -1
  13. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/construction/build_v2.py +29 -9
  14. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/history.py +10 -38
  15. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/notification_preference.py +1 -1
  16. datajunction_server-0.0.1a95.dev0/datajunction_server/internal/history.py +39 -0
  17. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/namespaces.py +2 -1
  18. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/nodes.py +2 -1
  19. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/notifications.py +1 -1
  20. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/history.py +2 -1
  21. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/notifications.py +1 -1
  22. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/decompose.py +15 -0
  23. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/ast.py +5 -1
  24. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/graphql/find_nodes_test.py +2 -0
  25. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/history_test.py +94 -1
  26. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/notifications_test.py +2 -1
  27. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/sql_v2_test.py +31 -32
  28. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/decompose_test.py +8 -2
  29. datajunction_server-0.0.1a94.dev0/datajunction_server/__about__.py +0 -5
  30. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/.coveragerc +0 -0
  31. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/.env +0 -0
  32. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/.env.integration +0 -0
  33. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/.flake8 +0 -0
  34. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/.gitignore +0 -0
  35. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/.isort.cfg +0 -0
  36. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/.pre-commit-config.yaml +0 -0
  37. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/Dockerfile +0 -0
  38. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/Makefile +0 -0
  39. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/README.md +0 -0
  40. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/__init__.py +0 -0
  41. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/README +0 -0
  42. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/env.py +0 -0
  43. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/script.py.mako +0 -0
  44. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2023_12_20_1829-724445d2b29d_initial_migration.py +0 -0
  45. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_01_08_2034-945d44abcd32_add_dimension_links.py +0 -0
  46. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_01_11_2032-c74b11566d82_add_column_order.py +0 -0
  47. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_01_18_2011-20f060b02772_switch_enum_values.py +0 -0
  48. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_01_23_0617-c9cef8864ecb_add_missing_table_attribute_to_source_.py +0 -0
  49. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_01_23_1655-a8e22109be24_availability_state_s_valid_through_ts_.py +0 -0
  50. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_02_22_0713-d61fb7e48cc3_cascade_deletes_to_dimension_links.py +0 -0
  51. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_04_30_1556-de7ec1c82fe0_add_query_requests.py +0 -0
  52. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_05_09_1420-9b1227ff17f4_update_backfill_spec.py +0 -0
  53. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_05_21_0012-57fc93ef6947_add_query_id_to_queryrequest.py +0 -0
  54. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_06_21_1301-640a814db2d8_add_collection_tables.py +0 -0
  55. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_07_12_0348-34171c92dd6d_set_user_username_to_be_unique.py +0 -0
  56. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_08_18_0036-f3c9b40deb6f_add_create_by_to_nodes_node_revisions_.py +0 -0
  57. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_10_24_0015-4d6ab789e456_add_a_map_of_links_to_availability_state.py +0 -0
  58. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2024_10_26_0340-70904373eab3_add_indexes_on_history_and_node_tables.py +0 -0
  59. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2025_01_19_1808-9650f9b728a2_add_query_ast_for_noderevision.py +0 -0
  60. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2025_01_24_0020-bec3296d7537_add_custom_metadata_field_to_nodes.py +0 -0
  61. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2025_02_11_1619-c3d5f327296c_notificationpreferences.py +0 -0
  62. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2025_03_14_1513-ae9eba981a2d_add_index_on_display_name.py +0 -0
  63. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2025_03_14_2304-135fa5833fed_added_column_description.py +0 -0
  64. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic/versions/2025_04_05_2149-a2d7ea04cf79_add_formatting_metric_metadata.py +0 -0
  65. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/alembic.ini +0 -0
  66. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/__init__.py +0 -0
  67. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/access/authentication/__init__.py +0 -0
  68. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/access/authentication/basic.py +0 -0
  69. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/access/authentication/github.py +0 -0
  70. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/access/authentication/google.py +0 -0
  71. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/access/authentication/whoami.py +0 -0
  72. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/attributes.py +0 -0
  73. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/catalogs.py +0 -0
  74. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/client.py +0 -0
  75. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/collection.py +0 -0
  76. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/cubes.py +0 -0
  77. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/dimensions.py +0 -0
  78. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/djsql.py +0 -0
  79. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/engines.py +0 -0
  80. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/__init__.py +0 -0
  81. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/main.py +0 -0
  82. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/queries/__init__.py +0 -0
  83. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/queries/catalogs.py +0 -0
  84. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/queries/dag.py +0 -0
  85. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/queries/engines.py +0 -0
  86. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/queries/nodes.py +0 -0
  87. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/queries/sql.py +0 -0
  88. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/queries/tags.py +0 -0
  89. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/resolvers/__init__.py +0 -0
  90. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/resolvers/tags.py +0 -0
  91. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/scalars/__init__.py +0 -0
  92. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/scalars/availabilitystate.py +0 -0
  93. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/scalars/catalog_engine.py +0 -0
  94. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/scalars/column.py +0 -0
  95. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/scalars/errors.py +0 -0
  96. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/scalars/materialization.py +0 -0
  97. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/scalars/metricmetadata.py +0 -0
  98. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/scalars/sql.py +0 -0
  99. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/scalars/tag.py +0 -0
  100. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/scalars/user.py +0 -0
  101. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/graphql/utils.py +0 -0
  102. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/health.py +0 -0
  103. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/logging.conf +0 -0
  104. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/main.py +0 -0
  105. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/measures.py +0 -0
  106. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/metrics.py +0 -0
  107. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/namespaces.py +0 -0
  108. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/api/sql.py +0 -0
  109. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/config.py +0 -0
  110. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/constants.py +0 -0
  111. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/construction/__init__.py +0 -0
  112. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/construction/build.py +0 -0
  113. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/construction/dimensions.py +0 -0
  114. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/construction/dj_query.py +0 -0
  115. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/construction/exceptions.py +0 -0
  116. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/construction/utils.py +0 -0
  117. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/__init__.py +0 -0
  118. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/attributetype.py +0 -0
  119. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/availabilitystate.py +0 -0
  120. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/backfill.py +0 -0
  121. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/base.py +0 -0
  122. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/catalog.py +0 -0
  123. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/collection.py +0 -0
  124. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/column.py +0 -0
  125. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/database.py +0 -0
  126. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/dimensionlink.py +0 -0
  127. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/engine.py +0 -0
  128. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/materialization.py +0 -0
  129. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/measure.py +0 -0
  130. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/metricmetadata.py +0 -0
  131. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/namespace.py +0 -0
  132. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/node.py +0 -0
  133. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/partition.py +0 -0
  134. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/queryrequest.py +0 -0
  135. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/tag.py +0 -0
  136. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/database/user.py +0 -0
  137. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/enum.py +0 -0
  138. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/errors.py +0 -0
  139. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/__init__.py +0 -0
  140. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/access/__init__.py +0 -0
  141. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/access/authentication/__init__.py +0 -0
  142. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/access/authentication/basic.py +0 -0
  143. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/access/authentication/github.py +0 -0
  144. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/access/authentication/google.py +0 -0
  145. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/access/authentication/http.py +0 -0
  146. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/access/authentication/tokens.py +0 -0
  147. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/access/authorization.py +0 -0
  148. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/caching/cachelib_cache.py +0 -0
  149. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/caching/interface.py +0 -0
  150. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/caching/noop_cache.py +0 -0
  151. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/client.py +0 -0
  152. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/cube_materializations.py +0 -0
  153. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/engines.py +0 -0
  154. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/materializations.py +0 -0
  155. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/templates/client_setup.j2 +0 -0
  156. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/templates/create_cube.j2 +0 -0
  157. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/templates/create_dimension.j2 +0 -0
  158. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/templates/create_metric.j2 +0 -0
  159. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/templates/create_transform.j2 +0 -0
  160. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/templates/link_dimension.j2 +0 -0
  161. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/templates/namespace_mapping.j2 +0 -0
  162. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/templates/register_table.j2 +0 -0
  163. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/templates/set_column_attributes.j2 +0 -0
  164. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/internal/validation.py +0 -0
  165. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/materialization/__init__.py +0 -0
  166. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/materialization/jobs/__init__.py +0 -0
  167. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/materialization/jobs/cube_materialization.py +0 -0
  168. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/materialization/jobs/job_types.py +0 -0
  169. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/materialization/jobs/materialization_job.py +0 -0
  170. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/__init__.py +0 -0
  171. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/access.py +0 -0
  172. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/attribute.py +0 -0
  173. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/base.py +0 -0
  174. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/catalog.py +0 -0
  175. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/collection.py +0 -0
  176. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/column.py +0 -0
  177. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/cube.py +0 -0
  178. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/cube_materialization.py +0 -0
  179. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/database.py +0 -0
  180. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/dimensionlink.py +0 -0
  181. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/engine.py +0 -0
  182. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/materialization.py +0 -0
  183. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/measure.py +0 -0
  184. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/metric.py +0 -0
  185. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/node.py +0 -0
  186. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/node_type.py +0 -0
  187. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/partition.py +0 -0
  188. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/query.py +0 -0
  189. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/sql.py +0 -0
  190. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/table.py +0 -0
  191. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/tag.py +0 -0
  192. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/models/user.py +0 -0
  193. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/naming.py +0 -0
  194. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/service_clients.py +0 -0
  195. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/__init__.py +0 -0
  196. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/dag.py +0 -0
  197. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/functions.py +0 -0
  198. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/__init__.py +0 -0
  199. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/__init__.py +0 -0
  200. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/antlr4.py +0 -0
  201. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/exceptions.py +0 -0
  202. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/grammar/SqlBaseLexer.g4 +0 -0
  203. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/grammar/SqlBaseParser.g4 +0 -0
  204. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/grammar/__init__.py +0 -0
  205. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.interp +0 -0
  206. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.py +0 -0
  207. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.tokens +0 -0
  208. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.interp +0 -0
  209. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.py +0 -0
  210. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.tokens +0 -0
  211. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserListener.py +0 -0
  212. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserVisitor.py +0 -0
  213. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/sql/parsing/types.py +0 -0
  214. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/superset.py +0 -0
  215. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/transpilation.py +0 -0
  216. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/typing.py +0 -0
  217. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/datajunction_server/utils.py +0 -0
  218. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/init_data/seed.sql +0 -0
  219. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/pdm.lock +0 -0
  220. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/pyproject.toml +0 -0
  221. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/requirements/docker.txt +0 -0
  222. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/requirements/test.txt +0 -0
  223. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/scripts/docs-snippets.js +0 -0
  224. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/scripts/docs-snippets.sh +0 -0
  225. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/scripts/generate-openapi.py +0 -0
  226. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/__init__.py +0 -0
  227. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/__init__.py +0 -0
  228. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/access_test.py +0 -0
  229. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/attributes_test.py +0 -0
  230. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/catalog_test.py +0 -0
  231. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/client_test.py +0 -0
  232. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/collections_test.py +0 -0
  233. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/cubes_test.py +0 -0
  234. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/data_test.py +0 -0
  235. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/dimension_links_test.py +0 -0
  236. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/dimensions_access_test.py +0 -0
  237. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/dimensions_test.py +0 -0
  238. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/djql_test.py +0 -0
  239. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/engine_test.py +0 -0
  240. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/create_cube.repairs_cube.namespace.txt +0 -0
  241. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/create_cube.repairs_cube.txt +0 -0
  242. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/create_dimension.repair_order.namespace.txt +0 -0
  243. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/create_dimension.repair_order.txt +0 -0
  244. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/create_metric.num_repair_orders.namespace.txt +0 -0
  245. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/create_metric.num_repair_orders.txt +0 -0
  246. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/create_transform.regional_level_agg.namespace.txt +0 -0
  247. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/create_transform.regional_level_agg.txt +0 -0
  248. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/dimension_links.repair_orders.namespace.txt +0 -0
  249. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/dimension_links.repair_orders.txt +0 -0
  250. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/include_client_setup.txt +0 -0
  251. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/notebook.create_cube.txt +0 -0
  252. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/notebook.create_transform.txt +0 -0
  253. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/notebook.link_dimension.txt +0 -0
  254. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/notebook.set_attribute.txt +0 -0
  255. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/client_test/register_table.txt +0 -0
  256. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/druid_measures_cube.full.druid_spec.json +0 -0
  257. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/druid_measures_cube.full.partition.druid_spec.json +0 -0
  258. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/druid_measures_cube.full.partition.query.sql +0 -0
  259. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/druid_measures_cube.full.query.sql +0 -0
  260. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/druid_measures_cube.incremental.categorical.query.sql +0 -0
  261. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/druid_measures_cube.incremental.druid_spec.json +0 -0
  262. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/druid_measures_cube.incremental.patched.query.sql +0 -0
  263. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/druid_measures_cube.incremental.query.sql +0 -0
  264. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/druid_metrics_cube.incremental.categorical.query.sql +0 -0
  265. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/druid_metrics_cube.incremental.druid_spec.json +0 -0
  266. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/druid_metrics_cube.incremental.query.sql +0 -0
  267. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/spark_sql.full.config.json +0 -0
  268. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/spark_sql.full.materializations.json +0 -0
  269. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/spark_sql.full.partition.config.json +0 -0
  270. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/spark_sql.full.partition.materializations.json +0 -0
  271. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/spark_sql.full.partition.query.sql +0 -0
  272. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/spark_sql.full.query.sql +0 -0
  273. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/spark_sql.incremental.additional.query.sql +0 -0
  274. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/spark_sql.incremental.categorical.query.sql +0 -0
  275. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/spark_sql.incremental.config.json +0 -0
  276. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/spark_sql.incremental.lookback.query.sql +0 -0
  277. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/files/materializations_test/spark_sql.incremental.query.sql +0 -0
  278. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/graphql/__init__.py +0 -0
  279. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/graphql/catalog_test.py +0 -0
  280. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/graphql/common_dimensions_test.py +0 -0
  281. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/graphql/engine_test.py +0 -0
  282. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/graphql/measures_sql_test.py +0 -0
  283. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/graphql/tags_test.py +0 -0
  284. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/health_test.py +0 -0
  285. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/helpers_test.py +0 -0
  286. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/materializations_test.py +0 -0
  287. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/measures_test.py +0 -0
  288. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/metrics_test.py +0 -0
  289. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/namespaces_test.py +0 -0
  290. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/nodes_test.py +0 -0
  291. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/nodes_update_test.py +0 -0
  292. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/routers_test.py +0 -0
  293. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/sql_test.py +0 -0
  294. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/tags_test.py +0 -0
  295. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/api/users_test.py +0 -0
  296. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/conftest.py +0 -0
  297. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/construction/__init__.py +0 -0
  298. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/construction/build_test.py +0 -0
  299. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/construction/build_v2_test.py +0 -0
  300. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/construction/compile_test.py +0 -0
  301. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/construction/conftest.py +0 -0
  302. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/construction/exceptions_test.py +0 -0
  303. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/construction/inference_test.py +0 -0
  304. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/construction/utils_test.py +0 -0
  305. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/default.duckdb +0 -0
  306. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/duckdb.sql +0 -0
  307. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/errors_test.py +0 -0
  308. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/examples.py +0 -0
  309. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/integration/__init__.py +0 -0
  310. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/integration/basic_test.py +0 -0
  311. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/internal/authentication/basic_test.py +0 -0
  312. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/internal/authentication/github_test.py +0 -0
  313. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/internal/authentication/http_test.py +0 -0
  314. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/internal/authentication/token_test.py +0 -0
  315. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/internal/authentication/whoami_test.py +0 -0
  316. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/internal/caching/cachelib_cache_test.py +0 -0
  317. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/internal/caching/noop_cache_test.py +0 -0
  318. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/migrations_test.py +0 -0
  319. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/models/__init__.py +0 -0
  320. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/models/catalog_test.py +0 -0
  321. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/models/hash_test.py +0 -0
  322. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/models/measure_test.py +0 -0
  323. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/models/node_test.py +0 -0
  324. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/models/query_test.py +0 -0
  325. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/service_clients_test.py +0 -0
  326. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/__init__.py +0 -0
  327. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/dag_test.py +0 -0
  328. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/functions_test.py +0 -0
  329. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/__init__.py +0 -0
  330. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/backends/__init__.py +0 -0
  331. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/backends/antlr4_test.py +0 -0
  332. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/backends/types_test.py +0 -0
  333. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/__init__.py +0 -0
  334. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query1.sql +0 -0
  335. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query10.sql +0 -0
  336. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query11.sql +0 -0
  337. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query12.sql +0 -0
  338. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query13.sql +0 -0
  339. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query14.sql +0 -0
  340. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query15.sql +0 -0
  341. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query16.sql +0 -0
  342. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query17.sql +0 -0
  343. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query18.sql +0 -0
  344. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query19.sql +0 -0
  345. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query2.sql +0 -0
  346. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query20.sql +0 -0
  347. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query21.sql +0 -0
  348. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query22.sql +0 -0
  349. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query23.sql +0 -0
  350. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query24.sql +0 -0
  351. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query25.sql +0 -0
  352. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query26.sql +0 -0
  353. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query27.sql +0 -0
  354. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query28.sql +0 -0
  355. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query29.sql +0 -0
  356. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query3.sql +0 -0
  357. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query30.sql +0 -0
  358. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query31.sql +0 -0
  359. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query32.sql +0 -0
  360. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query33.sql +0 -0
  361. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query34.sql +0 -0
  362. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query35.sql +0 -0
  363. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query36.sql +0 -0
  364. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query37.sql +0 -0
  365. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query38.sql +0 -0
  366. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query39.sql +0 -0
  367. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query4.sql +0 -0
  368. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query40.sql +0 -0
  369. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query41.sql +0 -0
  370. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query42.sql +0 -0
  371. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query43.sql +0 -0
  372. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query44.sql +0 -0
  373. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query45.sql +0 -0
  374. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query46.sql +0 -0
  375. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query47.sql +0 -0
  376. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query48.sql +0 -0
  377. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query49.sql +0 -0
  378. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query5.sql +0 -0
  379. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query50.sql +0 -0
  380. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query51.sql +0 -0
  381. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query52.sql +0 -0
  382. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query53.sql +0 -0
  383. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query54.sql +0 -0
  384. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query55.sql +0 -0
  385. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query56.sql +0 -0
  386. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query57.sql +0 -0
  387. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query58.sql +0 -0
  388. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query59.sql +0 -0
  389. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query6.sql +0 -0
  390. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query60.sql +0 -0
  391. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query61.sql +0 -0
  392. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query62.sql +0 -0
  393. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query63.sql +0 -0
  394. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query64.sql +0 -0
  395. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query65.sql +0 -0
  396. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query66.sql +0 -0
  397. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query67.sql +0 -0
  398. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query68.sql +0 -0
  399. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query69.sql +0 -0
  400. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query7.sql +0 -0
  401. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query70.sql +0 -0
  402. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query71.sql +0 -0
  403. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query72.sql +0 -0
  404. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query73.sql +0 -0
  405. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query74.sql +0 -0
  406. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query75.sql +0 -0
  407. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query76.sql +0 -0
  408. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query77.sql +0 -0
  409. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query78.sql +0 -0
  410. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query79.sql +0 -0
  411. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query8.sql +0 -0
  412. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query80.sql +0 -0
  413. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query81.sql +0 -0
  414. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query82.sql +0 -0
  415. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query83.sql +0 -0
  416. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query84.sql +0 -0
  417. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query85.sql +0 -0
  418. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query86.sql +0 -0
  419. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query87.sql +0 -0
  420. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query88.sql +0 -0
  421. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query89.sql +0 -0
  422. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query9.sql +0 -0
  423. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query90.sql +0 -0
  424. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query91.sql +0 -0
  425. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query92.sql +0 -0
  426. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query93.sql +0 -0
  427. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query94.sql +0 -0
  428. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query95.sql +0 -0
  429. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query96.sql +0 -0
  430. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query97.sql +0 -0
  431. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query98.sql +0 -0
  432. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/ansi/query99.sql +0 -0
  433. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query1.sql +0 -0
  434. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query10.sql +0 -0
  435. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query11.sql +0 -0
  436. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query12.sql +0 -0
  437. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query13.sql +0 -0
  438. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query14.sql +0 -0
  439. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query15.sql +0 -0
  440. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query16.sql +0 -0
  441. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query17.sql +0 -0
  442. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query18.sql +0 -0
  443. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query19.sql +0 -0
  444. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query2.sql +0 -0
  445. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query20.sql +0 -0
  446. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query21.sql +0 -0
  447. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query22.sql +0 -0
  448. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query23.sql +0 -0
  449. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query24.sql +0 -0
  450. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query25.sql +0 -0
  451. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query26.sql +0 -0
  452. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query27.sql +0 -0
  453. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query28.sql +0 -0
  454. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query29.sql +0 -0
  455. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query3.sql +0 -0
  456. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query30.sql +0 -0
  457. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query31.sql +0 -0
  458. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query32.sql +0 -0
  459. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query33.sql +0 -0
  460. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query34.sql +0 -0
  461. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query35.sql +0 -0
  462. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query36.sql +0 -0
  463. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query37.sql +0 -0
  464. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query38.sql +0 -0
  465. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query39.sql +0 -0
  466. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query4.sql +0 -0
  467. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query40.sql +0 -0
  468. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query41.sql +0 -0
  469. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query42.sql +0 -0
  470. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query43.sql +0 -0
  471. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query44.sql +0 -0
  472. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query45.sql +0 -0
  473. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query46.sql +0 -0
  474. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query47.sql +0 -0
  475. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query48.sql +0 -0
  476. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query49.sql +0 -0
  477. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query5.sql +0 -0
  478. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query50.sql +0 -0
  479. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query51.sql +0 -0
  480. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query52.sql +0 -0
  481. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query53.sql +0 -0
  482. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query54.sql +0 -0
  483. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query55.sql +0 -0
  484. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query56.sql +0 -0
  485. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query57.sql +0 -0
  486. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query58.sql +0 -0
  487. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query59.sql +0 -0
  488. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query6.sql +0 -0
  489. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query60.sql +0 -0
  490. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query61.sql +0 -0
  491. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query62.sql +0 -0
  492. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query63.sql +0 -0
  493. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query64.sql +0 -0
  494. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query65.sql +0 -0
  495. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query66.sql +0 -0
  496. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query67.sql +0 -0
  497. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query68.sql +0 -0
  498. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query69.sql +0 -0
  499. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query7.sql +0 -0
  500. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query70.sql +0 -0
  501. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query71.sql +0 -0
  502. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query72.sql +0 -0
  503. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query73.sql +0 -0
  504. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query74.sql +0 -0
  505. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query75.sql +0 -0
  506. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query76.sql +0 -0
  507. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query77.sql +0 -0
  508. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query78.sql +0 -0
  509. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query79.sql +0 -0
  510. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query8.sql +0 -0
  511. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query80.sql +0 -0
  512. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query81.sql +0 -0
  513. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query82.sql +0 -0
  514. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query83.sql +0 -0
  515. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query84.sql +0 -0
  516. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query85.sql +0 -0
  517. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query86.sql +0 -0
  518. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query87.sql +0 -0
  519. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query88.sql +0 -0
  520. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query89.sql +0 -0
  521. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query9.sql +0 -0
  522. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query90.sql +0 -0
  523. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query91.sql +0 -0
  524. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query92.sql +0 -0
  525. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query93.sql +0 -0
  526. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query94.sql +0 -0
  527. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query95.sql +0 -0
  528. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query96.sql +0 -0
  529. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query97.sql +0 -0
  530. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query98.sql +0 -0
  531. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query99.sql +0 -0
  532. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/queries/tpcds/test_tpcds.py +0 -0
  533. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/parsing/test_ast.py +0 -0
  534. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/sql/utils.py +0 -0
  535. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/superset_test.py +0 -0
  536. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/transpilation_test.py +0 -0
  537. {datajunction_server-0.0.1a94.dev0 → datajunction_server-0.0.1a95.dev0}/tests/utils_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: datajunction-server
3
- Version: 0.0.1a94.dev0
3
+ Version: 0.0.1a95.dev0
4
4
  Summary: DataJunction server library for running to a DataJunction server
5
5
  Project-URL: Homepage, https://datajunction.io
6
6
  Project-URL: Repository, https://github.com/DataJunction/dj
@@ -0,0 +1,5 @@
1
+ """
2
+ Version for Hatch
3
+ """
4
+
5
+ __version__ = "0.0.1a95.dev0"
@@ -18,7 +18,7 @@ from datajunction_server.api.helpers import (
18
18
  from datajunction_server.api.sql import get_node_sql
19
19
  from datajunction_server.api.helpers import get_save_history
20
20
  from datajunction_server.database.availabilitystate import AvailabilityState
21
- from datajunction_server.database.history import ActivityType, EntityType, History
21
+ from datajunction_server.database.history import History
22
22
  from datajunction_server.database.node import Node, NodeRevision
23
23
  from datajunction_server.database.user import User
24
24
  from datajunction_server.errors import (
@@ -31,6 +31,7 @@ from datajunction_server.internal.access.authorization import (
31
31
  validate_access_requests,
32
32
  )
33
33
  from datajunction_server.internal.engines import get_engine
34
+ from datajunction_server.internal.history import ActivityType, EntityType
34
35
  from datajunction_server.models import access
35
36
  from datajunction_server.models.node import AvailabilityStateBase
36
37
  from datajunction_server.models.node_type import NodeType
@@ -115,7 +115,11 @@ def load_node_revision_options(node_revision_fields):
115
115
  "cube_metrics" in node_revision_fields
116
116
  or "cube_dimensions" in node_revision_fields
117
117
  )
118
- if "columns" in node_revision_fields or is_cube_request:
118
+ if (
119
+ "columns" in node_revision_fields
120
+ or is_cube_request
121
+ or "primary_key" in node_revision_fields
122
+ ):
119
123
  options.append(
120
124
  selectinload(DBNodeRevision.columns).options(
121
125
  joinedload(Column.attributes).joinedload(
@@ -138,7 +138,14 @@ class NodeRevision:
138
138
  table: Optional[str]
139
139
 
140
140
  # Only metrics will have these fields
141
- required_dimensions: Optional[List[Column]] = None
141
+ required_dimensions: List[Column] | None = None
142
+
143
+ @strawberry.field
144
+ def primary_key(self, root: "DBNodeRevision") -> list[str]:
145
+ """
146
+ The primary key of the node
147
+ """
148
+ return [col.name for col in root.primary_key()]
142
149
 
143
150
  @strawberry.field
144
151
  def metric_metadata(self, root: "DBNodeRevision") -> MetricMetadata | None:
@@ -31,7 +31,7 @@ from datajunction_server.database.attributetype import AttributeType
31
31
  from datajunction_server.database.catalog import Catalog
32
32
  from datajunction_server.database.column import Column
33
33
  from datajunction_server.database.engine import Engine
34
- from datajunction_server.database.history import EntityType, History
34
+ from datajunction_server.database.history import History
35
35
  from datajunction_server.database.namespace import NodeNamespace
36
36
  from datajunction_server.database.node import (
37
37
  MissingParent,
@@ -49,6 +49,7 @@ from datajunction_server.errors import (
49
49
  ErrorCode,
50
50
  )
51
51
  from datajunction_server.internal.engines import get_engine
52
+ from datajunction_server.internal.history import EntityType
52
53
  from datajunction_server.models import access
53
54
  from datajunction_server.models.attribute import RESERVED_ATTRIBUTE_NAMESPACE
54
55
  from datajunction_server.models.history import status_change_history
@@ -3,17 +3,26 @@ History related APIs.
3
3
  """
4
4
 
5
5
  import logging
6
- from typing import List
6
+ from typing import List, Optional
7
7
 
8
8
  from fastapi import Depends, Query
9
9
  from sqlalchemy import select
10
10
  from sqlalchemy.ext.asyncio import AsyncSession
11
+ from sqlalchemy.orm import aliased
12
+ from sqlalchemy import and_, cast, func, String
11
13
 
12
14
  from datajunction_server.api.helpers import get_history
13
- from datajunction_server.database.history import EntityType, History
15
+ from datajunction_server.database.history import History
16
+ from datajunction_server.database.notification_preference import NotificationPreference
17
+ from datajunction_server.database.user import User
14
18
  from datajunction_server.internal.access.authentication.http import SecureAPIRouter
19
+ from datajunction_server.internal.history import EntityType
15
20
  from datajunction_server.models.history import HistoryOutput
16
- from datajunction_server.utils import get_session, get_settings
21
+ from datajunction_server.utils import (
22
+ get_and_update_current_user,
23
+ get_session,
24
+ get_settings,
25
+ )
17
26
 
18
27
  _logger = logging.getLogger(__name__)
19
28
  settings = get_settings()
@@ -44,26 +53,37 @@ async def list_history(
44
53
 
45
54
  @router.get("/history/", response_model=List[HistoryOutput])
46
55
  async def list_history_by_node_context(
47
- node: str,
56
+ node: Optional[str] = None,
57
+ only_subscribed: bool = False,
48
58
  offset: int = 0,
49
59
  limit: int = Query(default=100, lte=100),
50
60
  *,
51
61
  session: AsyncSession = Depends(get_session),
62
+ current_user: User = Depends(get_and_update_current_user),
52
63
  ) -> List[HistoryOutput]:
53
64
  """
54
65
  List all activity history for a node context
55
66
  """
56
- hist = (
57
- (
58
- await session.execute(
59
- select(History)
60
- .where(History.node == node)
61
- .order_by(History.created_at.desc())
62
- .offset(offset)
63
- .limit(limit),
64
- )
67
+ statement = select(History)
68
+ if node:
69
+ statement = statement.where(History.node == node)
70
+ if only_subscribed:
71
+ np_alias = aliased(NotificationPreference)
72
+ statement = statement.join(
73
+ np_alias,
74
+ and_(
75
+ cast(History.entity_type, String) == cast(np_alias.entity_type, String),
76
+ History.entity_name == np_alias.entity_name,
77
+ cast(History.activity_type, String).in_(
78
+ func.array_to_string(np_alias.activity_types, ","),
79
+ ),
80
+ np_alias.user_id == current_user.id,
81
+ ),
65
82
  )
66
- .scalars()
67
- .all()
83
+
84
+ statement = (
85
+ statement.order_by(History.created_at.desc()).offset(offset).limit(limit)
68
86
  )
87
+ result = await session.execute(statement)
88
+ hist = result.scalars().all()
69
89
  return [HistoryOutput.from_orm(entry) for entry in hist]
@@ -16,11 +16,12 @@ from datajunction_server.api.helpers import get_save_history
16
16
  from datajunction_server.database import Node, NodeRevision
17
17
  from datajunction_server.database.backfill import Backfill
18
18
  from datajunction_server.database.column import Column, ColumnAttribute
19
- from datajunction_server.database.history import ActivityType, EntityType, History
19
+ from datajunction_server.database.history import History
20
20
  from datajunction_server.database.user import User
21
21
  from datajunction_server.errors import DJDoesNotExistException, DJInvalidInputException
22
22
  from datajunction_server.internal.access.authentication.http import SecureAPIRouter
23
23
  from datajunction_server.internal.access.authorization import validate_access
24
+ from datajunction_server.internal.history import ActivityType, EntityType
24
25
  from datajunction_server.internal.materializations import (
25
26
  create_new_materialization,
26
27
  schedule_materialization_jobs,
@@ -29,7 +29,7 @@ from datajunction_server.api.tags import get_tags_by_name
29
29
  from datajunction_server.database import DimensionLink
30
30
  from datajunction_server.database.attributetype import ColumnAttribute
31
31
  from datajunction_server.database.column import Column
32
- from datajunction_server.database.history import ActivityType, EntityType, History
32
+ from datajunction_server.database.history import History
33
33
  from datajunction_server.database.node import Node, NodeRevision
34
34
  from datajunction_server.database.partition import Partition
35
35
  from datajunction_server.database.user import User
@@ -46,6 +46,7 @@ from datajunction_server.internal.access.authorization import (
46
46
  validate_access,
47
47
  validate_access_requests,
48
48
  )
49
+ from datajunction_server.internal.history import ActivityType, EntityType
49
50
  from datajunction_server.internal.nodes import (
50
51
  activate_node,
51
52
  copy_to_new_node,
@@ -10,11 +10,12 @@ from fastapi.responses import JSONResponse
10
10
  from sqlalchemy.ext.asyncio import AsyncSession
11
11
  from sqlalchemy.future import select
12
12
 
13
- from datajunction_server.database.history import ActivityType, EntityType, History
14
13
  from datajunction_server.database.notification_preference import NotificationPreference
15
14
  from datajunction_server.database.user import User
15
+ from datajunction_server.database.history import History
16
16
  from datajunction_server.errors import DJDoesNotExistException
17
17
  from datajunction_server.internal.access.authentication.http import SecureAPIRouter
18
+ from datajunction_server.internal.history import ActivityType, EntityType
18
19
  from datajunction_server.internal.notifications import (
19
20
  get_entity_notification_preferences,
20
21
  get_user_notification_preferences,
@@ -11,11 +11,12 @@ from sqlalchemy.orm import joinedload
11
11
 
12
12
  from datajunction_server.api.helpers import get_save_history
13
13
  from datajunction_server.database import Node
14
- from datajunction_server.database.history import ActivityType, EntityType, History
14
+ from datajunction_server.database.history import History
15
15
  from datajunction_server.database.tag import Tag
16
16
  from datajunction_server.database.user import User
17
17
  from datajunction_server.errors import DJAlreadyExistsException, DJDoesNotExistException
18
18
  from datajunction_server.internal.access.authentication.http import SecureAPIRouter
19
+ from datajunction_server.internal.history import ActivityType, EntityType
19
20
  from datajunction_server.models.node import NodeMinimumDetail
20
21
  from datajunction_server.models.node_type import NodeType
21
22
  from datajunction_server.models.tag import CreateTag, TagOutput, UpdateTag
@@ -10,10 +10,11 @@ from sqlalchemy.ext.asyncio import AsyncSession
10
10
  from sqlalchemy.orm import joinedload, selectinload
11
11
 
12
12
  from datajunction_server.database.column import Column
13
- from datajunction_server.database.history import ActivityType, EntityType, History
13
+ from datajunction_server.database.history import History
14
14
  from datajunction_server.database.node import Node, NodeRevision
15
15
  from datajunction_server.database.user import User
16
16
  from datajunction_server.internal.access.authentication.http import SecureAPIRouter
17
+ from datajunction_server.internal.history import ActivityType, EntityType
17
18
  from datajunction_server.models.node import NodeMinimumDetail
18
19
  from datajunction_server.models.user import UserActivity
19
20
  from datajunction_server.utils import get_session, get_settings
@@ -166,7 +166,7 @@ async def get_measures_query(
166
166
  preaggregate = preagg_requested and all(
167
167
  len(metrics2measures[metric.name][0]) > 0
168
168
  and all(
169
- measure.rule.type == Aggregability.FULL
169
+ measure.rule.type in (Aggregability.FULL, Aggregability.LIMITED)
170
170
  for measure in metrics2measures[metric.name][0]
171
171
  )
172
172
  for metric in children
@@ -194,13 +194,17 @@ async def get_measures_query(
194
194
  parent_ast.select.projection = [
195
195
  expr
196
196
  for expr in parent_ast.select.projection
197
- if from_amenable_name(expr.alias_or_name.identifier(False)).split( # type: ignore
198
- SEPARATOR,
199
- )[-1]
200
- in parents_to_measures[parent_node.name]
201
- or from_amenable_name(expr.alias_or_name.identifier(False)) # type: ignore
202
- in dimensions_without_roles
197
+ if (
198
+ (identifier := expr.alias_or_name.identifier(False))
199
+ and (
200
+ from_amenable_name(identifier).split(SEPARATOR)[-1]
201
+ in parents_to_measures[parent_node.name]
202
+ or identifier in parents_to_measures[parent_node.name]
203
+ or from_amenable_name(identifier) in dimensions_without_roles
204
+ )
205
+ )
203
206
  ]
207
+
204
208
  await refresh_if_needed(session, parent_node.current, ["columns"])
205
209
  parent_ast = rename_columns(parent_ast, parent_node.current, preaggregate)
206
210
 
@@ -289,19 +293,35 @@ def build_preaggregate_query(
289
293
  built_parent_ref = parent_node.name + "_built"
290
294
  parent_node_cte = parent_ast.to_cte(ast.Name(amenable_name(built_parent_ref)))
291
295
  from_table = ast.Table(ast.Name(amenable_name(built_parent_ref)))
296
+
297
+ # Find all required GROUP BY columns based on each of the measure's aggregation rules.
298
+ # If the measure supports full aggregation, there are no required group-by columns, but if it
299
+ # supports limited aggregation, we need to aggregate to the specified level.
300
+ required_group_by_columns = [
301
+ ast.Column.from_existing(
302
+ parent_ast.select.column_mapping[group_by_col],
303
+ table=from_table,
304
+ )
305
+ for metric in metrics2measures
306
+ for measures in metrics2measures[metric][0]
307
+ if measures.rule.level
308
+ for group_by_col in measures.rule.level
309
+ ]
310
+
292
311
  final_query = ast.Query(
293
312
  ctes=existing_ctes + [parent_node_cte],
294
313
  select=ast.Select(
295
314
  projection=[
296
315
  ast.Column.from_existing(col, table=from_table)
297
316
  for col in parent_ast.select.projection
298
- if col.semantic_type == SemanticType.DIMENSION # type: ignore
317
+ if col and col.semantic_type == SemanticType.DIMENSION # type: ignore
299
318
  ],
300
319
  from_=ast.From(relations=[ast.Relation(primary=from_table)]),
301
320
  group_by=[
302
321
  ast.Column(dim.alias_or_name, _table=from_table)
303
322
  for dim in dimensional_columns
304
- ],
323
+ ]
324
+ + required_group_by_columns,
305
325
  ),
306
326
  )
307
327
 
@@ -4,50 +4,22 @@ from datetime import datetime, timezone
4
4
  from functools import partial
5
5
  from typing import Any, Dict, Optional
6
6
 
7
- from sqlalchemy import JSON, BigInteger, DateTime, Enum, Index, Integer, String
7
+ from sqlalchemy import (
8
+ JSON,
9
+ BigInteger,
10
+ DateTime,
11
+ Enum,
12
+ Index,
13
+ Integer,
14
+ String,
15
+ )
8
16
  from sqlalchemy.orm import Mapped, mapped_column
9
17
 
10
18
  from datajunction_server.database.base import Base
11
- from datajunction_server.enum import StrEnum
19
+ from datajunction_server.internal.history import ActivityType, EntityType
12
20
  from datajunction_server.typing import UTCDatetime
13
21
 
14
22
 
15
- class ActivityType(StrEnum):
16
- """
17
- An activity type
18
- """
19
-
20
- CREATE = "create"
21
- DELETE = "delete"
22
- RESTORE = "restore"
23
- UPDATE = "update"
24
- REFRESH = "refresh"
25
- TAG = "tag"
26
- SET_ATTRIBUTE = "set_attribute"
27
- STATUS_CHANGE = "status_change"
28
-
29
-
30
- class EntityType(StrEnum):
31
- """
32
- An entity type for which activity can occur
33
- """
34
-
35
- ATTRIBUTE = "attribute"
36
- AVAILABILITY = "availability"
37
- BACKFILL = "backfill"
38
- CATALOG = "catalog"
39
- COLUMN_ATTRIBUTE = "column_attribute"
40
- DEPENDENCY = "dependency"
41
- ENGINE = "engine"
42
- LINK = "link"
43
- MATERIALIZATION = "materialization"
44
- NAMESPACE = "namespace"
45
- NODE = "node"
46
- PARTITION = "partition"
47
- QUERY = "query"
48
- TAG = "tag"
49
-
50
-
51
23
  class History(Base):
52
24
  """
53
25
  An event to store as part of the server's activity history
@@ -16,7 +16,7 @@ from sqlalchemy import (
16
16
  from sqlalchemy.orm import Mapped, mapped_column, relationship
17
17
 
18
18
  from datajunction_server.database.base import Base
19
- from datajunction_server.database.history import ActivityType, EntityType
19
+ from datajunction_server.internal.history import ActivityType, EntityType
20
20
  from datajunction_server.database.user import User
21
21
  from datajunction_server.typing import UTCDatetime
22
22
 
@@ -0,0 +1,39 @@
1
+ """Enums for history events"""
2
+
3
+ from datajunction_server.enum import StrEnum
4
+
5
+
6
+ class ActivityType(StrEnum):
7
+ """
8
+ An activity type
9
+ """
10
+
11
+ CREATE = "create"
12
+ DELETE = "delete"
13
+ RESTORE = "restore"
14
+ UPDATE = "update"
15
+ REFRESH = "refresh"
16
+ TAG = "tag"
17
+ SET_ATTRIBUTE = "set_attribute"
18
+ STATUS_CHANGE = "status_change"
19
+
20
+
21
+ class EntityType(StrEnum):
22
+ """
23
+ An entity type for which activity can occur
24
+ """
25
+
26
+ ATTRIBUTE = "attribute"
27
+ AVAILABILITY = "availability"
28
+ BACKFILL = "backfill"
29
+ CATALOG = "catalog"
30
+ COLUMN_ATTRIBUTE = "column_attribute"
31
+ DEPENDENCY = "dependency"
32
+ ENGINE = "engine"
33
+ LINK = "link"
34
+ MATERIALIZATION = "materialization"
35
+ NAMESPACE = "namespace"
36
+ NODE = "node"
37
+ PARTITION = "partition"
38
+ QUERY = "query"
39
+ TAG = "tag"
@@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
12
12
  from sqlalchemy.orm import joinedload
13
13
 
14
14
  from datajunction_server.api.helpers import get_node_namespace
15
- from datajunction_server.database.history import ActivityType, EntityType, History
15
+ from datajunction_server.database.history import History
16
16
  from datajunction_server.database.namespace import NodeNamespace
17
17
  from datajunction_server.database.node import Column, Node, NodeRevision
18
18
  from datajunction_server.database.user import User
@@ -21,6 +21,7 @@ from datajunction_server.errors import (
21
21
  DJDoesNotExistException,
22
22
  DJInvalidInputException,
23
23
  )
24
+ from datajunction_server.internal.history import ActivityType, EntityType
24
25
  from datajunction_server.internal.nodes import (
25
26
  get_cube_revision_metadata,
26
27
  hard_delete_node,
@@ -24,7 +24,7 @@ from datajunction_server.construction.build_v2 import compile_node_ast
24
24
  from datajunction_server.database.attributetype import AttributeType, ColumnAttribute
25
25
  from datajunction_server.database.column import Column
26
26
  from datajunction_server.database.dimensionlink import DimensionLink
27
- from datajunction_server.database.history import ActivityType, EntityType, History
27
+ from datajunction_server.database.history import History
28
28
  from datajunction_server.database.materialization import Materialization
29
29
  from datajunction_server.database.metricmetadata import MetricMetadata
30
30
  from datajunction_server.database.node import MissingParent, Node, NodeRevision
@@ -42,6 +42,7 @@ from datajunction_server.internal.materializations import (
42
42
  create_new_materialization,
43
43
  schedule_materialization_jobs,
44
44
  )
45
+ from datajunction_server.internal.history import ActivityType, EntityType
45
46
  from datajunction_server.internal.validation import NodeValidator, validate_node_data
46
47
  from datajunction_server.models import access
47
48
  from datajunction_server.models.attribute import (
@@ -9,7 +9,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
9
9
  from sqlalchemy.orm import selectinload
10
10
 
11
11
  from datajunction_server.database.notification_preference import NotificationPreference
12
- from datajunction_server.database.history import EntityType
12
+ from datajunction_server.internal.history import EntityType
13
13
 
14
14
 
15
15
  async def get_user_notification_preferences(
@@ -6,7 +6,8 @@ from typing import TYPE_CHECKING, Any, Dict, Optional
6
6
 
7
7
  from pydantic.main import BaseModel
8
8
 
9
- from datajunction_server.database.history import ActivityType, EntityType, History
9
+ from datajunction_server.database.history import History
10
+ from datajunction_server.internal.history import ActivityType, EntityType
10
11
  from datajunction_server.typing import UTCDatetime
11
12
 
12
13
  if TYPE_CHECKING:
@@ -4,7 +4,7 @@ from typing import List, Optional
4
4
 
5
5
  from pydantic.main import BaseModel
6
6
 
7
- from datajunction_server.database.history import ActivityType, EntityType
7
+ from datajunction_server.internal.history import ActivityType, EntityType
8
8
 
9
9
 
10
10
  class NotificationPreferenceModel(BaseModel):
@@ -104,6 +104,11 @@ class MeasureExtractor:
104
104
  type=Aggregability.FULL
105
105
  if func.quantifier != ast.SetQuantifier.Distinct
106
106
  else Aggregability.LIMITED,
107
+ level=(
108
+ [str(arg) for arg in func.args]
109
+ if func.quantifier == ast.SetQuantifier.Distinct
110
+ else None
111
+ ),
107
112
  ),
108
113
  ),
109
114
  ]
@@ -126,6 +131,11 @@ class MeasureExtractor:
126
131
  type=Aggregability.FULL
127
132
  if func.quantifier != ast.SetQuantifier.Distinct
128
133
  else Aggregability.LIMITED,
134
+ level=(
135
+ [str(arg) for arg in func.args]
136
+ if func.quantifier == ast.SetQuantifier.Distinct
137
+ else None
138
+ ),
129
139
  ),
130
140
  ),
131
141
  Measure(
@@ -136,6 +146,11 @@ class MeasureExtractor:
136
146
  type=Aggregability.FULL
137
147
  if func.quantifier != ast.SetQuantifier.Distinct
138
148
  else Aggregability.LIMITED,
149
+ level=(
150
+ [str(arg) for arg in func.args]
151
+ if func.quantifier == ast.SetQuantifier.Distinct
152
+ else None
153
+ ),
139
154
  ),
140
155
  ),
141
156
  ]
@@ -846,7 +846,11 @@ class Column(Aliasable, Named, Expression):
846
846
  return column_namespace, column_name, subscript_name
847
847
 
848
848
  @classmethod
849
- def from_existing(cls, col: Aliasable | Expression, table: "TableExpression"):
849
+ def from_existing(
850
+ cls,
851
+ col: Union[Aliasable, Expression, "Column"],
852
+ table: "TableExpression",
853
+ ):
850
854
  """
851
855
  Build a selectable column from an existing one
852
856
  """
@@ -592,6 +592,7 @@ async def test_find_transform(
592
592
  name
593
593
  }
594
594
  }
595
+ primaryKey
595
596
  }
596
597
  }
597
598
  }
@@ -617,6 +618,7 @@ async def test_find_transform(
617
618
  ],
618
619
  "extractedMeasures": None,
619
620
  "metricMetadata": None,
621
+ "primaryKey": [],
620
622
  },
621
623
  "name": "default.repair_orders_fact",
622
624
  "type": "TRANSFORM",