dkist-processing-visp 5.8.2rc1__tar.gz → 5.8.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 (123) hide show
  1. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/CHANGELOG.rst +26 -0
  2. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/PKG-INFO +74 -75
  3. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/conftest.py +5 -7
  4. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/header_models.py +4 -0
  5. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/local_trial_workflows/local_trial_helpers.py +6 -7
  6. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_background_light.py +10 -12
  7. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_fits_access.py +1 -3
  8. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_map_repeats.py +5 -6
  9. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_quality.py +0 -1
  10. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_science.py +1 -7
  11. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp.egg-info/PKG-INFO +74 -75
  12. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp.egg-info/SOURCES.txt +0 -1
  13. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp.egg-info/requires.txt +73 -74
  14. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp.egg-info/scm_file_list.json +0 -1
  15. dkist_processing_visp-5.8.3/dkist_processing_visp.egg-info/scm_version.json +8 -0
  16. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/pyproject.toml +75 -76
  17. dkist_processing_visp-5.8.2rc1/changelog/329.bugfix.rst +0 -1
  18. dkist_processing_visp-5.8.2rc1/dkist_processing_visp.egg-info/scm_version.json +0 -8
  19. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/.gitignore +0 -0
  20. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/.pre-commit-config.yaml +0 -0
  21. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/.readthedocs.yml +0 -0
  22. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/.rovodev/.review-agent.md +0 -0
  23. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/.snyk +0 -0
  24. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/README.rst +0 -0
  25. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/SCIENCE_CHANGELOG.rst +0 -0
  26. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/bitbucket-pipelines.yml +0 -0
  27. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/changelog/.gitempty +0 -0
  28. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/__init__.py +0 -0
  29. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/config.py +0 -0
  30. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/fonts/Lato-Regular.ttf +0 -0
  31. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/models/__init__.py +0 -0
  32. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/models/constants.py +0 -0
  33. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/models/dataset_extras.py +0 -0
  34. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/models/fits_access.py +0 -0
  35. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/models/metric_code.py +0 -0
  36. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/models/parameters.py +0 -0
  37. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/models/tags.py +0 -0
  38. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/models/task_name.py +0 -0
  39. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/parsers/__init__.py +0 -0
  40. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/parsers/map_repeats.py +0 -0
  41. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/parsers/modulator_states.py +0 -0
  42. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/parsers/polarimeter_mode.py +0 -0
  43. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/parsers/raster_step.py +0 -0
  44. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/parsers/spectrograph_configuration.py +0 -0
  45. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/parsers/time.py +0 -0
  46. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/parsers/visp_l0_fits_access.py +0 -0
  47. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/parsers/visp_l1_fits_access.py +0 -0
  48. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/__init__.py +0 -0
  49. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/assemble_movie.py +0 -0
  50. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/background_light.py +0 -0
  51. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/dark.py +0 -0
  52. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/geometric.py +0 -0
  53. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/instrument_polarization.py +0 -0
  54. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/l1_output_data.py +0 -0
  55. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/lamp.py +0 -0
  56. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/make_movie_frames.py +0 -0
  57. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/mixin/__init__.py +0 -0
  58. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/mixin/beam_access.py +0 -0
  59. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/mixin/corrections.py +0 -0
  60. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/mixin/downsample.py +0 -0
  61. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/parse.py +0 -0
  62. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/polcal_as_science.py +0 -0
  63. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/quality_metrics.py +0 -0
  64. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/science.py +0 -0
  65. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/solar.py +0 -0
  66. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/visp_base.py +0 -0
  67. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/wavelength_calibration.py +0 -0
  68. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/write_dataset_extras.py +0 -0
  69. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tasks/write_l1.py +0 -0
  70. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/README.rst +0 -0
  71. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/__init__.py +0 -0
  72. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/local_trial_workflows/__init__.py +0 -0
  73. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/local_trial_workflows/l0_cals_only.py +0 -0
  74. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/local_trial_workflows/l0_polcals_as_science.py +0 -0
  75. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/local_trial_workflows/l0_solar_gain_as_science.py +0 -0
  76. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/local_trial_workflows/l0_to_l1.py +0 -0
  77. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_assemble_movie.py +0 -0
  78. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_assemble_quality.py +0 -0
  79. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_dark.py +0 -0
  80. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_downsample.py +0 -0
  81. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_geometric.py +0 -0
  82. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_instrument_polarization.py +0 -0
  83. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_lamp.py +0 -0
  84. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_make_movie_frames.py +0 -0
  85. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_parameters.py +0 -0
  86. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_parse.py +0 -0
  87. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_polcal_as_science.py +0 -0
  88. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_solar.py +0 -0
  89. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_trial_create_quality_report.py +0 -0
  90. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_visp_base.py +0 -0
  91. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_visp_constants.py +0 -0
  92. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_wavelength_calibration.py +0 -0
  93. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_workflows.py +0 -0
  94. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_write_dataset_extras.py +0 -0
  95. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/tests/test_write_l1.py +0 -0
  96. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/workflows/__init__.py +0 -0
  97. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/workflows/l0_processing.py +0 -0
  98. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/workflows/single_task_workflows.py +0 -0
  99. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp/workflows/trial_workflows.py +0 -0
  100. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp.egg-info/dependency_links.txt +0 -0
  101. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/dkist_processing_visp.egg-info/top_level.txt +0 -0
  102. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/Makefile +0 -0
  103. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/background_light.rst +0 -0
  104. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/changelog.rst +0 -0
  105. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/conf.py +0 -0
  106. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/dataset_extras.rst +0 -0
  107. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/gain_correction.rst +0 -0
  108. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/geometric.rst +0 -0
  109. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/index.rst +0 -0
  110. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/l0_to_l1_visp.rst +0 -0
  111. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/l0_to_l1_visp_full-trial.rst +0 -0
  112. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/landing_page.rst +0 -0
  113. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/make.bat +0 -0
  114. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/polarization_calibration.rst +0 -0
  115. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/requirements.txt +0 -0
  116. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/requirements_table.rst +0 -0
  117. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/science_calibration.rst +0 -0
  118. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/scientific_changelog.rst +0 -0
  119. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/docs/wavelength_calibration.rst +0 -0
  120. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/licenses/LICENSE.rst +0 -0
  121. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/science_towncrier.sh +0 -0
  122. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/setup.cfg +0 -0
  123. {dkist_processing_visp-5.8.2rc1 → dkist_processing_visp-5.8.3}/towncrier_science.toml +0 -0
