dkist-processing-common 14.0.2rc2__tar.gz → 14.0.3__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 (143) hide show
  1. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/CHANGELOG.rst +19 -0
  2. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/PKG-INFO +3 -3
  3. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/trial_catalog.py +7 -0
  4. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/mock_metadata_store.py +5 -1
  5. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_trial_catalog.py +99 -9
  6. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common.egg-info/PKG-INFO +3 -3
  7. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common.egg-info/SOURCES.txt +0 -2
  8. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common.egg-info/requires.txt +2 -2
  9. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/pyproject.toml +2 -2
  10. dkist_processing_common-14.0.2rc2/changelog/332.feature.1.rst +0 -1
  11. dkist_processing_common-14.0.2rc2/changelog/332.feature.rst +0 -1
  12. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/.gitignore +0 -0
  13. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/.pre-commit-config.yaml +0 -0
  14. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/.readthedocs.yml +0 -0
  15. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/.snyk +0 -0
  16. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/README.rst +0 -0
  17. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/bitbucket-pipelines.yml +0 -0
  18. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/changelog/.gitempty +0 -0
  19. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/__init__.py +0 -0
  20. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/_util/__init__.py +0 -0
  21. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/_util/constants.py +0 -0
  22. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/_util/graphql.py +0 -0
  23. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/_util/scratch.py +0 -0
  24. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/_util/tags.py +0 -0
  25. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/codecs/__init__.py +0 -0
  26. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/codecs/array.py +0 -0
  27. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/codecs/asdf.py +0 -0
  28. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/codecs/basemodel.py +0 -0
  29. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/codecs/bytes.py +0 -0
  30. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/codecs/fits.py +0 -0
  31. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/codecs/iobase.py +0 -0
  32. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/codecs/json.py +0 -0
  33. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/codecs/path.py +0 -0
  34. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/codecs/quality.py +0 -0
  35. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/codecs/str.py +0 -0
  36. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/config.py +0 -0
  37. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
  38. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/fonts/__init__.py +0 -0
  39. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/manual.py +0 -0
  40. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/__init__.py +0 -0
  41. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/constants.py +0 -0
  42. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/dkist_location.py +0 -0
  43. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/extras.py +0 -0
  44. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/fits_access.py +0 -0
  45. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/flower_pot.py +0 -0
  46. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/fried_parameter.py +0 -0
  47. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/graphql.py +0 -0
  48. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/input_dataset.py +0 -0
  49. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/message.py +0 -0
  50. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/message_queue_binding.py +0 -0
  51. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/metric_code.py +0 -0
  52. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/parameters.py +0 -0
  53. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/quality.py +0 -0
  54. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/tags.py +0 -0
  55. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/task_name.py +0 -0
  56. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/telemetry.py +0 -0
  57. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/models/wavelength.py +0 -0
  58. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/__init__.py +0 -0
  59. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/average_bud.py +0 -0
  60. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/cs_step.py +0 -0
  61. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/dsps_repeat.py +0 -0
  62. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/experiment_id_bud.py +0 -0
  63. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/id_bud.py +0 -0
  64. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/l0_fits_access.py +0 -0
  65. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/l1_fits_access.py +0 -0
  66. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/lookup_bud.py +0 -0
  67. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/near_bud.py +0 -0
  68. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/observing_program_id_bud.py +0 -0
  69. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/proposal_id_bud.py +0 -0
  70. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/quality.py +0 -0
  71. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/retarder.py +0 -0
  72. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/single_value_single_key_flower.py +0 -0
  73. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/task.py +0 -0
  74. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/time.py +0 -0
  75. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/unique_bud.py +0 -0
  76. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/parsers/wavelength.py +0 -0
  77. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/__init__.py +0 -0
  78. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/assemble_movie.py +0 -0
  79. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/base.py +0 -0
  80. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/l1_output_data.py +0 -0
  81. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
  82. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/mixin/globus.py +0 -0
  83. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/mixin/interservice_bus.py +0 -0
  84. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/mixin/metadata_store.py +0 -0
  85. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/mixin/object_store.py +0 -0
  86. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/mixin/quality/__init__.py +0 -0
  87. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/mixin/quality/_base.py +0 -0
  88. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/mixin/quality/_metrics.py +0 -0
  89. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/output_data_base.py +0 -0
  90. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/parse_l0_input_data.py +0 -0
  91. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/quality_metrics.py +0 -0
  92. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/teardown.py +0 -0
  93. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/transfer_input_data.py +0 -0
  94. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/trial_output_data.py +0 -0
  95. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/write_extra.py +0 -0
  96. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/write_l1.py +0 -0
  97. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tasks/write_l1_base.py +0 -0
  98. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/__init__.py +0 -0
  99. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/conftest.py +0 -0
  100. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
  101. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_assemble_quality.py +0 -0
  102. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_base.py +0 -0
  103. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_codecs.py +0 -0
  104. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_constants.py +0 -0
  105. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_construct_dataset_extras.py +0 -0
  106. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_cs_step.py +0 -0
  107. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_dkist_location.py +0 -0
  108. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_fits_access.py +0 -0
  109. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_flower_pot.py +0 -0
  110. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_fried_parameter.py +0 -0
  111. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_input_dataset.py +0 -0
  112. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_interservice_bus.py +0 -0
  113. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_interservice_bus_mixin.py +0 -0
  114. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_manual_processing.py +0 -0
  115. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_output_data_base.py +0 -0
  116. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_parameters.py +0 -0
  117. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_parse_l0_input_data.py +0 -0
  118. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
  119. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_quality.py +0 -0
  120. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_quality_mixin.py +0 -0
  121. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_scratch.py +0 -0
  122. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_stems.py +0 -0
  123. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
  124. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_tags.py +0 -0
  125. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_task_name.py +0 -0
  126. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_task_parsing.py +0 -0
  127. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_teardown.py +0 -0
  128. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_transfer_input_data.py +0 -0
  129. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
  130. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_trial_output_data.py +0 -0
  131. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_workflow_task_base.py +0 -0
  132. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common/tests/test_write_l1.py +0 -0
  133. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
  134. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/dkist_processing_common.egg-info/top_level.txt +0 -0
  135. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/docs/Makefile +0 -0
  136. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/docs/changelog.rst +0 -0
  137. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/docs/conf.py +0 -0
  138. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/docs/index.rst +0 -0
  139. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/docs/landing_page.rst +0 -0
  140. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/docs/make.bat +0 -0
  141. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/docs/requirements.txt +0 -0
  142. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/licenses/LICENSE.rst +0 -0
  143. {dkist_processing_common-14.0.2rc2 → dkist_processing_common-14.0.3}/setup.cfg +0 -0
