dkist-processing-common 11.2.1rc3__tar.gz → 11.3.0__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 (134) hide show
  1. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/.pre-commit-config.yaml +6 -6
  2. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/CHANGELOG.rst +27 -0
  3. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/PKG-INFO +2 -2
  4. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/__init__.py +1 -0
  5. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/_util/constants.py +1 -0
  6. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/_util/graphql.py +1 -0
  7. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/_util/tags.py +1 -0
  8. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/codecs/array.py +1 -0
  9. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/codecs/asdf.py +1 -0
  10. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/codecs/basemodel.py +1 -0
  11. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/codecs/bytes.py +1 -0
  12. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/codecs/fits.py +1 -0
  13. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/codecs/iobase.py +1 -0
  14. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/codecs/json.py +1 -0
  15. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/codecs/path.py +1 -0
  16. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/codecs/str.py +1 -0
  17. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/config.py +1 -0
  18. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/constants.py +1 -0
  19. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/fits_access.py +1 -0
  20. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/flower_pot.py +1 -0
  21. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/graphql.py +2 -1
  22. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/input_dataset.py +3 -2
  23. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/metric_code.py +1 -0
  24. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/quality.py +1 -0
  25. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/tags.py +1 -0
  26. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/task_name.py +1 -0
  27. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/wavelength.py +2 -1
  28. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/cs_step.py +1 -0
  29. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/dsps_repeat.py +1 -0
  30. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/experiment_id_bud.py +1 -0
  31. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/id_bud.py +1 -0
  32. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/l0_fits_access.py +1 -0
  33. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/l1_fits_access.py +1 -0
  34. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/near_bud.py +1 -0
  35. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/proposal_id_bud.py +1 -0
  36. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/quality.py +1 -0
  37. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/retarder.py +1 -0
  38. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/single_value_single_key_flower.py +1 -0
  39. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/task.py +1 -0
  40. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/time.py +1 -0
  41. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/unique_bud.py +1 -0
  42. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/wavelength.py +1 -0
  43. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/__init__.py +3 -2
  44. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/assemble_movie.py +1 -0
  45. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/base.py +1 -0
  46. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/mixin/interservice_bus.py +1 -0
  47. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/mixin/object_store.py +1 -0
  48. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/mixin/quality/__init__.py +1 -0
  49. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/mixin/quality/_base.py +1 -0
  50. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/mixin/quality/_metrics.py +1 -0
  51. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/output_data_base.py +1 -0
  52. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/trial_catalog.py +3 -2
  53. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/trial_output_data.py +1 -0
  54. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/write_l1.py +19 -8
  55. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/conftest.py +1 -0
  56. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/mock_metadata_store.py +2 -3
  57. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_interservice_bus.py +1 -0
  58. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_interservice_bus_mixin.py +1 -0
  59. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_manual_processing.py +1 -2
  60. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_output_data_base.py +1 -2
  61. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_parse_l0_input_data.py +1 -0
  62. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_quality.py +1 -0
  63. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_scratch.py +2 -1
  64. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_tags.py +1 -0
  65. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_transfer_input_data.py +2 -3
  66. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_trial_catalog.py +1 -0
  67. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_workflow_task_base.py +1 -2
  68. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_write_l1.py +8 -10
  69. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common.egg-info/PKG-INFO +2 -2
  70. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common.egg-info/SOURCES.txt +0 -1
  71. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common.egg-info/requires.txt +1 -1
  72. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/docs/conf.py +1 -0
  73. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/pyproject.toml +10 -1
  74. dkist_processing_common-11.2.1rc3/changelog/262.misc.rst +0 -1
  75. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/.gitignore +0 -0
  76. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/.readthedocs.yml +0 -0
  77. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/.snyk +0 -0
  78. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/README.rst +0 -0
  79. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/bitbucket-pipelines.yml +0 -0
  80. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/changelog/.gitempty +0 -0
  81. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/_util/__init__.py +0 -0
  82. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/_util/scratch.py +1 -1
  83. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/codecs/__init__.py +0 -0
  84. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/codecs/quality.py +1 -1
  85. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
  86. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/fonts/__init__.py +0 -0
  87. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/manual.py +1 -1
  88. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/__init__.py +0 -0
  89. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/dkist_location.py +1 -1
  90. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/fried_parameter.py +0 -0
  91. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/message.py +1 -1
  92. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/message_queue_binding.py +1 -1
  93. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/models/parameters.py +1 -1
  94. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/parsers/__init__.py +0 -0
  95. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/l1_output_data.py +1 -1
  96. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
  97. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/mixin/globus.py +1 -1
  98. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/mixin/metadata_store.py +1 -1
  99. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/parse_l0_input_data.py +1 -1
  100. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/quality_metrics.py +1 -1
  101. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/teardown.py +1 -1
  102. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tasks/transfer_input_data.py +1 -1
  103. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/__init__.py +0 -0
  104. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
  105. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_assemble_quality.py +0 -0
  106. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_base.py +0 -0
  107. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_codecs.py +2 -2
  108. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_constants.py +0 -0
  109. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_cs_step.py +0 -0
  110. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_dkist_location.py +0 -0
  111. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_fits_access.py +0 -0
  112. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_flower_pot.py +0 -0
  113. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_fried_parameter.py +0 -0
  114. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_input_dataset.py +0 -0
  115. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_parameters.py +1 -1
  116. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
  117. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_quality_mixin.py +0 -0
  118. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_stems.py +1 -1
  119. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
  120. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_task_name.py +0 -0
  121. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_task_parsing.py +0 -0
  122. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_teardown.py +1 -1
  123. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
  124. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common/tests/test_trial_output_data.py +1 -1
  125. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
  126. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/dkist_processing_common.egg-info/top_level.txt +0 -0
  127. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/docs/Makefile +0 -0
  128. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/docs/changelog.rst +0 -0
  129. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/docs/index.rst +0 -0
  130. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/docs/landing_page.rst +0 -0
  131. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/docs/make.bat +0 -0
  132. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/docs/requirements.txt +0 -0
  133. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/licenses/LICENSE.rst +0 -0
  134. {dkist_processing_common-11.2.1rc3 → dkist_processing_common-11.3.0}/setup.cfg +0 -0
