dkist-processing-common 12.2.0__tar.gz → 12.2.0rc1__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 (142) hide show
  1. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/CHANGELOG.rst +0 -9
  2. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/PKG-INFO +1 -1
  3. dkist_processing_common-12.2.0rc1/changelog/272.feature.rst +1 -0
  4. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/constants.py +8 -8
  5. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/l1_output_data.py +18 -8
  6. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/write_extra.py +5 -5
  7. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_construct_dataset_extras.py +2 -7
  8. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_trial_catalog.py +3 -2
  9. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common.egg-info/PKG-INFO +1 -1
  10. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common.egg-info/SOURCES.txt +1 -0
  11. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/.gitignore +0 -0
  12. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/.pre-commit-config.yaml +0 -0
  13. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/.readthedocs.yml +0 -0
  14. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/.snyk +0 -0
  15. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/README.rst +0 -0
  16. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/bitbucket-pipelines.yml +0 -0
  17. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/changelog/.gitempty +0 -0
  18. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/__init__.py +0 -0
  19. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/_util/__init__.py +0 -0
  20. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/_util/constants.py +0 -0
  21. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/_util/graphql.py +0 -0
  22. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/_util/scratch.py +0 -0
  23. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/_util/tags.py +0 -0
  24. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/__init__.py +0 -0
  25. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/array.py +0 -0
  26. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/asdf.py +0 -0
  27. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/basemodel.py +0 -0
  28. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/bytes.py +0 -0
  29. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/fits.py +0 -0
  30. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/iobase.py +0 -0
  31. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/json.py +0 -0
  32. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/path.py +0 -0
  33. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/quality.py +0 -0
  34. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/str.py +0 -0
  35. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/config.py +0 -0
  36. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
  37. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/fonts/__init__.py +0 -0
  38. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/manual.py +0 -0
  39. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/__init__.py +0 -0
  40. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/dkist_location.py +0 -0
  41. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/extras.py +0 -0
  42. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/fits_access.py +0 -0
  43. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/flower_pot.py +0 -0
  44. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/fried_parameter.py +0 -0
  45. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/graphql.py +0 -0
  46. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/input_dataset.py +0 -0
  47. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/message.py +0 -0
  48. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/message_queue_binding.py +0 -0
  49. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/metric_code.py +0 -0
  50. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/parameters.py +0 -0
  51. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/quality.py +0 -0
  52. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/tags.py +0 -0
  53. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/task_name.py +0 -0
  54. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/telemetry.py +0 -0
  55. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/wavelength.py +0 -0
  56. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/__init__.py +0 -0
  57. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/average_bud.py +0 -0
  58. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/cs_step.py +0 -0
  59. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/dsps_repeat.py +0 -0
  60. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/experiment_id_bud.py +0 -0
  61. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/id_bud.py +0 -0
  62. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/l0_fits_access.py +0 -0
  63. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/l1_fits_access.py +0 -0
  64. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/lookup_bud.py +0 -0
  65. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/near_bud.py +0 -0
  66. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/observing_program_id_bud.py +0 -0
  67. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/proposal_id_bud.py +0 -0
  68. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/quality.py +0 -0
  69. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/retarder.py +0 -0
  70. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/single_value_single_key_flower.py +0 -0
  71. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/task.py +0 -0
  72. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/time.py +0 -0
  73. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/unique_bud.py +0 -0
  74. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/wavelength.py +0 -0
  75. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/__init__.py +0 -0
  76. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/assemble_movie.py +0 -0
  77. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/base.py +0 -0
  78. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
  79. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/globus.py +0 -0
  80. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/interservice_bus.py +0 -0
  81. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/metadata_store.py +0 -0
  82. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/object_store.py +0 -0
  83. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/quality/__init__.py +0 -0
  84. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/quality/_base.py +0 -0
  85. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/quality/_metrics.py +0 -0
  86. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/output_data_base.py +0 -0
  87. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/parse_l0_input_data.py +0 -0
  88. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/quality_metrics.py +0 -0
  89. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/teardown.py +0 -0
  90. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/transfer_input_data.py +0 -0
  91. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/trial_catalog.py +0 -0
  92. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/trial_output_data.py +0 -0
  93. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/write_l1.py +0 -0
  94. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/write_l1_base.py +0 -0
  95. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/__init__.py +0 -0
  96. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/conftest.py +0 -0
  97. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/mock_metadata_store.py +0 -0
  98. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
  99. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_assemble_quality.py +0 -0
  100. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_base.py +0 -0
  101. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_codecs.py +0 -0
  102. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_constants.py +0 -0
  103. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_cs_step.py +0 -0
  104. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_dkist_location.py +0 -0
  105. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_fits_access.py +0 -0
  106. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_flower_pot.py +0 -0
  107. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_fried_parameter.py +0 -0
  108. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_input_dataset.py +0 -0
  109. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_interservice_bus.py +0 -0
  110. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_interservice_bus_mixin.py +0 -0
  111. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_manual_processing.py +0 -0
  112. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_output_data_base.py +0 -0
  113. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_parameters.py +0 -0
  114. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_parse_l0_input_data.py +0 -0
  115. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
  116. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_quality.py +0 -0
  117. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_quality_mixin.py +0 -0
  118. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_scratch.py +0 -0
  119. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_stems.py +0 -0
  120. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
  121. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_tags.py +0 -0
  122. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_task_name.py +0 -0
  123. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_task_parsing.py +0 -0
  124. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_teardown.py +0 -0
  125. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_transfer_input_data.py +0 -0
  126. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
  127. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_trial_output_data.py +0 -0
  128. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_workflow_task_base.py +0 -0
  129. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_write_l1.py +0 -0
  130. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
  131. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common.egg-info/requires.txt +0 -0
  132. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common.egg-info/top_level.txt +0 -0
  133. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/Makefile +0 -0
  134. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/changelog.rst +0 -0
  135. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/conf.py +0 -0
  136. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/index.rst +0 -0
  137. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/landing_page.rst +0 -0
  138. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/make.bat +0 -0
  139. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/requirements.txt +0 -0
  140. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/licenses/LICENSE.rst +0 -0
  141. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/pyproject.toml +0 -0
  142. {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/setup.cfg +0 -0
@@ -1,12 +1,3 @@
1
- v12.2.0 (2026-01-30)
2
- ====================
3
-
4
- Features
5
- --------
6
-
7
- - Add the framework for using Dataset Extras, that is, other data that can be included with the L1 FITS files generated by the regular pipeline. A new abstract class, WriteL1DatasetExtras, provides helper functionality for use in the instrument pipelines. (`#272 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/272>`__)
8
-
9
-
10
1
  v12.1.0 (2026-01-26)
11
2
  ====================
12
3
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 12.2.0
3
+ Version: 12.2.0rc1
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
@@ -0,0 +1 @@
1
+ Add the framework for using Dataset Extras, that is, other data that can be included with the L1 FITS files generated by the regular pipeline. A new abstract class, WriteL1DatasetExtras, provides helper functionality for use in the instrument pipelines.
@@ -473,14 +473,14 @@ class ConstantsBase:
473
473
  return self._db_dict[BudName.solar_gain_gos_polarizer_status]
474
474
 
475
475
  @property
476
- def dark_gos_polarizer_angle(self) -> str:
476
+ def dark_gos_polarizer_angle(self) -> float:
477
477
  """Return the gos polarizer angle constant for the dark task."""
478
- return str(self._db_dict[BudName.dark_gos_polarizer_angle])
478
+ return self._db_dict[BudName.dark_gos_polarizer_angle]
479
479
 
480
480
  @property
481
- def solar_gain_gos_polarizer_angle(self) -> str:
481
+ def solar_gain_gos_polarizer_angle(self) -> float:
482
482
  """Return the gos polarizer angle constant for the solar gain task."""
483
- return str(self._db_dict[BudName.solar_gain_gos_polarizer_angle])
483
+ return self._db_dict[BudName.solar_gain_gos_polarizer_angle]
484
484
 
485
485
  @property
486
486
  def dark_gos_retarder_status(self) -> str:
@@ -493,14 +493,14 @@ class ConstantsBase:
493
493
  return self._db_dict[BudName.solar_gain_gos_retarder_status]
494
494
 
495
495
  @property
496
- def dark_gos_retarder_angle(self) -> str:
496
+ def dark_gos_retarder_angle(self) -> float:
497
497
  """Return the gos retarder angle constant for the dark task."""
498
- return str(self._db_dict[BudName.dark_gos_retarder_angle])
498
+ return self._db_dict[BudName.dark_gos_retarder_angle]
499
499
 
500
500
  @property
501
- def solar_gain_gos_retarder_angle(self) -> str:
501
+ def solar_gain_gos_retarder_angle(self) -> float:
502
502
  """Return the gos retarder angle constant for the solar gain task."""
503
- return str(self._db_dict[BudName.solar_gain_gos_retarder_angle])
503
+ return self._db_dict[BudName.solar_gain_gos_retarder_angle]
504
504
 
505
505
  @property
506
506
  def dark_gos_level0_status(self) -> str:
@@ -2,14 +2,18 @@
2
2
 
3
3
  import logging
4
4
  from abc import ABC
5
+ from itertools import chain
5
6
  from pathlib import Path
6
7
  from typing import Iterable
7
8
 
9
+ from dkist_processing_common.codecs.quality import quality_data_decoder
8
10
  from dkist_processing_common.codecs.quality import quality_data_encoder
9
11
  from dkist_processing_common.models.message import CatalogFrameMessage
10
12
  from dkist_processing_common.models.message import CatalogFrameMessageBody
11
13
  from dkist_processing_common.models.message import CatalogObjectMessage
12
14
  from dkist_processing_common.models.message import CatalogObjectMessageBody
15
+ from dkist_processing_common.models.message import CreateQualityReportMessage
16
+ from dkist_processing_common.models.message import CreateQualityReportMessageBody
13
17
  from dkist_processing_common.models.tags import Tag
14
18
  from dkist_processing_common.tasks.mixin.globus import GlobusMixin
15
19
  from dkist_processing_common.tasks.mixin.interservice_bus import InterserviceBusMixin
@@ -189,9 +193,7 @@ class SubmitDatasetMetadata(L1OutputDataBase):
189
193
  class PublishCatalogAndQualityMessages(L1OutputDataBase, InterserviceBusMixin):
190
194
  """Task class for publishing Catalog and Quality Messages."""
191
195
 
192
- def frame_messages(
193
- self, paths: Iterable[Path], folder_modifier: str | None = None
194
- ) -> list[CatalogFrameMessage]:
196
+ def frame_messages(self, paths: Iterable[Path]) -> list[CatalogFrameMessage]:
195
197
  """
196
198
  Create the frame messages.
197
199
 
@@ -199,8 +201,6 @@ class PublishCatalogAndQualityMessages(L1OutputDataBase, InterserviceBusMixin):
199
201
  ----------
200
202
  paths
201
203
  The input paths for which to publish frame messages
202
- folder_modifier
203
- A subdirectory to use if the files in paths are not in the base directory
204
204
 
205
205
  Returns
206
206
  -------
@@ -208,7 +208,7 @@ class PublishCatalogAndQualityMessages(L1OutputDataBase, InterserviceBusMixin):
208
208
  """
209
209
  message_bodies = [
210
210
  CatalogFrameMessageBody(
211
- objectName=self.format_object_key(path=p, folder_modifier=folder_modifier),
211
+ objectName=self.format_object_key(path=p),
212
212
  conversationId=str(self.recipe_run_id),
213
213
  bucket=self.destination_bucket,
214
214
  )
@@ -237,7 +237,7 @@ class PublishCatalogAndQualityMessages(L1OutputDataBase, InterserviceBusMixin):
237
237
  message_bodies = [
238
238
  CatalogObjectMessageBody(
239
239
  objectType=object_type,
240
- objectName=self.format_object_key(path=p),
240
+ objectName=self.format_object_key(p),
241
241
  bucket=self.destination_bucket,
242
242
  conversationId=str(self.recipe_run_id),
243
243
  groupId=self.constants.dataset_id,
@@ -260,7 +260,7 @@ class PublishCatalogAndQualityMessages(L1OutputDataBase, InterserviceBusMixin):
260
260
  messages = []
261
261
  messages += self.frame_messages(paths=frames)
262
262
  frame_message_count = len(messages)
263
- messages += self.frame_messages(paths=extras, folder_modifier="extra")
263
+ messages += self.frame_messages(paths=extras)
264
264
  extra_message_count = len(extras)
265
265
  messages += self.object_messages(paths=movies, object_type="MOVIE")
266
266
  object_message_count = len(movies)
@@ -270,4 +270,14 @@ class PublishCatalogAndQualityMessages(L1OutputDataBase, InterserviceBusMixin):
270
270
  with self.telemetry_span(
271
271
  f"Publish messages: {frame_message_count = }, {extra_message_count = }, {object_message_count = }, {dataset_has_quality_data = }"
272
272
  ):
273
+ messages.append(self.quality_report_message)
274
+ with self.telemetry_span("Publish Catalog Messages") as publish_span:
275
+ publish_span.set_attributes(
276
+ {
277
+ "frame_message_count": frame_message_count,
278
+ "extra_message_count": extra_message_count,
279
+ "object_message_count": object_message_count,
280
+ "dataset_has_quality_data": dataset_has_quality_data,
281
+ }
282
+ )
273
283
  self.interservice_bus_publish(messages=messages)
@@ -27,7 +27,6 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
27
27
  filename: str,
28
28
  task_type: TaskName,
29
29
  extra_name: DatasetExtraType,
30
- end_time: str,
31
30
  total_exposure: float | None = None,
32
31
  readout_exposure: float | None = None,
33
32
  ) -> dict:
@@ -39,6 +38,7 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
39
38
  self.constants.dark_observing_program_execution_ids
40
39
  )
41
40
  task_specific_date_begin = self.constants.dark_date_begin
41
+ task_specific_date_end = self.constants.dark_date_end
42
42
  task_specific_raw_frames_per_fpa = (
43
43
  0 # can be updated in construction of dataset extra if required
44
44
  )
@@ -74,6 +74,7 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
74
74
  )
75
75
 
76
76
  task_specific_date_begin = self.constants.solar_gain_date_begin
77
+ task_specific_date_end = self.constants.solar_gain_date_end
77
78
  task_specific_raw_frames_per_fpa = self.constants.solar_gain_num_raw_frames_per_fpa
78
79
  task_specific_telescope_tracking_mode = (
79
80
  self.constants.solar_gain_telescope_tracking_mode
@@ -109,6 +110,7 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
109
110
  )
110
111
 
111
112
  task_specific_date_begin = self.constants.polcal_date_begin
113
+ task_specific_date_end = self.constants.polcal_date_end
112
114
  task_specific_raw_frames_per_fpa = self.constants.polcal_num_raw_frames_per_fpa
113
115
  task_specific_telescope_tracking_mode = (
114
116
  self.constants.polcal_telescope_tracking_mode
@@ -140,14 +142,14 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
140
142
  raise ValueError(f"Unsupported task type {task_type}")
141
143
 
142
144
  start_datetime = datetime.fromisoformat(task_specific_date_begin)
143
- end_datetime = datetime.fromisoformat(end_time)
145
+ end_datetime = datetime.fromisoformat(task_specific_date_end)
144
146
 
145
147
  dataset_extra_header = {
146
148
  DatasetExtraHeaderSection.common: {
147
149
  "BUNIT": "count",
148
150
  "DATE": Time.now().fits,
149
151
  "DATE-BEG": task_specific_date_begin,
150
- "DATE-END": end_time,
152
+ "DATE-END": task_specific_date_end,
151
153
  "TELAPSE": (end_datetime - start_datetime).total_seconds(),
152
154
  "DATE-AVG": (start_datetime + (end_datetime - start_datetime) / 2).isoformat(),
153
155
  "TIMESYS": "UTC",
@@ -263,7 +265,6 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
263
265
  extra_name: DatasetExtraType,
264
266
  total_exposure: float | None = None,
265
267
  readout_exposure: float | None = None,
266
- end_time: str | None = None,
267
268
  ) -> fits.Header:
268
269
  """Build FITS header for dataset extra file."""
269
270
  header = fits.Header()
@@ -273,7 +274,6 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
273
274
  total_exposure=total_exposure,
274
275
  readout_exposure=readout_exposure,
275
276
  extra_name=extra_name,
276
- end_time=end_time,
277
277
  )
278
278
  for section in sections:
279
279
  header.update(all_section_headers[section].items())
@@ -118,7 +118,6 @@ class ConstructDatasetExtrasTest(WriteL1DatasetExtras):
118
118
  extra_name=(
119
119
  DatasetExtraType.dark if task_type == "DARK" else DatasetExtraType.solar_gain
120
120
  ),
121
- end_time="2025-01-01T00:00:00",
122
121
  )
123
122
 
124
123
  self.assemble_and_write_dataset_extra(data=data, header=header, filename=filename)
@@ -140,7 +139,6 @@ class ConstructDatasetExtrasTest(WriteL1DatasetExtras):
140
139
  total_exposure=0.058,
141
140
  readout_exposure=0.029,
142
141
  extra_name=DatasetExtraType.demodulation_matrices,
143
- end_time="2025-01-01T00:00:00",
144
142
  )