@@ -1,3 +1,22 @@
1
+ v14.0.3 (2026-05-05)
2
+ ====================
3
+
4
+ Features
5
+ --------
6
+
7
+ - Add recipe run configuration information relevant to the metadata ASDF file generated in trial workflows. (`#318 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/318>`__)
8
+
9
+
10
+ v14.0.2 (2026-05-04)
11
+ ====================
12
+
13
+ Features
14
+ --------
15
+
16
+ - Convert TASK_TYPES quality metric to the new methodology. (`#332 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/332>`__)
17
+ - Add `TaskCount` quality metric model. (`#332 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/332>`__)
18
+
19
+
1
20
  v14.0.1 (2026-04-22)
2
21
  ====================
3
22
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 14.0.2rc2
3
+ Version: 14.0.3
4
4
  Summary: Common task classes used by the DKIST science data processing pipelines
5
5
  Author-email: NSO / AURA <dkistdc@nso.edu>
6
6
  License: BSD-3-Clause
@@ -56,9 +56,9 @@ Requires-Dist: sphinx-autoapi!=3.1.0; extra == "docs"
56
56
  Requires-Dist: pytest; extra == "docs"
57
57
  Requires-Dist: dkist-sphinx-theme; extra == "docs"
58
58
  Provides-Extra: inventory
59
- Requires-Dist: dkist-inventory<2.0,>=1.11.6; extra == "inventory"
59
+ Requires-Dist: dkist-inventory<2.0,>=1.11.7; extra == "inventory"
60
60
  Provides-Extra: asdf
