dkist-processing-common 11.7.0rc3__tar.gz → 11.7.0rc5__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.0rc5}/PKG-INFO +1 -1
  2. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/constants.py +12 -36
  3. dkist_processing_common-11.7.0rc5/dkist_processing_common/parsers/observing_program_id_bud.py +24 -0
  4. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/parse_l0_input_data.py +9 -30
  5. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_parse_l0_input_data.py +9 -3
  6. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_stems.py +35 -0
  7. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common.egg-info/PKG-INFO +1 -1
  8. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common.egg-info/SOURCES.txt +1 -0
  9. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/.gitignore +0 -0
  10. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/.pre-commit-config.yaml +0 -0
  11. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/.readthedocs.yml +0 -0
  12. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/.snyk +0 -0
  13. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/CHANGELOG.rst +0 -0
  14. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/README.rst +0 -0
  15. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/bitbucket-pipelines.yml +0 -0
  16. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/changelog/.gitempty +0 -0
  17. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/changelog/267.feature.1.rst +0 -0
  18. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/changelog/267.feature.2.rst +0 -0
  19. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/changelog/267.feature.rst +0 -0
  20. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/changelog/267.misc.rst +0 -0
  21. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/changelog/267.removal.1.rst +0 -0
  22. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/changelog/267.removal.rst +0 -0
  23. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/__init__.py +0 -0
  24. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/_util/__init__.py +0 -0
  25. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/_util/constants.py +0 -0
  26. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/_util/graphql.py +0 -0
  27. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/_util/scratch.py +0 -0
  28. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/_util/tags.py +0 -0
  29. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/codecs/__init__.py +0 -0
  30. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/codecs/array.py +0 -0
  31. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/codecs/asdf.py +0 -0
  32. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/codecs/basemodel.py +0 -0
  33. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/codecs/bytes.py +0 -0
  34. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/codecs/fits.py +0 -0
  35. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/codecs/iobase.py +0 -0
  36. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/codecs/json.py +0 -0
  37. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/codecs/path.py +0 -0
  38. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/codecs/quality.py +0 -0
  39. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/codecs/str.py +0 -0
  40. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/config.py +0 -0
  41. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
  42. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/fonts/__init__.py +0 -0
  43. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/manual.py +0 -0
  44. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/__init__.py +0 -0
  45. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/dkist_location.py +0 -0
  46. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/fits_access.py +0 -0
  47. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/flower_pot.py +0 -0
  48. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/fried_parameter.py +0 -0
  49. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/graphql.py +0 -0
  50. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/input_dataset.py +0 -0
  51. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/message.py +0 -0
  52. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/message_queue_binding.py +0 -0
  53. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/metric_code.py +0 -0
  54. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/parameters.py +0 -0
  55. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/quality.py +0 -0
  56. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/tags.py +0 -0
  57. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/task_name.py +0 -0
  58. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/telemetry.py +0 -0
  59. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/models/wavelength.py +0 -0
  60. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/__init__.py +0 -0
  61. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/average_bud.py +0 -0
  62. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/cs_step.py +0 -0
  63. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/dsps_repeat.py +0 -0
  64. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/experiment_id_bud.py +0 -0
  65. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/id_bud.py +0 -0
  66. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/l0_fits_access.py +0 -0
  67. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/l1_fits_access.py +0 -0
  68. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/near_bud.py +0 -0
  69. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/proposal_id_bud.py +0 -0
  70. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/quality.py +0 -0
  71. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/retarder.py +0 -0
  72. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/single_value_single_key_flower.py +0 -0
  73. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/task.py +0 -0
  74. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/time.py +0 -0
  75. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/unique_bud.py +0 -0
  76. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/parsers/wavelength.py +0 -0
  77. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/__init__.py +0 -0
  78. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/assemble_movie.py +0 -0
  79. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/base.py +0 -0
  80. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/l1_output_data.py +0 -0
  81. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
  82. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/mixin/globus.py +0 -0
  83. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/mixin/interservice_bus.py +0 -0
  84. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/mixin/metadata_store.py +0 -0
  85. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/mixin/object_store.py +0 -0
  86. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/mixin/quality/__init__.py +0 -0
  87. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/mixin/quality/_base.py +0 -0
  88. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/mixin/quality/_metrics.py +0 -0
  89. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/output_data_base.py +0 -0
  90. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/quality_metrics.py +0 -0
  91. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/teardown.py +0 -0
  92. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/transfer_input_data.py +0 -0
  93. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/trial_catalog.py +0 -0
  94. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/trial_output_data.py +0 -0
  95. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tasks/write_l1.py +0 -0
  96. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/__init__.py +0 -0
  97. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/conftest.py +0 -0
  98. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/mock_metadata_store.py +0 -0
  99. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
  100. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_assemble_quality.py +0 -0
  101. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_base.py +0 -0
  102. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_codecs.py +0 -0
  103. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_constants.py +0 -0
  104. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_cs_step.py +0 -0
  105. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_dkist_location.py +0 -0
  106. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_fits_access.py +0 -0
  107. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_flower_pot.py +0 -0
  108. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_fried_parameter.py +0 -0
  109. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_input_dataset.py +0 -0
  110. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_interservice_bus.py +0 -0
  111. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_interservice_bus_mixin.py +0 -0
  112. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_manual_processing.py +0 -0
  113. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_output_data_base.py +0 -0
  114. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_parameters.py +0 -0
  115. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
  116. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_quality.py +0 -0
  117. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_quality_mixin.py +0 -0
  118. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_scratch.py +0 -0
  119. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
  120. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_tags.py +0 -0
  121. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_task_name.py +0 -0
  122. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_task_parsing.py +0 -0
  123. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_teardown.py +0 -0
  124. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_transfer_input_data.py +0 -0
  125. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
  126. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_trial_catalog.py +0 -0
  127. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_trial_output_data.py +0 -0
  128. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_workflow_task_base.py +0 -0
  129. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common/tests/test_write_l1.py +0 -0
  130. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
  131. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common.egg-info/requires.txt +0 -0
  132. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/dkist_processing_common.egg-info/top_level.txt +0 -0
  133. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/docs/Makefile +0 -0
  134. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/docs/changelog.rst +0 -0
  135. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/docs/conf.py +0 -0
  136. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/docs/index.rst +0 -0
  137. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/docs/landing_page.rst +0 -0
  138. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/docs/make.bat +0 -0
  139. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/docs/requirements.txt +0 -0
  140. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/licenses/LICENSE.rst +0 -0
  141. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/pyproject.toml +0 -0
  142. {dkist_processing_common-11.7.0rc3 → dkist_processing_common-11.7.0rc5}/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.0rc5
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,25 +44,21 @@ 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"
53
53
  dark_date_end = "DARK_DATE_END"
