dkist-processing-dlnirsp 0.32.1rc3__tar.gz → 0.32.3__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 (118) hide show
  1. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/CHANGELOG.rst +28 -0
  2. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/PKG-INFO +69 -68
  3. dkist_processing_dlnirsp-0.32.3/dkist_processing_dlnirsp/models/fits_access.py +32 -0
  4. dkist_processing_dlnirsp-0.32.3/dkist_processing_dlnirsp/parsers/dlnirsp_l0_fits_access.py +99 -0
  5. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/parsers/task.py +2 -6
  6. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/parsers/time.py +2 -1
  7. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/parsers/wavelength.py +5 -1
  8. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/parse.py +21 -12
  9. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/science.py +7 -5
  10. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/write_l1.py +5 -4
  11. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/local_trial_workflows/local_trial_dev_mockers.py +18 -16
  12. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/local_trial_workflows/local_trial_helpers.py +2 -1
  13. dkist_processing_dlnirsp-0.32.3/dkist_processing_dlnirsp/tests/test_dlnirsp_fits_access.py +129 -0
  14. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_linearity_correction.py +3 -2
  15. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_parse.py +2 -1
  16. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_science.py +7 -6
  17. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp.egg-info/PKG-INFO +69 -68
  18. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp.egg-info/SOURCES.txt +1 -1
  19. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp.egg-info/requires.txt +68 -67
  20. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/pyproject.toml +70 -69
  21. dkist_processing_dlnirsp-0.32.1rc3/changelog/113.misc.rst +0 -1
  22. dkist_processing_dlnirsp-0.32.1rc3/dkist_processing_dlnirsp/parsers/dlnirsp_l0_fits_access.py +0 -87
  23. dkist_processing_dlnirsp-0.32.1rc3/dkist_processing_dlnirsp/tests/test_dlnirsp_fits_access.py +0 -76
  24. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/.gitignore +0 -0
  25. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/.pre-commit-config.yaml +0 -0
  26. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/.readthedocs.yml +0 -0
  27. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/.snyk +0 -0
  28. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/README.rst +0 -0
  29. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/SCIENCE_CHANGELOG.rst +0 -0
  30. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/bitbucket-pipelines.yml +0 -0
  31. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/changelog/.gitempty +0 -0
  32. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/__init__.py +0 -0
  33. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/config.py +0 -0
  34. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/dev_scripts/__init__.py +0 -0
  35. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/dev_scripts/test_slitbeam_group_assignment.py +0 -0
  36. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/models/__init__.py +0 -0
  37. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/models/constants.py +0 -0
  38. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/models/parameters.py +0 -0
  39. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/models/tags.py +0 -0
  40. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/models/task_name.py +0 -0
  41. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/parsers/__init__.py +0 -0
  42. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/parsers/dlnirsp_l1_fits_acess.py +0 -0
  43. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/parsers/mosaic.py +0 -0
  44. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/parsers/wcs_corrections.py +0 -0
  45. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/__init__.py +0 -0
  46. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/assemble_movie.py +0 -0
  47. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/bad_pixel_map.py +0 -0
  48. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/dark.py +0 -0
  49. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/dlnirsp_base.py +0 -0
  50. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/geometric.py +0 -0
  51. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/ifu_drift.py +0 -0
  52. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/instrument_polarization.py +0 -0
  53. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/l1_output_data.py +0 -0
  54. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/lamp.py +0 -0
  55. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/linearity_correction.py +0 -0
  56. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/make_movie_frames.py +0 -0
  57. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/mixin/__init__.py +0 -0
  58. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/mixin/corrections.py +0 -0
  59. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/mixin/group_id.py +0 -0
  60. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/quality_metrics.py +0 -0
  61. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/solar.py +0 -0
  62. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tasks/wavelength_calibration.py +0 -0
  63. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/__init__.py +0 -0
  64. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/conftest.py +0 -0
  65. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/local_trial_workflows/__init__.py +0 -0
  66. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/local_trial_workflows/l0_linearize_only.py +0 -0
  67. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/local_trial_workflows/l0_polcals_as_science.py +0 -0
  68. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/local_trial_workflows/l0_solar_gain_as_science.py +0 -0
  69. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/local_trial_workflows/l0_to_l1.py +0 -0
  70. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/local_trial_workflows/translate_files.py +0 -0
  71. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_assemble_movie.py +0 -0
  72. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_assemble_quality.py +0 -0
  73. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_bad_pixel_map.py +0 -0
  74. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_corrections.py +0 -0
  75. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_dark.py +0 -0
  76. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_dlnirsp_base.py +0 -0
  77. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_dlnirsp_constants.py +0 -0
  78. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_geometric.py +0 -0
  79. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_group_id.py +0 -0
  80. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_ifu_drift.py +0 -0
  81. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_instrument_polarization_calibration.py +0 -0
  82. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_lamp.py +0 -0
  83. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_make_movie_frames.py +0 -0
  84. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_parameters.py +0 -0
  85. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_quality.py +0 -0
  86. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_solar.py +0 -0
  87. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_trial_create_quality_report.py +0 -0
  88. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_wavelength_calibration.py +0 -0
  89. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_workflows.py +0 -0
  90. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/tests/test_write_l1.py +0 -0
  91. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/workflows/__init__.py +0 -0
  92. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/workflows/l0_processing.py +0 -0
  93. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp/workflows/trial_workflow.py +0 -0
  94. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp.egg-info/dependency_links.txt +0 -0
  95. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp.egg-info/entry_points.txt +0 -0
  96. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/dkist_processing_dlnirsp.egg-info/top_level.txt +0 -0
  97. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/Makefile +0 -0
  98. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/bad_pixel_calibration.rst +0 -0
  99. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/changelog.rst +0 -0
  100. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/conf.py +0 -0
  101. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/gain.rst +0 -0
  102. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/geometric.rst +0 -0
  103. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/ifu_drift.rst +0 -0
  104. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/index.rst +0 -0
  105. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/l0_to_l1_dlnirsp.rst +0 -0
  106. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/l0_to_l1_dlnirsp_full-trial.rst +0 -0
  107. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/landing_page.rst +0 -0
  108. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/linearization.rst +0 -0
  109. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/make.bat +0 -0
  110. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/polarization_calibration.rst +0 -0
  111. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/requirements_table.rst +0 -0
  112. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/science_calibration.rst +0 -0
  113. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/scientific_changelog.rst +0 -0
  114. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/docs/wavelength_calibration.rst +0 -0
  115. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/licenses/LICENSE.rst +0 -0
  116. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/science_towncrier.sh +0 -0
  117. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/setup.cfg +0 -0
  118. {dkist_processing_dlnirsp-0.32.1rc3 → dkist_processing_dlnirsp-0.32.3}/towncrier_science.toml +0 -0