61
- Requires-Dist: dkist-inventory[asdf]<2.0,>=1.11.6; extra == "asdf"
61
+ Requires-Dist: dkist-inventory[asdf]<2.0,>=1.11.7; extra == "asdf"
62
62
  Provides-Extra: quality
63
63
  Requires-Dist: dkist-quality<3.0,>=2.0.1; extra == "quality"
64
64
 
@@ -155,6 +155,12 @@ class CreateTrialAsdf(OutputDataBase):
155
155
  Tag.input_dataset_calibration_frames()
156
156
  )
157
157
 
158
+ with self.telemetry_span("Collate recipe run configuration"):
159
+ recipe_run_config = self.metadata_store_recipe_run.configuration.model_dump(
160
+ exclude_unset=True,
161
+ exclude_none=True,
162
+ )
163
+
158
164
  with self.telemetry_span("Generate ASDF tree"):
159
165
  tree = asdf_tree_from_filenames(
160
166
  filenames=self.absolute_output_frame_paths,
@@ -163,6 +169,7 @@ class CreateTrialAsdf(OutputDataBase):
163
169
  parameters=parameters,
164
170
  observation_frames=observation_frames,
165
171
  calibration_frames=calibration_frames,
172
+ recipe_run_config=recipe_run_config,
166
173
  )
167
174
 
168
175
  trial_history = [
@@ -96,7 +96,11 @@ default_parameters_doc = [
96
96
  },
97
97
  ]
98
98
 
99
- default_recipe_run_configuration = {"tile_size": TILE_SIZE}
99
+ default_recipe_run_configuration = {
100
+ "tile_size": TILE_SIZE,
101
+ "destination_bucket": "data",
102
+ "validate_l1_on_write": True,
103
+ }
100
104
 
101
105
 
102
106
  class Unset:
@@ -27,8 +27,12 @@ from dkist_processing_common.models.tags import Tag
27
27
  from dkist_processing_common.tasks import CreateTrialAsdf
28
28
  from dkist_processing_common.tasks import CreateTrialDatasetInventory
29
29
  from dkist_processing_common.tasks import CreateTrialQualityReport
30
+ from dkist_processing_common.tests.mock_metadata_store import RecipeRunResponseMapping
30
31
  from dkist_processing_common.tests.mock_metadata_store import default_observe_frames_doc
32
+ from dkist_processing_common.tests.mock_metadata_store import default_recipe_run_configuration
33
+ from dkist_processing_common.tests.mock_metadata_store import fake_gql_client_factory
31
34
  from dkist_processing_common.tests.mock_metadata_store import input_dataset_parameters_part_factory
35
+ from dkist_processing_common.tests.mock_metadata_store import make_default_recipe_run_response
32
36
 
33
37
 
34
38
  def _parameter_for_test_comparison(param: dict) -> dict:
@@ -155,20 +159,46 @@ def scratch_with_l1_frames_and_other_frames(
155
159
  return scratch
156
160
 
157
161
 
162
+ @pytest.fixture()
163
+ def patch_default_graphql_client(mocker, fake_gql_client) -> None:
164
+ """Patch the metadata store client to use the default fake GraphQL client."""
165
+ mocker.patch(
166
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient",
167
+ new=fake_gql_client,
168
+ )
169
+
170
+
171
+ @pytest.fixture()
172
+ def fake_gql_client_without_recipe_config():
173
+ """GraphQL client mock that returns a recipe run response without explicit configuration."""
174
+ recipe_run_response = make_default_recipe_run_response()
175
+ recipe_run_response.configuration = None
176
+
177
+ return fake_gql_client_factory(
178
+ response_mapping_override=RecipeRunResponseMapping(response=recipe_run_response)
179
+ )
180
+
181
+
182
+ @pytest.fixture()
183
+ def patch_graphql_client_without_recipe_config(
184
+ mocker, fake_gql_client_without_recipe_config
185
+ ) -> None:
186
+ """Patch the metadata store client to return a recipe run response without config."""
187
+ mocker.patch(
188
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient",
189
+ new=fake_gql_client_without_recipe_config,
190
+ )
191
+
192
+
158
193
  @pytest.fixture()
159
194
  def create_trial_dataset_inventory_task(
160
195
  recipe_run_id,
161
196
  tmp_path,
162
197
  scratch_with_l1_frames,
163
198
  fake_constants_db,
164
- mocker,
165
- fake_gql_client,
199
+ patch_default_graphql_client,
166
200
  ) -> CreateTrialDatasetInventory:
167
201
  """An instance of CreateTrialDatasetInventory with L1 frames tagged in scratch."""
168
- mocker.patch(
169
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient",
170
- new=fake_gql_client,
171
- )
172
202
  task = CreateTrialDatasetInventory(
173
203
  recipe_run_id=recipe_run_id,
174
204
  workflow_name="trial_dataset_inventory",
@@ -182,7 +212,7 @@ def create_trial_dataset_inventory_task(
182
212
 
183
213
  @pytest.fixture()
184
214
  def create_trial_asdf_task(
185
- recipe_run_id, tmp_path, scratch_with_l1_frames, fake_constants_db
215
+ recipe_run_id, tmp_path, scratch_with_l1_frames, fake_constants_db, patch_default_graphql_client
186
216
  ) -> CreateTrialAsdf:
187
217
  """An instance of CreateTrialAsdf with L1 frames tagged in scratch."""
188
218
  task = CreateTrialAsdf(
@@ -196,9 +226,33 @@ def create_trial_asdf_task(
196
226
  task._purge()
197
227
 
198
228
 
229
+ @pytest.fixture(scope="function")
230
+ def create_trial_asdf_task_without_recipe_config(
231
+ recipe_run_id,
232
+ tmp_path,
233
+ scratch_with_l1_frames,
234
+ fake_constants_db,
235
+ patch_graphql_client_without_recipe_config,
236
+ ) -> CreateTrialAsdf:
237
+ """An instance of CreateTrialAsdf with L1 frames and no recipe run configuration."""
238
+ task = CreateTrialAsdf(
239
+ recipe_run_id=recipe_run_id,
240
+ workflow_name="trial_asdf",
241
+ workflow_version="trial_asdf_version",
242
+ )
243
+ task.scratch = scratch_with_l1_frames
244
+ task.constants._update(fake_constants_db)
245
+ yield task
246
+ task._purge()
247
+
248
+
199
249
  @pytest.fixture(scope="function")
200
250
  def create_trial_asdf_task_with_params(
201
- recipe_run_id, tmp_path, scratch_with_l1_frames_and_parameters, fake_constants_db
251
+ recipe_run_id,
252
+ tmp_path,
253
+ scratch_with_l1_frames_and_parameters,
254
+ fake_constants_db,
255
+ patch_default_graphql_client,
202
256
  ) -> CreateTrialAsdf:
203
257
  """An instance of CreateTrialAsdf with L1 frames and input parameters tagged in scratch."""
204
258
  task = CreateTrialAsdf(
@@ -214,7 +268,11 @@ def create_trial_asdf_task_with_params(
214
268
 
215
269
  @pytest.fixture()
216
270
  def create_trial_asdf_task_with_frames(
217
- recipe_run_id, tmp_path, scratch_with_l1_frames_and_other_frames, fake_constants_db
271
+ recipe_run_id,
272
+ tmp_path,
273
+ scratch_with_l1_frames_and_other_frames,
274
+ fake_constants_db,
275
+ patch_default_graphql_client,
218
276
  ) -> CreateTrialAsdf:
219
277
  """An instance of CreateTrialAsdf with L1 frames and input frame docs tagged in scratch."""
220
278
  task = CreateTrialAsdf(
@@ -389,6 +447,38 @@ def test_create_trial_asdf_with_frames(create_trial_asdf_task_with_frames):
389
447
  assert set(cal_keys_str) == expected_keys
390
448
 
391
449
 
450
+ def test_create_trial_asdf_includes_recipe_run_config(create_trial_asdf_task):
451
+ """
452
+ :Given: CreateTrialAsdf with recipe run configuration available in metadata store
453
+ :When: CreateTrialAsdf is run
454
+ :Then: The ASDF tree contains normalized recipe run configuration metadata
455
+ """
456
+ task = create_trial_asdf_task
457
+ task()
458
+
459
+ tree = next(task.read(tags=[Tag.output(), Tag.asdf()], decoder=asdf_decoder))
460
+ ds = tree["dataset"]
461
+
462
+ assert ds.meta["recipe_run_config"] == default_recipe_run_configuration
463
+
464
+
465
+ def test_create_trial_asdf_without_recipe_run_config_has_empty_config(
466
+ create_trial_asdf_task_without_recipe_config,
467
+ ):
468
+ """
469
+ :Given: CreateTrialAsdf with no recipe run configuration in metadata store
470
+ :When: CreateTrialAsdf is run
471
+ :Then: The ASDF tree contains an empty normalized recipe run configuration structure
472
+ """
473
+ task = create_trial_asdf_task_without_recipe_config
474
+ task()
475
+
476
+ tree = next(task.read(tags=[Tag.output(), Tag.asdf()], decoder=asdf_decoder))
477
+ ds = tree["dataset"]
478
+
479
+ assert ds.meta["recipe_run_config"] == {}
480
+
481
+
392
482
  def test_create_trial_quality_report(create_trial_quality_report_task):
393
483
  """
394
484
  :Given: An instance of CreateTrialQualityReport with tagged quality data
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 14.0.2rc2
3
+ Version: 14.0.3
4
4
  Summary: Common task classes used by the DKIST science data processing pipelines
5
5
  Author-email: NSO / AURA <dkistdc@nso.edu>
6
6
  License: BSD-3-Clause
@@ -56,9 +56,9 @@ Requires-Dist: sphinx-autoapi!=3.1.0; extra == "docs"
56
56
  Requires-Dist: pytest; extra == "docs"
57
57
  Requires-Dist: dkist-sphinx-theme; extra == "docs"
58
58
  Provides-Extra: inventory
59
- Requires-Dist: dkist-inventory<2.0,>=1.11.6; extra == "inventory"
59
+ Requires-Dist: dkist-inventory<2.0,>=1.11.7; extra == "inventory"
60
60
  Provides-Extra: asdf
61
- Requires-Dist: dkist-inventory[asdf]<2.0,>=1.11.6; extra == "asdf"
61
+ Requires-Dist: dkist-inventory[asdf]<2.0,>=1.11.7; extra == "asdf"
62
62
  Provides-Extra: quality
63
63
  Requires-Dist: dkist-quality<3.0,>=2.0.1; extra == "quality"
64
64
 
@@ -7,8 +7,6 @@ README.rst
7
7
  bitbucket-pipelines.yml
8
8
  pyproject.toml
9
9
  changelog/.gitempty
10
- changelog/332.feature.1.rst
11
- changelog/332.feature.rst
12
10
  dkist_processing_common/__init__.py
13
11
  dkist_processing_common/config.py
14
12
  dkist_processing_common/manual.py
@@ -24,7 +24,7 @@ sunpy>=3.0.0
24
24
  talus==1.3.4
25
25
 
26
26
  [asdf]
27
- dkist-inventory[asdf]<2.0,>=1.11.6
27
+ dkist-inventory[asdf]<2.0,>=1.11.7
28
28
 
29
29
  [docs]
30
30
  setuptools
@@ -36,7 +36,7 @@ pytest
36
36
  dkist-sphinx-theme
37
37
 
38
38
  [inventory]
39
- dkist-inventory<2.0,>=1.11.6
39
+ dkist-inventory<2.0,>=1.11.7
40
40
 
41
41
  [quality]
42
42
  dkist-quality<3.0,>=2.0.1
@@ -75,10 +75,10 @@ docs = [
75
75
  "dkist-sphinx-theme",
76
76
  ]
77
77
  inventory = [
78
- "dkist-inventory >= 1.11.6, <2.0",
78
+ "dkist-inventory >= 1.11.7, <2.0",
79
79
  ]
80
80
  asdf = [
81
- "dkist-inventory[asdf] >= 1.11.6, <2.0",
81
+ "dkist-inventory[asdf] >= 1.11.7, <2.0",
82
82
  ]
83
83
  quality = [
84
84
  "dkist-quality >= 2.0.1, <3.0",
@@ -1 +0,0 @@
1
- Added `TaskCount` quality metric model.
@@ -1 +0,0 @@
1
- Convert TASK_TYPES quality metric to the new methodology.