dkist-processing-visp 5.2.1__tar.gz → 5.2.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 (111) hide show
  1. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/CHANGELOG.rst +38 -0
  2. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/PKG-INFO +16 -16
  3. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/__init__.py +1 -0
  4. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/solar.py +3 -34
  5. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/wavelength_calibration.py +44 -3
  6. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/conftest.py +10 -1
  7. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_solar.py +0 -6
  8. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_wavelength_calibration.py +0 -6
  9. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/workflows/l0_processing.py +1 -1
  10. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/workflows/trial_workflows.py +1 -1
  11. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp.egg-info/PKG-INFO +16 -16
  12. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp.egg-info/requires.txt +15 -15
  13. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/pyproject.toml +17 -17
  14. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/.gitignore +0 -0
  15. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/.pre-commit-config.yaml +0 -0
  16. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/.readthedocs.yml +0 -0
  17. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/.snyk +0 -0
  18. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/README.rst +0 -0
  19. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/SCIENCE_CHANGELOG.rst +0 -0
  20. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/bitbucket-pipelines.yml +0 -0
  21. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/changelog/.gitempty +0 -0
  22. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/__init__.py +0 -0
  23. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/config.py +0 -0
  24. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/fonts/Lato-Regular.ttf +0 -0
  25. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/models/__init__.py +0 -0
  26. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/models/constants.py +0 -0
  27. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/models/fits_access.py +0 -0
  28. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/models/metric_code.py +0 -0
  29. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/models/parameters.py +0 -0
  30. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/models/tags.py +0 -0
  31. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/models/task_name.py +0 -0
  32. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/parsers/__init__.py +0 -0
  33. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/parsers/map_repeats.py +0 -0
  34. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/parsers/modulator_states.py +0 -0
  35. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/parsers/polarimeter_mode.py +0 -0
  36. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/parsers/raster_step.py +0 -0
  37. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/parsers/spectrograph_configuration.py +0 -0
  38. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/parsers/time.py +0 -0
  39. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/parsers/visp_l0_fits_access.py +0 -0
  40. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/parsers/visp_l1_fits_access.py +0 -0
  41. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/assemble_movie.py +0 -0
  42. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/background_light.py +0 -0
  43. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/dark.py +0 -0
  44. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/geometric.py +0 -0
  45. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/instrument_polarization.py +0 -0
  46. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/l1_output_data.py +0 -0
  47. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/lamp.py +0 -0
  48. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/make_movie_frames.py +0 -0
  49. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/mixin/__init__.py +0 -0
  50. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/mixin/beam_access.py +0 -0
  51. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/mixin/corrections.py +0 -0
  52. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/mixin/downsample.py +0 -0
  53. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/parse.py +0 -0
  54. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/quality_metrics.py +0 -0
  55. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/science.py +0 -0
  56. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/visp_base.py +0 -0
  57. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tasks/write_l1.py +0 -0
  58. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/README.rst +0 -0
  59. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/__init__.py +0 -0
  60. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/header_models.py +0 -0
  61. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/local_trial_workflows/__init__.py +0 -0
  62. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/local_trial_workflows/l0_cals_only.py +0 -0
  63. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/local_trial_workflows/l0_polcals_as_science.py +0 -0
  64. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/local_trial_workflows/l0_solar_gain_as_science.py +0 -0
  65. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/local_trial_workflows/l0_to_l1.py +0 -0
  66. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/local_trial_workflows/local_trial_helpers.py +0 -0
  67. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_assemble_movie.py +0 -0
  68. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_assemble_quality.py +0 -0
  69. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_background_light.py +0 -0
  70. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_dark.py +0 -0
  71. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_downsample.py +0 -0
  72. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_fits_access.py +0 -0
  73. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_geometric.py +0 -0
  74. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_instrument_polarization.py +0 -0
  75. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_lamp.py +0 -0
  76. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_make_movie_frames.py +0 -0
  77. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_map_repeats.py +0 -0
  78. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_parameters.py +0 -0
  79. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_parse.py +0 -0
  80. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_quality.py +0 -0
  81. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_science.py +0 -0
  82. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_trial_create_quality_report.py +0 -0
  83. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_visp_constants.py +0 -0
  84. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_workflows.py +0 -0
  85. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/tests/test_write_l1.py +0 -0
  86. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/workflows/__init__.py +0 -0
  87. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp/workflows/single_task_workflows.py +0 -0
  88. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp.egg-info/SOURCES.txt +0 -0
  89. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp.egg-info/dependency_links.txt +0 -0
  90. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/dkist_processing_visp.egg-info/top_level.txt +0 -0
  91. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/Makefile +0 -0
  92. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/background_light.rst +0 -0
  93. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/changelog.rst +0 -0
  94. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/conf.py +0 -0
  95. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/gain_correction.rst +0 -0
  96. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/geometric.rst +0 -0
  97. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/index.rst +0 -0
  98. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/l0_to_l1_visp.rst +0 -0
  99. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/l0_to_l1_visp_full-trial.rst +0 -0
  100. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/landing_page.rst +0 -0
  101. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/make.bat +0 -0
  102. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/polarization_calibration.rst +0 -0
  103. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/requirements.txt +0 -0
  104. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/requirements_table.rst +0 -0
  105. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/science_calibration.rst +0 -0
  106. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/scientific_changelog.rst +0 -0
  107. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/docs/wavelength_calibration.rst +0 -0
  108. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/licenses/LICENSE.rst +0 -0
  109. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/science_towncrier.sh +0 -0
  110. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/setup.cfg +0 -0
  111. {dkist_processing_visp-5.2.1 → dkist_processing_visp-5.2.3}/towncrier_science.toml +0 -0