@@ -2,7 +2,7 @@
2
2
  # See https://pre-commit.com/hooks.html for more hooks
3
3
  repos:
4
4
  - repo: https://github.com/pre-commit/pre-commit-hooks
5
- rev: v2.4.0
5
+ rev: v5.0.0
6
6
  hooks:
7
7
  - id: trailing-whitespace
8
8
  - id: end-of-file-fixer
@@ -11,14 +11,14 @@ repos:
11
11
  args: ['--maxkb=1024']
12
12
  - id: debug-statements
13
13
  - repo: https://github.com/psf/black
14
- rev: 22.3.0
14
+ rev: 25.1.0
15
15
  hooks:
16
16
  - id: black
17
- args: [ "-l 100" ]
18
- - repo: https://github.com/asottile/reorder_python_imports
19
- rev: v2.3.5
17
+ - repo: https://github.com/pycqa/isort
18
+ rev: 5.12.0
20
19
  hooks:
21
- - id: reorder-python-imports
20
+ - id: isort
21
+ name: isort (python)
22
22
  - repo: https://github.com/pycqa/pydocstyle
23
23
  rev: 6.3.0 # pick a git hash / tag to point to
24
24
  hooks:
@@ -1,3 +1,30 @@
1
+ v11.3.0 (2025-08-30)
2
+ ====================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - Split out writing L1 frame timing headers so that their calculation can be separately defined by instruments, as required. (`#263 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/263>`__)
8
+ - Update pre-commit hook versions and replace python-reorder-imports with isort. (`#264 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/264>`__)
9
+
10
+
11
+ v11.2.1 (2025-08-12)
12
+ ====================
13
+
14
+ Bugfixes
15
+ --------
16
+
17
+ - Add `multi_plot_data` to quality creation mutation when submitting quality report data. (`#262 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/262>`__)
18
+
19
+
20
+ Misc
21
+ ----
22
+
23
+ - Explicitly set color and ordering of lines in wavecal metric plots.
24
+ This gets around issues with order not being preserved in the quality database. (`#262 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/262>`__)
25
+ - Update database name for vertical multi-pane plot metric data. It's now called "multi_plot_data". (`#262 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/262>`__)
26
+
27
+
1
28
  v11.2.0 (2025-07-18)