@@ -1,3 +1,31 @@
1
+ v0.32.3 (2025-11-04)
2
+ ====================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - Replace metadata key strings with members of the string enum DlnirspMetadataKey. (`#111 <https://bitbucket.org/dkistdc/dkist-processing-dlnirsp/pull-requests/111>`__)
8
+
9
+
10
+ v0.32.2 (2025-11-03)
11
+ ====================
12
+
13
+ Misc
14
+ ----
15
+
16
+ - Update dkist-processing-common to v11.8.0, which adds parameters to the ASDF files.
17
+ Update dkist-inventory to v1.11.1, which adds parameters to the ASDF file generation. (`#114 <https://bitbucket.org/dkistdc/dkist-processing-dlnirsp/pull-requests/114>`__)
18
+
19
+
20
+ v0.32.1 (2025-10-09)
21
+ ====================
22
+
23
+ Misc
24
+ ----
25
+
26
+ - Update `dkist-processing-common` to v11.7.0, which makes constants for the dataset extras. (`#113 <https://bitbucket.org/dkistdc/dkist-processing-dlnirsp/pull-requests/113>`__)
27
+
28
+
1
29
  v0.32.0 (2025-09-26)
2
30
  ====================
3
31
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-dlnirsp
3
- Version: 0.32.1rc3
3
+ Version: 0.32.3
4
4
  Summary: Science processing code for the DLNIRSP instrument on DKIST
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.12
14
14
  Requires-Python: >=3.12
15
15
  Description-Content-Type: text/x-rst
16
- Requires-Dist: dkist-processing-common==11.7.0rc6
16
+ Requires-Dist: dkist-processing-common==11.8.0
17
17
  Requires-Dist: dkist-processing-math==2.2.1
18
18
  Requires-Dist: dkist-processing-pac==3.1.1
19
19
  Requires-Dist: dkist-header-validator==5.2.1
@@ -43,10 +43,10 @@ Requires-Dist: dkist-processing-dlnirsp[asdf]; extra == "test"
43
43
  Requires-Dist: dkist-processing-dlnirsp[quality]; extra == "test"
44
44
  Provides-Extra: inventory
45
45
  Requires-Dist: dkist-processing-common[inventory]; extra == "inventory"
46
- Requires-Dist: dkist-inventory==1.10.0; extra == "inventory"
46
+ Requires-Dist: dkist-inventory==1.11.1; extra == "inventory"
47
47
  Provides-Extra: asdf
48
48
  Requires-Dist: dkist-processing-common[asdf]; extra == "asdf"
49
- Requires-Dist: dkist-inventory[asdf]==1.10.0; extra == "asdf"
49
+ Requires-Dist: dkist-inventory[asdf]==1.11.1; extra == "asdf"
50
50
  Provides-Extra: quality
51
51
  Requires-Dist: dkist-quality==2.0.0; extra == "quality"
52
52
  Provides-Extra: grogu
@@ -65,7 +65,7 @@ Requires-Dist: towncrier; extra == "docs"
65
65
  Requires-Dist: dkist-sphinx-theme; extra == "docs"
66
66
  Provides-Extra: frozen
67
67
  Requires-Dist: ConfigUpdater==3.2; extra == "frozen"
68
- Requires-Dist: Deprecated==1.2.18; extra == "frozen"
68
+ Requires-Dist: Deprecated==1.3.1; extra == "frozen"
69
69
  Requires-Dist: Flask==2.2.5; extra == "frozen"
70
70
  Requires-Dist: Flask-AppBuilder==4.5.3; extra == "frozen"
71
71
  Requires-Dist: Flask-Babel==2.0.0; extra == "frozen"
@@ -76,6 +76,7 @@ Requires-Dist: Flask-Login==0.6.3; extra == "frozen"
76
76
  Requires-Dist: Flask-SQLAlchemy==2.5.1; extra == "frozen"
77
77
  Requires-Dist: Flask-Session==0.5.0; extra == "frozen"
78
78
  Requires-Dist: Flask-WTF==1.2.2; extra == "frozen"
79
+ Requires-Dist: ImageIO==2.37.2; extra == "frozen"
79
80
  Requires-Dist: Jinja2==3.1.6; extra == "frozen"
80
81
  Requires-Dist: Mako==1.3.10; extra == "frozen"
81
82
  Requires-Dist: MarkupSafe==3.0.3; extra == "frozen"
@@ -90,66 +91,66 @@ Requires-Dist: WTForms==3.2.1; extra == "frozen"
90
91
  Requires-Dist: Werkzeug==2.2.3; extra == "frozen"
91
92
  Requires-Dist: aioftp==0.27.2; extra == "frozen"
92
93
  Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
93
- Requires-Dist: aiohttp==3.13.0; extra == "frozen"
94
+ Requires-Dist: aiohttp==3.13.2; extra == "frozen"
94
95
  Requires-Dist: aiosignal==1.4.0; extra == "frozen"
95
- Requires-Dist: aiosmtplib==4.0.2; extra == "frozen"
96
- Requires-Dist: alembic==1.16.5; extra == "frozen"
96
+ Requires-Dist: aiosmtplib==5.0.0; extra == "frozen"
97
+ Requires-Dist: alembic==1.17.1; extra == "frozen"
97
98
  Requires-Dist: amqp==5.3.1; extra == "frozen"
98
99
  Requires-Dist: annotated-types==0.7.0; extra == "frozen"
99
100
  Requires-Dist: anyio==4.11.0; extra == "frozen"
100
101
  Requires-Dist: apache-airflow==2.11.0; extra == "frozen"
