dkist-processing-visp 5.5.0__tar.gz → 5.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/CHANGELOG.rst +10 -0
  2. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/PKG-INFO +10 -10
  3. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/write_l1.py +5 -6
  4. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_parse.py +7 -4
  5. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_write_l1.py +2 -2
  6. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp.egg-info/PKG-INFO +10 -10
  7. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp.egg-info/requires.txt +9 -9
  8. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/pyproject.toml +11 -11
  9. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/.gitignore +0 -0
  10. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/.pre-commit-config.yaml +0 -0
  11. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/.readthedocs.yml +0 -0
  12. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/.snyk +0 -0
  13. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/README.rst +0 -0
  14. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/SCIENCE_CHANGELOG.rst +0 -0
  15. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/bitbucket-pipelines.yml +0 -0
  16. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/changelog/.gitempty +0 -0
  17. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/__init__.py +0 -0
  18. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/config.py +0 -0
  19. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/fonts/Lato-Regular.ttf +0 -0
  20. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/models/__init__.py +0 -0
  21. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/models/constants.py +0 -0
  22. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/models/dataset_extras.py +0 -0
  23. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/models/fits_access.py +0 -0
  24. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/models/metric_code.py +0 -0
  25. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/models/parameters.py +0 -0
  26. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/models/tags.py +0 -0
  27. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/models/task_name.py +0 -0
  28. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/parsers/__init__.py +0 -0
  29. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/parsers/map_repeats.py +0 -0
  30. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/parsers/modulator_states.py +0 -0
  31. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/parsers/polarimeter_mode.py +0 -0
  32. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/parsers/raster_step.py +0 -0
  33. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/parsers/spectrograph_configuration.py +0 -0
  34. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/parsers/time.py +0 -0
  35. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/parsers/visp_l0_fits_access.py +0 -0
  36. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/parsers/visp_l1_fits_access.py +0 -0
  37. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/__init__.py +0 -0
  38. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/assemble_movie.py +0 -0
  39. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/background_light.py +0 -0
  40. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/dark.py +0 -0
  41. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/geometric.py +0 -0
  42. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/instrument_polarization.py +0 -0
  43. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/l1_output_data.py +0 -0
  44. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/lamp.py +0 -0
  45. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/make_movie_frames.py +0 -0
  46. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/mixin/__init__.py +0 -0
  47. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/mixin/beam_access.py +0 -0
  48. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/mixin/corrections.py +0 -0
  49. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/mixin/downsample.py +0 -0
  50. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/parse.py +0 -0
  51. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/polcal_as_science.py +0 -0
  52. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/quality_metrics.py +0 -0
  53. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/science.py +0 -0
  54. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/solar.py +0 -0
  55. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/visp_base.py +0 -0
  56. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/wavelength_calibration.py +0 -0
  57. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tasks/write_dataset_extras.py +0 -0
  58. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/README.rst +0 -0
  59. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/__init__.py +0 -0
  60. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/conftest.py +0 -0
  61. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/header_models.py +0 -0
  62. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/local_trial_workflows/__init__.py +0 -0
  63. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/local_trial_workflows/l0_cals_only.py +0 -0
  64. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/local_trial_workflows/l0_polcals_as_science.py +0 -0
  65. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/local_trial_workflows/l0_solar_gain_as_science.py +0 -0
  66. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/local_trial_workflows/l0_to_l1.py +0 -0
  67. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/local_trial_workflows/local_trial_helpers.py +0 -0
  68. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_assemble_movie.py +0 -0
  69. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_assemble_quality.py +0 -0
  70. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_background_light.py +0 -0
  71. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_dark.py +0 -0
  72. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_downsample.py +0 -0
  73. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_fits_access.py +0 -0
  74. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_geometric.py +0 -0
  75. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_instrument_polarization.py +0 -0
  76. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_lamp.py +0 -0
  77. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_make_movie_frames.py +0 -0
  78. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_map_repeats.py +0 -0
  79. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_parameters.py +0 -0
  80. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_polcal_as_science.py +0 -0
  81. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_quality.py +0 -0
  82. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_science.py +0 -0
  83. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_solar.py +0 -0
  84. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_trial_create_quality_report.py +0 -0
  85. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_visp_constants.py +0 -0
  86. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_wavelength_calibration.py +0 -0
  87. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_workflows.py +0 -0
  88. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/tests/test_write_dataset_extras.py +0 -0
  89. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/workflows/__init__.py +0 -0
  90. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/workflows/l0_processing.py +0 -0
  91. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/workflows/single_task_workflows.py +0 -0
  92. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp/workflows/trial_workflows.py +0 -0
  93. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp.egg-info/SOURCES.txt +0 -0
  94. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp.egg-info/dependency_links.txt +0 -0
  95. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/dkist_processing_visp.egg-info/top_level.txt +0 -0
  96. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/Makefile +0 -0
  97. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/background_light.rst +0 -0
  98. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/changelog.rst +0 -0
  99. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/conf.py +0 -0
  100. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/dataset_extras.rst +0 -0
  101. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/gain_correction.rst +0 -0
  102. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/geometric.rst +0 -0
  103. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/index.rst +0 -0
  104. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/l0_to_l1_visp.rst +0 -0
  105. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/l0_to_l1_visp_full-trial.rst +0 -0
  106. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/landing_page.rst +0 -0
  107. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/make.bat +0 -0
  108. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/polarization_calibration.rst +0 -0
  109. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/requirements.txt +0 -0
  110. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/requirements_table.rst +0 -0
  111. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/science_calibration.rst +0 -0
  112. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/scientific_changelog.rst +0 -0
  113. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/docs/wavelength_calibration.rst +0 -0
  114. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/licenses/LICENSE.rst +0 -0
  115. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/science_towncrier.sh +0 -0
  116. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/setup.cfg +0 -0
  117. {dkist_processing_visp-5.5.0 → dkist_processing_visp-5.6.0}/towncrier_science.toml +0 -0