54
54
  solar_gain_date_end = "SOLAR_GAIN_DATE_END"
55
55
  polcal_date_end = "POLCAL_DATE_END"
56
- dark_num_raw_frames_per_fpa = "DARK_NUM_RAW_FRAMES_PER_FPA"
57
56
  solar_gain_num_raw_frames_per_fpa = "SOLAR_GAIN_NUM_RAW_FRAMES_PER_FPA"
58
57
  polcal_num_raw_frames_per_fpa = "POLCAL_NUM_RAW_FRAMES_PER_FPA"
59
- dark_telescope_tracking_mode = "DARK_TELESCOPE_TRACKING_MODE"
60
58
  solar_gain_telescope_tracking_mode = "SOLAR_GAIN_TELESCOPE_TRACKING_MODE"
61
59
  polcal_telescope_tracking_mode = "POLCAL_TELESCOPE_TRACKING_MODE"
62
- dark_coude_table_tracking_mode = "DARK_COUDE_TABLE_TRACKING_MODE"
63
60
  solar_gain_coude_table_tracking_mode = "SOLAR_GAIN_COUDE_TABLE_TRACKING_MODE"
64
61
  polcal_coude_table_tracking_mode = "POLCAL_COUDE_TABLE_TRACKING_MODE"
65
- dark_telescope_scanning_mode = "DARK_TELESCOPE_SCANNING_MODE"
66
62
  solar_gain_telescope_scanning_mode = "SOLAR_GAIN_TELESCOPE_SCANNING_MODE"
67
63
  polcal_telescope_scanning_mode = "POLCAL_TELESCOPE_SCANNING_MODE"
68
64
  dark_average_light_level = "DARK_AVERAGE_LIGHT_LEVEL"
@@ -285,21 +281,21 @@ class ConstantsBase:
285
281
  # Multi-task constants start here:
286
282
 
287
283
  @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]
284
+ def dark_observing_program_execution_ids(self) -> list[str]:
285
+ """Return the observing program execution ids constant for the dark task."""
286
+ observing_programs = self._db_dict[BudName.dark_observing_program_execution_ids]
291
287
  return list(observing_programs)
292
288
 
293
289
  @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]
290
+ def solar_gain_observing_program_execution_ids(self) -> list[str]:
291
+ """Return the observing program execution ids constant for the solar_gain task."""
292
+ observing_programs = self._db_dict[BudName.solar_gain_observing_program_execution_ids]
297
293
  return list(observing_programs)
298
294
 
299
295
  @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]
296
+ def polcal_observing_program_execution_ids(self) -> list[str]:
297
+ """Return the observing program execution ids constant."""
298
+ observing_programs = self._db_dict[BudName.polcal_observing_program_execution_ids]
303
299
  return list(observing_programs)
304
300
 
305
301
  @property
@@ -332,11 +328,6 @@ class ConstantsBase:
332
328
  """Return the date end constant for the polcal task."""
333
329
  return self._db_dict[BudName.polcal_date_end]
334
330
 