101
102
  Requires-Dist: apache-airflow-providers-celery==3.10.0; extra == "frozen"
102
- Requires-Dist: apache-airflow-providers-common-compat==1.7.4; extra == "frozen"
103
- Requires-Dist: apache-airflow-providers-common-io==1.6.3; extra == "frozen"
104
- Requires-Dist: apache-airflow-providers-common-sql==1.28.1; extra == "frozen"
103
+ Requires-Dist: apache-airflow-providers-common-compat==1.8.0; extra == "frozen"
104
+ Requires-Dist: apache-airflow-providers-common-io==1.6.4; extra == "frozen"
105
+ Requires-Dist: apache-airflow-providers-common-sql==1.28.2; extra == "frozen"
105
106
  Requires-Dist: apache-airflow-providers-fab==1.5.3; extra == "frozen"
106
107
  Requires-Dist: apache-airflow-providers-ftp==3.13.2; extra == "frozen"
107
- Requires-Dist: apache-airflow-providers-http==5.3.4; extra == "frozen"
108
- Requires-Dist: apache-airflow-providers-imap==3.9.2; extra == "frozen"
109
- Requires-Dist: apache-airflow-providers-postgres==6.3.0; extra == "frozen"
108
+ Requires-Dist: apache-airflow-providers-http==5.4.0; extra == "frozen"
109
+ Requires-Dist: apache-airflow-providers-imap==3.9.3; extra == "frozen"
110
+ Requires-Dist: apache-airflow-providers-postgres==6.4.0; extra == "frozen"
110
111
  Requires-Dist: apache-airflow-providers-smtp==2.3.1; extra == "frozen"
111
112
  Requires-Dist: apache-airflow-providers-sqlite==4.1.2; extra == "frozen"
112
113
  Requires-Dist: apispec==6.8.4; extra == "frozen"
113
- Requires-Dist: argcomplete==3.6.2; extra == "frozen"
114
+ Requires-Dist: argcomplete==3.6.3; extra == "frozen"
114
115
  Requires-Dist: asdf==3.5.0; extra == "frozen"
115
116
  Requires-Dist: asdf_standard==1.4.0; extra == "frozen"
116
117
  Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
117
118
  Requires-Dist: asgiref==3.10.0; extra == "frozen"
118
119
  Requires-Dist: asteval==1.0.6; extra == "frozen"
119
120
  Requires-Dist: astropy==7.0.2; extra == "frozen"
120
- Requires-Dist: astropy-iers-data==0.2025.10.6.0.35.25; extra == "frozen"
121
+ Requires-Dist: astropy-iers-data==0.2025.11.3.0.38.37; extra == "frozen"
121
122
  Requires-Dist: asyncpg==0.30.0; extra == "frozen"
122
123
  Requires-Dist: attrs==25.4.0; extra == "frozen"
123
124
  Requires-Dist: babel==2.17.0; extra == "frozen"
124
125
  Requires-Dist: billiard==4.2.2; extra == "frozen"
125
126
  Requires-Dist: blinker==1.9.0; extra == "frozen"
126
- Requires-Dist: boto3==1.40.48; extra == "frozen"
127
- Requires-Dist: botocore==1.40.48; extra == "frozen"
127
+ Requires-Dist: boto3==1.40.65; extra == "frozen"
128
+ Requires-Dist: botocore==1.40.65; extra == "frozen"
128
129
  Requires-Dist: cachelib==0.13.0; extra == "frozen"
129
130
  Requires-Dist: celery==5.3.1; extra == "frozen"
130
131
  Requires-Dist: certifi==2025.10.5; extra == "frozen"
131
132
  Requires-Dist: cffi==2.0.0; extra == "frozen"
132
- Requires-Dist: charset-normalizer==3.4.3; extra == "frozen"
133
+ Requires-Dist: charset-normalizer==3.4.4; extra == "frozen"
133
134
  Requires-Dist: click==8.3.0; extra == "frozen"
134
135
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
135
136
  Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
136
137
  Requires-Dist: click-repl==0.3.0; extra == "frozen"
137
138
  Requires-Dist: clickclick==20.10.2; extra == "frozen"
138
139
  Requires-Dist: colorama==0.4.6; extra == "frozen"
139
- Requires-Dist: colorlog==6.9.0; extra == "frozen"
140
+ Requires-Dist: colorlog==6.10.1; extra == "frozen"
140
141
  Requires-Dist: connexion==2.14.2; extra == "frozen"
141
142
  Requires-Dist: contourpy==1.3.3; extra == "frozen"
142
143
  Requires-Dist: cron_descriptor==2.0.6; extra == "frozen"
143
144
  Requires-Dist: croniter==6.0.0; extra == "frozen"
144
- Requires-Dist: cryptography==46.0.2; extra == "frozen"
145
+ Requires-Dist: cryptography==46.0.3; extra == "frozen"
145
146
  Requires-Dist: cycler==0.12.1; extra == "frozen"
146
147
  Requires-Dist: dacite==1.9.2; extra == "frozen"
147
148
  Requires-Dist: decorator==5.2.1; extra == "frozen"
148
149
  Requires-Dist: dill==0.4.0; extra == "frozen"
149
150
  Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
150
- Requires-Dist: dkist-processing-common==11.7.0rc6; extra == "frozen"
151
+ Requires-Dist: dkist-processing-common==11.8.0; extra == "frozen"
151
152
  Requires-Dist: dkist-processing-core==6.0.0; extra == "frozen"
152
- Requires-Dist: dkist-processing-dlnirsp==0.32.1rc3; extra == "frozen"
153
+ Requires-Dist: dkist-processing-dlnirsp==0.32.3; extra == "frozen"
153
154
  Requires-Dist: dkist-processing-math==2.2.1; extra == "frozen"
154
155
  Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
155
156
  Requires-Dist: dkist-service-configuration==4.1.7; extra == "frozen"
@@ -161,19 +162,19 @@ Requires-Dist: fastjsonschema==2.21.2; extra == "frozen"
161
162
  Requires-Dist: flower==2.0.1; extra == "frozen"
162
163
  Requires-Dist: fonttools==4.60.1; extra == "frozen"
163
164
  Requires-Dist: frozenlist==1.8.0; extra == "frozen"