@@ -1,3 +1,13 @@
1
+ v5.6.0 (2026-04-03)
2
+ ===================
3
+
4
+ Features
5
+ --------
6
+
7
+ - Improve the accuracy of the CADENCE L1 header keys. We now use the more-accurate `*Cadence` Buds provided in `dkist-processing-common`
8
+ v13.0.0 directly (no need to multiply by the number of modulation states). (`#294 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/294>`__)
9
+
10
+
1
11
  v5.5.0 (2026-04-02)
2
12
  ===================
3
13
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-visp
3
- Version: 5.5.0
3
+ Version: 5.6.0
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,7 +13,7 @@ Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/x-rst
16
- Requires-Dist: dkist-processing-common==12.10.0
16
+ Requires-Dist: dkist-processing-common==13.0.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.3.0
@@ -74,7 +74,7 @@ Requires-Dist: PyJWT==2.12.1; extra == "frozen"
74
74
  Requires-Dist: PyYAML==6.0.3; extra == "frozen"
75
75
  Requires-Dist: PyYAML-ft==8.0.0; extra == "frozen"
76
76
  Requires-Dist: Pygments==2.20.0; extra == "frozen"
77
- Requires-Dist: SQLAlchemy==2.0.48; extra == "frozen"
77
+ Requires-Dist: SQLAlchemy==2.0.49; extra == "frozen"
78
78
  Requires-Dist: SQLAlchemy-JSONField==1.0.2; extra == "frozen"
79
79
  Requires-Dist: SQLAlchemy-Utils==0.42.1; extra == "frozen"
80
80
  Requires-Dist: a2wsgi==1.10.10; extra == "frozen"
@@ -111,14 +111,14 @@ Requires-Dist: asyncpg==0.31.0; extra == "frozen"
111
111
  Requires-Dist: attrs==26.1.0; extra == "frozen"
112
112
  Requires-Dist: babel==2.18.0; extra == "frozen"
113
113
  Requires-Dist: billiard==4.2.4; extra == "frozen"
114
- Requires-Dist: boto3==1.42.82; extra == "frozen"
115
- Requires-Dist: botocore==1.42.82; extra == "frozen"
114
+ Requires-Dist: boto3==1.42.83; extra == "frozen"
115
+ Requires-Dist: botocore==1.42.83; extra == "frozen"
116
116
  Requires-Dist: cadwyn==5.4.6; extra == "frozen"
117
117
  Requires-Dist: celery==5.6.3; extra == "frozen"
118
118
  Requires-Dist: certifi==2026.2.25; extra == "frozen"
119
119
  Requires-Dist: cffi==2.0.0; extra == "frozen"
120
120
  Requires-Dist: charset-normalizer==3.4.7; extra == "frozen"