@@ -1,3 +1,41 @@
1
+ v5.2.3 (2025-12-22)
2
+ ===================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - Change the default URL of the solar and telluric atlases for unit tests. (`#258 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/258>`__)
8
+
9
+ Bugfixes
10
+ --------
11
+
12
+ - Update dkist-processing-common to raise an error when movie files are missing. (`#257 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/257>`__)
13
+
14
+
15
+ v5.2.2 (2025-12-17)
16
+ ===================
17
+
18
+ Bugfixes
19
+ --------
20
+
21
+ - Normalize atlas and input spectrum when computing an initial CRVAL guess in the `WavelengthCalibration` task. This fixes
22
+ failing fits caused by very poor initial guesses caused by large continuum offsets. (`#255 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/255>`__)
23
+
24
+
25
+ Misc
26
+ ----
27
+
28
+ - Move the `estimate_relative_continuum_level` method from `SolarCalibration` class to be a module-level function in
29
+ "wavelength_calibration.py" so it can be used by both the `SolarCalibration` and `WavelengthCalibration` tasks. (`#255 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/255>`__)
30
+ - Import the `WavelengthCalibration` task into the top-level `tasks` package and use that import path in workflow definitions. (`#255 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/255>`__)
31
+
32
+
33
+ Documentation
34
+ -------------
35
+
36
+ - Fix issue that prevented module-level functions in the wavelength calibration module from rendering in API docs. (`#255 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/255>`__)
37
+
38
+
1
39
  v5.2.1 (2025-12-16)
2
40
  ===================
3
41
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-visp
3
- Version: 5.2.1
3
+ Version: 5.2.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,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.9.1
16
+ Requires-Dist: dkist-processing-common==11.9.2
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
@@ -118,16 +118,16 @@ Requires-Dist: asdf==3.5.0; extra == "frozen"
118
118
  Requires-Dist: asdf_standard==1.4.0; extra == "frozen"
119
119
  Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
120
120
  Requires-Dist: asgiref==3.11.0; extra == "frozen"
121
- Requires-Dist: asteval==1.0.7; extra == "frozen"
121
+ Requires-Dist: asteval==1.0.8; extra == "frozen"
122
122
  Requires-Dist: astropy==7.0.2; extra == "frozen"
123
- Requires-Dist: astropy-iers-data==0.2025.12.15.0.40.51; extra == "frozen"
123
+ Requires-Dist: astropy-iers-data==0.2025.12.22.0.40.30; extra == "frozen"
124
124
  Requires-Dist: asyncpg==0.31.0; extra == "frozen"
125
125
  Requires-Dist: attrs==25.4.0; extra == "frozen"
126
126
  Requires-Dist: babel==2.17.0; extra == "frozen"
127
127
  Requires-Dist: billiard==4.2.4; extra == "frozen"
128
128
  Requires-Dist: blinker==1.9.0; extra == "frozen"
129
- Requires-Dist: boto3==1.42.10; extra == "frozen"
130
- Requires-Dist: botocore==1.42.10; extra == "frozen"
129
+ Requires-Dist: boto3==1.42.14; extra == "frozen"
130
+ Requires-Dist: botocore==1.42.14; extra == "frozen"
131
131
  Requires-Dist: cachelib==0.13.0; extra == "frozen"
132
132
  Requires-Dist: celery==5.6.0; extra == "frozen"
133
133
  Requires-Dist: certifi==2025.11.12; extra == "frozen"
@@ -150,11 +150,11 @@ Requires-Dist: dacite==1.9.2; extra == "frozen"
150
150
  Requires-Dist: decorator==5.2.1; extra == "frozen"
151
151
  Requires-Dist: dill==0.4.0; extra == "frozen"
152
152
  Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
153
- Requires-Dist: dkist-processing-common==11.9.1; extra == "frozen"
153
+ Requires-Dist: dkist-processing-common==11.9.2; extra == "frozen"
154
154
  Requires-Dist: dkist-processing-core==6.0.1; extra == "frozen"
155
155
  Requires-Dist: dkist-processing-math==2.2.1; extra == "frozen"
156
156
  Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
157
- Requires-Dist: dkist-processing-visp==5.2.1; extra == "frozen"
157
+ Requires-Dist: dkist-processing-visp==5.2.3; extra == "frozen"
158
158
  Requires-Dist: dkist-service-configuration==4.1.13; extra == "frozen"
159
159
  Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
160
160
  Requires-Dist: dkist_fits_specifications==4.19.0; extra == "frozen"
@@ -166,7 +166,7 @@ Requires-Dist: flower==2.0.1; extra == "frozen"
166
166
  Requires-Dist: fonttools==4.61.1; extra == "frozen"
167
167
  Requires-Dist: frozenlist==1.8.0; extra == "frozen"
168
168
  Requires-Dist: fsspec==2025.12.0; extra == "frozen"
169
- Requires-Dist: globus-sdk==4.2.0; extra == "frozen"
169
+ Requires-Dist: globus-sdk==4.3.0; extra == "frozen"
170
170
  Requires-Dist: google-re2==1.1.20251105; extra == "frozen"
171
171
  Requires-Dist: googleapis-common-protos==1.72.0; extra == "frozen"
172
172
  Requires-Dist: gqlclient==1.2.3; extra == "frozen"
@@ -175,10 +175,10 @@ Requires-Dist: gunicorn==23.0.0; extra == "frozen"
175
175
  Requires-Dist: h11==0.16.0; extra == "frozen"
176
176
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
177
177
  Requires-Dist: httpx==0.28.1; extra == "frozen"
178
- Requires-Dist: humanize==4.14.0; extra == "frozen"
178
+ Requires-Dist: humanize==4.15.0; extra == "frozen"
179
179
  Requires-Dist: idna==3.11; extra == "frozen"
180
180
  Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
181
- Requires-Dist: importlib_metadata==8.7.0; extra == "frozen"
181
+ Requires-Dist: importlib_metadata==8.7.1; extra == "frozen"
182
182
  Requires-Dist: inflection==0.5.1; extra == "frozen"
183
183
  Requires-Dist: itsdangerous==2.2.0; extra == "frozen"
184
184
  Requires-Dist: jmespath==1.0.1; extra == "frozen"
@@ -196,7 +196,7 @@ Requires-Dist: lmfit==1.3.4; extra == "frozen"
196
196
  Requires-Dist: lockfile==0.12.2; extra == "frozen"