164
- Requires-Dist: fsspec==2025.9.0; extra == "frozen"
165
+ Requires-Dist: fsspec==2025.10.0; extra == "frozen"
165
166
  Requires-Dist: globus-sdk==3.65.0; extra == "frozen"
166
167
  Requires-Dist: google-re2==1.1.20250805; extra == "frozen"
167
- Requires-Dist: googleapis-common-protos==1.70.0; extra == "frozen"
168
+ Requires-Dist: googleapis-common-protos==1.71.0; extra == "frozen"
168
169
  Requires-Dist: gqlclient==1.2.3; extra == "frozen"
169
- Requires-Dist: grpcio==1.75.1; extra == "frozen"
170
+ Requires-Dist: greenlet==3.2.4; extra == "frozen"
171
+ Requires-Dist: grpcio==1.76.0; extra == "frozen"
170
172
  Requires-Dist: gunicorn==23.0.0; extra == "frozen"
171
173
  Requires-Dist: h11==0.16.0; extra == "frozen"
172
174
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
173
175
  Requires-Dist: httpx==0.28.1; extra == "frozen"
174
- Requires-Dist: humanize==4.13.0; extra == "frozen"
175
- Requires-Dist: idna==3.10; extra == "frozen"
176
- Requires-Dist: imageio==2.37.0; extra == "frozen"
176
+ Requires-Dist: humanize==4.14.0; extra == "frozen"
177
+ Requires-Dist: idna==3.11; extra == "frozen"
177
178
  Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
178
179
  Requires-Dist: importlib_metadata==8.7.0; extra == "frozen"
179
180
  Requires-Dist: inflection==0.5.1; extra == "frozen"
@@ -181,9 +182,9 @@ Requires-Dist: itsdangerous==2.2.0; extra == "frozen"
181
182
  Requires-Dist: jmespath==1.0.1; extra == "frozen"
182
183
  Requires-Dist: jsonschema==4.25.1; extra == "frozen"
183
184
  Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
184
- Requires-Dist: jupyter_core==5.8.1; extra == "frozen"
185
+ Requires-Dist: jupyter_core==5.9.1; extra == "frozen"
185
186
  Requires-Dist: kiwisolver==1.4.9; extra == "frozen"
186
- Requires-Dist: kombu==5.5.4; extra == "frozen"
187
+ Requires-Dist: kombu==5.6.0; extra == "frozen"
187
188
  Requires-Dist: lazy-object-proxy==1.12.0; extra == "frozen"
188
189
  Requires-Dist: lazy_loader==0.4; extra == "frozen"
189
190
  Requires-Dist: limits==5.6.0; extra == "frozen"
@@ -208,40 +209,40 @@ Requires-Dist: networkx==3.5; extra == "frozen"
208
209
  Requires-Dist: numba==0.61.2; extra == "frozen"
209
210
  Requires-Dist: numpy==2.2.5; extra == "frozen"
210
211
  Requires-Dist: object-clerk==1.0.0; extra == "frozen"
211
- Requires-Dist: opentelemetry-api==1.37.0; extra == "frozen"
212
- Requires-Dist: opentelemetry-exporter-otlp==1.37.0; extra == "frozen"
213
- Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.37.0; extra == "frozen"
214
- Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.37.0; extra == "frozen"
215
- Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.37.0; extra == "frozen"
216
- Requires-Dist: opentelemetry-instrumentation==0.58b0; extra == "frozen"
217
- Requires-Dist: opentelemetry-instrumentation-aiohttp-client==0.58b0; extra == "frozen"
218
- Requires-Dist: opentelemetry-instrumentation-asgi==0.58b0; extra == "frozen"
219
- Requires-Dist: opentelemetry-instrumentation-botocore==0.58b0; extra == "frozen"
220
- Requires-Dist: opentelemetry-instrumentation-celery==0.58b0; extra == "frozen"
221
- Requires-Dist: opentelemetry-instrumentation-dbapi==0.58b0; extra == "frozen"
222
- Requires-Dist: opentelemetry-instrumentation-fastapi==0.58b0; extra == "frozen"
223
- Requires-Dist: opentelemetry-instrumentation-pika==0.58b0; extra == "frozen"
224
- Requires-Dist: opentelemetry-instrumentation-psycopg2==0.58b0; extra == "frozen"
225
- Requires-Dist: opentelemetry-instrumentation-pymongo==0.58b0; extra == "frozen"
226
- Requires-Dist: opentelemetry-instrumentation-redis==0.58b0; extra == "frozen"
227
- Requires-Dist: opentelemetry-instrumentation-requests==0.58b0; extra == "frozen"
228
- Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.58b0; extra == "frozen"
229
- Requires-Dist: opentelemetry-instrumentation-system-metrics==0.58b0; extra == "frozen"
212
+ Requires-Dist: opentelemetry-api==1.38.0; extra == "frozen"
213
+ Requires-Dist: opentelemetry-exporter-otlp==1.38.0; extra == "frozen"
214
+ Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.38.0; extra == "frozen"
215
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.38.0; extra == "frozen"
216
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.38.0; extra == "frozen"
217
+ Requires-Dist: opentelemetry-instrumentation==0.59b0; extra == "frozen"
218
+ Requires-Dist: opentelemetry-instrumentation-aiohttp-client==0.59b0; extra == "frozen"
219
+ Requires-Dist: opentelemetry-instrumentation-asgi==0.59b0; extra == "frozen"
220
+ Requires-Dist: opentelemetry-instrumentation-botocore==0.59b0; extra == "frozen"
221
+ Requires-Dist: opentelemetry-instrumentation-celery==0.59b0; extra == "frozen"
222
+ Requires-Dist: opentelemetry-instrumentation-dbapi==0.59b0; extra == "frozen"
223
+ Requires-Dist: opentelemetry-instrumentation-fastapi==0.59b0; extra == "frozen"
224
+ Requires-Dist: opentelemetry-instrumentation-pika==0.59b0; extra == "frozen"
225
+ Requires-Dist: opentelemetry-instrumentation-psycopg2==0.59b0; extra == "frozen"
226
+ Requires-Dist: opentelemetry-instrumentation-pymongo==0.59b0; extra == "frozen"
227
+ Requires-Dist: opentelemetry-instrumentation-redis==0.59b0; extra == "frozen"
228
+ Requires-Dist: opentelemetry-instrumentation-requests==0.59b0; extra == "frozen"
229
+ Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.59b0; extra == "frozen"
230
+ Requires-Dist: opentelemetry-instrumentation-system-metrics==0.59b0; extra == "frozen"
230
231
  Requires-Dist: opentelemetry-propagator-aws-xray==1.0.2; extra == "frozen"