121
- Requires-Dist: click==8.3.1; extra == "frozen"
121
+ Requires-Dist: click==8.3.2; extra == "frozen"
122
122
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
123
123
  Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
124
124
  Requires-Dist: click-repl==0.3.0; extra == "frozen"
@@ -132,11 +132,11 @@ Requires-Dist: dacite==1.9.2; extra == "frozen"
132
132
  Requires-Dist: decorator==5.2.1; extra == "frozen"
133
133
  Requires-Dist: dill==0.4.1; extra == "frozen"
134
134
  Requires-Dist: dkist-header-validator==5.3.0; extra == "frozen"
135
- Requires-Dist: dkist-processing-common==12.10.0; extra == "frozen"
135
+ Requires-Dist: dkist-processing-common==13.0.0; extra == "frozen"
136
136
  Requires-Dist: dkist-processing-core==7.1.0; extra == "frozen"
137
137
  Requires-Dist: dkist-processing-math==2.2.1; extra == "frozen"
138
138
  Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
139
- Requires-Dist: dkist-processing-visp==5.5.0; extra == "frozen"
139
+ Requires-Dist: dkist-processing-visp==5.6.0; extra == "frozen"
140
140
  Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
141
141
  Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
142
142
  Requires-Dist: dkist_fits_specifications==4.23.0; extra == "frozen"
@@ -283,14 +283,14 @@ Requires-Dist: traitlets==5.14.3; extra == "frozen"
283
283
  Requires-Dist: typer==0.24.1; extra == "frozen"
284
284
  Requires-Dist: typing-inspection==0.4.2; extra == "frozen"
285
285
  Requires-Dist: typing_extensions==4.15.0; extra == "frozen"
286
- Requires-Dist: tzdata==2025.3; extra == "frozen"
286
+ Requires-Dist: tzdata==2026.1; extra == "frozen"
287
287
  Requires-Dist: tzlocal==5.3.1; extra == "frozen"
288
288
  Requires-Dist: uc-micro-py==2.0.0; extra == "frozen"
289
289
  Requires-Dist: uncertainties==3.2.3; extra == "frozen"
290
290
  Requires-Dist: universal_pathlib==0.2.6; extra == "frozen"
291
291
  Requires-Dist: urllib3==2.6.3; extra == "frozen"
292
292
  Requires-Dist: uuid6==2025.0.1; extra == "frozen"
293
- Requires-Dist: uvicorn==0.42.0; extra == "frozen"
293
+ Requires-Dist: uvicorn==0.43.0; extra == "frozen"
294
294
  Requires-Dist: uvloop==0.22.1; extra == "frozen"
295
295
  Requires-Dist: vine==5.1.0; extra == "frozen"
296
296
  Requires-Dist: voluptuous==0.16.0; extra == "frozen"
@@ -205,12 +205,11 @@ class VispWriteL1Frame(WriteL1Frame):
205
205
 
206
206
  This method adds or updates headers related to frame timings.