197
197
  Requires-Dist: loguru==0.7.3; extra == "frozen"
198
198
  Requires-Dist: markdown-it-py==4.0.0; extra == "frozen"
199
- Requires-Dist: marshmallow==3.26.1; extra == "frozen"
199
+ Requires-Dist: marshmallow==3.26.2; extra == "frozen"
200
200
  Requires-Dist: marshmallow-oneofschema==3.2.0; extra == "frozen"
201
201
  Requires-Dist: marshmallow-sqlalchemy==0.28.2; extra == "frozen"
202
202
  Requires-Dist: matplotlib==3.10.8; extra == "frozen"
@@ -260,7 +260,7 @@ Requires-Dist: pydantic==2.12.5; extra == "frozen"
260
260
  Requires-Dist: pydantic-settings==2.12.0; extra == "frozen"
261
261
  Requires-Dist: pydantic_core==2.41.5; extra == "frozen"
262
262
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
263
- Requires-Dist: pyparsing==3.2.5; extra == "frozen"
263
+ Requires-Dist: pyparsing==3.3.0; extra == "frozen"
264
264
  Requires-Dist: python-daemon==3.1.2; extra == "frozen"
265
265
  Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
266
266
  Requires-Dist: python-dotenv==1.2.1; extra == "frozen"
@@ -284,7 +284,7 @@ Requires-Dist: setproctitle==1.3.7; extra == "frozen"
284
284
  Requires-Dist: six==1.17.0; extra == "frozen"
285
285
  Requires-Dist: solar-wavelength-calibration==2.0.0; extra == "frozen"
286
286
  Requires-Dist: sqids==0.5.1; extra == "frozen"
287
- Requires-Dist: sqlparse==0.5.4; extra == "frozen"
287
+ Requires-Dist: sqlparse==0.5.5; extra == "frozen"
288
288
  Requires-Dist: sunpy==6.1.1; extra == "frozen"
289
289
  Requires-Dist: tabulate==0.9.0; extra == "frozen"
290
290
  Requires-Dist: talus==1.3.4; extra == "frozen"
@@ -292,7 +292,7 @@ Requires-Dist: tenacity==8.5.0; extra == "frozen"
292
292
  Requires-Dist: termcolor==3.2.0; extra == "frozen"
293
293
  Requires-Dist: text-unidecode==1.3; extra == "frozen"
294
294
  Requires-Dist: threadpoolctl==3.6.0; extra == "frozen"
295
- Requires-Dist: tifffile==2025.12.12; extra == "frozen"
295
+ Requires-Dist: tifffile==2025.12.20; extra == "frozen"
296
296
  Requires-Dist: tornado==6.5.4; extra == "frozen"
297
297
  Requires-Dist: tqdm==4.67.1; extra == "frozen"
298
298
  Requires-Dist: traitlets==5.14.3; extra == "frozen"
@@ -305,7 +305,7 @@ Requires-Dist: uncertainties==3.2.3; extra == "frozen"
305
305
  Requires-Dist: universal_pathlib==0.3.7; extra == "frozen"
306
306
  Requires-Dist: urllib3==2.6.2; extra == "frozen"
307
307
  Requires-Dist: vine==5.1.0; extra == "frozen"
308
- Requires-Dist: voluptuous==0.15.2; extra == "frozen"
308
+ Requires-Dist: voluptuous==0.16.0; extra == "frozen"
309
309
  Requires-Dist: wcwidth==0.2.14; extra == "frozen"
310
310
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
311
311
  Requires-Dist: wrapt==1.17.3; extra == "frozen"
@@ -12,4 +12,5 @@ from dkist_processing_visp.tasks.parse import *
12
12
  from dkist_processing_visp.tasks.quality_metrics import *
13
13
  from dkist_processing_visp.tasks.science import *
14
14
  from dkist_processing_visp.tasks.solar import *
15
+ from dkist_processing_visp.tasks.wavelength_calibration import WavelengthCalibration
15
16
  from dkist_processing_visp.tasks.write_l1 import *
@@ -46,6 +46,7 @@ from dkist_processing_visp.tasks.visp_base import VispTaskBase
46
46
  from dkist_processing_visp.tasks.wavelength_calibration import compute_initial_dispersion
47
47
  from dkist_processing_visp.tasks.wavelength_calibration import compute_input_wavelength_vector
48
48
  from dkist_processing_visp.tasks.wavelength_calibration import compute_order
49
+ from dkist_processing_visp.tasks.wavelength_calibration import estimate_relative_continuum_level
49
50
  from dkist_processing_visp.tasks.wavelength_calibration import get_doppler_velocity
50
51
 