231
- Requires-Dist: opentelemetry-proto==1.37.0; extra == "frozen"
232
- Requires-Dist: opentelemetry-sdk==1.37.0; extra == "frozen"
233
- Requires-Dist: opentelemetry-semantic-conventions==0.58b0; extra == "frozen"
234
- Requires-Dist: opentelemetry-util-http==0.58b0; extra == "frozen"
232
+ Requires-Dist: opentelemetry-proto==1.38.0; extra == "frozen"
233
+ Requires-Dist: opentelemetry-sdk==1.38.0; extra == "frozen"
234
+ Requires-Dist: opentelemetry-semantic-conventions==0.59b0; extra == "frozen"
235
+ Requires-Dist: opentelemetry-util-http==0.59b0; extra == "frozen"
235
236
  Requires-Dist: ordered-set==4.1.0; extra == "frozen"
236
237
  Requires-Dist: packaging==25.0; extra == "frozen"
237
238
  Requires-Dist: pandas==2.3.3; extra == "frozen"
238
239
  Requires-Dist: parfive==2.2.0; extra == "frozen"
239
- Requires-Dist: pathlib_abc==0.5.1; extra == "frozen"
240
+ Requires-Dist: pathlib_abc==0.5.2; extra == "frozen"
240
241
  Requires-Dist: pathspec==0.12.1; extra == "frozen"
241
242
  Requires-Dist: pendulum==3.1.0; extra == "frozen"
242
243
  Requires-Dist: pika==1.3.2; extra == "frozen"
243
244
  Requires-Dist: pillow==10.4.0; extra == "frozen"
244
- Requires-Dist: pip==25.2; extra == "frozen"
245
+ Requires-Dist: pip==25.3; extra == "frozen"
245
246
  Requires-Dist: platformdirs==4.5.0; extra == "frozen"
246
247
  Requires-Dist: pluggy==1.6.0; extra == "frozen"
247
248
  Requires-Dist: pooch==1.8.2; extra == "frozen"
@@ -250,29 +251,29 @@ Requires-Dist: proglog==0.1.12; extra == "frozen"
250
251
  Requires-Dist: prometheus_client==0.23.1; extra == "frozen"
251
252
  Requires-Dist: prompt_toolkit==3.0.52; extra == "frozen"
252
253
  Requires-Dist: propcache==0.4.1; extra == "frozen"
253
- Requires-Dist: protobuf==6.32.1; extra == "frozen"
254
- Requires-Dist: psutil==7.1.0; extra == "frozen"
255
- Requires-Dist: psycopg2-binary==2.9.10; extra == "frozen"
254
+ Requires-Dist: protobuf==6.33.0; extra == "frozen"
255
+ Requires-Dist: psutil==7.1.3; extra == "frozen"
256
+ Requires-Dist: psycopg2-binary==2.9.11; extra == "frozen"
256
257
  Requires-Dist: pycparser==2.23; extra == "frozen"
257
- Requires-Dist: pydantic==2.12.0; extra == "frozen"
258
+ Requires-Dist: pydantic==2.12.3; extra == "frozen"
258
259
  Requires-Dist: pydantic-settings==2.11.0; extra == "frozen"
259
- Requires-Dist: pydantic_core==2.41.1; extra == "frozen"
260
+ Requires-Dist: pydantic_core==2.41.4; extra == "frozen"
260
261
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
261
262
  Requires-Dist: pyparsing==3.2.5; extra == "frozen"
262
263
  Requires-Dist: python-daemon==3.1.2; extra == "frozen"
263
264
  Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
264
- Requires-Dist: python-dotenv==1.1.1; extra == "frozen"
265
+ Requires-Dist: python-dotenv==1.2.1; extra == "frozen"
265
266
  Requires-Dist: python-nvd3==0.16.0; extra == "frozen"
266
267
  Requires-Dist: python-slugify==8.0.4; extra == "frozen"
267
268
  Requires-Dist: pytz==2025.2; extra == "frozen"
268
269
  Requires-Dist: redis==6.4.0; extra == "frozen"
269
- Requires-Dist: referencing==0.36.2; extra == "frozen"
270
+ Requires-Dist: referencing==0.37.0; extra == "frozen"
270
271
  Requires-Dist: requests==2.32.5; extra == "frozen"
271
272
  Requires-Dist: requests-toolbelt==1.0.0; extra == "frozen"
272
273
  Requires-Dist: rfc3339-validator==0.1.4; extra == "frozen"
273
274
  Requires-Dist: rich==13.9.4; extra == "frozen"
274
- Requires-Dist: rich-argparse==1.7.1; extra == "frozen"
275
- Requires-Dist: rpds-py==0.27.1; extra == "frozen"
275
+ Requires-Dist: rich-argparse==1.7.2; extra == "frozen"
276
+ Requires-Dist: rpds-py==0.28.0; extra == "frozen"
276
277
  Requires-Dist: s3transfer==0.14.0; extra == "frozen"
277
278
  Requires-Dist: scikit-image==0.25.2; extra == "frozen"
278
279
  Requires-Dist: scipy==1.15.3; extra == "frozen"
@@ -287,9 +288,9 @@ Requires-Dist: sunpy==6.1.1; extra == "frozen"
287
288
  Requires-Dist: tabulate==0.9.0; extra == "frozen"
288
289
  Requires-Dist: talus==1.3.4; extra == "frozen"
289
290
  Requires-Dist: tenacity==8.5.0; extra == "frozen"
290
- Requires-Dist: termcolor==3.1.0; extra == "frozen"
291
+ Requires-Dist: termcolor==3.2.0; extra == "frozen"
291
292
  Requires-Dist: text-unidecode==1.3; extra == "frozen"
