dkist-processing-common 14.3.2__tar.gz → 14.3.4__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 (144) hide show
  1. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/CHANGELOG.rst +19 -0
  2. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/PKG-INFO +4 -4
  3. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/write_l1.py +7 -2
  4. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_write_l1.py +33 -0
  5. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common.egg-info/PKG-INFO +4 -4
  6. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common.egg-info/SOURCES.txt +2 -0
  7. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common.egg-info/requires.txt +3 -3
  8. dkist_processing_common-14.3.4/dkist_processing_common.egg-info/scm_file_list.json +139 -0
  9. dkist_processing_common-14.3.4/dkist_processing_common.egg-info/scm_version.json +8 -0
  10. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/pyproject.toml +3 -3
  11. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/.gitignore +0 -0
  12. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/.pre-commit-config.yaml +0 -0
  13. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/.readthedocs.yml +0 -0
  14. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/.rovodev/.review-agent.md +0 -0
  15. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/.snyk +0 -0
  16. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/README.rst +0 -0
  17. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/bitbucket-pipelines.yml +0 -0
  18. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/changelog/.gitempty +0 -0
  19. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/__init__.py +0 -0
  20. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/_util/__init__.py +0 -0
  21. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/_util/constants.py +0 -0
  22. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/_util/graphql.py +0 -0
  23. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/_util/scratch.py +0 -0
  24. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/_util/tags.py +0 -0
  25. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/codecs/__init__.py +0 -0
  26. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/codecs/array.py +0 -0
  27. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/codecs/asdf.py +0 -0
  28. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/codecs/basemodel.py +0 -0
  29. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/codecs/bytes.py +0 -0
  30. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/codecs/fits.py +0 -0
  31. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/codecs/iobase.py +0 -0
  32. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/codecs/json.py +0 -0
  33. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/codecs/path.py +0 -0
  34. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/codecs/quality.py +0 -0
  35. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/codecs/str.py +0 -0
  36. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/config.py +0 -0
  37. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
  38. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/fonts/__init__.py +0 -0
  39. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/manual.py +0 -0
  40. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/__init__.py +0 -0
  41. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/constants.py +0 -0
  42. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/dkist_location.py +0 -0
  43. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/extras.py +0 -0
  44. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/fits_access.py +0 -0
  45. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/flower_pot.py +0 -0
  46. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/fried_parameter.py +0 -0
  47. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/graphql.py +0 -0
  48. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/input_dataset.py +0 -0
  49. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/message.py +0 -0
  50. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/message_queue_binding.py +0 -0
  51. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/metric_code.py +0 -0
  52. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/parameters.py +0 -0
  53. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/quality.py +0 -0
  54. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/tags.py +0 -0
  55. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/task_name.py +0 -0
  56. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/telemetry.py +0 -0
  57. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/models/wavelength.py +0 -0
  58. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/__init__.py +0 -0
  59. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/average_bud.py +0 -0
  60. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/cs_step.py +0 -0
  61. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/dsps_repeat.py +0 -0
  62. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/experiment_id_bud.py +0 -0
  63. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/id_bud.py +0 -0
  64. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/l0_fits_access.py +0 -0
  65. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/l1_fits_access.py +0 -0
  66. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/lookup_bud.py +0 -0
  67. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/near_bud.py +0 -0
  68. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/observing_program_id_bud.py +0 -0
  69. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/proposal_id_bud.py +0 -0
  70. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/quality.py +0 -0
  71. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/retarder.py +0 -0
  72. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/single_value_single_key_flower.py +0 -0
  73. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/task.py +0 -0
  74. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/time.py +0 -0
  75. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/unique_bud.py +0 -0
  76. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/parsers/wavelength.py +0 -0
  77. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/__init__.py +0 -0
  78. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/assemble_movie.py +0 -0
  79. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/base.py +0 -0
  80. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/l1_output_data.py +0 -0
  81. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
  82. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/mixin/globus.py +0 -0
  83. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/mixin/interservice_bus.py +0 -0
  84. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/mixin/metadata_store.py +0 -0
  85. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/mixin/object_store.py +0 -0
  86. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/mixin/quality/__init__.py +0 -0
  87. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/mixin/quality/_base.py +0 -0
  88. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/mixin/quality/_metrics.py +0 -0
  89. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/output_data_base.py +0 -0
  90. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/parse_l0_input_data.py +0 -0
  91. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/quality_metrics.py +0 -0
  92. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/teardown.py +0 -0
  93. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/transfer_input_data.py +0 -0
  94. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/trial_catalog.py +0 -0
  95. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/trial_output_data.py +0 -0
  96. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/write_extra.py +0 -0
  97. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tasks/write_l1_base.py +0 -0
  98. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/__init__.py +0 -0
  99. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/conftest.py +0 -0
  100. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/mock_metadata_store.py +0 -0
  101. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
  102. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_assemble_quality.py +0 -0
  103. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_base.py +0 -0
  104. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_codecs.py +0 -0
  105. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_constants.py +0 -0
  106. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_construct_dataset_extras.py +0 -0
  107. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_cs_step.py +0 -0
  108. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_dkist_location.py +0 -0
  109. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_fits_access.py +0 -0
  110. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_flower_pot.py +0 -0
  111. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_fried_parameter.py +0 -0
  112. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_input_dataset.py +0 -0
  113. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_interservice_bus.py +0 -0
  114. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_interservice_bus_mixin.py +0 -0
  115. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_manual_processing.py +0 -0
  116. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_output_data_base.py +0 -0
  117. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_parameters.py +0 -0
  118. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_parse_l0_input_data.py +0 -0
  119. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
  120. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_quality.py +0 -0
  121. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_quality_mixin.py +0 -0
  122. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_scratch.py +0 -0
  123. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_stems.py +0 -0
  124. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
  125. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_tags.py +0 -0
  126. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_task_name.py +0 -0
  127. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_task_parsing.py +0 -0
  128. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_teardown.py +0 -0
  129. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_transfer_input_data.py +0 -0
  130. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
  131. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_trial_catalog.py +0 -0
  132. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_trial_output_data.py +0 -0
  133. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common/tests/test_workflow_task_base.py +0 -0
  134. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
  135. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/dkist_processing_common.egg-info/top_level.txt +0 -0
  136. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/docs/Makefile +0 -0
  137. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/docs/changelog.rst +0 -0
  138. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/docs/conf.py +0 -0
  139. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/docs/index.rst +0 -0
  140. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/docs/landing_page.rst +0 -0
  141. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/docs/make.bat +0 -0
  142. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/docs/requirements.txt +0 -0
  143. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/licenses/LICENSE.rst +0 -0
  144. {dkist_processing_common-14.3.2 → dkist_processing_common-14.3.4}/setup.cfg +0 -0