2
29
  ====================
3
30
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 11.2.1rc3
3
+ Version: 11.3.0
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
@@ -61,7 +61,7 @@ Requires-Dist: dkist-inventory<2.0,>=1.6.0; extra == "inventory"
61
61
  Provides-Extra: asdf
62
62
  Requires-Dist: dkist-inventory[asdf]<2.0,>=1.6.0; extra == "asdf"
63
63
  Provides-Extra: quality
64
- Requires-Dist: dkist-quality<3.0,>=2.0.0rc1; extra == "quality"
64
+ Requires-Dist: dkist-quality<3.0,>=2.0.0; extra == "quality"
65
65
 
66
66
  dkist-processing-common
67
67
  =======================
@@ -1,4 +1,5 @@
1
1
  """Package providing support classes and methods used by all workflow tasks."""
2
+
2
3
  from importlib.metadata import PackageNotFoundError
3
4
  from importlib.metadata import version
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Wrapper for interactions with shared database that holds arbitrary data that persists across the entire recipe run."""
2
+
2
3
  import json
3
4
  from collections.abc import MutableMapping
4
5
  from enum import Enum
@@ -1,4 +1,5 @@
1
1
  """Extension of the GraphQL supporting retries for data processing use cases."""
2
+
2
3
  import logging
3
4
  from typing import Any
4
5
  from typing import Callable
@@ -1,4 +1,5 @@
1
1
  """Tag cloud manager."""
2
+
2
3
  from pathlib import Path
3
4
  from typing import Iterable
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Encoder/decoder for writing/reading numpy arrays."""
2
+
2
3
  import io
3
4
  from pathlib import Path
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Encoders and decoders for writing and reading ASDF files."""
2
+
2
3
  from io import BytesIO
3
4
  from pathlib import Path
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Encoder/decoder for writing and reading Pydantic BaseModel objects."""
2
+
2
3
  from pathlib import Path
3
4
  from typing import Type
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Encoder/decoder for writing and reading bytes objects."""
2
+
2
3
  from pathlib import Path
3
4
 
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Encoders and decoders for writing and reading FITS files."""
2
+
2
3
  from io import BytesIO
3
4
  from pathlib import Path
4
5
  from typing import Type
@@ -1,4 +1,5 @@
1
1
  """Encoder/decoder for writing and reading IOBase binary (i.e., not Text) objects."""
2
+
2
3
  from io import BytesIO
3
4
  from io import IOBase
4
5
  from io import TextIOBase
@@ -1,4 +1,5 @@
1
1
  """Encoder/decoders for writing and reading JSON files."""
2
+
2
3
  import json
3
4
  from pathlib import Path
4
5
  from typing import Any
@@ -1,4 +1,5 @@
1
1
  """Default decoder to pass through paths from `read`."""
2
+
2
3
  from pathlib import Path
3
4
 
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Encoder/decoder for writing and reading str to files."""
2
+
2
3
  from pathlib import Path
3
4
 
4
5
  from dkist_processing_common.codecs.bytes import bytes_decoder
@@ -1,4 +1,5 @@
1
1
  """Common configurations."""
2
+
2
3
  from dkist_processing_core.config import DKISTProcessingCoreConfiguration
3
4
  from dkist_service_configuration.settings import DEFAULT_MESH_SERVICE
4
5
  from dkist_service_configuration.settings import MeshService
@@ -4,6 +4,7 @@ Components of the Constant model.
4
4
  Contains names of database entries and Base class for an object that simplifies
5
5
  accessing the database (tab completion, etc.)
6
6
  """
7
+
7
8
  from enum import Enum
8
9
  from string import ascii_uppercase
9
10
 
@@ -1,4 +1,5 @@
1
1
  """Abstraction layer for accessing fits data via class attributes."""
2
+
2
3
  from __future__ import annotations
3
4
 
4
5
  from pathlib import Path
@@ -6,6 +6,7 @@ Defines:
6
6
 
