dkist-processing-common 11.7.0rc3__tar.gz → 11.7.0rc4__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-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/PKG-INFO +1 -1
  2. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/constants.py +12 -12
  3. dkist_processing_common-11.7.0rc4/dkist_processing_common/parsers/observing_program_id_bud.py +24 -0
  4. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/parse_l0_input_data.py +9 -25
  5. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_parse_l0_input_data.py +4 -3
  6. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_stems.py +35 -0
  7. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common.egg-info/PKG-INFO +1 -1
  8. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common.egg-info/SOURCES.txt +1 -0
  9. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/.gitignore +0 -0
  10. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/.pre-commit-config.yaml +0 -0
  11. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/.readthedocs.yml +0 -0
  12. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/.snyk +0 -0
  13. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/CHANGELOG.rst +0 -0
  14. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/README.rst +0 -0
  15. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/bitbucket-pipelines.yml +0 -0
  16. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/changelog/.gitempty +0 -0
  17. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/changelog/267.feature.1.rst +0 -0
  18. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/changelog/267.feature.2.rst +0 -0
  19. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/changelog/267.feature.rst +0 -0
  20. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/changelog/267.misc.rst +0 -0
  21. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/changelog/267.removal.1.rst +0 -0
  22. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/changelog/267.removal.rst +0 -0
  23. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/__init__.py +0 -0
  24. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/_util/__init__.py +0 -0
  25. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/_util/constants.py +0 -0
  26. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/_util/graphql.py +0 -0
  27. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/_util/scratch.py +0 -0
  28. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/_util/tags.py +0 -0
  29. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/codecs/__init__.py +0 -0
  30. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/codecs/array.py +0 -0
  31. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/codecs/asdf.py +0 -0
  32. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/codecs/basemodel.py +0 -0
  33. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/codecs/bytes.py +0 -0
  34. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/codecs/fits.py +0 -0
  35. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/codecs/iobase.py +0 -0
  36. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/codecs/json.py +0 -0
  37. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/codecs/path.py +0 -0
  38. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/codecs/quality.py +0 -0
  39. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/codecs/str.py +0 -0
  40. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/config.py +0 -0
  41. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
  42. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/fonts/__init__.py +0 -0
  43. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/manual.py +0 -0
  44. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/__init__.py +0 -0
  45. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/dkist_location.py +0 -0
  46. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/fits_access.py +0 -0
  47. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/flower_pot.py +0 -0
  48. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/fried_parameter.py +0 -0
  49. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/graphql.py +0 -0
  50. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/input_dataset.py +0 -0
  51. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/message.py +0 -0
  52. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/message_queue_binding.py +0 -0
  53. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/metric_code.py +0 -0
  54. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/parameters.py +0 -0
  55. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/quality.py +0 -0
  56. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/tags.py +0 -0
  57. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/task_name.py +0 -0
  58. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/telemetry.py +0 -0
  59. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/models/wavelength.py +0 -0
  60. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/__init__.py +0 -0
  61. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/average_bud.py +0 -0
  62. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/cs_step.py +0 -0
  63. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/dsps_repeat.py +0 -0
  64. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/experiment_id_bud.py +0 -0
  65. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/id_bud.py +0 -0
  66. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/l0_fits_access.py +0 -0
  67. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/l1_fits_access.py +0 -0
  68. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/near_bud.py +0 -0
  69. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/proposal_id_bud.py +0 -0
  70. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/quality.py +0 -0
  71. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/retarder.py +0 -0
  72. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/single_value_single_key_flower.py +0 -0
  73. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/task.py +0 -0
  74. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/time.py +0 -0
  75. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/unique_bud.py +0 -0
  76. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/parsers/wavelength.py +0 -0
  77. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/__init__.py +0 -0
  78. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/assemble_movie.py +0 -0
  79. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/base.py +0 -0
  80. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/l1_output_data.py +0 -0
  81. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
  82. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/mixin/globus.py +0 -0
  83. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/mixin/interservice_bus.py +0 -0
  84. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/mixin/metadata_store.py +0 -0
  85. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/mixin/object_store.py +0 -0
  86. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/mixin/quality/__init__.py +0 -0
  87. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/mixin/quality/_base.py +0 -0
  88. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/mixin/quality/_metrics.py +0 -0
  89. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/output_data_base.py +0 -0
  90. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/quality_metrics.py +0 -0
  91. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/teardown.py +0 -0
  92. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/transfer_input_data.py +0 -0
  93. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/trial_catalog.py +0 -0
  94. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/trial_output_data.py +0 -0
  95. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tasks/write_l1.py +0 -0
  96. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/__init__.py +0 -0
  97. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/conftest.py +0 -0
  98. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/mock_metadata_store.py +0 -0
  99. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
  100. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_assemble_quality.py +0 -0
  101. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_base.py +0 -0
  102. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_codecs.py +0 -0
  103. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_constants.py +0 -0
  104. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_cs_step.py +0 -0
  105. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_dkist_location.py +0 -0
  106. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_fits_access.py +0 -0
  107. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_flower_pot.py +0 -0
  108. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_fried_parameter.py +0 -0
  109. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_input_dataset.py +0 -0
  110. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_interservice_bus.py +0 -0
  111. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_interservice_bus_mixin.py +0 -0
  112. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_manual_processing.py +0 -0
  113. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_output_data_base.py +0 -0
  114. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_parameters.py +0 -0
  115. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
  116. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_quality.py +0 -0
  117. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_quality_mixin.py +0 -0
  118. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_scratch.py +0 -0
  119. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
  120. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_tags.py +0 -0
  121. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_task_name.py +0 -0
  122. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_task_parsing.py +0 -0
  123. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_teardown.py +0 -0
  124. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_transfer_input_data.py +0 -0
  125. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
  126. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_trial_catalog.py +0 -0
  127. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_trial_output_data.py +0 -0
  128. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_workflow_task_base.py +0 -0
  129. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common/tests/test_write_l1.py +0 -0
  130. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
  131. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common.egg-info/requires.txt +0 -0
  132. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/dkist_processing_common.egg-info/top_level.txt +0 -0
  133. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/docs/Makefile +0 -0
  134. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/docs/changelog.rst +0 -0
  135. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/docs/conf.py +0 -0
  136. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/docs/index.rst +0 -0
  137. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/docs/landing_page.rst +0 -0
  138. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/docs/make.bat +0 -0
  139. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/docs/requirements.txt +0 -0
  140. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/licenses/LICENSE.rst +0 -0
  141. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/pyproject.toml +0 -0
  142. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 11.7.0rc3