51
52
  __all__ = [
@@ -638,11 +639,12 @@ class SolarCalibration(
638
639
  resolving_power = self.parameters.wavecal_init_resolving_power
639
640
  opacity_factor = self.parameters.wavecal_init_opacity_factor
640
641
  straylight_faction = self.parameters.wavecal_init_straylight_fraction
641
- relative_atlas_scaling = self.estimate_relative_continuum_level(
642
+ relative_atlas_scaling = estimate_relative_continuum_level(
642
643
  crval_init=crval_init,
643
644
  wavelength_range=wavelength_range,
644
645
  atlas=atlas,
645
646
  representative_spectrum=representative_spectrum,
647
+ normalization_percentile=self.parameters.wavecal_init_crval_guess_normalization_percentile,
646
648
  )
647
649
  logger.info(f"0th order coefficient initial guess: {relative_atlas_scaling}")
648
650
 
@@ -683,39 +685,6 @@ class SolarCalibration(
683
685
 
684
686
  return init_params
685
687
 
686
- def estimate_relative_continuum_level(
687
- self,
688
- *,
689
- crval_init: Quantity,
690
- wavelength_range: Quantity,
691
- atlas: Atlas,
692
- representative_spectrum: np.ndarray,
693
- ) -> float:
694
- """
695
- Estimate the multiplicative scaling between the representative spectrum and atlas solar transmission.
696
-
697
- This scaling is used to set the initial guess of 0th-order polynomial fit coefficient. We estimate the scaling
698
- factor by comparing the values of the two spectra at a given percent of the CDF. This percent is taken from
699
- the `~dkist_processing_visp.models.parameters.VispParameters.wavecal_init_crval_guess_normalization_percentile`
700
- pipeline parameter.
701
- """
702
- wave_min = crval_init - wavelength_range / 2
703
- wave_max = crval_init + wavelength_range / 2
704
-
705
- atlas_idx = np.where(
706
- (atlas.solar_atlas_wavelength >= wave_min) & (atlas.solar_atlas_wavelength <= wave_max)
707
- )
708
- atlas_norm = np.nanpercentile(
709
- atlas.solar_atlas_transmission[atlas_idx],
710
- self.parameters.wavecal_init_crval_guess_normalization_percentile,
711
- )
712
- spec_norm = np.nanpercentile(
713
- representative_spectrum,
714
- self.parameters.wavecal_init_crval_guess_normalization_percentile,
715
- )
716
-
717
- return spec_norm / atlas_norm
718
-
719
688
  def compute_final_vignette_estimate(self, init_vignette_correction: np.ndarray) -> np.ndarray:
720
689
  """
721
690
  Fit the spectral shape of continuum residuals for each spatial pixel.
@@ -26,8 +26,6 @@ from sunpy.coordinates import HeliocentricInertial
26
26
  from dkist_processing_visp.models.tags import VispTag
27
27
  from dkist_processing_visp.tasks.visp_base import VispTaskBase
28
28
 
29
- __all__ = ["WavelengthCalibration"]
30
-
31
29
 
32
30
  class WavelengthCalibration(VispTaskBase, QualityMixin):
33
31
  """Task class for correcting the dispersion axis wavelength values.
@@ -125,6 +123,7 @@ class WavelengthCalibration(VispTaskBase, QualityMixin):
125
123
  negative_limit=-wavelength_range / 2,
126
124
  positive_limit=wavelength_range / 2,
127
125
  num_steps=550,
126
+ normalization_percentile=self.parameters.wavecal_init_crval_guess_normalization_percentile,
128
127
  )
129
128
  logger.info(f"{crval_initial_guess = !s}")
130
129
 
@@ -135,6 +134,15 @@ class WavelengthCalibration(VispTaskBase, QualityMixin):
135
134
  resolving_power = self.parameters.wavecal_init_resolving_power
136
135
  logger.info(f"{resolving_power = }")
137
136
 
137
+ init_continuum_level = estimate_relative_continuum_level(
138
+ crval_init=crval_initial_guess,
139
+ wavelength_range=wavelength_range,
140
+ atlas=atlas,
141
+ representative_spectrum=input_spectrum,
142
+ normalization_percentile=self.parameters.wavecal_init_crval_guess_normalization_percentile,
143
+ )
144
+ logger.info(f"{init_continuum_level = !s}")
145
+
138
146
  logger.info("Setting bounds")
139
147
  wavelength_search_width = dispersion * self.parameters.wavecal_crval_bounds_px
140
148
  bounds = BoundsModel(
@@ -158,7 +166,9 @@ class WavelengthCalibration(VispTaskBase, QualityMixin):
158
166
  ),
159
167
  opacity_factor=UnitlessBoundRange(min=0.0, max=10.0),
160
168
  straylight_fraction=UnitlessBoundRange(min=0.0, max=0.4),
161
- continuum_level=UnitlessBoundRange(min=0.5, max=2.0),
169
+ continuum_level=UnitlessBoundRange(
170
+ min=init_continuum_level * 0.7, max=init_continuum_level * 1.3
171
+ ),
162
172
  )
163
173
 
164
174
  fit_flags = FitFlagsModel(
@@ -180,6 +190,7 @@ class WavelengthCalibration(VispTaskBase, QualityMixin):
180
190
  opacity_factor=self.parameters.wavecal_init_opacity_factor,
181
191
  straylight_fraction=self.parameters.wavecal_init_straylight_fraction,
182
192
  grating_constant=self.constants.grating_constant_inverse_mm,
193
+ continuum_level=init_continuum_level,
183
194
  doppler_velocity=doppler_velocity,
184
195
  order=order,
185
196
  bounds=bounds,
@@ -428,3 +439,33 @@ def compute_initial_dispersion(
428
439
  dispersion = pixel_pitch / linear_dispersion
429
440
 
430
441
  return dispersion.to(u.nm / u.pix)
442
+
443
+
444
+ def estimate_relative_continuum_level(
445
+ *,
446
+ crval_init: Quantity,
447
+ wavelength_range: Quantity,
448
+ atlas: Atlas,
449
+ representative_spectrum: np.ndarray,
450
+ normalization_percentile: float,
451
+ ) -> float:
452
+ """
453
+ Estimate the multiplicative scaling between the representative spectrum and atlas solar transmission.
454
+
455
+ This scaling is used to set the initial guess of 0th-order continuum scaling. We estimate the scaling factor by
456
+ comparing the values of the two spectra at a given percent of the CDF. This percent is taken from the
457
+ `~dkist_processing_visp.models.parameters.VispParameters.wavecal_init_crval_guess_normalization_percentile`
458
+ pipeline parameter.
459
+ """
460
+ wave_min = crval_init - wavelength_range / 2
461
+ wave_max = crval_init + wavelength_range / 2
462
+
463
+ atlas_idx = np.where(
464
+ (atlas.solar_atlas_wavelength >= wave_min) & (atlas.solar_atlas_wavelength <= wave_max)
465
+ )
466
+ atlas_norm = np.nanpercentile(
467
+ atlas.solar_atlas_transmission[atlas_idx], normalization_percentile
468
+ )
469
+ spec_norm = np.nanpercentile(representative_spectrum, normalization_percentile)
470
+
471
+ return spec_norm / atlas_norm
@@ -22,6 +22,8 @@ from dkist_processing_common.tasks import WorkflowTaskBase
22
22
 
23
23
  # Don't remove this; tests will break
24
24
  from dkist_processing_common.tests.mock_metadata_store import fake_gql_client
25
+ from solar_wavelength_calibration import Atlas
26
+ from solar_wavelength_calibration import DownloadConfig
25
27
 
26
28
  from dkist_processing_visp.models.constants import VispConstants
27
29
  from dkist_processing_visp.models.parameters import VispParameters
@@ -179,7 +181,7 @@ class VispInputDatasetParameterValues:
179
181
  visp_wavecal_pixel_pitch_micron_per_pix: float = 6.5
180
182
  visp_wavecal_atlas_download_config: dict[str, str] = field(
181
183
  default_factory=lambda: {
182
- "base_url": "doi:10.5281/zenodo.14646787/",
184
+ "base_url": "https://g-a36282.cd214.a567.data.globus.org/atlas/",
183
185
  "telluric_reference_atlas_file_name": "telluric_reference_atlas.npy",
184
186
  "telluric_reference_atlas_hash_id": "md5:8db5e12508b293bca3495d81a0747447",
185
187
  "solar_reference_atlas_file_name": "solar_reference_atlas.npy",
@@ -568,3 +570,10 @@ def write_calibrated_frames_to_task(
568
570
  data_func=make_random_data,
569
571
  )
570
572
  return num_written_frames
573
+
574
+
575
+ @pytest.fixture(scope="session")
576
+ def solar_atlas() -> Atlas:
577
+ config = VispInputDatasetParameterValues().visp_wavecal_atlas_download_config
578
+ config = DownloadConfig.model_validate(config)
579
+ return Atlas(config=config)
@@ -16,7 +16,6 @@ from dkist_processing_common.codecs.fits import fits_array_decoder
16
16
  from dkist_processing_common.codecs.fits import fits_array_encoder
17
17
  from dkist_processing_common.models.tags import Tag
18
18
  from scipy.ndimage import gaussian_filter1d
19
- from solar_wavelength_calibration import Atlas
20
19
  from sunpy.coordinates import HeliocentricInertial
21
20
 
22
21
  from dkist_processing_visp.models.tags import VispTag
@@ -136,11 +135,6 @@ def resolving_power() -> int:
136
135
  return int(1.15e5)
137
136
 
138
137
 
139
- @pytest.fixture(scope="session")
140
- def solar_atlas() -> Atlas:
141
- return Atlas()
142
-
143
-
144
138
  @pytest.fixture(scope="session")
145
139
  def spectral_vignette_function(num_wave_pix) -> np.ndarray:
146
140
  return (np.arange(num_wave_pix) - num_wave_pix // 2) / (num_wave_pix * 10) + 1.0
@@ -10,7 +10,6 @@ from dkist_processing_common.codecs.fits import fits_array_encoder
10
10
  from dkist_processing_common.codecs.json import json_decoder
11
11
  from dkist_processing_common.models.metric_code import MetricCode
12
12
  from scipy.ndimage import gaussian_filter
13
- from solar_wavelength_calibration import Atlas
14
13
 
15
14
  from dkist_processing_visp.models.tags import VispTag
16
15
  from dkist_processing_visp.tasks.wavelength_calibration import WavelengthCalibration
@@ -110,11 +109,6 @@ def resolving_power() -> int:
110
109
  return int(1.15e5)
111
110
 
112
111
 
113
- @pytest.fixture(scope="session")
114
- def solar_atlas() -> Atlas:
115
- return Atlas()
116
-
117
-
118
112
  @pytest.fixture(scope="function")
119
113
  def visp_wavelength_correction_task(
120
114
  tmp_path,
@@ -22,7 +22,7 @@ from dkist_processing_visp.tasks import VispAssembleQualityData
22
22
  from dkist_processing_visp.tasks import VispL0QualityMetrics
23
23
  from dkist_processing_visp.tasks import VispL1QualityMetrics
24
24
  from dkist_processing_visp.tasks import VispWriteL1Frame
25
- from dkist_processing_visp.tasks.wavelength_calibration import WavelengthCalibration
25
+ from dkist_processing_visp.tasks import WavelengthCalibration
26
26
 
27
27
  l0_pipeline = Workflow(
28
28
  category="visp",
@@ -23,7 +23,7 @@ from dkist_processing_visp.tasks import VispAssembleQualityData
23
23
  from dkist_processing_visp.tasks import VispL0QualityMetrics
24
24
  from dkist_processing_visp.tasks import VispL1QualityMetrics
25
25
  from dkist_processing_visp.tasks import VispWriteL1Frame
26
- from dkist_processing_visp.tasks.wavelength_calibration import WavelengthCalibration
26
+ from dkist_processing_visp.tasks import WavelengthCalibration
27
27
 
28
28
  full_trial_pipeline = Workflow(
29
29
  category="visp",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-visp
3
- Version: 5.2.1
3
+ Version: 5.2.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,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.9.1
16
+ Requires-Dist: dkist-processing-common==11.9.2
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
@@ -118,16 +118,16 @@ Requires-Dist: asdf==3.5.0; extra == "frozen"
118
118
  Requires-Dist: asdf_standard==1.4.0; extra == "frozen"
119
119
  Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
120
120
  Requires-Dist: asgiref==3.11.0; extra == "frozen"
121
- Requires-Dist: asteval==1.0.7; extra == "frozen"
121
+ Requires-Dist: asteval==1.0.8; extra == "frozen"
122
122
  Requires-Dist: astropy==7.0.2; extra == "frozen"
123
- Requires-Dist: astropy-iers-data==0.2025.12.15.0.40.51; extra == "frozen"
123
+ Requires-Dist: astropy-iers-data==0.2025.12.22.0.40.30; extra == "frozen"
124
124
  Requires-Dist: asyncpg==0.31.0; extra == "frozen"
125
125
  Requires-Dist: attrs==25.4.0; extra == "frozen"
126
126
  Requires-Dist: babel==2.17.0; extra == "frozen"
127
127
  Requires-Dist: billiard==4.2.4; extra == "frozen"
128
128
  Requires-Dist: blinker==1.9.0; extra == "frozen"
129
- Requires-Dist: boto3==1.42.10; extra == "frozen"
130
- Requires-Dist: botocore==1.42.10; extra == "frozen"
129
+ Requires-Dist: boto3==1.42.14; extra == "frozen"
130
+ Requires-Dist: botocore==1.42.14; extra == "frozen"
131
131
  Requires-Dist: cachelib==0.13.0; extra == "frozen"
132
132
  Requires-Dist: celery==5.6.0; extra == "frozen"
133
133
  Requires-Dist: certifi==2025.11.12; extra == "frozen"
@@ -150,11 +150,11 @@ Requires-Dist: dacite==1.9.2; extra == "frozen"
150
150
  Requires-Dist: decorator==5.2.1; extra == "frozen"
151
151
  Requires-Dist: dill==0.4.0; extra == "frozen"
152
152
  Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
153
- Requires-Dist: dkist-processing-common==11.9.1; extra == "frozen"
153
+ Requires-Dist: dkist-processing-common==11.9.2; extra == "frozen"
154
154
  Requires-Dist: dkist-processing-core==6.0.1; extra == "frozen"
155
155
  Requires-Dist: dkist-processing-math==2.2.1; extra == "frozen"
156
156
  Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
157
- Requires-Dist: dkist-processing-visp==5.2.1; extra == "frozen"
157
+ Requires-Dist: dkist-processing-visp==5.2.3; extra == "frozen"
158
158
  Requires-Dist: dkist-service-configuration==4.1.13; extra == "frozen"
159
159
  Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
160
160
  Requires-Dist: dkist_fits_specifications==4.19.0; extra == "frozen"
@@ -166,7 +166,7 @@ Requires-Dist: flower==2.0.1; extra == "frozen"
166
166
  Requires-Dist: fonttools==4.61.1; extra == "frozen"
167
167
  Requires-Dist: frozenlist==1.8.0; extra == "frozen"
168
168
  Requires-Dist: fsspec==2025.12.0; extra == "frozen"
169
- Requires-Dist: globus-sdk==4.2.0; extra == "frozen"
169
+ Requires-Dist: globus-sdk==4.3.0; extra == "frozen"
170
170
  Requires-Dist: google-re2==1.1.20251105; extra == "frozen"
171
171
  Requires-Dist: googleapis-common-protos==1.72.0; extra == "frozen"
172
172
  Requires-Dist: gqlclient==1.2.3; extra == "frozen"
@@ -175,10 +175,10 @@ Requires-Dist: gunicorn==23.0.0; extra == "frozen"
175
175
  Requires-Dist: h11==0.16.0; extra == "frozen"
176
176
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
177
177
  Requires-Dist: httpx==0.28.1; extra == "frozen"
178
- Requires-Dist: humanize==4.14.0; extra == "frozen"
178
+ Requires-Dist: humanize==4.15.0; extra == "frozen"
179
179
  Requires-Dist: idna==3.11; extra == "frozen"
180
180
  Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
181
- Requires-Dist: importlib_metadata==8.7.0; extra == "frozen"
181
+ Requires-Dist: importlib_metadata==8.7.1; extra == "frozen"
182
182
  Requires-Dist: inflection==0.5.1; extra == "frozen"
183
183
  Requires-Dist: itsdangerous==2.2.0; extra == "frozen"
184
184
  Requires-Dist: jmespath==1.0.1; extra == "frozen"
@@ -196,7 +196,7 @@ Requires-Dist: lmfit==1.3.4; extra == "frozen"
196
196
  Requires-Dist: lockfile==0.12.2; extra == "frozen"
197
197
  Requires-Dist: loguru==0.7.3; extra == "frozen"
198
198
  Requires-Dist: markdown-it-py==4.0.0; extra == "frozen"
199
- Requires-Dist: marshmallow==3.26.1; extra == "frozen"
199
+ Requires-Dist: marshmallow==3.26.2; extra == "frozen"
200
200
  Requires-Dist: marshmallow-oneofschema==3.2.0; extra == "frozen"
201
201
  Requires-Dist: marshmallow-sqlalchemy==0.28.2; extra == "frozen"
202
202
  Requires-Dist: matplotlib==3.10.8; extra == "frozen"
@@ -260,7 +260,7 @@ Requires-Dist: pydantic==2.12.5; extra == "frozen"
260
260
  Requires-Dist: pydantic-settings==2.12.0; extra == "frozen"
261
261
  Requires-Dist: pydantic_core==2.41.5; extra == "frozen"
262
262
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
263
- Requires-Dist: pyparsing==3.2.5; extra == "frozen"
263
+ Requires-Dist: pyparsing==3.3.0; extra == "frozen"
264
264
  Requires-Dist: python-daemon==3.1.2; extra == "frozen"
265
265
  Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
266
266
  Requires-Dist: python-dotenv==1.2.1; extra == "frozen"
@@ -284,7 +284,7 @@ Requires-Dist: setproctitle==1.3.7; extra == "frozen"
284
284
  Requires-Dist: six==1.17.0; extra == "frozen"
285
285
  Requires-Dist: solar-wavelength-calibration==2.0.0; extra == "frozen"
286
286
  Requires-Dist: sqids==0.5.1; extra == "frozen"
287
- Requires-Dist: sqlparse==0.5.4; extra == "frozen"
287
+ Requires-Dist: sqlparse==0.5.5; extra == "frozen"
288
288
  Requires-Dist: sunpy==6.1.1; extra == "frozen"
289
289
  Requires-Dist: tabulate==0.9.0; extra == "frozen"
290
290
  Requires-Dist: talus==1.3.4; extra == "frozen"
@@ -292,7 +292,7 @@ Requires-Dist: tenacity==8.5.0; extra == "frozen"
292
292
  Requires-Dist: termcolor==3.2.0; extra == "frozen"
293
293
  Requires-Dist: text-unidecode==1.3; extra == "frozen"
294
294
  Requires-Dist: threadpoolctl==3.6.0; extra == "frozen"
295
- Requires-Dist: tifffile==2025.12.12; extra == "frozen"
295
+ Requires-Dist: tifffile==2025.12.20; extra == "frozen"
296
296
  Requires-Dist: tornado==6.5.4; extra == "frozen"
297
297
  Requires-Dist: tqdm==4.67.1; extra == "frozen"
298
298
  Requires-Dist: traitlets==5.14.3; extra == "frozen"
@@ -305,7 +305,7 @@ Requires-Dist: uncertainties==3.2.3; extra == "frozen"
305
305
  Requires-Dist: universal_pathlib==0.3.7; extra == "frozen"
306
306
  Requires-Dist: urllib3==2.6.2; extra == "frozen"
307
307
  Requires-Dist: vine==5.1.0; extra == "frozen"
308
- Requires-Dist: voluptuous==0.15.2; extra == "frozen"
308
+ Requires-Dist: voluptuous==0.16.0; extra == "frozen"
309
309
  Requires-Dist: wcwidth==0.2.14; extra == "frozen"
310
310
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
311
311
  Requires-Dist: wrapt==1.17.3; extra == "frozen"
@@ -1,4 +1,4 @@
1
- dkist-processing-common==11.9.1
1
+ dkist-processing-common==11.9.2
2
2
  dkist-processing-math==2.2.1
3
3
  dkist-processing-pac==3.1.1
4
4
  dkist-header-validator==5.2.1
@@ -84,16 +84,16 @@ asdf==3.5.0
84
84
  asdf_standard==1.4.0
85
85
  asdf_transform_schemas==0.6.0
86
86
  asgiref==3.11.0
87
- asteval==1.0.7
87
+ asteval==1.0.8
88
88
  astropy==7.0.2
89
- astropy-iers-data==0.2025.12.15.0.40.51
89
+ astropy-iers-data==0.2025.12.22.0.40.30
90
90
  asyncpg==0.31.0
91
91
  attrs==25.4.0
92
92
  babel==2.17.0
93
93
  billiard==4.2.4
94
94
  blinker==1.9.0
95
- boto3==1.42.10
96
- botocore==1.42.10
95
+ boto3==1.42.14
96
+ botocore==1.42.14
97
97
  cachelib==0.13.0
98
98
  celery==5.6.0
99
99
  certifi==2025.11.12
@@ -116,11 +116,11 @@ dacite==1.9.2
116
116
  decorator==5.2.1
117
117
  dill==0.4.0
118
118
  dkist-header-validator==5.2.1
119
- dkist-processing-common==11.9.1
119
+ dkist-processing-common==11.9.2
120
120
  dkist-processing-core==6.0.1
121
121
  dkist-processing-math==2.2.1
122
122
  dkist-processing-pac==3.1.1
123
- dkist-processing-visp==5.2.1
123
+ dkist-processing-visp==5.2.3
124
124
  dkist-service-configuration==4.1.13
125
125
  dkist-spectral-lines==3.0.0
126
126
  dkist_fits_specifications==4.19.0
@@ -132,7 +132,7 @@ flower==2.0.1
132
132
  fonttools==4.61.1
133
133
  frozenlist==1.8.0
134
134
  fsspec==2025.12.0
135
- globus-sdk==4.2.0
135
+ globus-sdk==4.3.0
136
136
  google-re2==1.1.20251105
137
137
  googleapis-common-protos==1.72.0
138
138
  gqlclient==1.2.3
@@ -141,10 +141,10 @@ gunicorn==23.0.0
141
141
  h11==0.16.0
142
142
  httpcore==1.0.9
143
143
  httpx==0.28.1
144
- humanize==4.14.0
144
+ humanize==4.15.0
145
145
  idna==3.11
146
146
  imageio-ffmpeg==0.6.0
147
- importlib_metadata==8.7.0
147
+ importlib_metadata==8.7.1
148
148
  inflection==0.5.1
149
149
  itsdangerous==2.2.0
150
150
  jmespath==1.0.1
@@ -162,7 +162,7 @@ lmfit==1.3.4
162
162
  lockfile==0.12.2
163
163
  loguru==0.7.3
164
164
  markdown-it-py==4.0.0
165
- marshmallow==3.26.1
165
+ marshmallow==3.26.2
166
166
  marshmallow-oneofschema==3.2.0
167
167
  marshmallow-sqlalchemy==0.28.2
168
168
  matplotlib==3.10.8
@@ -226,7 +226,7 @@ pydantic==2.12.5
226
226
  pydantic-settings==2.12.0
227
227
  pydantic_core==2.41.5
228
228
  pyerfa==2.0.1.5
229
- pyparsing==3.2.5
229
+ pyparsing==3.3.0
230
230
  python-daemon==3.1.2
231
231
  python-dateutil==2.9.0.post0
232
232
  python-dotenv==1.2.1
@@ -250,7 +250,7 @@ setproctitle==1.3.7
250
250
  six==1.17.0
251
251
  solar-wavelength-calibration==2.0.0
252
252
  sqids==0.5.1
253
- sqlparse==0.5.4
253
+ sqlparse==0.5.5
254
254
  sunpy==6.1.1
255
255
  tabulate==0.9.0
256
256
  talus==1.3.4
@@ -258,7 +258,7 @@ tenacity==8.5.0
258
258
  termcolor==3.2.0
259
259
  text-unidecode==1.3
260
260
  threadpoolctl==3.6.0
261
- tifffile==2025.12.12
261
+ tifffile==2025.12.20
262
262
  tornado==6.5.4
263
263
  tqdm==4.67.1
264
264
  traitlets==5.14.3
@@ -271,7 +271,7 @@ uncertainties==3.2.3
271
271
  universal_pathlib==0.3.7
272
272
  urllib3==2.6.2
273
273
  vine==5.1.0
274
- voluptuous==0.15.2
274
+ voluptuous==0.16.0
275
275
  wcwidth==0.2.14
276
276
  wirerope==1.0.0
277
277
  wrapt==1.17.3
@@ -9,8 +9,8 @@ find = {}
9
9
 
10
10
  [tool.dkist-dev-tools]
11
11
  # Most recently frozen version by dkist-dev-tools
12
- version = "5.2.1"
13
- date = 2025-12-16T13:02:14.592784
12
+ version = "5.2.3"
13
+ date = 2025-12-22T13:19:48.235736
14
14
 
15
15
  [project]
16
16
  dynamic = ["version"]
@@ -26,7 +26,7 @@ classifiers = [
26
26
  "Programming Language :: Python :: 3.12",
27
27
  ]
28
28
  dependencies = [
29
- "dkist-processing-common == 11.9.1",
29
+ "dkist-processing-common == 11.9.2",
30
30
  "dkist-processing-math == 2.2.1",
31
31
  "dkist-processing-pac == 3.1.1",
32
32
  "dkist-header-validator == 5.2.1",
@@ -146,16 +146,16 @@ frozen = [
146
146
  "asdf_standard == 1.4.0",
147
147
  "asdf_transform_schemas == 0.6.0",
148
148
  "asgiref == 3.11.0",
149
- "asteval == 1.0.7",
149
+ "asteval == 1.0.8",
150
150
  "astropy == 7.0.2",
151
- "astropy-iers-data == 0.2025.12.15.0.40.51",
151
+ "astropy-iers-data == 0.2025.12.22.0.40.30",
152
152
  "asyncpg == 0.31.0",
153
153
  "attrs == 25.4.0",
154
154
  "babel == 2.17.0",
155
155
  "billiard == 4.2.4",
156
156
  "blinker == 1.9.0",
157
- "boto3 == 1.42.10",
158
- "botocore == 1.42.10",
157
+ "boto3 == 1.42.14",
158
+ "botocore == 1.42.14",
159
159
  "cachelib == 0.13.0",
160
160
  "celery == 5.6.0",
161
161
  "certifi == 2025.11.12",
@@ -178,11 +178,11 @@ frozen = [
178
178
  "decorator == 5.2.1",
179
179
  "dill == 0.4.0",
180
180
  "dkist-header-validator == 5.2.1",
181
- "dkist-processing-common == 11.9.1",
181
+ "dkist-processing-common == 11.9.2",
182
182
  "dkist-processing-core == 6.0.1",
183
183
  "dkist-processing-math == 2.2.1",
184
184
  "dkist-processing-pac == 3.1.1",
185
- "dkist-processing-visp == 5.2.1",
185
+ "dkist-processing-visp == 5.2.3",
186
186
  "dkist-service-configuration == 4.1.13",
187
187
  "dkist-spectral-lines == 3.0.0",
188
188
  "dkist_fits_specifications == 4.19.0",
@@ -194,7 +194,7 @@ frozen = [
194
194
  "fonttools == 4.61.1",
195
195
  "frozenlist == 1.8.0",
196
196
  "fsspec == 2025.12.0",
197
- "globus-sdk == 4.2.0",
197
+ "globus-sdk == 4.3.0",
198
198
  "google-re2 == 1.1.20251105",
199
199
  "googleapis-common-protos == 1.72.0",
200
200
  "gqlclient == 1.2.3",
@@ -203,10 +203,10 @@ frozen = [
203
203
  "h11 == 0.16.0",
204
204
  "httpcore == 1.0.9",
205
205
  "httpx == 0.28.1",
206
- "humanize == 4.14.0",
206
+ "humanize == 4.15.0",
207
207
  "idna == 3.11",
208
208
  "imageio-ffmpeg == 0.6.0",
209
- "importlib_metadata == 8.7.0",
209
+ "importlib_metadata == 8.7.1",
210
210
  "inflection == 0.5.1",
211
211
  "itsdangerous == 2.2.0",
212
212
  "jmespath == 1.0.1",
@@ -224,7 +224,7 @@ frozen = [
224
224
  "lockfile == 0.12.2",
225
225
  "loguru == 0.7.3",
226
226
  "markdown-it-py == 4.0.0",
227
- "marshmallow == 3.26.1",
227
+ "marshmallow == 3.26.2",
228
228
  "marshmallow-oneofschema == 3.2.0",
229
229
  "marshmallow-sqlalchemy == 0.28.2",
230
230
  "matplotlib == 3.10.8",
@@ -288,7 +288,7 @@ frozen = [
288
288
  "pydantic-settings == 2.12.0",
289
289
  "pydantic_core == 2.41.5",
290
290
  "pyerfa == 2.0.1.5",
291
- "pyparsing == 3.2.5",
291
+ "pyparsing == 3.3.0",
292
292
  "python-daemon == 3.1.2",
293
293
  "python-dateutil == 2.9.0.post0",
294
294
  "python-dotenv == 1.2.1",
@@ -312,7 +312,7 @@ frozen = [
312
312
  "six == 1.17.0",
313
313
  "solar-wavelength-calibration == 2.0.0",
314
314
  "sqids == 0.5.1",
315
- "sqlparse == 0.5.4",
315
+ "sqlparse == 0.5.5",
316
316
  "sunpy == 6.1.1",
317
317
  "tabulate == 0.9.0",
318
318
  "talus == 1.3.4",
@@ -320,7 +320,7 @@ frozen = [
320
320
  "termcolor == 3.2.0",
321
321
  "text-unidecode == 1.3",
322
322
  "threadpoolctl == 3.6.0",
323
- "tifffile == 2025.12.12",
323
+ "tifffile == 2025.12.20",
324
324
  "tornado == 6.5.4",
325
325
  "tqdm == 4.67.1",
326
326
  "traitlets == 5.14.3",
@@ -333,7 +333,7 @@ frozen = [
333
333
  "universal_pathlib == 0.3.7",
334
334
  "urllib3 == 2.6.2",
335
335
  "vine == 5.1.0",
336
- "voluptuous == 0.15.2",
336
+ "voluptuous == 0.16.0",
337
337
  "wcwidth == 0.2.14",
338
338
  "wirerope == 1.0.0",
339
339
  "wrapt == 1.17.3",