7
7
  FlowerPot -> Container for Stem children (Flowers)
8
8
  """
9
+
9
10
  from __future__ import annotations
10
11
 
11
12
  from abc import ABC
@@ -1,9 +1,10 @@
1
1
  """GraphQL Data models for the metadata store api."""
2
+
2
3
  from pydantic import BaseModel
3
4
  from pydantic import ConfigDict
5
+ from pydantic import Json
4
6
  from pydantic import field_serializer
5
7
  from pydantic import field_validator
6
- from pydantic import Json
7
8
 
8
9
  from dkist_processing_common.models.input_dataset import InputDatasetBaseModel
9
10
  from dkist_processing_common.models.input_dataset import InputDatasetPartDocumentList
@@ -1,4 +1,5 @@
1
1
  """Input dataset models for the inputDatasetPartDocument from the metadata store api."""
2
+
2
3
  import json
3
4
  from datetime import datetime
4
5
  from typing import Any
@@ -6,10 +7,10 @@ from typing import Any
6
7
  from pydantic import BaseModel
7
8
  from pydantic import ConfigDict
8
9
  from pydantic import Field
9
- from pydantic import field_serializer
10
- from pydantic import field_validator
11
10
  from pydantic import Json
12
11
  from pydantic import PlainSerializer
12
+ from pydantic import field_serializer
13
+ from pydantic import field_validator
13
14
  from pydantic.alias_generators import to_camel
14
15
  from typing_extensions import Annotated
15
16
 
@@ -1,4 +1,5 @@
1
1
  """Controlled list of quality metric codes."""
2
+
2
3
  from enum import StrEnum
3
4
 
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Support classes used to create a quality report."""
2
+
2
3
  from typing import Any
3
4
 
4
5
  from pydantic import BaseModel
@@ -1,4 +1,5 @@
1
1
  """Components of the Tag model. Stem + Optional Suffix = Tag."""
2
+
2
3
  from enum import Enum
3
4
 
4
5
  from dkist_processing_common.models.task_name import TaskName
@@ -1,4 +1,5 @@
1
1
  """Controlled list of common IP task tag names."""
2
+
2
3
  from enum import Enum
3
4
 
4
5
 
@@ -1,10 +1,11 @@
1
1
  """Support classes for manipulating wavelengths."""
2
+
2
3
  import astropy.units as u
3
4
  from pydantic import BaseModel
4
5
  from pydantic import ConfigDict
6
+ from pydantic import ValidationInfo
5
7
  from pydantic import field_validator
6
8
  from pydantic import model_validator
7
- from pydantic import ValidationInfo
8
9
 
9
10
 
10
11
  class WavelengthRange(BaseModel):
@@ -1,4 +1,5 @@
1
1
  """Classes supporting Calibration Sequence steps."""
2
+
2
3
  from __future__ import annotations
3
4
 
4
5
  from datetime import datetime
@@ -1,4 +1,5 @@
1
1
  """Classes supporting the Data Set Parameters Set (DSPS) Repeat parameter."""
2
+
2
3
  from dkist_processing_common.models.constants import BudName
3
4
  from dkist_processing_common.models.flower_pot import SpilledDirt
4
5
  from dkist_processing_common.models.tags import StemName
@@ -1,4 +1,5 @@
1
1
  """Experiment Id parser."""
2
+
2
3
  from dkist_processing_common.models.constants import BudName
3
4
  from dkist_processing_common.parsers.id_bud import ContributingIdsBud
4
5
  from dkist_processing_common.parsers.id_bud import IdBud
@@ -1,4 +1,5 @@
1
1
  """Base classes for ID bud parsing."""
2
+
2
3
  from typing import Type
3
4
 
4
5
  from dkist_processing_common.models.flower_pot import SpilledDirt
@@ -1,4 +1,5 @@
1
1
  """By-frame 214 L0 header keywords that are not instrument specific."""
2
+
2
3
  from astropy.io import fits
3
4
 
4
5
  from dkist_processing_common.parsers.l1_fits_access import L1FitsAccess
@@ -1,4 +1,5 @@
1
1
  """By-frame 214 L1 only header keywords that are not instrument specific."""