@@ -1,3 +1,29 @@
1
+ v5.8.3 (2026-09-24)
2
+ ===================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - Use dkist-fits-specifications v4.29.0, which includes the Trend FITS specification.
8
+ Use dkist-header-validator v6.0.0, a significant refactor that allows multi-HDU objects to be validated.
9
+ Use dkist-processing-common v14.5.0, which accommodates the changes to the header validator. (`#336 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/336>`__)
10
+ - Use the "level0_spec214" file schema keyword argument in test Datasets.
11
+ With this keyword, subsequent translation of the resulting headers to
12
+ Spec 214 is not necessary. (`#336 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/336>`__)
13
+ - Validators no longer have validate-and-translate methods.
14
+ Where still necessary, replace validate-and-translate calls with a call to
15
+ validate and then a call to translate. (`#336 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/336>`__)
16
+
17
+
18
+ v5.8.2 (2026-09-04)
19
+ ===================
20
+
21
+ Bugfixes
22
+ --------
23
+
24
+ - Update movie generation for "sit'n'stare" datasets to avoid out-of-memory failures. Movies for sit'n'stare observations (when the slit doesn't move) are now displayed with time on the "spatial" axis; each column is the wavelength-integrated signal of a single slit observation. Genuine spatial raster scans, of any polarization mode, are unaffected and continue to use the existing algorithm. (`#329 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/329>`__)
25
+
26
+
1
27
  v5.8.1 (2026-08-28)
2
28
  ===================
3
29
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-visp
3
- Version: 5.8.2rc1
3
+ Version: 5.8.3
4
4
  Summary: Science processing code for the ViSP instrument on DKIST
5
5
  Author-email: NSO / AURA <dkistdc@nso.edu>
6
6
  License: BSD-3-Clause
@@ -13,11 +13,11 @@ 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: dkist-processing-common==14.4.0
16
+ Requires-Dist: dkist-processing-common==14.5.0
17
17
  Requires-Dist: dkist-processing-math==2.2.3
18
18
  Requires-Dist: dkist-processing-pac==3.1.2
19
- Requires-Dist: dkist-header-validator==5.4.0
20
- Requires-Dist: dkist-fits-specifications==4.28.1
19
+ Requires-Dist: dkist-header-validator==6.0.0
20
+ Requires-Dist: dkist-fits-specifications==4.29.0
21
21
  Requires-Dist: solar-wavelength-calibration==2.0.3
22
22
  Requires-Dist: dkist-service-configuration==4.3.0
23
23
  Requires-Dist: dkist-spectral-lines==3.0.1
@@ -37,7 +37,7 @@ Requires-Dist: pytest-xdist; extra == "test"
37
37
  Requires-Dist: pytest-mock; extra == "test"
38
38
  Requires-Dist: hypothesis; extra == "test"
39
39
  Requires-Dist: towncrier; extra == "test"
40
- Requires-Dist: dkist-data-simulator>=5.2.6; extra == "test"
40
+ Requires-Dist: dkist-data-simulator; extra == "test"
41
41
  Requires-Dist: pydantic; extra == "test"
42
42
  Requires-Dist: dkist-processing-visp[inventory]; extra == "test"
43
43
  Requires-Dist: dkist-processing-visp[asdf]; extra == "test"
@@ -68,59 +68,58 @@ Provides-Extra: frozen
68
68
  Requires-Dist: Deprecated==1.3.1; extra == "frozen"
69
69
  Requires-Dist: ImageIO==2.37.4; extra == "frozen"
70
70
  Requires-Dist: Jinja2==3.1.6; extra == "frozen"
71
- Requires-Dist: Mako==1.4.1; extra == "frozen"
71
+ Requires-Dist: Mako==1.4.3; extra == "frozen"
72
72
  Requires-Dist: MarkupSafe==3.0.3; extra == "frozen"
73
73
  Requires-Dist: PeakUtils==1.3.5; extra == "frozen"
74
- Requires-Dist: PyJWT==2.13.0; extra == "frozen"
74
+ Requires-Dist: PyJWT==2.15.0; extra == "frozen"
75
75
  Requires-Dist: PyYAML==6.0.3; extra == "frozen"
76
76
  Requires-Dist: PyYAML-ft==8.0.0; extra == "frozen"
77
77
  Requires-Dist: Pygments==2.21.0; extra == "frozen"
78
- Requires-Dist: SQLAlchemy==2.0.52; extra == "frozen"
78
+ Requires-Dist: SQLAlchemy==2.0.54; extra == "frozen"
79
79
  Requires-Dist: Send2Trash==2.1.0; extra == "frozen"
80
80
  Requires-Dist: a2wsgi==1.10.10; extra == "frozen"
81
- Requires-Dist: aioftp==0.28.0; extra == "frozen"
81
+ Requires-Dist: aioftp==0.28.3; extra == "frozen"
82
82
  Requires-Dist: aiohappyeyeballs==2.7.1; extra == "frozen"
83
83
  Requires-Dist: aiohttp==3.14.3; extra == "frozen"
84
84
  Requires-Dist: aiosignal==1.4.0; extra == "frozen"
85
- Requires-Dist: aiosmtplib==5.1.2; extra == "frozen"
85
+ Requires-Dist: aiosmtplib==5.1.3; extra == "frozen"
86
86
  Requires-Dist: aiosqlite==0.22.1; extra == "frozen"
87
- Requires-Dist: alembic==1.19.1; extra == "frozen"
88
- Requires-Dist: amqp==5.3.1; extra == "frozen"
87
+ Requires-Dist: alembic==1.20.0; extra == "frozen"
88
+ Requires-Dist: amqp==5.4.0; extra == "frozen"
89
89
  Requires-Dist: annotated-doc==0.0.5; extra == "frozen"
90
90
  Requires-Dist: annotated-types==0.8.0; extra == "frozen"
91
- Requires-Dist: anyio==4.15.0; extra == "frozen"
91
+ Requires-Dist: anyio==4.15.1; extra == "frozen"
92
92
  Requires-Dist: apache-airflow==3.3.1; extra == "frozen"
93
93
  Requires-Dist: apache-airflow-core==3.3.1; extra == "frozen"
94
- Requires-Dist: apache-airflow-providers-celery==3.23.1; extra == "frozen"
95
- Requires-Dist: apache-airflow-providers-common-compat==1.18.0; extra == "frozen"
96
- Requires-Dist: apache-airflow-providers-common-io==1.8.0; extra == "frozen"
94
+ Requires-Dist: apache-airflow-providers-celery==3.24.0; extra == "frozen"
95
+ Requires-Dist: apache-airflow-providers-common-compat==1.19.0; extra == "frozen"
96
+ Requires-Dist: apache-airflow-providers-common-io==1.9.0; extra == "frozen"
97
97
  Requires-Dist: apache-airflow-providers-common-sql==2.1.1; extra == "frozen"
98
98
  Requires-Dist: apache-airflow-providers-postgres==7.0.2; extra == "frozen"
99
- Requires-Dist: apache-airflow-providers-smtp==3.0.3; extra == "frozen"
100
- Requires-Dist: apache-airflow-providers-standard==1.18.0; extra == "frozen"
99
+ Requires-Dist: apache-airflow-providers-smtp==3.0.4; extra == "frozen"
100
+ Requires-Dist: apache-airflow-providers-standard==1.19.0; extra == "frozen"
101
101
  Requires-Dist: apache-airflow-task-sdk==1.3.1; extra == "frozen"
102
- Requires-Dist: appnope==1.0.0; extra == "frozen"
103
102
  Requires-Dist: argcomplete==3.7.2; extra == "frozen"
104
103
  Requires-Dist: argon2-cffi==25.1.0; extra == "frozen"
105
104
  Requires-Dist: argon2-cffi-bindings==26.1.0; extra == "frozen"
106
105
  Requires-Dist: arrow==1.4.0; extra == "frozen"
107
- Requires-Dist: asdf==5.3.1; extra == "frozen"
106
+ Requires-Dist: asdf==5.4.0; extra == "frozen"
108
107
  Requires-Dist: asdf_standard==1.5.0; extra == "frozen"
109
108
  Requires-Dist: asgiref==3.12.1; extra == "frozen"
110
109
  Requires-Dist: asteval==1.0.10; extra == "frozen"
111
110
  Requires-Dist: astropy==7.0.2; extra == "frozen"
112
- Requires-Dist: astropy-iers-data==0.2026.8.31.0.57.9; extra == "frozen"
111
+ Requires-Dist: astropy-iers-data==0.2026.9.21.0.56.25; extra == "frozen"
113
112
  Requires-Dist: asttokens==3.0.2; extra == "frozen"
114
113
  Requires-Dist: async-lru==2.3.0; extra == "frozen"
115
114
  Requires-Dist: asyncpg==0.31.0; extra == "frozen"
116
115
  Requires-Dist: attrs==26.1.0; extra == "frozen"
117
116
  Requires-Dist: babel==2.18.0; extra == "frozen"
118
117
  Requires-Dist: beautifulsoup4==4.15.0; extra == "frozen"
119
- Requires-Dist: billiard==4.2.4; extra == "frozen"
118
+ Requires-Dist: billiard==4.3.0; extra == "frozen"
120
119
  Requires-Dist: bleach==6.4.0; extra == "frozen"
121
- Requires-Dist: boto3==1.43.87; extra == "frozen"
122
- Requires-Dist: botocore==1.43.87; extra == "frozen"
123
- Requires-Dist: cachetools==7.1.8; extra == "frozen"
120
+ Requires-Dist: boto3==1.43.101; extra == "frozen"
121
+ Requires-Dist: botocore==1.43.101; extra == "frozen"
122
+ Requires-Dist: cachetools==7.2.0; extra == "frozen"
124
123
  Requires-Dist: cadwyn==7.0.0; extra == "frozen"
125
124
  Requires-Dist: celery==5.6.3; extra == "frozen"
126
125
  Requires-Dist: certifi==2026.7.22; extra == "frozen"
@@ -129,51 +128,51 @@ Requires-Dist: charset-normalizer==3.5.1; extra == "frozen"
129
128
  Requires-Dist: click==8.5.0; extra == "frozen"
130
129
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
131
130
  Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
132
- Requires-Dist: click-repl==0.3.0; extra == "frozen"
131
+ Requires-Dist: click-repl==0.4.0; extra == "frozen"
133
132
  Requires-Dist: cloudpickle==3.1.2; extra == "frozen"
134
133
  Requires-Dist: colorlog==6.12.0; extra == "frozen"
135
134
  Requires-Dist: comm==0.2.3; extra == "frozen"
136
- Requires-Dist: contourpy==1.3.3; extra == "frozen"
135
+ Requires-Dist: contourpy==1.4.0; extra == "frozen"
137
136
  Requires-Dist: cron_descriptor==2.1.0; extra == "frozen"
138
137
  Requires-Dist: croniter==6.2.4; extra == "frozen"
139
138
  Requires-Dist: cryptography==50.0.1; extra == "frozen"
140
139
  Requires-Dist: cycler==0.12.1; extra == "frozen"
141
- Requires-Dist: debugpy==1.8.21; extra == "frozen"
140
+ Requires-Dist: debugpy==1.8.22; extra == "frozen"
142
141
  Requires-Dist: decorator==5.3.1; extra == "frozen"
143
142
  Requires-Dist: defusedxml==0.7.1; extra == "frozen"
144
143
  Requires-Dist: dill==0.4.1; extra == "frozen"
145
- Requires-Dist: dkist-header-validator==5.4.0; extra == "frozen"
146
- Requires-Dist: dkist-processing-common==14.4.0; extra == "frozen"
144
+ Requires-Dist: dkist-header-validator==6.0.0; extra == "frozen"
145
+ Requires-Dist: dkist-processing-common==14.5.0; extra == "frozen"
147
146
  Requires-Dist: dkist-processing-core==7.5.0; extra == "frozen"
148
147
  Requires-Dist: dkist-processing-math==2.2.3; extra == "frozen"
149
148
  Requires-Dist: dkist-processing-pac==3.1.2; extra == "frozen"
150
- Requires-Dist: dkist-processing-visp==5.8.2rc1; extra == "frozen"
149
+ Requires-Dist: dkist-processing-visp==5.8.3; extra == "frozen"
151
150
  Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
152
151
  Requires-Dist: dkist-spectral-lines==3.0.1; extra == "frozen"
153
- Requires-Dist: dkist_fits_specifications==4.28.1; extra == "frozen"
152
+ Requires-Dist: dkist_fits_specifications==4.29.0; extra == "frozen"
154
153
  Requires-Dist: dnspython==2.8.0; extra == "frozen"
155
154
  Requires-Dist: email-validator==2.3.0; extra == "frozen"
156
155
  Requires-Dist: executing==2.2.1; extra == "frozen"
157
156
  Requires-Dist: fastapi==0.136.3; extra == "frozen"
158
157
  Requires-Dist: fastapi-cli==0.0.32; extra == "frozen"
159
158
  Requires-Dist: fastjsonschema==2.22.2; extra == "frozen"
160
- Requires-Dist: flower==2.1.0; extra == "frozen"
161
- Requires-Dist: fonttools==4.64.0; extra == "frozen"
159
+ Requires-Dist: flower==2.2.0; extra == "frozen"
160
+ Requires-Dist: fonttools==4.66.0; extra == "frozen"
162
161
  Requires-Dist: fqdn==1.5.1; extra == "frozen"
163
162
  Requires-Dist: frozenlist==1.8.0; extra == "frozen"
164
- Requires-Dist: fsspec==2026.7.0; extra == "frozen"
163
+ Requires-Dist: fsspec==2026.9.0; extra == "frozen"
165
164
  Requires-Dist: globus-sdk==4.9.0; extra == "frozen"
166
- Requires-Dist: googleapis-common-protos==1.75.2; extra == "frozen"
165
+ Requires-Dist: googleapis-common-protos==1.75.3; extra == "frozen"
167
166
  Requires-Dist: gqlclient==2.0.0; extra == "frozen"
168
167
  Requires-Dist: greenback==1.3.0; extra == "frozen"
169
- Requires-Dist: greenlet==3.5.5; extra == "frozen"
170
- Requires-Dist: grpcio==1.83.1; extra == "frozen"
168
+ Requires-Dist: greenlet==3.5.6; extra == "frozen"
169
+ Requires-Dist: grpcio==1.84.0; extra == "frozen"
171
170
  Requires-Dist: h11==0.16.0; extra == "frozen"
172
171
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
173
172
  Requires-Dist: httptools==0.8.0; extra == "frozen"
174
173
  Requires-Dist: httpx==0.28.1; extra == "frozen"
175
174
  Requires-Dist: humanize==4.16.0; extra == "frozen"
176
- Requires-Dist: idna==3.19; extra == "frozen"
175
+ Requires-Dist: idna==3.20; extra == "frozen"
177
176
  Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
178
177
  Requires-Dist: importlib_metadata==9.0.1; extra == "frozen"
179
178
  Requires-Dist: ipykernel==7.3.0; extra == "frozen"
@@ -190,18 +189,18 @@ Requires-Dist: jsonschema==4.26.0; extra == "frozen"
190
189
  Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
191
190
  Requires-Dist: jupyter-events==0.12.1; extra == "frozen"
192
191
  Requires-Dist: jupyter-lsp==2.3.1; extra == "frozen"
193
- Requires-Dist: jupyter_builder==1.2.2; extra == "frozen"
192
+ Requires-Dist: jupyter_builder==1.2.3; extra == "frozen"
194
193
  Requires-Dist: jupyter_client==8.10.0; extra == "frozen"
195
194
  Requires-Dist: jupyter_core==5.9.1; extra == "frozen"
196
- Requires-Dist: jupyter_server==2.21.0; extra == "frozen"
195
+ Requires-Dist: jupyter_server==2.21.1; extra == "frozen"
197
196
  Requires-Dist: jupyter_server_terminals==0.5.4; extra == "frozen"
198
- Requires-Dist: jupyterlab==4.6.3; extra == "frozen"
197
+ Requires-Dist: jupyterlab==4.6.4; extra == "frozen"
199
198
  Requires-Dist: jupyterlab_pygments==0.3.0; extra == "frozen"
200
- Requires-Dist: jupyterlab_server==2.28.0; extra == "frozen"
199
+ Requires-Dist: jupyterlab_server==2.28.1; extra == "frozen"
201
200
  Requires-Dist: kiwisolver==1.5.1; extra == "frozen"
202
201
  Requires-Dist: kombu==5.6.2; extra == "frozen"
203
202
  Requires-Dist: lark==1.3.1; extra == "frozen"
204
- Requires-Dist: lazy-loader==0.5; extra == "frozen"
203
+ Requires-Dist: lazy-loader==0.6; extra == "frozen"
205
204
  Requires-Dist: lazy-object-proxy==1.12.0; extra == "frozen"
206
205
  Requires-Dist: libcst==1.9.0; extra == "frozen"
207
206
  Requires-Dist: linkify-it-py==2.2.0; extra == "frozen"
@@ -209,7 +208,7 @@ Requires-Dist: lmfit==1.3.4; extra == "frozen"
209
208
  Requires-Dist: lockfile==0.12.2; extra == "frozen"
210
209
  Requires-Dist: loguru==0.7.3; extra == "frozen"
211
210
  Requires-Dist: markdown-it-py==4.2.0; extra == "frozen"
212
- Requires-Dist: matplotlib==3.11.1; extra == "frozen"
211
+ Requires-Dist: matplotlib==3.11.2; extra == "frozen"
213
212
  Requires-Dist: matplotlib-inline==0.2.2; extra == "frozen"
214
213
  Requires-Dist: mdurl==0.1.2; extra == "frozen"
215
214
  Requires-Dist: methodtools==0.4.7; extra == "frozen"
@@ -217,14 +216,14 @@ Requires-Dist: mistune==3.3.4; extra == "frozen"
217
216
  Requires-Dist: more-itertools==11.1.0; extra == "frozen"
218
217
  Requires-Dist: moviepy==2.1.2; extra == "frozen"
219
218
  Requires-Dist: msgspec==0.21.1; extra == "frozen"
220
- Requires-Dist: multidict==6.7.1; extra == "frozen"
219
+ Requires-Dist: multidict==6.9.1; extra == "frozen"
221
220
  Requires-Dist: natsort==8.4.0; extra == "frozen"
222
221
  Requires-Dist: nbclient==0.11.0; extra == "frozen"
223
222
  Requires-Dist: nbconvert==7.17.1; extra == "frozen"
224
223
  Requires-Dist: nbformat==5.11.1; extra == "frozen"
225
- Requires-Dist: nest-asyncio2==1.7.2; extra == "frozen"
226
- Requires-Dist: networkx==3.6.1; extra == "frozen"
227
- Requires-Dist: notebook==7.6.2; extra == "frozen"
224
+ Requires-Dist: nest-asyncio2==1.7.3; extra == "frozen"
225
+ Requires-Dist: networkx==3.7; extra == "frozen"
226
+ Requires-Dist: notebook==7.6.3; extra == "frozen"
228
227
  Requires-Dist: notebook_shim==0.2.4; extra == "frozen"
229
228
  Requires-Dist: numpy==2.2.5; extra == "frozen"
230
229
  Requires-Dist: object-clerk==1.0.0; extra == "frozen"
@@ -254,7 +253,7 @@ Requires-Dist: opentelemetry-semantic-conventions==0.65b0; extra == "frozen"
254
253
  Requires-Dist: opentelemetry-util-http==0.65b0; extra == "frozen"
255
254
  Requires-Dist: outcome==1.3.0.post0; extra == "frozen"
256
255
  Requires-Dist: packaging==26.3; extra == "frozen"
257
- Requires-Dist: pandas==3.0.5; extra == "frozen"
256
+ Requires-Dist: pandas==3.0.6; extra == "frozen"
258
257
  Requires-Dist: pandocfilters==1.5.1; extra == "frozen"
259
258
  Requires-Dist: parfive==2.3.1; extra == "frozen"
260
259
  Requires-Dist: parso==0.8.7; extra == "frozen"
@@ -265,35 +264,35 @@ Requires-Dist: pexpect==4.9.0; extra == "frozen"
265
264
  Requires-Dist: pika==1.4.4; extra == "frozen"
266
265
  Requires-Dist: pillow==10.4.0; extra == "frozen"
267
266
  Requires-Dist: pip==26.2.1; extra == "frozen"
268
- Requires-Dist: platformdirs==4.11.7; extra == "frozen"
267
+ Requires-Dist: platformdirs==4.11.12; extra == "frozen"
269
268
  Requires-Dist: pluggy==1.6.0; extra == "frozen"
270
269
  Requires-Dist: pooch==1.9.0; extra == "frozen"
271
270
  Requires-Dist: proglog==0.1.12; extra == "frozen"
272
271
  Requires-Dist: prometheus_client==0.26.0; extra == "frozen"
273
272
  Requires-Dist: prompt_toolkit==3.0.53; extra == "frozen"
274
- Requires-Dist: propcache==0.5.2; extra == "frozen"
275
- Requires-Dist: protobuf==7.36.1; extra == "frozen"
273
+ Requires-Dist: propcache==0.5.4; extra == "frozen"
274
+ Requires-Dist: protobuf==7.36.2; extra == "frozen"
276
275
  Requires-Dist: psutil==7.2.2; extra == "frozen"
277
- Requires-Dist: psycopg==3.3.5; extra == "frozen"
278
- Requires-Dist: psycopg-binary==3.3.5; extra == "frozen"
279
- Requires-Dist: psycopg2-binary==2.9.12; extra == "frozen"
276
+ Requires-Dist: psycopg==3.3.6; extra == "frozen"
277
+ Requires-Dist: psycopg-binary==3.3.6; extra == "frozen"
278
+ Requires-Dist: psycopg2-binary==2.9.13; extra == "frozen"
280
279
  Requires-Dist: ptyprocess==0.7.0; extra == "frozen"
281
- Requires-Dist: pure_eval==0.2.3; extra == "frozen"
280
+ Requires-Dist: pure_eval==0.2.4; extra == "frozen"
282
281
  Requires-Dist: pycparser==3.0; extra == "frozen"
283
282
  Requires-Dist: pydantic==2.13.5; extra == "frozen"
284
283
  Requires-Dist: pydantic-extra-types==2.11.1; extra == "frozen"
285
284
  Requires-Dist: pydantic-settings==2.15.0; extra == "frozen"
286
285
  Requires-Dist: pydantic_core==2.46.5; extra == "frozen"
287
286
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
288
- Requires-Dist: pygtrie==2.6.1; extra == "frozen"
289
- Requires-Dist: pyparsing==3.3.2; extra == "frozen"
287
+ Requires-Dist: pygtrie==2.6.2; extra == "frozen"
288
+ Requires-Dist: pyparsing==3.3.3; extra == "frozen"
290
289
  Requires-Dist: python-daemon==3.1.2; extra == "frozen"
291
290
  Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
292
291
  Requires-Dist: python-dotenv==1.2.3; extra == "frozen"
293
292
  Requires-Dist: python-json-logger==4.2.0; extra == "frozen"
294
293
  Requires-Dist: python-multipart==0.0.32; extra == "frozen"
295
- Requires-Dist: python-slugify==8.0.4; extra == "frozen"
296
- Requires-Dist: pytz==2026.3.post1; extra == "frozen"
294
+ Requires-Dist: python-slugify==9.1.1; extra == "frozen"
295
+ Requires-Dist: pytz==2026.4; extra == "frozen"
297
296
  Requires-Dist: pyzmq==27.2.0; extra == "frozen"
298
297
  Requires-Dist: redis==6.4.0; extra == "frozen"
299
298
  Requires-Dist: referencing==0.37.0; extra == "frozen"
@@ -303,7 +302,7 @@ Requires-Dist: rfc3986-validator==0.1.1; extra == "frozen"
303
302
  Requires-Dist: rfc3987-syntax==1.1.0; extra == "frozen"
304
303
  Requires-Dist: rich==15.0.0; extra == "frozen"
305
304
  Requires-Dist: rich-argparse==1.8.0; extra == "frozen"
306
- Requires-Dist: rich-toolkit==0.20.3; extra == "frozen"
305
+ Requires-Dist: rich-toolkit==0.20.5; extra == "frozen"
307
306
  Requires-Dist: rpds-py==2026.6.3; extra == "frozen"
308
307
  Requires-Dist: s3transfer==0.19.2; extra == "frozen"
309
308
  Requires-Dist: scikit-image==0.25.2; extra == "frozen"
@@ -315,11 +314,11 @@ Requires-Dist: shellingham==1.5.4; extra == "frozen"
315
314
  Requires-Dist: six==1.17.0; extra == "frozen"
316
315
  Requires-Dist: sniffio==1.3.1; extra == "frozen"
317
316
  Requires-Dist: solar-wavelength-calibration==2.0.3; extra == "frozen"
318
- Requires-Dist: soupsieve==2.9.2; extra == "frozen"
317
+ Requires-Dist: soupsieve==2.10; extra == "frozen"
319
318
  Requires-Dist: sqids==0.5.1; extra == "frozen"
320
319
  Requires-Dist: sqlparse==0.6.0; extra == "frozen"
321
320
  Requires-Dist: stack-data==0.6.3; extra == "frozen"
322
- Requires-Dist: starlette==1.6.0; extra == "frozen"
321
+ Requires-Dist: starlette==1.7.0; extra == "frozen"
323
322
  Requires-Dist: structlog==26.1.0; extra == "frozen"
324
323
  Requires-Dist: sunpy==6.1.1; extra == "frozen"
325
324
  Requires-Dist: svcs==26.2.0; extra == "frozen"
@@ -329,36 +328,36 @@ Requires-Dist: tenacity==8.5.0; extra == "frozen"
329
328
  Requires-Dist: termcolor==3.3.0; extra == "frozen"
330
329
  Requires-Dist: terminado==0.18.1; extra == "frozen"
331
330
  Requires-Dist: text-unidecode==1.3; extra == "frozen"
332
- Requires-Dist: threadpoolctl==3.6.0; extra == "frozen"
333
- Requires-Dist: tifffile==2026.8.23; extra == "frozen"
331
+ Requires-Dist: threadpoolctl==3.7.0; extra == "frozen"
332
+ Requires-Dist: tifffile==2026.9.20; extra == "frozen"
334
333
  Requires-Dist: tinycss2==1.5.1; extra == "frozen"
335
- Requires-Dist: tornado==6.5.8; extra == "frozen"
336
- Requires-Dist: tqdm==4.70.0; extra == "frozen"
334
+ Requires-Dist: tornado==6.5.10; extra == "frozen"
335
+ Requires-Dist: tqdm==4.70.1; extra == "frozen"
337
336
  Requires-Dist: traitlets==5.16.1; extra == "frozen"
338
337
  Requires-Dist: typer==0.27.2; extra == "frozen"
339
338
  Requires-Dist: typing-inspection==0.4.4; extra == "frozen"
340
339
  Requires-Dist: typing_extensions==4.16.0; extra == "frozen"
341
- Requires-Dist: tzdata==2026.3; extra == "frozen"
340
+ Requires-Dist: tzdata==2026.4; extra == "frozen"
342
341
  Requires-Dist: tzlocal==5.4.4; extra == "frozen"
343
342
  Requires-Dist: uncertainties==3.2.3; extra == "frozen"
344
343
  Requires-Dist: universal_pathlib==0.3.10; extra == "frozen"
345
344
  Requires-Dist: uri-template==1.3.0; extra == "frozen"
346
- Requires-Dist: urllib3==2.7.0; extra == "frozen"
345
+ Requires-Dist: urllib3==2.8.0; extra == "frozen"
347
346
  Requires-Dist: uuid6==2025.0.1; extra == "frozen"
348
- Requires-Dist: uvicorn==0.52.4; extra == "frozen"
347
+ Requires-Dist: uvicorn==0.53.0; extra == "frozen"
349
348
  Requires-Dist: uvloop==0.22.1; extra == "frozen"
350
349
  Requires-Dist: vine==5.1.0; extra == "frozen"
351
350
  Requires-Dist: voluptuous==0.16.0; extra == "frozen"
352
- Requires-Dist: watchfiles==1.2.0; extra == "frozen"
353
- Requires-Dist: wcwidth==0.8.3; extra == "frozen"
351
+ Requires-Dist: watchfiles==1.3.0; extra == "frozen"
352
+ Requires-Dist: wcwidth==0.9.1; extra == "frozen"
354
353
  Requires-Dist: webcolors==25.10.0; extra == "frozen"
355
354
  Requires-Dist: webencodings==0.6.1; extra == "frozen"
356
355
  Requires-Dist: websocket-client==1.9.2; extra == "frozen"
357
356
  Requires-Dist: websockets==17.1; extra == "frozen"
358
357
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
359
- Requires-Dist: wrapt==2.4.0; extra == "frozen"
358
+ Requires-Dist: wrapt==2.4.1; extra == "frozen"
360
359
  Requires-Dist: yamale==6.1.0; extra == "frozen"
361
- Requires-Dist: yarl==1.24.5; extra == "frozen"
360
+ Requires-Dist: yarl==1.25.1; extra == "frozen"
362
361
  Requires-Dist: zipp==4.1.0; extra == "frozen"
363
362
 
364
363
  dkist-processing-visp
@@ -16,7 +16,6 @@ from astropy.io import fits
16
16
  from astropy.time import Time
17
17
  from dkist_data_simulator.spec122 import Spec122Dataset
18
18
  from dkist_header_validator.translator import sanitize_to_spec214_level1
19
- from dkist_header_validator.translator import translate_spec122_to_spec214_l0
20
19
  from dkist_processing_common.codecs.basemodel import basemodel_encoder
21
20
  from dkist_processing_common.codecs.fits import fits_array_encoder
22
21
  from dkist_processing_common.codecs.fits import fits_hdulist_encoder
@@ -449,8 +448,7 @@ def write_frames_to_task(
449
448
  header = frame.header()
450
449
  data = data_func(frame)
451
450
  frame_tags = tags + tag_func(frame)
452
- translated_header = fits.Header(translate_spec122_to_spec214_l0(header))
453
- task.write(data=data, header=translated_header, tags=frame_tags, encoder=fits_array_encoder)
451
+ task.write(data=data, header=header, tags=frame_tags, encoder=fits_array_encoder)
454
452
  num_frames += 1
455
453
 
456
454
  return num_frames
@@ -492,7 +490,7 @@ def write_output_frames_to_task(
492
490
  header = frame.header()
493
491
  data = data_func(frame)
494
492
  frame_tags = tags + tag_func(frame)
495
- translated_header = convert_header_122l0_to_214l1(header, num_dataset_axes)
493
+ translated_header = convert_header_214l0_to_214l1(header, num_dataset_axes)
496
494
  hdu_list = fits.HDUList(
497
495
  [fits.PrimaryHDU(), fits.CompImageHDU(data=data, header=translated_header)]
498
496
  )
@@ -502,12 +500,12 @@ def write_output_frames_to_task(
502
500
  return num_frames
503
501
 
504
502
 
505
- def convert_header_122l0_to_214l1(header: dict, num_dataset_axes) -> dict:
506
- l0_214_header = translate_spec122_to_spec214_l0(header)
503
+ def convert_header_214l0_to_214l1(header: dict, num_dataset_axes) -> fits.Header:
504
+ l0_214_header = fits.Header(header)
507
505
  l0_214_header["DNAXIS"] = num_dataset_axes
508
506
  l0_214_header["DAAXES"] = 2
509
507
  l0_214_header["DEAXES"] = num_dataset_axes - 2
510
- l1_header = sanitize_to_spec214_level1(input_headers=l0_214_header)
508
+ l1_header = sanitize_to_spec214_level1(l0_214_header)
511
509
 
512
510
  return l1_header
513
511
 
@@ -38,6 +38,7 @@ class VispHeaders(Spec122Dataset):
38
38
  arm_position: float = -4.0,
39
39
  swap_wcs_axes: bool = False,
40
40
  slit_velocity_mm_per_s: float = 1.5,
41
+ file_schema: str = "level0_spec214",
41
42
  **kwargs,
42
43
  ):
43
44
  super().__init__(
@@ -45,6 +46,7 @@ class VispHeaders(Spec122Dataset):
45
46
  array_shape=array_shape,
46
47
  time_delta=time_delta,
47
48
  instrument=instrument,
49
+ file_schema=file_schema,
48
50
  **kwargs,
49
51
  )
50
52
  self.swap_wcs_axes = swap_wcs_axes
@@ -61,6 +63,7 @@ class VispHeaders(Spec122Dataset):
61
63
  self.add_constant_key("VISP_018", slit_velocity_mm_per_s)
62
64
  else:
63
65
  self.add_remove_key("VISP_018")
66
+ self.add_remove_key("VSPSLTSV")
64
67
  self.add_constant_key("PAC__005", "0")
65
68
  self.add_constant_key("PAC__007", "10")
66
69
  self.add_constant_key("DKIST011", ip_start_time)
@@ -403,6 +406,7 @@ class VispHeadersValidObserveFrames(VispHeaders):
403
406
 
404
407
  if remove_visp_020:
405
408
  self.add_remove_key("VISP_020")
409
+ self.add_remove_key("VSPSTP")
406
410
 
407
411
  @property
408
412
  def current_map(self) -> int:
@@ -8,6 +8,7 @@ import asdf
8
8
  from astropy.io import fits
9
9
  from dkist_header_validator import spec122_validator
10
10
  from dkist_header_validator import spec214_validator
11
+ from dkist_header_validator.translator import translate_spec122_to_spec214_l0
11
12
  from dkist_processing_common.codecs.fits import fits_array_decoder
12
13
  from dkist_processing_common.codecs.fits import fits_hdulist_encoder
13
14
  from dkist_processing_common.models.constants import BudName
@@ -85,7 +86,7 @@ class SaveInputParsing(WorkflowTaskBase):
85
86
  if member in input_paths:
86
87
  file_tag_dict[member].append(tag)
87
88
 
88
- return file_tag_dict
89
+ return dict(file_tag_dict)
89
90
 
90
91
  def get_constants(self) -> dict[str, str | float | list]:
91
92
  constants_dict = dict()
@@ -613,12 +614,10 @@ def translate_122_to_214l0_task(suffix: str):
613
614
  i = 0
614
615
  if hdl[i].data is None:
615
616
  i = 1
616
-
617
- header = spec122_validator.validate_and_translate_to_214_l0(
618
- hdl[i].header, return_type=fits.HDUList
619
- )[0].header
620
-
621
- comp_hdu = fits.CompImageHDU(header=header, data=hdl[i].data)
617
+ header = fits.Header(hdl[i].header)
618
+ spec122_validator.validate(header)
619
+ translated_header = translate_spec122_to_spec214_l0(header)
620
+ comp_hdu = fits.CompImageHDU(header=translated_header, data=hdl[i].data)
622
621
  comp_hdl = fits.HDUList([fits.PrimaryHDU(), comp_hdu])
623
622
  comp_hdl.writeto(translated_file_name, overwrite=True)
624
623
  comp_hdl.close()
@@ -6,8 +6,6 @@ import pytest
6
6
  from astropy.io import fits
7
7
  from dkist_data_simulator.dataset import key_function
8
8
  from dkist_data_simulator.spec122 import Spec122Dataset
9
- from dkist_header_validator import spec122_validator
10
- from dkist_header_validator.translator import translate_spec122_to_spec214_l0
11
9
  from dkist_processing_common._util.scratch import WorkflowFileSystem
12
10
  from dkist_processing_common.codecs.basemodel import basemodel_decoder
13
11
  from dkist_processing_common.codecs.fits import fits_array_encoder
@@ -100,7 +98,12 @@ class CalibrationSequenceStepDataset(Spec122Dataset):
100
98
  self.dark_status = dark_status
101
99
  dataset_shape = (self.num_mod,) + array_shape[1:]
102
100
  super().__init__(
103
- dataset_shape, array_shape, time_delta, instrument=instrument, start_time=start_time
101
+ dataset_shape,
102
+ array_shape,
103
+ time_delta,
104
+ instrument=instrument,
105
+ start_time=start_time,
106
+ file_schema="level0_spec214",
104
107
  )
105
108
  self.add_constant_key("DKIST004", TaskName.polcal.value.lower())
106
109
  self.add_constant_key("WAVELNTH", 854.0)
@@ -202,17 +205,13 @@ def cs_with_correct_geometry():
202
205
  start_time=start_time,
203
206
  num_mod=10,
204
207
  )
205
- header_list = [
206
- spec122_validator.validate_and_translate_to_214_l0(
207
- d.header(), return_type=fits.HDUList
208
- )[0].header
209
- for d in ds
210
- ]
208
+ header_list = [fits.Header(d.header()) for d in ds]
209
+
211
210
  fits_obj_list = []
212
211
  for m in range(ds.num_mod):
213
212
  fits_obj_list.append(
214
213
  VispL0FitsAccess(
215
- header=fits.Header(header_list.pop(0)),
214
+ header=header_list.pop(0),
216
215
  data=np.ones(data_shape) * 1e3,
217
216
  auto_squeeze=False,
218
217
  )
@@ -313,10 +312,9 @@ def write_background_input_files_to_task(background_full_beam_shape, fully_reali
313
312
  for n in range(num_steps):
314
313
  for m in range(num_mod):
315
314
  fits_obj = fully_realistic_cs[n][m]
316
- translated_header = translate_spec122_to_spec214_l0(fits_obj.header)
317
315
  task.write(
318
316
  data=fits_obj.data,
319
- header=fits.Header(translated_header),
317
+ header=fits.Header(fits_obj.header),
320
318
  tags=[
321
319
  VispTag.input(),
322
320
  VispTag.task_polcal(),
@@ -1,6 +1,5 @@
1
1
  import pytest
2
2
  from astropy.io import fits
3
- from dkist_header_validator.translator import translate_spec122_to_spec214_l0
4
3
 
5
4
  from dkist_processing_visp.models.fits_access import VispMetadataKey
6
5
  from dkist_processing_visp.parsers.visp_l0_fits_access import VispL0FitsAccess
@@ -21,8 +20,7 @@ def complete_header():
21
20
  polarimeter_mode="observe_intensity",
22
21
  slit_velocity_mm_per_s=0.0,
23
22
  )
24
- header = translate_spec122_to_spec214_l0(dataset.header())
25
- return fits.Header(header)
23
+ return fits.Header(dataset.header())
26
24
 
27
25
 
28
26
  def test_metadata_keys_in_access_bases(complete_header):
@@ -6,7 +6,6 @@ import numpy as np
6
6
  import pytest
7
7
  from astropy.io import fits
8
8
  from astropy.time import Time
9
- from dkist_header_validator.translator import translate_spec122_to_spec214_l0
10
9
  from dkist_processing_common._util.scratch import WorkflowFileSystem
11
10
  from dkist_processing_common.codecs.fits import fits_access_decoder
12
11
  from dkist_processing_common.codecs.fits import fits_hdulist_encoder
@@ -41,7 +40,7 @@ def complete_map_headers():
41
40
  num_raster_steps=num_steps,
42
41
  num_modstates=num_modstates,
43
42
  )
44
- header_list = [translate_spec122_to_spec214_l0(d.header()) for d in dataset]
43
+ header_list = [fits.Header(d.header()) for d in dataset]
45
44
 
46
45
  return header_list, num_steps, num_modstates, num_maps
47
46
 
@@ -51,7 +50,7 @@ def organized_fits_access_dict(complete_map_headers):
51
50
  all_dict = defaultdict(lambda: defaultdict(list))
52
51
 
53
52
  for header in complete_map_headers[0]:
54
- fits_obj = VispL0FitsAccess(header=fits.Header(header))
53
+ fits_obj = VispL0FitsAccess(header=header)
55
54
  all_dict[fits_obj.raster_scan_step][fits_obj.modulator_state].append(fits_obj)
56
55
 
57
56
  return all_dict
@@ -69,9 +68,9 @@ def write_obs_frames_with_multiple_exp_per_step_to_task(task, num_exp: int):
69
68
  num_raster_steps=num_steps,
70
69
  num_modstates=num_modstates,
71
70
  )
72
- header_list = [translate_spec122_to_spec214_l0(d.header()) for d in dataset]
71
+ header_list = [fits.Header(d.header()) for d in dataset]
73
72
  for header in header_list:
74
- hdu = fits.PrimaryHDU(data=np.ones(array_shape), header=fits.Header(header))
73
+ hdu = fits.PrimaryHDU(data=np.ones(array_shape), header=header)
75
74
  hdul = fits.HDUList([hdu])
76
75
 
77
76
  # Make multiple exposures by just writing the same header twice
@@ -152,7 +151,7 @@ def test_parse_map_repeats(map_only_parse_task, complete_map_headers):
152
151
  complete_headers, num_steps, num_modstates, num_maps = complete_map_headers
153
152
 
154
153
  for header in complete_headers:
155
- hdu = fits.PrimaryHDU(data=np.ones((1, 2, 2)), header=fits.Header(header))
154
+ hdu = fits.PrimaryHDU(data=np.ones((1, 2, 2)), header=header)
156
155
  hdul = fits.HDUList([hdu])
157
156
  task.write(data=hdul, tags=[VispTag.input(), VispTag.frame()], encoder=fits_hdulist_encoder)
158
157
 
@@ -69,7 +69,6 @@ def write_l0_task_frames_to_task(num_modstates: int, dataset_task_types: list[st
69
69
  ds = VispHeaders(
70
70
  dataset_shape=(num_modstates,) + array_shape[-2:],
71
71
  array_shape=array_shape,
72
- file_schema="level0_spec214",
73
72
  )
74
73
  for modstate, frame in enumerate(ds, start=1):
75
74
  header = frame.header()
@@ -7,7 +7,6 @@ import pytest
7
7
  from astropy.io import fits
8
8
  from astropy.time import Time
9
9
  from astropy.time import TimeDelta
10
- from dkist_header_validator import spec122_validator
11
10
  from dkist_processing_common._util.scratch import WorkflowFileSystem
12
11
  from dkist_processing_common.codecs.basemodel import basemodel_decoder
13
12
  from dkist_processing_common.codecs.fits import fits_array_encoder
@@ -201,12 +200,7 @@ def headers_with_dates() -> tuple[list[fits.Header], str, int, int]:
201
200
  num_modstates=1,
202
201
  start_time=datetime.fromisoformat(start_time),
203
202
  )
204
- headers = [
205
- spec122_validator.validate_and_translate_to_214_l0(d.header(), return_type=fits.HDUList)[
206
- 0
207
- ].header
208
- for d in ds
209
- ]
203
+ headers = [fits.Header(d.header()) for d in ds]
210
204
  random.shuffle(headers) # Shuffle to make sure they're not already in time order
211
205
  for h in headers:
212
206
  h[MetadataKey.fpa_exposure_time_ms] = exp_time # Exposure time, in ms