@@ -1,3 +1,22 @@
1
+ v14.3.4 (2026-06-22)
2
+ ====================
3
+
4
+ Bugfixes
5
+ --------
6
+
7
+ - Harden writing statistics headers in the case where the data is very similar causing the kurtosis or skew calculations to return NaN. (`#347 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/347>`__)
8
+
9
+
10
+ v14.3.3 (2026-06-11)
11
+ ====================
12
+
13
+ Misc
14
+ ----
15
+
16
+ - Raise max asdf version to 6.0. (`#345 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/345>`__)
17
+ - Update minimum version of dkist-inventory to 1.11.8. (`#346 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/346>`__)
18
+
19
+
1
20
  v14.3.2 (2026-05-26)
2
21
  ====================
3
22
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 14.3.2
3
+ Version: 14.3.4
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
@@ -13,7 +13,7 @@ Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/x-rst
16
- Requires-Dist: asdf<4.0.0,>=3.5.0
16
+ Requires-Dist: asdf<6.0,>=3.5.0
17
17
  Requires-Dist: astropy>=7.0.0
18
18
  Requires-Dist: dkist-fits-specifications<5.0,>=4.24.0
19
19
  Requires-Dist: dkist-header-validator<6.0,>=5.3.0
@@ -57,9 +57,9 @@ Requires-Dist: sphinx-autoapi!=3.1.0; extra == "docs"
57
57
  Requires-Dist: pytest; extra == "docs"