2
+
2
3
  from astropy.io import fits
3
4
 
4
5
  from dkist_processing_common.models.fits_access import FitsAccessBase
@@ -1,4 +1,5 @@
1
1
  """Pre-made flower that reads a single header key from all files and raises a ValueError if the values are not in a supplied range."""
2
+
2
3
  from statistics import mean
3
4
  from typing import Callable
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Proposal Id parser."""
2
+
2
3
  from dkist_processing_common.models.constants import BudName
3
4
  from dkist_processing_common.parsers.id_bud import ContributingIdsBud
4
5
  from dkist_processing_common.parsers.id_bud import IdBud
@@ -1,4 +1,5 @@
1
1
  """Support classes to define object attributes from header information."""
2
+
2
3
  from astropy.io import fits
3
4
 
4
5
  from dkist_processing_common.parsers.l0_fits_access import L1FitsAccess
@@ -1,4 +1,5 @@
1
1
  """Bud that parses the name of the retarder used during POLCAL task observations."""
2
+
2
3
  from dkist_processing_common.models.constants import BudName
3
4
  from dkist_processing_common.models.task_name import TaskName
4
5
  from dkist_processing_common.parsers.unique_bud import TaskUniqueBud
@@ -1,4 +1,5 @@
1
1
  """Pre-made flower that produces tag based on a single header key."""
2
+
2
3
  from dkist_processing_common.models.flower_pot import Stem
3
4
  from dkist_processing_common.parsers.l0_fits_access import L0FitsAccess
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Module for parsing IP task related things."""
2
+
2
3
  from typing import Callable
3
4
  from typing import Type
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Time parser."""
2
+
2
3
  from datetime import datetime
3
4
  from datetime import timezone
4
5
  from typing import Callable
@@ -1,4 +1,5 @@
1
1
  """Pre-made flower that reads a single header key from all files and raises a ValueError if it is not unique."""
2
+
2
3
  from typing import Callable
3
4
 
4
5
  from dkist_processing_common.models.flower_pot import SpilledDirt
@@ -1,4 +1,5 @@
1
1
  """Bud to get the wavelength of observe frames."""
2
+
2
3
  from dkist_processing_common.models.constants import BudName
3
4
  from dkist_processing_common.models.task_name import TaskName
4
5
  from dkist_processing_common.parsers.unique_bud import TaskUniqueBud
@@ -1,11 +1,12 @@
1
1
  """Common tasks and bases."""
2
- from dkist_processing_common.tasks.base import * # noreorder
2
+
3
+ from dkist_processing_common.tasks.base import * # isort: skip
3
4
  from dkist_processing_common.tasks.assemble_movie import *
4
5
  from dkist_processing_common.tasks.l1_output_data import *
5
6
  from dkist_processing_common.tasks.parse_l0_input_data import *
6
7
  from dkist_processing_common.tasks.quality_metrics import *
7
8
  from dkist_processing_common.tasks.teardown import *
8
9
  from dkist_processing_common.tasks.transfer_input_data import *
9
- from dkist_processing_common.tasks.write_l1 import *
10
10
  from dkist_processing_common.tasks.trial_catalog import *
11
11
  from dkist_processing_common.tasks.trial_output_data import *
12
+ from dkist_processing_common.tasks.write_l1 import *
@@ -1,4 +1,5 @@
1
1
  """Task(s) for assembling a browse movie."""
2
+
2
3
  import logging
3
4
  from abc import ABC
4
5
  from abc import abstractmethod
@@ -1,4 +1,5 @@
1
1
  """Wrappers for all workflow tasks."""
2
+
2
3
  import json
3
4
  import logging
4
5
  import re
@@ -1,4 +1,5 @@
1
1
  """Mixin for a WorkflowDataTaskBase subclass which implements interservice bus access functionality."""
2
+
2
3
  from talus import DurableProducer
3
4
  from talus import PublishMessageBase
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Mixin for a WorkflowDataTaskBase subclass which implements Object Store data access functionality."""
2
+
2
3
  from pathlib import Path
3
4
 
4
5
  from object_clerk import ObjectClerk