292
- Requires-Dist: tifffile==2025.10.4; extra == "frozen"
293
+ Requires-Dist: tifffile==2025.10.16; extra == "frozen"
293
294
  Requires-Dist: tornado==6.5.2; extra == "frozen"
294
295
  Requires-Dist: tqdm==4.67.1; extra == "frozen"
295
296
  Requires-Dist: traitlets==5.14.3; extra == "frozen"
@@ -298,7 +299,7 @@ Requires-Dist: typing_extensions==4.15.0; extra == "frozen"
298
299
  Requires-Dist: tzdata==2025.2; extra == "frozen"
299
300
  Requires-Dist: uc-micro-py==1.0.3; extra == "frozen"
300
301
  Requires-Dist: uncertainties==3.2.3; extra == "frozen"
301
- Requires-Dist: universal_pathlib==0.3.3; extra == "frozen"
302
+ Requires-Dist: universal_pathlib==0.3.4; extra == "frozen"
302
303
  Requires-Dist: urllib3==2.5.0; extra == "frozen"
303
304
  Requires-Dist: vine==5.1.0; extra == "frozen"
304
305
  Requires-Dist: voluptuous==0.15.2; extra == "frozen"
@@ -0,0 +1,32 @@
1
+ """DLNIRSP control of FITS key names and values."""
2
+
3
+ from enum import StrEnum
4
+
5
+ from dkist_processing_common.models.fits_access import MetadataKey
6
+
7
+
8
+ class DlnirspMetadataKey(StrEnum):
9
+ """Controlled list of names for FITS metadata header keys."""
10
+
11
+ crpix_1 = "CRPIX1"
12
+ crpix_2 = "CRPIX2"
13
+ modulator_spin_mode = "DLMOD"
14
+ camera_readout_mode = "DLCAMSMD"
15
+ num_frames_in_ramp = "DLCAMNS"
16
+ current_frame_in_ramp = "DLCAMCUR"
17
+ arm_id = "DLARMID"
18
+ camera_sample_sequence = "DLCAMSSQ"
19
+ polarimeter_mode = "DLPOLMD"
20
+ number_of_modulator_states = "DLNUMST"
21
+ modulator_state = "DLSTNUM"
22
+ num_mosaic_repeats = "DLMOSNRP"
23
+ mosaic_num = "DLCURMOS"
24
+ num_X_tiles = "DLNSSTPX"
25
+ X_tile_num = "DLCSTPX"
26
+ num_Y_tiles = "DLNSSTPY"
27
+ Y_tile_num = "DLCSTPY"
28
+ num_dither_steps = "DLDMODE"
29
+ dither_step = "DLCURSTP"
30
+ arm_position_mm = "DLARMPS"
31
+ grating_position_deg = "DLGRTAN"
32
+ grating_constant_inverse_mm = "DLGRTCN"
@@ -0,0 +1,99 @@
1
+ """DLNIRSP FitsAccess classes for raw and linearized data."""
2
+
3
+ from astropy.io import fits
4
+ from dkist_processing_common.parsers.l0_fits_access import L0FitsAccess
5
+
6
+ from dkist_processing_dlnirsp.models.fits_access import DlnirspMetadataKey
7
+
8
+
9
+ class DlnirspRampFitsAccess(L0FitsAccess):
10
+ """
11
+ Class to provide easy access to L0 headers for non-linearized (raw) DLNIRSP data.
12
+
13
+ i.e. instead of <DlnirspL0FitsAccess>.header['weird_key'] this class lets us use <DlnirspL0FitsAccess>.nice_key instead
14
+
15
+ Parameters
16
+ ----------
17
+ hdu :
18
+ Fits L0 header object
19
+
20
+ name : str
21
+ The name of the file that was loaded into this FitsAccess object
22
+
23
+ auto_squeeze : bool
24
+ When set to True, dimensions of length 1 will be removed from the array
25
+ """
26
+
27
+ def __init__(
28
+ self,
29
+ hdu: fits.ImageHDU | fits.PrimaryHDU | fits.CompImageHDU,
30
+ name: str | None = None,
31
+ auto_squeeze: bool = True,
32
+ ):
33
+ super().__init__(hdu=hdu, name=name, auto_squeeze=auto_squeeze)
34
+
35
+ self.modulator_spin_mode: str = self.header[DlnirspMetadataKey.modulator_spin_mode]
36
+ self.camera_readout_mode: str = self.header.get(
37
+ DlnirspMetadataKey.camera_readout_mode, "DEFAULT_VISIBLE_CAMERA"
38
+ )
39
+ self.num_frames_in_ramp: int = self.header.get(DlnirspMetadataKey.num_frames_in_ramp, -99)
40
+ self.current_frame_in_ramp: int = self.header.get(
41
+ DlnirspMetadataKey.current_frame_in_ramp, -88
42
+ )
43
+ self.arm_id: str = self.header[DlnirspMetadataKey.arm_id]
44
+ self.camera_sample_sequence: str = self.header.get(
45
+ DlnirspMetadataKey.camera_sample_sequence, "VISIBLE_CAMERA_SEQUENCE"
46
+ )
47
+
48
+
49
+ class DlnirspL0FitsAccess(L0FitsAccess):
50
+ """
51
+ Class to provide easy access to L0 headers for linearized (ready for processing) DLNIRSP data.
52
+
53
+ i.e. instead of <DlnirspL0FitsAccess>.header['weird_key'] this class lets us use <DlnirspL0FitsAccess>.nice_key instead
54
+
55
+ Parameters
56
+ ----------
57
+ hdu :
58
+ Fits L0 header object
59
+
60
+ name : str
61
+ The name of the file that was loaded into this FitsAccess object
62
+
63
+ auto_squeeze : bool
64
+ When set to True, dimensions of length 1 will be removed from the array
65
+ """
66
+
67
+ def __init__(
68
+ self,
69
+ hdu: fits.ImageHDU | fits.PrimaryHDU | fits.CompImageHDU,
70
+ name: str | None = None,
71
+ auto_squeeze: bool = True,
72
+ ):
73
+ super().__init__(hdu=hdu, name=name, auto_squeeze=auto_squeeze)
74
+
75
+ self.crpix_1: float = self.header[DlnirspMetadataKey.crpix_1]
76
+ self.crpix_2: float = self.header[DlnirspMetadataKey.crpix_2]
77
+ self.arm_id: str = self.header[DlnirspMetadataKey.arm_id]
78
+ self.polarimeter_mode: str = self.header[DlnirspMetadataKey.polarimeter_mode]
79
+ self.number_of_modulator_states: int = self.header[
80
+ DlnirspMetadataKey.number_of_modulator_states
81
+ ]
82
+ self.modulator_state: int = self.header[DlnirspMetadataKey.modulator_state]
83
+ self.num_mosaic_repeats: int = self.header[DlnirspMetadataKey.num_mosaic_repeats]
84
+ self.mosaic_num: int = self.header[DlnirspMetadataKey.mosaic_num]
85
+ self.num_X_tiles: int = self.header[DlnirspMetadataKey.num_X_tiles]
86
+ self.X_tile_num: int = self.header[DlnirspMetadataKey.X_tile_num]
87
+ self.num_Y_tiles: int = self.header[DlnirspMetadataKey.num_Y_tiles]
88
+ self.Y_tile_num: int = self.header[DlnirspMetadataKey.Y_tile_num]
89
+ # DLDMODE is a bool in the header; the number of dither steps is either 1 or 2, corresponding to dither
90
+ # mode being True or False, respectively
91
+ self.num_dither_steps: int = int(self.header[DlnirspMetadataKey.num_dither_steps]) + 1
92
+ # Same with DLCURSTP. We'll index the dither loop at 0 so `False` is the first step and `True` is the second
93
+ # Use `get` because this key only exists if DLDMODE is `True`
94
+ self.dither_step: int = int(self.header.get(DlnirspMetadataKey.dither_step, False))
95
+ self.arm_position_mm: float = self.header[DlnirspMetadataKey.arm_position_mm]
96
+ self.grating_position_deg: float = self.header[DlnirspMetadataKey.grating_position_deg]
97
+ self.grating_constant_inverse_mm: float = self.header[
98
+ DlnirspMetadataKey.grating_constant_inverse_mm
99
+ ]
@@ -1,15 +1,11 @@
1
1
  """Custom parsers to identify task sub-groupings not captured by a single header key."""