3
+ Version: 11.7.0rc4
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
@@ -44,9 +44,9 @@ class BudName(StrEnum):
44
44
  software_binning_y = "SOFTWARE_BINNING_Y"
45
45
  hls_version = "HLS_VERSION"
46
46
  # Multi-task buds start here:
47
- dark_observing_program_execution_id = "DARK_OBSERVING_PROGRAM_EXECUTION_ID"
48
- solar_gain_observing_program_execution_id = "SOLAR_GAIN_OBSERVING_PROGRAM_EXECUTION_ID"
49
- polcal_observing_program_execution_id = "POLCAL_OBSERVING_PROGRAM_EXECUTION_ID"
47
+ dark_observing_program_execution_ids = "DARK_OBSERVING_PROGRAM_EXECUTION_IDS"
48
+ solar_gain_observing_program_execution_ids = "SOLAR_GAIN_OBSERVING_PROGRAM_EXECUTION_IDS"
49
+ polcal_observing_program_execution_ids = "POLCAL_OBSERVING_PROGRAM_EXECUTION_IDS"
50
50
  dark_date_begin = "DARK_DATE_BEGIN"
51
51
  solar_gain_date_begin = "SOLAR_GAIN_DATE_BEGIN"
52
52
  polcal_date_begin = "POLCAL_DATE_BEGIN"
@@ -285,21 +285,21 @@ class ConstantsBase:
285
285
  # Multi-task constants start here:
286
286
 
287
287
  @property
288
- def dark_observing_program_execution_id(self) -> list[str]:
289
- """Return the observing program execution id constant for the dark task."""
290
- observing_programs = self._db_dict[BudName.dark_observing_program_execution_id]
288
+ def dark_observing_program_execution_ids(self) -> list[str]:
289
+ """Return the observing program execution ids constant for the dark task."""
290
+ observing_programs = self._db_dict[BudName.dark_observing_program_execution_ids]
291
291
  return list(observing_programs)
292
292
 
293
293
  @property
294
- def solar_gain_observing_program_execution_id(self) -> list[str]:
295
- """Return the observing program execution id constant for the solar_gain task."""
296
- observing_programs = self._db_dict[BudName.solar_gain_observing_program_execution_id]
294
+ def solar_gain_observing_program_execution_ids(self) -> list[str]:
295
+ """Return the observing program execution ids constant for the solar_gain task."""
296
+ observing_programs = self._db_dict[BudName.solar_gain_observing_program_execution_ids]
297
297
  return list(observing_programs)
298
298
 
299
299
  @property