58
58
  Requires-Dist: dkist-sphinx-theme; extra == "docs"
59
59
  Provides-Extra: inventory
60
- Requires-Dist: dkist-inventory<2.0,>=1.11.7; extra == "inventory"
60
+ Requires-Dist: dkist-inventory<2.0,>=1.11.8; extra == "inventory"
61
61
  Provides-Extra: asdf
62
- Requires-Dist: dkist-inventory[asdf]<2.0,>=1.11.7; extra == "asdf"
62
+ Requires-Dist: dkist-inventory[asdf]<2.0,>=1.11.8; extra == "asdf"
63
63
  Provides-Extra: quality
64
64
  Requires-Dist: dkist-quality<3.0,>=2.0.1; extra == "quality"
65
65
 
@@ -152,8 +152,13 @@ class WriteL1Frame(WriteL1Base, ABC):
152
152
  header["DATAP98"] = percentiles[9]
153
153
  header["DATAP99"] = percentiles[10]
154
154
  header["DATARMS"] = np.sqrt(np.mean(valid_data**2))
155
- header["DATAKURT"] = kurtosis(valid_data)
156
- header["DATASKEW"] = skew(valid_data)
155
+ # If the valid data is all very similar, kurtosis or skew can become NaN
156
+ datakurt = kurtosis(valid_data)
157
+ if np.isfinite(datakurt):
158
+ header["DATAKURT"] = datakurt
159
+ dataskew = skew(valid_data)
160
+ if np.isfinite(dataskew):
161
+ header["DATASKEW"] = dataskew
157
162
  return header
158
163
 