207
207
  """
208
- # The source data is based on L0 data but L1 data takes L0 cadence * modstates to obtain.
209
- # This causes both the cadence and the full exposure time to be num_modstates times longer.
210
- header["CADENCE"] = self.constants.average_cadence * self.constants.num_modstates
211
- header["CADMIN"] = self.constants.minimum_cadence * self.constants.num_modstates
212
- header["CADMAX"] = self.constants.maximum_cadence * self.constants.num_modstates
213
- header["CADVAR"] = self.constants.variance_cadence * self.constants.num_modstates
208
+ # The default CADENCE values are correct
209
+ header = super().add_timing_headers(header)
210
+
211
+ # The source data is based on L0 data but L1 data takes a full modulation cycle to obtain.
212
+ # This causes the full exposure time to be num_modstates times longer.
214
213
  header[MetadataKey.fpa_exposure_time_ms] = (
215
214
  header[MetadataKey.fpa_exposure_time_ms] * self.constants.num_modstates
216
215
  )
@@ -566,12 +566,15 @@ def test_parse_visp_values(
566
566
  )
567
567
  task = parse_task_with_no_data
568
568
  write_input_cal_frames_to_task(task)
569
+ time_delta = 7.0
570
+ num_steps = 2
569
571
  write_input_observe_frames_to_task(
570
572
  task,
571
573
  readout_exp_time=observe_readout_exp_times[0],
572
574
  exp_time=99.0,
573
575
  num_maps=1,
574
- num_steps=1,
576
+ num_steps=num_steps,
577
+ time_delta=time_delta,
575
578
  num_modstates=num_modstates,
576
579
  arm_id=testing_arm_id,
577
580
  grating_constant=testing_grating_constant,
@@ -581,9 +584,9 @@ def test_parse_visp_values(
581
584
 
582
585
  task()
583
586
  assert task.constants.instrument == "VISP"
584
- assert task.constants.average_cadence == 10
585
- assert task.constants.maximum_cadence == 10
586
- assert task.constants.minimum_cadence == 10
587
+ assert task.constants.average_cadence == time_delta * num_steps
588
+ assert task.constants.maximum_cadence == time_delta * num_steps
589
+ assert task.constants.minimum_cadence == time_delta * num_steps
587
590
  assert task.constants.variance_cadence == 0
588
591
  assert task.constants.camera_name == "camera_name"
589
592
 
@@ -174,8 +174,8 @@ def test_write_l1_frame(
174
174
  header[f"SPECLN{i+1:02}"]
175
175
 
176
176
  if pol_mode == "observe_polarimetric":
177
- assert header["CADENCE"] == 100
177
+ assert header["CADENCE"] == task.constants.average_cadence
178
178
  assert header[MetadataKey.fpa_exposure_time_ms] == 150
179
179
  else:
180
- assert header["CADENCE"] == 10
180
+ assert header["CADENCE"] == task.constants.average_cadence
181
181
  assert header[MetadataKey.fpa_exposure_time_ms] == 15
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-visp
3
- Version: 5.5.0
3
+ Version: 5.6.0
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,7 +13,7 @@ Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/x-rst
16
- Requires-Dist: dkist-processing-common==12.10.0
16
+ Requires-Dist: dkist-processing-common==13.0.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.3.0
@@ -74,7 +74,7 @@ Requires-Dist: PyJWT==2.12.1; extra == "frozen"
74
74
  Requires-Dist: PyYAML==6.0.3; extra == "frozen"
75
75
  Requires-Dist: PyYAML-ft==8.0.0; extra == "frozen"
76
76
  Requires-Dist: Pygments==2.20.0; extra == "frozen"
77
- Requires-Dist: SQLAlchemy==2.0.48; extra == "frozen"
77
+ Requires-Dist: SQLAlchemy==2.0.49; extra == "frozen"
78
78
  Requires-Dist: SQLAlchemy-JSONField==1.0.2; extra == "frozen"
79
79
  Requires-Dist: SQLAlchemy-Utils==0.42.1; extra == "frozen"
80
80
  Requires-Dist: a2wsgi==1.10.10; extra == "frozen"
@@ -111,14 +111,14 @@ Requires-Dist: asyncpg==0.31.0; extra == "frozen"
111
111
  Requires-Dist: attrs==26.1.0; extra == "frozen"
112
112
  Requires-Dist: babel==2.18.0; extra == "frozen"
113
113
  Requires-Dist: billiard==4.2.4; extra == "frozen"
114
- Requires-Dist: boto3==1.42.82; extra == "frozen"
115
- Requires-Dist: botocore==1.42.82; extra == "frozen"
114
+ Requires-Dist: boto3==1.42.83; extra == "frozen"
115
+ Requires-Dist: botocore==1.42.83; extra == "frozen"
116
116
  Requires-Dist: cadwyn==5.4.6; extra == "frozen"
117
117
  Requires-Dist: celery==5.6.3; extra == "frozen"
118
118
  Requires-Dist: certifi==2026.2.25; extra == "frozen"
119
119
  Requires-Dist: cffi==2.0.0; extra == "frozen"
120
120
  Requires-Dist: charset-normalizer==3.4.7; extra == "frozen"
121
- Requires-Dist: click==8.3.1; extra == "frozen"
121
+ Requires-Dist: click==8.3.2; extra == "frozen"
122
122
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
123
123
  Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
124
124
  Requires-Dist: click-repl==0.3.0; extra == "frozen"
@@ -132,11 +132,11 @@ Requires-Dist: dacite==1.9.2; extra == "frozen"
132
132
  Requires-Dist: decorator==5.2.1; extra == "frozen"
133
133
  Requires-Dist: dill==0.4.1; extra == "frozen"
134
134
  Requires-Dist: dkist-header-validator==5.3.0; extra == "frozen"
135
- Requires-Dist: dkist-processing-common==12.10.0; extra == "frozen"
135
+ Requires-Dist: dkist-processing-common==13.0.0; extra == "frozen"
136
136
  Requires-Dist: dkist-processing-core==7.1.0; extra == "frozen"
137
137
  Requires-Dist: dkist-processing-math==2.2.1; extra == "frozen"
138
138
  Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
139
- Requires-Dist: dkist-processing-visp==5.5.0; extra == "frozen"
139
+ Requires-Dist: dkist-processing-visp==5.6.0; extra == "frozen"
140
140
  Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
141
141
  Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
142
142
  Requires-Dist: dkist_fits_specifications==4.23.0; extra == "frozen"
@@ -283,14 +283,14 @@ Requires-Dist: traitlets==5.14.3; extra == "frozen"
283
283
  Requires-Dist: typer==0.24.1; extra == "frozen"
284
284
  Requires-Dist: typing-inspection==0.4.2; extra == "frozen"
285
285
  Requires-Dist: typing_extensions==4.15.0; extra == "frozen"
286
- Requires-Dist: tzdata==2025.3; extra == "frozen"
286
+ Requires-Dist: tzdata==2026.1; extra == "frozen"
287
287
  Requires-Dist: tzlocal==5.3.1; extra == "frozen"
288
288
  Requires-Dist: uc-micro-py==2.0.0; extra == "frozen"
289
289
  Requires-Dist: uncertainties==3.2.3; extra == "frozen"
290
290
  Requires-Dist: universal_pathlib==0.2.6; extra == "frozen"
291
291
  Requires-Dist: urllib3==2.6.3; extra == "frozen"
292
292
  Requires-Dist: uuid6==2025.0.1; extra == "frozen"
293
- Requires-Dist: uvicorn==0.42.0; extra == "frozen"
293
+ Requires-Dist: uvicorn==0.43.0; extra == "frozen"
294
294
  Requires-Dist: uvloop==0.22.1; extra == "frozen"
295
295
  Requires-Dist: vine==5.1.0; extra == "frozen"
296
296
  Requires-Dist: voluptuous==0.16.0; extra == "frozen"
@@ -1,4 +1,4 @@
1
- dkist-processing-common==12.10.0
1
+ dkist-processing-common==13.0.0
2
2
  dkist-processing-math==2.2.1
3
3
  dkist-processing-pac==3.1.1
4
4
  dkist-header-validator==5.3.0
@@ -40,7 +40,7 @@ PyJWT==2.12.1
40
40
  PyYAML==6.0.3
41
41
  PyYAML-ft==8.0.0
42
42
  Pygments==2.20.0
43
- SQLAlchemy==2.0.48
43
+ SQLAlchemy==2.0.49
44
44
  SQLAlchemy-JSONField==1.0.2
45
45
  SQLAlchemy-Utils==0.42.1
46
46
  a2wsgi==1.10.10
@@ -77,14 +77,14 @@ asyncpg==0.31.0
77
77
  attrs==26.1.0
78
78
  babel==2.18.0
79
79
  billiard==4.2.4
80
- boto3==1.42.82
81
- botocore==1.42.82
80
+ boto3==1.42.83
81
+ botocore==1.42.83
82
82
  cadwyn==5.4.6
83
83
  celery==5.6.3
84
84
  certifi==2026.2.25
85
85
  cffi==2.0.0
86
86
  charset-normalizer==3.4.7
87
- click==8.3.1
87
+ click==8.3.2
88
88
  click-didyoumean==0.3.1
89
89
  click-plugins==1.1.1.2
90
90
  click-repl==0.3.0
@@ -98,11 +98,11 @@ dacite==1.9.2
98
98
  decorator==5.2.1
99
99
  dill==0.4.1
100
100
  dkist-header-validator==5.3.0
101
- dkist-processing-common==12.10.0
101
+ dkist-processing-common==13.0.0
102
102
  dkist-processing-core==7.1.0
103
103
  dkist-processing-math==2.2.1
104
104
  dkist-processing-pac==3.1.1
105
- dkist-processing-visp==5.5.0
105
+ dkist-processing-visp==5.6.0
106
106
  dkist-service-configuration==4.3.0
107
107
  dkist-spectral-lines==3.0.0
108
108
  dkist_fits_specifications==4.23.0
@@ -249,14 +249,14 @@ traitlets==5.14.3
249
249
  typer==0.24.1
250
250
  typing-inspection==0.4.2
251
251
  typing_extensions==4.15.0
252
- tzdata==2025.3
252
+ tzdata==2026.1
253
253
  tzlocal==5.3.1
254
254
  uc-micro-py==2.0.0
255
255
  uncertainties==3.2.3
256
256
  universal_pathlib==0.2.6
257
257
  urllib3==2.6.3
258
258
  uuid6==2025.0.1
259
- uvicorn==0.42.0
259
+ uvicorn==0.43.0
260
260
  uvloop==0.22.1
261
261
  vine==5.1.0
262
262
  voluptuous==0.16.0
@@ -9,8 +9,8 @@ exclude = ["build*"]
9
9
 
10
10
  [tool.dkist-dev-tools]
11
11
  # Most recently frozen version by dkist-dev-tools
12
- version = "5.5.0"
13
- date = 2026-04-02T20:13:54.506252
12
+ version = "5.6.0"
13
+ date = 2026-04-03T14:10:53.800355
14
14
 
15
15
  [project]
16
16
  dynamic = ["version"]
@@ -26,7 +26,7 @@ classifiers = [
26
26
  "Programming Language :: Python :: 3.13",
27
27
  ]
28
28
  dependencies = [
29
- "dkist-processing-common == 12.10.0",
29
+ "dkist-processing-common == 13.0.0",
30
30
  "dkist-processing-math == 2.2.1",
31
31
  "dkist-processing-pac == 3.1.1",
32
32
  "dkist-header-validator == 5.3.0",
@@ -102,7 +102,7 @@ frozen = [
102
102
  "PyYAML == 6.0.3",
103
103
  "PyYAML-ft == 8.0.0",
104
104
  "Pygments == 2.20.0",
105
- "SQLAlchemy == 2.0.48",
105
+ "SQLAlchemy == 2.0.49",
106
106
  "SQLAlchemy-JSONField == 1.0.2",
107
107
  "SQLAlchemy-Utils == 0.42.1",
108
108
  "a2wsgi == 1.10.10",
@@ -139,14 +139,14 @@ frozen = [
139
139
  "attrs == 26.1.0",
140
140
  "babel == 2.18.0",
141
141
  "billiard == 4.2.4",
142
- "boto3 == 1.42.82",
143
- "botocore == 1.42.82",
142
+ "boto3 == 1.42.83",
143
+ "botocore == 1.42.83",
144
144
  "cadwyn == 5.4.6",
145
145
  "celery == 5.6.3",
146
146
  "certifi == 2026.2.25",
147
147
  "cffi == 2.0.0",
148
148
  "charset-normalizer == 3.4.7",
149
- "click == 8.3.1",
149
+ "click == 8.3.2",
150
150
  "click-didyoumean == 0.3.1",
151
151
  "click-plugins == 1.1.1.2",
152
152
  "click-repl == 0.3.0",
@@ -160,11 +160,11 @@ frozen = [
160
160
  "decorator == 5.2.1",
161
161
  "dill == 0.4.1",
162
162
  "dkist-header-validator == 5.3.0",
163
- "dkist-processing-common == 12.10.0",
163
+ "dkist-processing-common == 13.0.0",
164
164
  "dkist-processing-core == 7.1.0",
165
165
  "dkist-processing-math == 2.2.1",
166
166
  "dkist-processing-pac == 3.1.1",
167
- "dkist-processing-visp == 5.5.0",
167
+ "dkist-processing-visp == 5.6.0",
168
168
  "dkist-service-configuration == 4.3.0",
169
169
  "dkist-spectral-lines == 3.0.0",
170
170
  "dkist_fits_specifications == 4.23.0",
@@ -311,14 +311,14 @@ frozen = [
311
311
  "typer == 0.24.1",
312
312
  "typing-inspection == 0.4.2",
313
313
  "typing_extensions == 4.15.0",
314
- "tzdata == 2025.3",
314
+ "tzdata == 2026.1",
315
315
  "tzlocal == 5.3.1",
316
316
  "uc-micro-py == 2.0.0",
317
317
  "uncertainties == 3.2.3",
318
318
  "universal_pathlib == 0.2.6",
319
319
  "urllib3 == 2.6.3",
320
320
  "uuid6 == 2025.0.1",
321
- "uvicorn == 0.42.0",
321
+ "uvicorn == 0.43.0",
322
322
  "uvloop == 0.22.1",
323
323
  "vine == 5.1.0",
324
324
  "voluptuous == 0.16.0",