300
- def polcal_observing_program_execution_id(self) -> list[str]:
301
- """Return the observing program execution id constant."""
302
- observing_programs = self._db_dict[BudName.polcal_observing_program_execution_id]
300
+ def polcal_observing_program_execution_ids(self) -> list[str]:
301
+ """Return the observing program execution ids constant."""
302
+ observing_programs = self._db_dict[BudName.polcal_observing_program_execution_ids]
303
303
  return list(observing_programs)
304
304
 
305
305
  @property
@@ -0,0 +1,24 @@
1
+ """Observing Program Id parser."""
2
+
3
+ from typing import Callable
4
+
5
+ from dkist_processing_common.models.fits_access import MetadataKey
6
+ from dkist_processing_common.parsers.id_bud import TaskContributingIdsBud
7
+ from dkist_processing_common.parsers.task import passthrough_header_ip_task
8
+
9
+
10
+ class TaskContributingObservingProgramExecutionIdsBud(TaskContributingIdsBud):
11
+ """Class to create a Bud for the supporting observing_program_ids."""
12
+
13
+ def __init__(
14
+ self,
15
+ constant_name: str,
16
+ ip_task_types: str | list[str],
17
+ task_type_parsing_function: Callable = passthrough_header_ip_task,
18
+ ):
19
+ super().__init__(
20
+ constant_name=constant_name,
21
+ metadata_key=MetadataKey.observing_program_execution_id,
22
+ ip_task_types=ip_task_types,
23
+ task_type_parsing_function=task_type_parsing_function,
24
+ )
@@ -37,7 +37,9 @@ from dkist_processing_common.models.task_name import TaskName
37
37
  from dkist_processing_common.parsers.average_bud import TaskAverageBud
38
38
  from dkist_processing_common.parsers.experiment_id_bud import ContributingExperimentIdsBud
39
39
  from dkist_processing_common.parsers.experiment_id_bud import ExperimentIdBud
40
- from dkist_processing_common.parsers.id_bud import TaskContributingIdsBud
40
+ from dkist_processing_common.parsers.observing_program_id_bud import (
41
+ TaskContributingObservingProgramExecutionIdsBud,
42
+ )
41
43
  from dkist_processing_common.parsers.proposal_id_bud import ContributingProposalIdsBud
42
44
  from dkist_processing_common.parsers.proposal_id_bud import ProposalIdBud
43
45
  from dkist_processing_common.parsers.task import parse_header_ip_task_with_gains
@@ -88,20 +90,17 @@ def dataset_extra_bud_factory() -> list[S]:
88
90
  constant_name=BudName.hls_version,
89
91
  metadata_key=MetadataKey.hls_version,
90
92
  ),