145
143
  self.assemble_and_write_dataset_extra(data=data, header=header, filename=filename)
146
144
 
@@ -217,8 +215,5 @@ def test_construct_dataset_extras(
217
215
  assert header["OBSPR_ID"] == "OP1"
218
216
  assert header["EXTOBSID"] == "OP2,OP3"
219
217
  assert header["EXTNAME"] in ["DARK", "SOLAR GAIN", "DEMODULATION MATRICES"]
220
- if header["IPTASK"] == "POLCAL":
221
- assert "POLANGLE" not in header
222
- else:
223
- assert header.get("POLANGLE") == "0.0"
224
- assert header.get("RETANGLE") == "0.0"
218
+ assert header["TELAPSE"] == 3600
219
+ assert header["DATE-AVG"] == "2023-01-01T00:30:00"
@@ -7,8 +7,6 @@ from uuid import uuid4
7
7
  import astropy.units as u
8
8
  import pytest
9
9
  from astropy.io import fits
10
- from dkist_data_simulator.dataset_extras import DatasetExtraBase
11
- from dkist_data_simulator.dataset_extras import InstrumentTables
12
10
  from dkist_data_simulator.spec214.vbi import SimpleVBIDataset
13
11
  from sqids import Sqids
14
12
 
@@ -59,6 +57,9 @@ def scratch_with_l1_frames(recipe_run_id, tmp_path) -> WorkflowFileSystem:
59
57
  scratch.write(
60
58
  file_obj, tags=[Tag.output(), Tag.frame()], relative_path=f"{uuid4().hex}.dat"
61
59
  )
60
+ scratch.write(
61
+ file_obj, tags=[Tag.output(), Tag.extra()], relative_path=f"{uuid4().hex}.dat"
62
+ )
62
63
 
63
64
  return scratch
64
65
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 12.2.0
3
+ Version: 12.2.0rc1
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
@@ -7,6 +7,7 @@ README.rst
7
7
  bitbucket-pipelines.yml
8
8
  pyproject.toml
9
9
  changelog/.gitempty
10
+ changelog/272.feature.rst
10
11
  dkist_processing_common/__init__.py
11
12
  dkist_processing_common/config.py
12
13
  dkist_processing_common/manual.py