2
2
 
3
- from typing import Callable
4
-
5
- from dkist_processing_common.models.flower_pot import SpilledDirt
3
+ from dkist_processing_common.models.fits_access import MetadataKey
6
4
  from dkist_processing_common.models.tags import StemName
7
5
  from dkist_processing_common.models.task_name import TaskName
8
- from dkist_processing_common.parsers.near_bud import NearFloatBud
9
6
  from dkist_processing_common.parsers.single_value_single_key_flower import (
10
7
  SingleValueSingleKeyFlower,
11
8
  )
12
- from dkist_processing_common.parsers.unique_bud import UniqueBud
13
9
 
14
10
  from dkist_processing_dlnirsp.parsers.dlnirsp_l0_fits_access import DlnirspL0FitsAccess
15
11
 
@@ -41,7 +37,7 @@ class DlnirspTaskTypeFlower(SingleValueSingleKeyFlower):
41
37
  """Flower to find the DLNIRSP task type."""
42
38
 
43
39
  def __init__(self):
44
- super().__init__(tag_stem_name=StemName.task.value, metadata_key="ip_task_type")
40
+ super().__init__(tag_stem_name=StemName.task.value, metadata_key=MetadataKey.ip_task_type)
45
41
 
46
42
  def setter(self, fits_obj: DlnirspL0FitsAccess):
47
43
  """
@@ -2,6 +2,7 @@
2
2
 
3
3
  from typing import Hashable
4
4
 
5
+ from dkist_processing_common.models.fits_access import MetadataKey
5
6
  from dkist_processing_common.models.flower_pot import Stem
6
7
  from dkist_processing_common.models.task_name import TaskName
7
8
  from dkist_processing_common.parsers.unique_bud import TaskUniqueBud
@@ -17,7 +18,7 @@ class DLnirspSolarGainIpStartTimeBud(TaskUniqueBud):
17
18
  def __init__(self):
18
19
  super().__init__(
19
20
  constant_name=DlnirspBudName.solar_gain_ip_start_time.value,
20
- metadata_key="ip_start_time",
21
+ metadata_key=MetadataKey.ip_start_time,
21
22
  ip_task_types=TaskName.solar_gain.value,
22
23
  task_type_parsing_function=parse_header_ip_task,
23
24
  )
@@ -1,5 +1,6 @@
1
1
  """Bud to get the wavelength."""
2
2
 
3
+ from dkist_processing_common.models.fits_access import MetadataKey
3
4
  from dkist_processing_common.models.flower_pot import SpilledDirt
4
5
  from dkist_processing_common.parsers.unique_bud import UniqueBud
5
6
 
@@ -11,7 +12,10 @@ class ObserveWavelengthBud(UniqueBud):
11
12
  """Bud to find the wavelength."""
12
13
 
13
14
  def __init__(self):
14
- super().__init__(constant_name=DlnirspBudName.wavelength.value, metadata_key="wavelength")
15
+ super().__init__(
16
+ constant_name=DlnirspBudName.wavelength.value,
17
+ metadata_key=MetadataKey.wavelength,
18
+ )
15
19
 
16
20
  def setter(self, fits_obj: DlnirspL0FitsAccess):
17
21
  """
@@ -2,6 +2,7 @@
2
2
 
3
3
  from typing import TypeVar
4
4
 
5
+ from dkist_processing_common.models.fits_access import MetadataKey
5
6
  from dkist_processing_common.models.flower_pot import Stem
6
7
  from dkist_processing_common.models.task_name import TaskName
7
8
  from dkist_processing_common.parsers.cs_step import CSStepFlower
@@ -22,6 +23,7 @@ from dkist_processing_common.tasks import default_constant_bud_factory
22
23
  from dkist_processing_common.tasks import default_tag_flower_factory
23
24
 
24
25
  from dkist_processing_dlnirsp.models.constants import DlnirspBudName
26
+ from dkist_processing_dlnirsp.models.fits_access import DlnirspMetadataKey
25
27
  from dkist_processing_dlnirsp.models.parameters import DlnirspParsingParameters