@@ -4,4 +4,5 @@ To improve readability the top-level mixin, `QualityMixin`, contains only base f
4
4
  metrics are grouped into sub-mixins. To protect a user, this mixin-on-mixin stack is hidden in protected modules
5
5
  and only the top-level mixin (`QualityMixin`) is exposed.
6
6
  """
7
+
7
8
  from ._base import QualityMixin
@@ -1,4 +1,5 @@
1
1
  """Base QualityMixin class that contains machinery common to all metric types."""
2
+
2
3
  from typing import Iterable
3
4
 
4
5
  import numpy as np
@@ -2,6 +2,7 @@
2
2
 
3
3
  These classes should not be directly mixed in to anything. They are pre-mixed into the top-level QualityMixin
4
4
  """
5
+
5
6
  import copy
6
7
  import json
7
8
  import logging
@@ -1,4 +1,5 @@
1
1
  """Base class that supports common output data methods and paths."""
2
+
2
3
  import logging
3
4
  from abc import ABC
4
5
  from abc import abstractmethod
@@ -1,4 +1,5 @@
1
1
  """Tasks to support the generation of downstream artifacts in a trial workflow that wouldn't otherwise produce them."""
2
+
2
3
  import importlib
3
4
  import logging
4
5
  from datetime import datetime