159
164
  def add_datacenter_headers(
@@ -776,3 +776,36 @@ def test_empty_waveband(write_l1_task_with_empty_waveband, mocker, fake_gql_clie
776
776
  assert header["WAVEMAX"] == 10050
777
777
  with pytest.raises(KeyError):
778
778
  header["WAVEBAND"]
779
+
780
+
781
+ @pytest.mark.parametrize(
782
+ "data, expected",
783
+ [
784
+ pytest.param(
785
+ np.array([1.0, 2.0, 3.0, 4.0, 5.0]),
786
+ True,
787
+ id="normal data array",
788
+ ),
789
+ pytest.param(
790
+ np.array([1.0, np.nan, np.nan, np.nan, 1.0]),
791
+ False,
792
+ id="NaN array with bad kurtosis and skew",
793
+ ),
794
+ ],
795
+ )
796
+ @pytest.mark.filterwarnings("ignore::RuntimeWarning")
797
+ def test_add_stats_headers(write_l1_task, data, expected):
798
+ """
799
+ :Given: a data array
800
+ :When: calculating the statistics table
801
+ :Then: kurtosis and skew appear in the header only if their calculated values are not NaN
802
+ """
803
+ task, _, _ = write_l1_task
804
+ header = fits.Header()
805
+ header = task.add_stats_headers(header=header, data=data)
806
+ if expected:
807
+ assert header["DATAKURT"] == -1.3
808
+ assert header["DATASKEW"] == 0
809
+ else:
810
+ assert "DATAKURT" not in header.keys()
811
+ assert "DATASKEW" not in header.keys()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 14.3.2
3
+ Version: 14.3.4
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
@@ -13,7 +13,7 @@ Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/x-rst
16
- Requires-Dist: asdf<4.0.0,>=3.5.0
16
+ Requires-Dist: asdf<6.0,>=3.5.0
17
17
  Requires-Dist: astropy>=7.0.0
18
18
  Requires-Dist: dkist-fits-specifications<5.0,>=4.24.0
19
19
  Requires-Dist: dkist-header-validator<6.0,>=5.3.0
@@ -57,9 +57,9 @@ Requires-Dist: sphinx-autoapi!=3.1.0; extra == "docs"
57
57
  Requires-Dist: pytest; extra == "docs"
58
58
  Requires-Dist: dkist-sphinx-theme; extra == "docs"
59
59
  Provides-Extra: inventory
60
- Requires-Dist: dkist-inventory<2.0,>=1.11.7; extra == "inventory"
60
+ Requires-Dist: dkist-inventory<2.0,>=1.11.8; extra == "inventory"
61
61
  Provides-Extra: asdf
62
- Requires-Dist: dkist-inventory[asdf]<2.0,>=1.11.7; extra == "asdf"
62
+ Requires-Dist: dkist-inventory[asdf]<2.0,>=1.11.8; extra == "asdf"
63
63
  Provides-Extra: quality
64
64
  Requires-Dist: dkist-quality<3.0,>=2.0.1; extra == "quality"
65
65
 
@@ -15,6 +15,8 @@ dkist_processing_common.egg-info/PKG-INFO
15
15
  dkist_processing_common.egg-info/SOURCES.txt
16
16
  dkist_processing_common.egg-info/dependency_links.txt
17
17
  dkist_processing_common.egg-info/requires.txt
18
+ dkist_processing_common.egg-info/scm_file_list.json
19
+ dkist_processing_common.egg-info/scm_version.json
18
20
  dkist_processing_common.egg-info/top_level.txt
19
21
  dkist_processing_common/_util/__init__.py
20
22
  dkist_processing_common/_util/constants.py
@@ -1,4 +1,4 @@
1
- asdf<4.0.0,>=3.5.0
1
+ asdf<6.0,>=3.5.0
2
2
  astropy>=7.0.0
3
3
  dkist-fits-specifications<5.0,>=4.24.0
4
4
  dkist-header-validator<6.0,>=5.3.0
@@ -24,7 +24,7 @@ sunpy>=3.0.0
24
24
  talus==1.3.4
25
25
 
26
26
  [asdf]
27
- dkist-inventory[asdf]<2.0,>=1.11.7
27
+ dkist-inventory[asdf]<2.0,>=1.11.8
28
28
 
29
29
  [docs]
30
30
  setuptools
@@ -36,7 +36,7 @@ pytest
36
36
  dkist-sphinx-theme
37
37
 
38
38
  [inventory]
39
- dkist-inventory<2.0,>=1.11.7
39
+ dkist-inventory<2.0,>=1.11.8
40
40
 
41
41
  [quality]
42
42
  dkist-quality<3.0,>=2.0.1
@@ -0,0 +1,139 @@
1
+ {
2
+ "files": [
3
+ "README.rst",
4
+ "bitbucket-pipelines.yml",
5
+ ".pre-commit-config.yaml",
6
+ "pyproject.toml",
7
+ ".snyk",
8
+ "CHANGELOG.rst",
9
+ ".readthedocs.yml",
10
+ ".gitignore",
11
+ "licenses/LICENSE.rst",
12
+ ".rovodev/.review-agent.md",
13
+ "dkist_processing_common/__init__.py",
14
+ "dkist_processing_common/config.py",
15
+ "dkist_processing_common/manual.py",
16
+ "dkist_processing_common/tests/test_trial_output_data.py",
17
+ "dkist_processing_common/tests/test_workflow_task_base.py",
18
+ "dkist_processing_common/tests/test_quality_mixin.py",
19
+ "dkist_processing_common/tests/test_assemble_quality.py",
20
+ "dkist_processing_common/tests/test_constants.py",
21
+ "dkist_processing_common/tests/test_tags.py",
22
+ "dkist_processing_common/tests/test_parse_l0_input_data.py",
23
+ "dkist_processing_common/tests/test_interservice_bus_mixin.py",
24
+ "dkist_processing_common/tests/test_trial_catalog.py",
25
+ "dkist_processing_common/tests/test_stems.py",
26
+ "dkist_processing_common/tests/test_codecs.py",
27
+ "dkist_processing_common/tests/test_publish_catalog_messages.py",
28
+ "dkist_processing_common/tests/test_interservice_bus.py",
29
+ "dkist_processing_common/tests/__init__.py",
30
+ "dkist_processing_common/tests/test_base.py",
31
+ "dkist_processing_common/tests/test_parameters.py",
32
+ "dkist_processing_common/tests/conftest.py",
33
+ "dkist_processing_common/tests/test_construct_dataset_extras.py",
34
+ "dkist_processing_common/tests/test_write_l1.py",
35
+ "dkist_processing_common/tests/test_task_parsing.py",
36
+ "dkist_processing_common/tests/test_manual_processing.py",
37
+ "dkist_processing_common/tests/test_fits_access.py",
38
+ "dkist_processing_common/tests/test_teardown.py",
39
+ "dkist_processing_common/tests/mock_metadata_store.py",
40
+ "dkist_processing_common/tests/test_task_name.py",
41
+ "dkist_processing_common/tests/test_scratch.py",
42
+ "dkist_processing_common/tests/test_flower_pot.py",
43
+ "dkist_processing_common/tests/test_cs_step.py",
44
+ "dkist_processing_common/tests/test_input_dataset.py",
45
+ "dkist_processing_common/tests/test_submit_dataset_metadata.py",
46
+ "dkist_processing_common/tests/test_transfer_input_data.py",
47
+ "dkist_processing_common/tests/test_quality.py",
48
+ "dkist_processing_common/tests/test_dkist_location.py",
49
+ "dkist_processing_common/tests/test_fried_parameter.py",
50
+ "dkist_processing_common/tests/test_transfer_l1_output_data.py",
51
+ "dkist_processing_common/tests/test_output_data_base.py",
52
+ "dkist_processing_common/tests/test_assemble_movie.py",
53
+ "dkist_processing_common/tasks/parse_l0_input_data.py",
54
+ "dkist_processing_common/tasks/write_l1.py",
55
+ "dkist_processing_common/tasks/assemble_movie.py",
56
+ "dkist_processing_common/tasks/output_data_base.py",
57
+ "dkist_processing_common/tasks/write_extra.py",
58
+ "dkist_processing_common/tasks/__init__.py",
59
+ "dkist_processing_common/tasks/quality_metrics.py",
60
+ "dkist_processing_common/tasks/trial_output_data.py",
61
+ "dkist_processing_common/tasks/write_l1_base.py",
62
+ "dkist_processing_common/tasks/trial_catalog.py",
63
+ "dkist_processing_common/tasks/l1_output_data.py",
64
+ "dkist_processing_common/tasks/base.py",
65
+ "dkist_processing_common/tasks/transfer_input_data.py",
66
+ "dkist_processing_common/tasks/teardown.py",
67
+ "dkist_processing_common/tasks/mixin/interservice_bus.py",
68
+ "dkist_processing_common/tasks/mixin/globus.py",
69
+ "dkist_processing_common/tasks/mixin/__init__.py",
70
+ "dkist_processing_common/tasks/mixin/object_store.py",
71
+ "dkist_processing_common/tasks/mixin/metadata_store.py",
72
+ "dkist_processing_common/tasks/mixin/quality/__init__.py",
73
+ "dkist_processing_common/tasks/mixin/quality/_base.py",
74
+ "dkist_processing_common/tasks/mixin/quality/_metrics.py",
75
+ "dkist_processing_common/codecs/json.py",
76
+ "dkist_processing_common/codecs/basemodel.py",
77
+ "dkist_processing_common/codecs/fits.py",
78
+ "dkist_processing_common/codecs/__init__.py",
79
+ "dkist_processing_common/codecs/iobase.py",
80
+ "dkist_processing_common/codecs/array.py",
81
+ "dkist_processing_common/codecs/bytes.py",
82
+ "dkist_processing_common/codecs/asdf.py",
83
+ "dkist_processing_common/codecs/quality.py",
84
+ "dkist_processing_common/codecs/path.py",
85
+ "dkist_processing_common/codecs/str.py",
86
+ "dkist_processing_common/models/extras.py",
87
+ "dkist_processing_common/models/metric_code.py",
88
+ "dkist_processing_common/models/graphql.py",
89
+ "dkist_processing_common/models/constants.py",
90
+ "dkist_processing_common/models/tags.py",
91
+ "dkist_processing_common/models/input_dataset.py",
92
+ "dkist_processing_common/models/fits_access.py",
93
+ "dkist_processing_common/models/__init__.py",
94
+ "dkist_processing_common/models/fried_parameter.py",
95
+ "dkist_processing_common/models/flower_pot.py",
96
+ "dkist_processing_common/models/telemetry.py",
97
+ "dkist_processing_common/models/message_queue_binding.py",
98
+ "dkist_processing_common/models/task_name.py",
99
+ "dkist_processing_common/models/wavelength.py",
100
+ "dkist_processing_common/models/parameters.py",
101
+ "dkist_processing_common/models/message.py",
102
+ "dkist_processing_common/models/dkist_location.py",
103
+ "dkist_processing_common/models/quality.py",
104
+ "dkist_processing_common/fonts/__init__.py",
105
+ "dkist_processing_common/fonts/Lato-Regular.ttf",
106
+ "dkist_processing_common/parsers/l1_fits_access.py",
107
+ "dkist_processing_common/parsers/id_bud.py",
108
+ "dkist_processing_common/parsers/lookup_bud.py",
109
+ "dkist_processing_common/parsers/proposal_id_bud.py",
110
+ "dkist_processing_common/parsers/l0_fits_access.py",
111
+ "dkist_processing_common/parsers/single_value_single_key_flower.py",
112
+ "dkist_processing_common/parsers/task.py",
113
+ "dkist_processing_common/parsers/time.py",
114
+ "dkist_processing_common/parsers/__init__.py",
115
+ "dkist_processing_common/parsers/cs_step.py",
116
+ "dkist_processing_common/parsers/unique_bud.py",
117
+ "dkist_processing_common/parsers/observing_program_id_bud.py",
118
+ "dkist_processing_common/parsers/dsps_repeat.py",
119
+ "dkist_processing_common/parsers/near_bud.py",
120
+ "dkist_processing_common/parsers/wavelength.py",
121
+ "dkist_processing_common/parsers/experiment_id_bud.py",
122
+ "dkist_processing_common/parsers/quality.py",
123
+ "dkist_processing_common/parsers/average_bud.py",
124
+ "dkist_processing_common/parsers/retarder.py",
125
+ "dkist_processing_common/_util/graphql.py",
126
+ "dkist_processing_common/_util/scratch.py",
127
+ "dkist_processing_common/_util/constants.py",
128
+ "dkist_processing_common/_util/tags.py",
129
+ "dkist_processing_common/_util/__init__.py",
130
+ "docs/requirements.txt",
131
+ "docs/Makefile",
132
+ "docs/index.rst",
133
+ "docs/landing_page.rst",
134
+ "docs/conf.py",
135
+ "docs/make.bat",
136
+ "docs/changelog.rst",
137
+ "changelog/.gitempty"
138
+ ]
139
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "14.3.4",
3
+ "distance": 0,
4
+ "node": "g5d5ac771c4d93d56e8aa573b92cff41d3a4c184e",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-06-22"
8
+ }
@@ -21,7 +21,7 @@ classifiers = [
21
21
  "Programming Language :: Python :: 3.13",
22
22
  ]
23
23
  dependencies = [
24
- "asdf >= 3.5.0, <4.0.0",
24
+ "asdf >= 3.5.0, <6.0",
25
25
  "astropy >= 7.0.0",
26
26
  "dkist-fits-specifications >= 4.24.0, <5.0",
27
27
  "dkist-header-validator >= 5.3.0, <6.0",
@@ -76,10 +76,10 @@ docs = [
76
76
  "dkist-sphinx-theme",
77
77
  ]
78
78
  inventory = [
79
- "dkist-inventory >= 1.11.7, <2.0",
79
+ "dkist-inventory >= 1.11.8, <2.0",
80
80
  ]
81
81
  asdf = [
82
- "dkist-inventory[asdf] >= 1.11.7, <2.0",
82
+ "dkist-inventory[asdf] >= 1.11.8, <2.0",
83
83
  ]
84
84
  quality = [
85
85
  "dkist-quality >= 2.0.1, <3.0",