335
- @property
336
- def dark_num_raw_frames_per_fpa(self) -> int:
337
- """Return the number of raw frames per fpa constant for the dark task."""
338
- return self._db_dict[BudName.dark_num_raw_frames_per_fpa]
339
-
340
331
  @property
341
332
  def solar_gain_num_raw_frames_per_fpa(self) -> int:
342
333
  """Return the number of raw frames per fpa constant for the solar gain task."""
@@ -347,11 +338,6 @@ class ConstantsBase:
347
338
  """Return the num raw frames per fpa constant for the polcal task."""
348
339
  return self._db_dict[BudName.polcal_num_raw_frames_per_fpa]
349
340
 
350
- @property
351
- def dark_telescope_tracking_mode(self) -> str:
352
- """Return the telescope tracking mode constant for the dark task."""
353
- return self._db_dict[BudName.dark_telescope_tracking_mode]
354
-
355
341
  @property
356
342
  def solar_gain_telescope_tracking_mode(self) -> str:
357
343
  """Return the telescope tracking mode constant for the solar gain task."""
@@ -362,11 +348,6 @@ class ConstantsBase:
362
348
  """Return the telescope tracking mode constant for the polcal task."""
363
349
  return self._db_dict[BudName.polcal_telescope_tracking_mode]
364
350
 
365
- @property
366
- def dark_coude_table_tracking_mode(self) -> str:
367
- """Return the coude table tracking mode constant for the dark task."""
368
- return self._db_dict[BudName.dark_coude_table_tracking_mode]
369
-
370
351
  @property
371
352
  def solar_gain_coude_table_tracking_mode(self) -> str:
372
353
  """Return the coude table tracking mode constant for the solar gain task."""
@@ -377,11 +358,6 @@ class ConstantsBase:
377
358
  """Return the coude table tracking mode constant for the polcal task."""
378
359
  return self._db_dict[BudName.polcal_coude_table_tracking_mode]
379
360
 
380
- @property
381
- def dark_telescope_scanning_mode(self) -> str:
382
- """Return the telescope scanning mode constant for the dark task."""
383
- return self._db_dict[BudName.dark_telescope_scanning_mode]
384
-
385
361
  @property
386
362
  def solar_gain_telescope_scanning_mode(self) -> str:
387
363
  """Return the telescope scanning mode constant for the solar gain task."""
@@ -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_execution_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,27 +90,19 @@ 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
- TaskUniqueBud(
108
- constant_name=BudName.dark_num_raw_frames_per_fpa,
109
- metadata_key=MetadataKey.num_raw_frames_per_fpa,
110
- ip_task_types=TaskName.dark,
111
- ),
112
106
  TaskUniqueBud(
113
107
  constant_name=BudName.solar_gain_num_raw_frames_per_fpa,
114
108
  metadata_key=MetadataKey.num_raw_frames_per_fpa,
@@ -120,11 +114,6 @@ def dataset_extra_bud_factory() -> list[S]:
120
114
  metadata_key=MetadataKey.num_raw_frames_per_fpa,
121
115
  ip_task_types=TaskName.polcal,
122
116
  ),
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
117
  TaskUniqueBud(
129
118
  constant_name=BudName.solar_gain_telescope_tracking_mode,
130
119
  metadata_key=MetadataKey.telescope_tracking_mode,
@@ -136,11 +125,6 @@ def dataset_extra_bud_factory() -> list[S]:
136
125
  metadata_key=MetadataKey.telescope_tracking_mode,
137
126
  ip_task_types=TaskName.polcal,
138
127
  ),
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
128
  TaskUniqueBud(
145
129
  constant_name=BudName.solar_gain_coude_table_tracking_mode,
146
130
  metadata_key=MetadataKey.coude_table_tracking_mode,
@@ -152,11 +136,6 @@ def dataset_extra_bud_factory() -> list[S]:
152
136
  metadata_key=MetadataKey.coude_table_tracking_mode,
153
137
  ip_task_types=TaskName.polcal,
154
138
  ),
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
139
  TaskUniqueBud(
161
140
  constant_name=BudName.solar_gain_telescope_scanning_mode,
162
141
  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) == 60
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,14 @@ 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 base not in [
300
+ "NUM_RAW_FRAMES_PER_FPA",
301
+ "TELESCOPE_TRACKING_MODE",
302
+ "COUDE_TABLE_TRACKING_MODE",
303
+ "TELESCOPE_SCANNING_MODE",
304
+ ]:
305
+ assert "DARK_" + base in stem_names
300
306
  if "GOS" not in base:
301
307
  assert "POLCAL_" + base in stem_names
302
308
 
@@ -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_execution_ids_bud(basic_header_objs):
619
+ """
620
+ Given: A set of headers with observing program execution ID values for different tasks
621
+ When: Ingesting the headers with a TaskContributingObservingProgramExecutionIdsBud for a task type
622
+ Then: The Bud's petal is the observing program execution IDs 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.0rc5
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