91
- TaskContributingIdsBud(
92
- constant_name=BudName.dark_observing_program_execution_id,
93
- metadata_key=MetadataKey.observing_program_execution_id,
93
+ TaskContributingObservingProgramExecutionIdsBud(
94
+ constant_name=BudName.dark_observing_program_execution_ids,
94
95
  ip_task_types=TaskName.dark,
95
96
  ),
96
- TaskContributingIdsBud(
97
- constant_name=BudName.solar_gain_observing_program_execution_id,
98
- metadata_key=MetadataKey.observing_program_execution_id,
97
+ TaskContributingObservingProgramExecutionIdsBud(
98
+ constant_name=BudName.solar_gain_observing_program_execution_ids,
99
99
  ip_task_types=TaskName.solar_gain,
100
100
  task_type_parsing_function=parse_header_ip_task_with_gains,
101
101
  ),
102
- TaskContributingIdsBud(
103
- constant_name=BudName.polcal_observing_program_execution_id,
104
- metadata_key=MetadataKey.observing_program_execution_id,
102
+ TaskContributingObservingProgramExecutionIdsBud(
103
+ constant_name=BudName.polcal_observing_program_execution_ids,
105
104
  ip_task_types=TaskName.polcal,
106
105
  ),
107
106
  TaskUniqueBud(
@@ -120,11 +119,6 @@ def dataset_extra_bud_factory() -> list[S]:
120
119
  metadata_key=MetadataKey.num_raw_frames_per_fpa,
121
120
  ip_task_types=TaskName.polcal,
122
121
  ),
123
- TaskUniqueBud(
124
- constant_name=BudName.dark_telescope_tracking_mode,
125
- metadata_key=MetadataKey.telescope_tracking_mode,
126
- ip_task_types=TaskName.dark,
127
- ),
128
122
  TaskUniqueBud(
129
123
  constant_name=BudName.solar_gain_telescope_tracking_mode,
130
124
  metadata_key=MetadataKey.telescope_tracking_mode,
@@ -136,11 +130,6 @@ def dataset_extra_bud_factory() -> list[S]:
136
130
  metadata_key=MetadataKey.telescope_tracking_mode,
137
131
  ip_task_types=TaskName.polcal,
138
132
  ),
139
- TaskUniqueBud(
140
- constant_name=BudName.dark_coude_table_tracking_mode,
141
- metadata_key=MetadataKey.coude_table_tracking_mode,
142
- ip_task_types=TaskName.dark,
143
- ),
144
133
  TaskUniqueBud(
145
134
  constant_name=BudName.solar_gain_coude_table_tracking_mode,
146
135
  metadata_key=MetadataKey.coude_table_tracking_mode,
@@ -152,11 +141,6 @@ def dataset_extra_bud_factory() -> list[S]:
152
141
  metadata_key=MetadataKey.coude_table_tracking_mode,
153
142
  ip_task_types=TaskName.polcal,
154
143
  ),
155
- TaskUniqueBud(
156
- constant_name=BudName.dark_telescope_scanning_mode,
157
- metadata_key=MetadataKey.telescope_scanning_mode,
158
- ip_task_types=TaskName.dark,
159
- ),
160
144
  TaskUniqueBud(
161
145
  constant_name=BudName.solar_gain_telescope_scanning_mode,
162
146
  metadata_key=MetadataKey.telescope_scanning_mode,
@@ -260,7 +260,7 @@ def test_subclass_flowers(visp_parse_inputs_task, max_cs_step_time_sec):
260
260
  tag_pot, constant_pot = visp_parse_inputs_task.make_flower_pots()
261
261
 
262
262
  assert len(tag_pot.stems) == 1
263
- assert len(constant_pot.stems) == 64
263
+ assert len(constant_pot.stems) == 61
264
264
  all_flower_names = [StemName.modstate]
265
265
  assert sorted([f.stem_name for f in tag_pot.stems]) == sorted(all_flower_names)
266
266
  all_bud_names = [b.stem_name for b in default_constant_bud_factory()] + [BudName.num_modstates]
@@ -277,7 +277,7 @@ def test_dataset_extra_bud_factory(visp_parse_inputs_task, max_cs_step_time_sec)
277
277
  stem_names = [f.stem_name.value for f in constant_pot.stems]
278
278
  bud_name_base = [
279
279
  "DATE_BEGIN",
280
- "OBSERVING_PROGRAM_EXECUTION_ID",
280
+ "OBSERVING_PROGRAM_EXECUTION_IDS",
281
281
  "NUM_RAW_FRAMES_PER_FPA",
282
282
  "TELESCOPE_TRACKING_MODE",
283
283
  "COUDE_TABLE_TRACKING_MODE",
@@ -295,8 +295,9 @@ def test_dataset_extra_bud_factory(visp_parse_inputs_task, max_cs_step_time_sec)
295
295
  "GOS_LEVEL0_STATUS",
296
296
  ]
297
297
  for base in bud_name_base:
298
- assert "DARK_" + base in stem_names
299
298
  assert "SOLAR_GAIN_" + base in stem_names
299
+ if "MODE" not in base:
300
+ assert "DARK_" + base in stem_names
300
301
  if "GOS" not in base:
301
302
  assert "POLCAL_" + base in stem_names
302
303
 
@@ -19,6 +19,9 @@ from dkist_processing_common.parsers.experiment_id_bud import ExperimentIdBud
19
19
  from dkist_processing_common.parsers.id_bud import TaskContributingIdsBud
20
20
  from dkist_processing_common.parsers.near_bud import NearFloatBud
21
21
  from dkist_processing_common.parsers.near_bud import TaskNearFloatBud
22
+ from dkist_processing_common.parsers.observing_program_id_bud import (
23
+ TaskContributingObservingProgramExecutionIdsBud,
24
+ )
22
25
  from dkist_processing_common.parsers.proposal_id_bud import ContributingProposalIdsBud
23
26
  from dkist_processing_common.parsers.proposal_id_bud import ProposalIdBud
24
27
  from dkist_processing_common.parsers.retarder import RetarderNameBud
@@ -51,6 +54,7 @@ class FitsReaderMetadataKey(StrEnum):
51
54
  near_thing = "near"
52
55
  proposal_id = "ID___013"
53
56
  experiment_id = "ID___012"
57
+ observing_program_execution_id = "ID___008"
54
58
  ip_task_type = "DKIST004"
55
59
  ip_start_time = "DKIST011"
56
60
  fpa_exposure_time_ms = "XPOSURE"
@@ -77,6 +81,9 @@ class FitsReader(FitsAccessBase):
77
81
  self.name = name
78
82
  self.proposal_id: str = self.header.get(FitsReaderMetadataKey.proposal_id)
79
83
  self.experiment_id: str = self.header.get(FitsReaderMetadataKey.experiment_id)
84
+ self.observing_program_execution_id: str = self.header.get(
85
+ FitsReaderMetadataKey.observing_program_execution_id
86
+ )
80
87
  self.ip_task_type: str = self.header.get(FitsReaderMetadataKey.ip_task_type)
81
88
  self.ip_start_time: str = self.header.get(FitsReaderMetadataKey.ip_start_time)
82
89
  self.fpa_exposure_time_ms: float = self.header.get(
@@ -113,6 +120,7 @@ def basic_header_objs():
113
120
  "DKIST004": "observe",
114
121
  "ID___012": "experiment_id_1",
115
122
  "ID___013": "proposal_id_1",
123
+ "ID___008": "observing_program_execution_id_1",
116
124
  "XPOSURE": 0.0013000123,
117
125
  "TEXPOSUR": 10.0,
118
126
  "NSUMEXP": 3,
@@ -131,6 +139,7 @@ def basic_header_objs():
131
139
  "DKIST004": "observe",
132
140
  "ID___012": "experiment_id_1",
133
141
  "ID___013": "proposal_id_1",
142
+ "ID___008": "observing_program_execution_id_2",
134
143
  "XPOSURE": 0.0013000987,
135
144
  "TEXPOSUR": 10.0,
136
145
  "NSUMEXP": 3,
@@ -150,6 +159,7 @@ def basic_header_objs():
150
159
  "DKIST004": "dark",
151
160
  "ID___012": "experiment_id_2",
152
161
  "ID___013": "proposal_id_2",
162
+ "ID___008": "observing_program_execution_id_2",
153
163
  "XPOSURE": 12.345,
154
164
  "TEXPOSUR": 1.123456789,
155
165
  "NSUMEXP": 1,
@@ -170,6 +180,7 @@ def basic_header_objs():
170
180
  "DKIST004": "observe",
171
181
  "ID___012": "experiment_id_1",
172
182
  "ID___013": "proposal_id_1",
183
+ "ID___008": "observing_program_execution_id_1",
173
184
  "XPOSURE": 100.0,
174
185
  "TEXPOSUR": 11.0,
175
186
  "NSUMEXP": 4,
@@ -185,6 +196,7 @@ def basic_header_objs():
185
196
  {
186
197
  "DKIST004": "gain",
187
198
  "ID___013": "proposal_id_1",
199
+ "ID___008": "observing_program_execution_id_1",
188
200
  "id_key": 0,
189
201
  "constant": 6.28,
190
202
  "near": 1.23,
@@ -603,6 +615,29 @@ def test_task_contributing_ids_bud(basic_header_objs):
603
615
  assert sorted(list(petal[0].value)) == ["experiment_id_2"]
604
616
 
605
617
 
618
+ def test_task_contributing_observing_program_ids_bud(basic_header_objs):
619
+ """
620
+ Given: A set of headers with observing program ID values for different tasks
621
+ When: Ingesting the headers with a TaskContributingIdsBud for a task type
622
+ Then: The Bud's petal is just the experiment ID for the that task type
623
+ """
624
+ bud = TaskContributingObservingProgramExecutionIdsBud(
625
+ constant_name="NOT_A_REAL_BUD",
626
+ ip_task_types=TaskName.observe,
627
+ )
628
+ assert bud.stem_name == "NOT_A_REAL_BUD"
629
+ for fo in basic_header_objs:
630
+ key = fo.name
631
+ bud.update(key, fo)
632
+
633
+ petal = list(bud.petals)
634
+ assert len(petal) == 1
635
+ assert sorted(list(petal[0].value)) == [
636
+ "observing_program_execution_id_1",
637
+ "observing_program_execution_id_2",
638
+ ]
639
+
640
+
606
641
  def test_exp_time_flower(basic_header_objs):
607
642
  """
608
643
  Given: A set of filepaths and associated headers with XPOSURE keywords
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 11.7.0rc3
3
+ Version: 11.7.0rc4
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
@@ -65,6 +65,7 @@ dkist_processing_common/parsers/id_bud.py
65
65
  dkist_processing_common/parsers/l0_fits_access.py
66
66
  dkist_processing_common/parsers/l1_fits_access.py
67
67
  dkist_processing_common/parsers/near_bud.py
68
+ dkist_processing_common/parsers/observing_program_id_bud.py
68
69
  dkist_processing_common/parsers/proposal_id_bud.py
69
70
  dkist_processing_common/parsers/quality.py
70
71
  dkist_processing_common/parsers/retarder.py