26
28
  from dkist_processing_dlnirsp.models.tags import DlnirspStemName
27
29
  from dkist_processing_dlnirsp.models.tags import DlnirspTag
@@ -72,7 +74,9 @@ class ParseL0DlnirspRampData(ParseDataBase):
72
74
  # Time Obs is the unique identifier for each ramp in the data set
73
75
  DlnirspTimeObsBud(),
74
76
  # This is used to determine whether we need to do any linearity correction at all.
75
- UniqueBud(constant_name=DlnirspBudName.arm_id.value, metadata_key="arm_id"),
77
+ UniqueBud(
78
+ constant_name=DlnirspBudName.arm_id.value, metadata_key=DlnirspMetadataKey.arm_id
79
+ ),
76
80
  ]
77
81
 
78
82
  @property
@@ -81,12 +85,12 @@ class ParseL0DlnirspRampData(ParseDataBase):
81
85
  return [
82
86
  SingleValueSingleKeyFlower(
83
87
  tag_stem_name=DlnirspStemName.current_frame_in_ramp.value,
84
- metadata_key="current_frame_in_ramp",
88
+ metadata_key=DlnirspMetadataKey.current_frame_in_ramp,
85
89
  ),
86
90
  # time_obs is a unique identifier for all raw frames in a single ramp
87
91
  SingleValueSingleKeyFlower(
88
92
  tag_stem_name=DlnirspStemName.time_obs.value,
89
- metadata_key="time_obs",
93
+ metadata_key=MetadataKey.time_obs,
90
94
  ),
91
95
  ]
92
96
 
@@ -144,12 +148,13 @@ class ParseL0DlnirspLinearizedData(ParseDataBase):
144
148
  DLnirspSolarGainIpStartTimeBud(),
145
149
  NumCSStepBud(max_cs_step_time_sec=self.parameters.max_cs_step_time_sec),
146
150
  UniqueBud(
147
- constant_name=DlnirspBudName.polarimeter_mode.value, metadata_key="polarimeter_mode"
151
+ constant_name=DlnirspBudName.polarimeter_mode.value,
152
+ metadata_key=DlnirspMetadataKey.polarimeter_mode,
148
153
  ),
149
154
  RetarderNameBud(),
150
155
  UniqueBud(
151
156
  constant_name=DlnirspBudName.num_modstates.value,
152
- metadata_key="number_of_modulator_states",
157
+ metadata_key=DlnirspMetadataKey.number_of_modulator_states,
153
158
  ),
154
159
  NumMosaicRepeatsBud(
155
160
  crpix_correction_method=self.parameters.wcs_crpix_correction_method,
@@ -189,20 +194,20 @@ class ParseL0DlnirspLinearizedData(ParseDataBase):
189
194
  ),
190
195
  TaskNearFloatBud(
191
196
  constant_name=DlnirspBudName.arm_position_mm.value,
192
- metadata_key="arm_position_mm",
197
+ metadata_key=DlnirspMetadataKey.arm_position_mm,
193
198
  ip_task_types=[TaskName.solar_gain.value, TaskName.observe.value],
194
199
  tolerance=0.01,
195
200
  task_type_parsing_function=parse_header_ip_task,
196
201
  ),
197
202
  TaskUniqueBud(
198
203
  constant_name=DlnirspBudName.grating_constant_inverse_mm.value,
199
- metadata_key="grating_constant_inverse_mm",
204
+ metadata_key=DlnirspMetadataKey.grating_constant_inverse_mm,
200
205
  ip_task_types=[TaskName.solar_gain.value, TaskName.observe.value],
201
206
  task_type_parsing_function=parse_header_ip_task,
202
207
  ),
203
208
  TaskNearFloatBud(
204
209
  constant_name=DlnirspBudName.grating_position_deg.value,
205
- metadata_key="grating_position_deg",
210
+ metadata_key=DlnirspMetadataKey.grating_position_deg,
206
211
  ip_task_types=[TaskName.solar_gain.value, TaskName.observe.value],
207
212
  tolerance=0.01,
208
213
  task_type_parsing_function=parse_header_ip_task,
@@ -216,14 +221,17 @@ class ParseL0DlnirspLinearizedData(ParseDataBase):
216
221
  DlnirspTaskTypeFlower(),
217
222
  PolcalTaskFlower(),
218
223
  SingleValueSingleKeyFlower(
219
- tag_stem_name=DlnirspStemName.arm_id.value, metadata_key="arm_id"
224
+ tag_stem_name=DlnirspStemName.arm_id.value,
225
+ metadata_key=DlnirspMetadataKey.arm_id,
220
226
  ),
221
227
  ExposureTimeFlower(),
222
228
  SingleValueSingleKeyFlower(
223
- tag_stem_name=DlnirspStemName.modstate.value, metadata_key="modulator_state"
229
+ tag_stem_name=DlnirspStemName.modstate.value,
230
+ metadata_key=DlnirspMetadataKey.modulator_state,
224
231
  ),
225
232
  SingleValueSingleKeyFlower(
226
- tag_stem_name=DlnirspStemName.mosaic_num.value, metadata_key="mosaic_num"
233
+ tag_stem_name=DlnirspStemName.mosaic_num.value,
234
+ metadata_key=DlnirspMetadataKey.mosaic_num,
227
235
  ),
228
236
  MosaicStepXFlower(
229
237
  crpix_correction_method=self.parameters.wcs_crpix_correction_method,
@@ -234,7 +242,8 @@ class ParseL0DlnirspLinearizedData(ParseDataBase):
234
242
  bin_crpix_to_multiple_of=self.parameters.parse_bin_crpix_to_multiple_of,
235
243
  ),
236
244
  SingleValueSingleKeyFlower(
237
- tag_stem_name=DlnirspStemName.dither_step.value, metadata_key="dither_step"
245
+ tag_stem_name=DlnirspStemName.dither_step.value,
246
+ metadata_key=DlnirspMetadataKey.dither_step,
238
247
  ),
239
248
  CSStepFlower(max_cs_step_time_sec=self.parameters.max_cs_step_time_sec),
240
249
  ]