@@ -24,8 +25,8 @@ __all__ = ["CreateTrialDatasetInventory", "CreateTrialAsdf", "CreateTrialQuality
24
25
  # Capture condition of dkist-processing-common[inventory] install
25
26
  INVENTORY_EXTRA_INSTALLED = False
26
27
  try:
27
- from dkist_inventory.inventory import generate_inventory_from_frame_inventory
28
28
  from dkist_inventory.inventory import generate_asdf_filename
29
+ from dkist_inventory.inventory import generate_inventory_from_frame_inventory
29
30
 
30
31
  INVENTORY_EXTRA_INSTALLED = True
31
32
  except ModuleNotFoundError:
@@ -45,8 +46,8 @@ except ModuleNotFoundError:
45
46
  # Verify dkist-quality is installed
46
47
  QUALITY_EXTRA_INSTALLED = False
47
48
  try:
48
- from dkist_quality.report import format_report
49
49
  from dkist_quality.report import ReportFormattingException
50
+ from dkist_quality.report import format_report
50
51
 
51
52
  QUALITY_EXTRA_INSTALLED = True
52
53
  except ModuleNotFoundError:
@@ -1,4 +1,5 @@
1
1
  """Tasks to support transferring an arbitrary collection of files to a customizable post-run location."""
2
+
2
3
  import logging
3
4
  from functools import cached_property
4
5
  from pathlib import Path
@@ -1,4 +1,5 @@
1
1
  """Task(s) for writing level 1 data as 214 compliant fits files."""
2
+
2
3
  import importlib
3
4
  import logging
4
5
  import uuid
@@ -213,11 +214,6 @@ class WriteL1Frame(WorkflowTaskBase, MetadataStoreMixin, ABC):
213
214
  header["OBS_HDU"] = 1
214
215
  header["FILENAME"] = self.l1_filename(header=header, stokes=stokes)
215
216
  header["STOKES"] = stokes
216
- # Cadence keywords
217
- header["CADENCE"] = self.constants.average_cadence
218
- header["CADMIN"] = self.constants.minimum_cadence
219
- header["CADMAX"] = self.constants.maximum_cadence
220
- header["CADVAR"] = self.constants.variance_cadence
221
217
  # Keywords to support reprocessing
222
218
  if parameters := self.metadata_store_input_dataset_parameters:
223
219
  header["IDSPARID"] = parameters.inputDatasetPartId
@@ -232,6 +228,19 @@ class WriteL1Frame(WorkflowTaskBase, MetadataStoreMixin, ABC):
232
228
  header["PRODUCT"] = self.compute_product_id(header["IDSOBSID"], header["PROCTYPE"])
233
229
  return header
234
230
 
231
+ def add_timing_headers(self, header: fits.Header) -> fits.Header:
232
+ """
233
+ Add timing headers to the FITS header.
234
+
235
+ This method adds or updates headers related to frame timings.
236
+ """
237
+ # Cadence keywords
238
+ header["CADENCE"] = self.constants.average_cadence
239
+ header["CADMIN"] = self.constants.minimum_cadence
240
+ header["CADMAX"] = self.constants.maximum_cadence
241
+ header["CADVAR"] = self.constants.variance_cadence
242
+ return header
243
+
235
244
  def add_spectral_line_headers(
236
245
  self,
237
246
  header: fits.Header,
@@ -370,6 +379,8 @@ class WriteL1Frame(WorkflowTaskBase, MetadataStoreMixin, ABC):
370
379
  header = self.add_doc_headers(header=header)
371
380
  # Add the dataset headers (abstract - implement in instrument task)
372
381
  header = self.add_dataset_headers(header=header, stokes=stokes_param)
382
+ # Add the timing headers
383
+ header = self.add_timing_headers(header=header)
373
384
  # Add the spectral line headers
374
385
  header = self.add_spectral_line_headers(header=header)
375
386
  # Remove any headers not contained in spec 214
@@ -414,9 +425,9 @@ class WriteL1Frame(WorkflowTaskBase, MetadataStoreMixin, ABC):
414
425
  inst_name = self.constants.instrument.lower()
415
426
  calvers = self.version_from_module_name()
416
427
  header["CALVERS"] = calvers
417
- header[
418
- "CAL_URL"
419
- ] = f"{self.docs_base_url}/projects/{inst_name}/en/v{calvers}/{self.workflow_name}.html"
428
+ header["CAL_URL"] = (
429
+ f"{self.docs_base_url}/projects/{inst_name}/en/v{calvers}/{self.workflow_name}.html"
430
+ )
420
431
  return header
421
432
 
422
433
  def version_from_module_name(self) -> str:
@@ -1,6 +1,7 @@
1
1
  """
2
2
  Global test fixtures
3
3
  """
4
+
4
5
  import json
5
6
  from collections import defaultdict
6
7
  from copy import deepcopy
@@ -1,6 +1,7 @@
1
1
  """
2
2
  Support functions and constants for customized FakeGQLClient
3
3
  """
4
+
4
5
  import json
5
6
  from abc import ABC
6
7
  from abc import abstractmethod
@@ -22,7 +23,6 @@ from dkist_processing_common.models.graphql import RecipeRunProvenanceResponse
22
23
  from dkist_processing_common.models.graphql import RecipeRunResponse
23
24
  from dkist_processing_common.models.graphql import RecipeRunStatusResponse
24
25
 
25
-
26
26
  TILE_SIZE = 64
27
27
 
28
28
  default_observe_frames_doc = [
@@ -223,8 +223,7 @@ def fake_gql_client_factory(response_mapping_override: ResponseMapping | None =
223
223
  raise ValueError(f"Mocked response not found for {query_base=}, {query_response_cls=}")
224
224
 
225
225
  @staticmethod
226
- def execute_gql_mutation(**kwargs):
227
- ...
226
+ def execute_gql_mutation(**kwargs): ...
228
227
 
229
228
  return FakeGQLClientClass
230
229
 
@@ -1,4 +1,5 @@
1
1
  """Tests for the interservice bus mixin for a WorkflowDataTaskBase subclass"""
2
+
2
3
  from typing import Type
3
4
  from uuid import uuid4
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Tests for the interservice bus mixin for a WorkflowDataTaskBase subclass"""
2
+
2
3
  import logging
3
4
  from typing import Dict
4
5
  from typing import Type
@@ -7,8 +7,7 @@ from dkist_processing_common.tasks import WorkflowTaskBase
7
7
  class ProvenanceTask(WorkflowTaskBase):
8
8
  record_provenance = True
9
9
 
10
- def run(self):
11
- ...
10
+ def run(self): ...
12
11
 
13
12
 
14
13
  @pytest.fixture(scope="function")
@@ -10,8 +10,7 @@ from dkist_processing_common.tasks.output_data_base import TransferDataBase
10
10
 
11
11
 
12
12
  class OutputDataBaseTask(OutputDataBase):
13
- def run(self) -> None:
14
- ...
13
+ def run(self) -> None: ...
15
14
 
16
15
 
17
16
  @pytest.fixture