dkist-processing-visp 3.2.4__tar.gz → 3.2.6__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 (104) hide show
  1. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/CHANGELOG.rst +18 -0
  2. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/PKG-INFO +20 -19
  3. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/parse.py +2 -3
  4. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/visp_base.py +2 -3
  5. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/conftest.py +13 -8
  6. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/local_trial_workflows/l0_cals_only.py +12 -5
  7. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/local_trial_workflows/l0_solar_gain_as_science.py +12 -5
  8. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/local_trial_workflows/l0_to_l1.py +12 -5
  9. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/local_trial_workflows/local_trial_helpers.py +2 -3
  10. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_background_light.py +43 -39
  11. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_downsample.py +1 -0
  12. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp.egg-info/PKG-INFO +20 -19
  13. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp.egg-info/requires.txt +19 -18
  14. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/pyproject.toml +21 -20
  15. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/.gitignore +0 -0
  16. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/.pre-commit-config.yaml +0 -0
  17. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/.readthedocs.yml +0 -0
  18. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/.snyk +0 -0
  19. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/README.rst +0 -0
  20. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/SCIENCE_CHANGELOG.rst +0 -0
  21. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/bitbucket-pipelines.yml +0 -0
  22. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/changelog/.gitempty +0 -0
  23. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/__init__.py +0 -0
  24. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/config.py +0 -0
  25. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/fonts/Lato-Regular.ttf +0 -0
  26. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/models/__init__.py +0 -0
  27. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/models/constants.py +0 -0
  28. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/models/parameters.py +0 -0
  29. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/models/tags.py +0 -0
  30. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/models/task_name.py +0 -0
  31. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/parsers/__init__.py +0 -0
  32. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/parsers/map_repeats.py +0 -0
  33. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/parsers/modulator_states.py +0 -0
  34. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/parsers/polarimeter_mode.py +0 -0
  35. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/parsers/raster_step.py +0 -0
  36. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/parsers/time.py +0 -0
  37. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/parsers/visp_l0_fits_access.py +0 -0
  38. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/parsers/visp_l1_fits_access.py +0 -0
  39. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/__init__.py +0 -0
  40. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/assemble_movie.py +0 -0
  41. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/background_light.py +0 -0
  42. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/dark.py +0 -0
  43. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/geometric.py +0 -0
  44. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/instrument_polarization.py +0 -0
  45. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/l1_output_data.py +0 -0
  46. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/lamp.py +0 -0
  47. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/make_movie_frames.py +0 -0
  48. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/mixin/__init__.py +0 -0
  49. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/mixin/beam_access.py +0 -0
  50. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/mixin/corrections.py +0 -0
  51. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/mixin/downsample.py +0 -0
  52. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/mixin/line_zones.py +0 -0
  53. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/quality_metrics.py +0 -0
  54. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/science.py +0 -0
  55. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/solar.py +0 -0
  56. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tasks/write_l1.py +0 -0
  57. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/README.rst +0 -0
  58. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/__init__.py +0 -0
  59. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/header_models.py +0 -0
  60. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/local_trial_workflows/__init__.py +0 -0
  61. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_assemble_movie.py +0 -0
  62. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_assemble_quality.py +0 -0
  63. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_dark.py +0 -0
  64. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_geometric.py +0 -0
  65. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_instrument_polarization.py +0 -0
  66. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_lamp.py +0 -0
  67. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_make_movie_frames.py +0 -0
  68. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_map_repeats.py +0 -0
  69. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_parameters.py +0 -0
  70. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_parse.py +0 -0
  71. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_quality.py +0 -0
  72. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_science.py +0 -0
  73. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_solar.py +0 -0
  74. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_trial_create_quality_report.py +0 -0
  75. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_visp_constants.py +0 -0
  76. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_workflows.py +0 -0
  77. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/tests/test_write_l1.py +0 -0
  78. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/workflows/__init__.py +0 -0
  79. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/workflows/l0_processing.py +0 -0
  80. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/workflows/single_task_workflows.py +0 -0
  81. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp/workflows/trial_workflows.py +0 -0
  82. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp.egg-info/SOURCES.txt +0 -0
  83. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp.egg-info/dependency_links.txt +0 -0
  84. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/dkist_processing_visp.egg-info/top_level.txt +0 -0
  85. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/Makefile +0 -0
  86. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/background_light.rst +0 -0
  87. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/changelog.rst +0 -0
  88. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/conf.py +0 -0
  89. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/gain_correction.rst +0 -0
  90. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/geometric.rst +0 -0
  91. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/index.rst +0 -0
  92. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/l0_to_l1_visp.rst +0 -0
  93. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/l0_to_l1_visp_full-trial.rst +0 -0
  94. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/landing_page.rst +0 -0
  95. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/make.bat +0 -0
  96. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/polarization_calibration.rst +0 -0
  97. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/requirements.txt +0 -0
  98. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/requirements_table.rst +0 -0
  99. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/science_calibration.rst +0 -0
  100. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/docs/scientific_changelog.rst +0 -0
  101. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/licenses/LICENSE.rst +0 -0
  102. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/science_towncrier.sh +0 -0
  103. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/setup.cfg +0 -0
  104. {dkist_processing_visp-3.2.4 → dkist_processing_visp-3.2.6}/towncrier_science.toml +0 -0
@@ -1,3 +1,21 @@
1
+ v3.2.6 (2025-06-02)
2
+ ===================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - Remove use of input dataset mixin imported from dkist-processing-common. (`#212 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/212>`__)
8
+
9
+
10
+ v3.2.5 (2025-05-30)
11
+ ===================
12
+
13
+ Misc
14
+ ----
15
+
16
+ - Update `dkist-fits-specifications` to v4.17.0 (`#224 <https://bitbucket.org/dkistdc/dkist-processing-visp/pull-requests/224>`__)
17
+
18
+
1
19
  v3.2.4 (2025-05-28)
2
20
  ===================
3
21
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-visp
3
- Version: 3.2.4
3
+ Version: 3.2.6
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.11
14
14
  Requires-Python: >=3.11
15
15
  Description-Content-Type: text/x-rst
16
- Requires-Dist: dkist-processing-common==10.8.3
16
+ Requires-Dist: dkist-processing-common==10.9.0
17
17
  Requires-Dist: dkist-processing-math==2.2.0
18
18
  Requires-Dist: dkist-processing-pac==3.1.1
19
19
  Requires-Dist: dkist-header-validator==5.2.1
20
- Requires-Dist: dkist-fits-specifications==4.16.0
20
+ Requires-Dist: dkist-fits-specifications==4.17.0
21
21
  Requires-Dist: dkist-service-configuration==2.2
22
22
  Requires-Dist: dkist-spectral-lines==3.0.0
23
23
  Requires-Dist: astropy==7.0.2
@@ -90,7 +90,7 @@ Requires-Dist: WTForms==3.2.1; extra == "frozen"
90
90
  Requires-Dist: Werkzeug==2.2.3; extra == "frozen"
91
91
  Requires-Dist: aioftp==0.25.1; extra == "frozen"
92
92
  Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
93
- Requires-Dist: aiohttp==3.12.2; extra == "frozen"
93
+ Requires-Dist: aiohttp==3.12.7; extra == "frozen"
94
94
  Requires-Dist: aiosignal==1.3.2; extra == "frozen"
95
95
  Requires-Dist: alembic==1.16.1; extra == "frozen"
96
96
  Requires-Dist: amqp==5.3.1; extra == "frozen"
@@ -116,16 +116,16 @@ Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
116
116
  Requires-Dist: asgiref==3.8.1; extra == "frozen"
117
117
  Requires-Dist: asteval==1.0.6; extra == "frozen"
118
118
  Requires-Dist: astropy==7.0.2; extra == "frozen"
119
- Requires-Dist: astropy-iers-data==0.2025.5.26.0.37.21; extra == "frozen"
119
+ Requires-Dist: astropy-iers-data==0.2025.6.2.0.38.23; extra == "frozen"
120
120
  Requires-Dist: asyncpg==0.30.0; extra == "frozen"
121
121
  Requires-Dist: attrs==25.3.0; extra == "frozen"
122
122
  Requires-Dist: babel==2.17.0; extra == "frozen"
123
123
  Requires-Dist: billiard==4.2.1; extra == "frozen"
124
124
  Requires-Dist: blinker==1.9.0; extra == "frozen"
125
- Requires-Dist: boto3==1.38.24; extra == "frozen"
126
- Requires-Dist: botocore==1.38.24; extra == "frozen"
125
+ Requires-Dist: boto3==1.38.28; extra == "frozen"
126
+ Requires-Dist: botocore==1.38.28; extra == "frozen"
127
127
  Requires-Dist: cachelib==0.13.0; extra == "frozen"
128
- Requires-Dist: celery==5.5.2; extra == "frozen"
128
+ Requires-Dist: celery==5.5.3; extra == "frozen"
129
129
  Requires-Dist: certifi==2025.4.26; extra == "frozen"
130
130
  Requires-Dist: cffi==1.17.1; extra == "frozen"
131
131
  Requires-Dist: charset-normalizer==3.4.2; extra == "frozen"
@@ -146,14 +146,14 @@ Requires-Dist: dacite==1.9.2; extra == "frozen"
146
146
  Requires-Dist: decorator==5.2.1; extra == "frozen"
147
147
  Requires-Dist: dill==0.4.0; extra == "frozen"
148
148
  Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
149
- Requires-Dist: dkist-processing-common==10.8.3; extra == "frozen"
149
+ Requires-Dist: dkist-processing-common==10.9.0; extra == "frozen"
150
150
  Requires-Dist: dkist-processing-core==5.1.1; extra == "frozen"
151
151
  Requires-Dist: dkist-processing-math==2.2.0; extra == "frozen"
152
152
  Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
153
- Requires-Dist: dkist-processing-visp==3.2.4; extra == "frozen"
153
+ Requires-Dist: dkist-processing-visp==3.2.6; extra == "frozen"
154
154
  Requires-Dist: dkist-service-configuration==2.2; extra == "frozen"
155
155
  Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
156
- Requires-Dist: dkist_fits_specifications==4.16.0; extra == "frozen"
156
+ Requires-Dist: dkist_fits_specifications==4.17.0; extra == "frozen"
157
157
  Requires-Dist: dnspython==2.7.0; extra == "frozen"
158
158
  Requires-Dist: ecs-logging==2.2.0; extra == "frozen"
159
159
  Requires-Dist: elastic-apm==6.23.0; extra == "frozen"
@@ -167,7 +167,8 @@ Requires-Dist: globus-sdk==3.56.1; extra == "frozen"
167
167
  Requires-Dist: google-re2==1.1.20240702; extra == "frozen"
168
168
  Requires-Dist: googleapis-common-protos==1.70.0; extra == "frozen"
169
169
  Requires-Dist: gqlclient==1.2.3; extra == "frozen"
170
- Requires-Dist: grpcio==1.71.0; extra == "frozen"
170
+ Requires-Dist: greenlet==3.2.2; extra == "frozen"
171
+ Requires-Dist: grpcio==1.72.1; extra == "frozen"
171
172
  Requires-Dist: gunicorn==23.0.0; extra == "frozen"
172
173
  Requires-Dist: h11==0.16.0; extra == "frozen"
173
174
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
@@ -185,7 +186,7 @@ Requires-Dist: jsonschema==4.24.0; extra == "frozen"
185
186
  Requires-Dist: jsonschema-specifications==2025.4.1; extra == "frozen"
186
187
  Requires-Dist: jupyter_core==5.8.1; extra == "frozen"
187
188
  Requires-Dist: kiwisolver==1.4.8; extra == "frozen"
188
- Requires-Dist: kombu==5.5.3; extra == "frozen"
189
+ Requires-Dist: kombu==5.5.4; extra == "frozen"
189
190
  Requires-Dist: lazy-object-proxy==1.11.0; extra == "frozen"
190
191
  Requires-Dist: lazy_loader==0.4; extra == "frozen"
191
192
  Requires-Dist: limits==5.2.0; extra == "frozen"
@@ -205,7 +206,7 @@ Requires-Dist: more-itertools==10.7.0; extra == "frozen"
205
206
  Requires-Dist: moviepy==2.1.2; extra == "frozen"
206
207
  Requires-Dist: multidict==6.4.4; extra == "frozen"
207
208
  Requires-Dist: nbformat==5.10.4; extra == "frozen"
208
- Requires-Dist: networkx==3.4.2; extra == "frozen"
209
+ Requires-Dist: networkx==3.5; extra == "frozen"
209
210
  Requires-Dist: numpy==2.2.5; extra == "frozen"
210
211
  Requires-Dist: object-clerk==0.1.2; extra == "frozen"
211
212
  Requires-Dist: opentelemetry-api==1.33.1; extra == "frozen"
@@ -229,10 +230,10 @@ Requires-Dist: platformdirs==4.3.8; extra == "frozen"
229
230
  Requires-Dist: pluggy==1.6.0; extra == "frozen"
230
231
  Requires-Dist: prison==0.2.1; extra == "frozen"
231
232
  Requires-Dist: proglog==0.1.12; extra == "frozen"
232
- Requires-Dist: prometheus_client==0.22.0; extra == "frozen"
233
+ Requires-Dist: prometheus_client==0.22.1; extra == "frozen"
233
234
  Requires-Dist: prompt_toolkit==3.0.51; extra == "frozen"
234
235
  Requires-Dist: propcache==0.3.1; extra == "frozen"
235
- Requires-Dist: protobuf==5.29.4; extra == "frozen"
236
+ Requires-Dist: protobuf==5.29.5; extra == "frozen"
236
237
  Requires-Dist: psutil==7.0.0; extra == "frozen"
237
238
  Requires-Dist: psycopg2-binary==2.9.10; extra == "frozen"
238
239
  Requires-Dist: py==1.11.0; extra == "frozen"
@@ -263,7 +264,7 @@ Requires-Dist: scikit-learn==1.6.1; extra == "frozen"
263
264
  Requires-Dist: scipy==1.15.3; extra == "frozen"
264
265
  Requires-Dist: semantic-version==2.10.0; extra == "frozen"
265
266
  Requires-Dist: setproctitle==1.3.6; extra == "frozen"
266
- Requires-Dist: setuptools==69.2.0; extra == "frozen"
267
+ Requires-Dist: setuptools==65.5.0; extra == "frozen"
267
268
  Requires-Dist: six==1.17.0; extra == "frozen"
268
269
  Requires-Dist: sniffio==1.3.1; extra == "frozen"
269
270
  Requires-Dist: sqids==0.5.1; extra == "frozen"
@@ -275,12 +276,12 @@ Requires-Dist: tenacity==9.1.2; extra == "frozen"
275
276
  Requires-Dist: termcolor==3.1.0; extra == "frozen"
276
277
  Requires-Dist: text-unidecode==1.3; extra == "frozen"
277
278
  Requires-Dist: threadpoolctl==3.6.0; extra == "frozen"
278
- Requires-Dist: tifffile==2025.5.26; extra == "frozen"
279
+ Requires-Dist: tifffile==2025.6.1; extra == "frozen"
279
280
  Requires-Dist: tornado==6.5.1; extra == "frozen"
280
281
  Requires-Dist: tqdm==4.67.1; extra == "frozen"
281
282
  Requires-Dist: traitlets==5.14.3; extra == "frozen"
282
283
  Requires-Dist: typing-inspection==0.4.1; extra == "frozen"
283
- Requires-Dist: typing_extensions==4.13.2; extra == "frozen"
284
+ Requires-Dist: typing_extensions==4.14.0; extra == "frozen"
284
285
  Requires-Dist: tzdata==2025.2; extra == "frozen"
285
286
  Requires-Dist: uc-micro-py==1.0.3; extra == "frozen"
286
287
  Requires-Dist: uncertainties==3.2.3; extra == "frozen"
@@ -17,7 +17,6 @@ from dkist_processing_common.parsers.time import TaskReadoutExpTimesBud
17
17
  from dkist_processing_common.parsers.unique_bud import UniqueBud
18
18
  from dkist_processing_common.parsers.wavelength import ObserveWavelengthBud
19
19
  from dkist_processing_common.tasks import ParseL0InputDataBase
20
- from dkist_processing_common.tasks.mixin.input_dataset import InputDatasetMixin
21
20
 
22
21
  from dkist_processing_visp.models.constants import VispBudName
23
22
  from dkist_processing_visp.models.parameters import VispParsingParameters
@@ -36,7 +35,7 @@ S = TypeVar("S", bound=Stem)
36
35
  __all__ = ["ParseL0VispInputData"]
37
36
 
38
37
 
39
- class ParseL0VispInputData(ParseL0InputDataBase, InputDatasetMixin):
38
+ class ParseL0VispInputData(ParseL0InputDataBase):
40
39
  """
41
40
  Parse input ViSP data. Subclassed from the ParseL0InputDataBase task in dkist_processing_common to add ViSP specific parameters.
42
41
 
@@ -62,7 +61,7 @@ class ParseL0VispInputData(ParseL0InputDataBase, InputDatasetMixin):
62
61
  workflow_name=workflow_name,
63
62
  workflow_version=workflow_version,
64
63
  )
65
- self.parameters = VispParsingParameters(self.input_dataset_parameters)
64
+ self.parameters = VispParsingParameters(scratch=self.scratch)
66
65
 
67
66
  @property
68
67
  def fits_parsing_class(self):
@@ -2,13 +2,12 @@
2
2
  from abc import ABC
3
3
 
4
4
  from dkist_processing_common.tasks import WorkflowTaskBase
5
- from dkist_processing_common.tasks.mixin.input_dataset import InputDatasetMixin
6
5
 
7
6
  from dkist_processing_visp.models.constants import VispConstants
8
7
  from dkist_processing_visp.models.parameters import VispParameters
9
8
 
10
9
 
11
- class VispTaskBase(WorkflowTaskBase, InputDatasetMixin, ABC):
10
+ class VispTaskBase(WorkflowTaskBase, ABC):
12
11
  """
13
12
  Task class for base ViSP tasks.
14
13
 
@@ -42,7 +41,7 @@ class VispTaskBase(WorkflowTaskBase, InputDatasetMixin, ABC):
42
41
  workflow_version=workflow_version,
43
42
  )
44
43
  self.parameters = VispParameters(
45
- self.input_dataset_parameters,
44
+ scratch=self.scratch,
46
45
  obs_ip_start_time=self.constants.obs_ip_start_time,
47
46
  wavelength=self.constants.wavelength,
48
47
  )
@@ -12,8 +12,10 @@ from astropy.io import fits
12
12
  from dkist_data_simulator.spec122 import Spec122Dataset
13
13
  from dkist_header_validator.translator import sanitize_to_spec214_level1
14
14
  from dkist_header_validator.translator import translate_spec122_to_spec214_l0
15
+ from dkist_processing_common.codecs.basemodel import basemodel_encoder
15
16
  from dkist_processing_common.codecs.fits import fits_array_encoder
16
17
  from dkist_processing_common.codecs.fits import fits_hdulist_encoder
18
+ from dkist_processing_common.models.input_dataset import InputDatasetPartDocumentList
17
19
  from dkist_processing_common.tasks import WorkflowTaskBase
18
20
 
19
21
  from dkist_processing_visp.models.constants import VispConstants
@@ -161,7 +163,7 @@ def testing_obs_ip_start_time() -> str:
161
163
  def input_dataset_document_simple_parameters_part():
162
164
  """Convert a dataclass of parameterValues into an actual input dataset parameters part."""
163
165
 
164
- def get_input_dataset_parameters_part(parameter_values: dataclass):
166
+ def make_input_dataset_parameters_part(parameter_values: dataclass):
165
167
  parameters_list = []
166
168
  value_id = randint(1000, 2000)
167
169
  for pn, pv in asdict(parameter_values).items():
@@ -178,7 +180,7 @@ def input_dataset_document_simple_parameters_part():
178
180
  parameters_list.append(parameter)
179
181
  return parameters_list
180
182
 
181
- return get_input_dataset_parameters_part
183
+ return make_input_dataset_parameters_part
182
184
 
183
185
 
184
186
  @pytest.fixture(scope="session")
@@ -186,17 +188,20 @@ def assign_input_dataset_doc_to_task(
186
188
  input_dataset_document_simple_parameters_part, testing_obs_ip_start_time, testing_wavelength
187
189
  ):
188
190
  def update_task(
189
- task,
191
+ task: WorkflowTaskBase,
190
192
  parameter_values,
191
193
  parameter_class=VispParameters,
192
194
  obs_ip_start_time=testing_obs_ip_start_time,
193
195
  ):
194
- doc_path = task.scratch.workflow_base_path / "dataset_parameters.json"
195
- with open(doc_path, "w") as f:
196
- f.write(json.dumps(input_dataset_document_simple_parameters_part(parameter_values)))
197
- task.tag(doc_path, VispTag.input_dataset_parameters())
196
+ task.write(
197
+ data=InputDatasetPartDocumentList(
198
+ doc_list=input_dataset_document_simple_parameters_part(parameter_values)
199
+ ),
200
+ tags=VispTag.input_dataset_parameters(),
201
+ encoder=basemodel_encoder,
202
+ )
198
203
  task.parameters = parameter_class(
199
- task.input_dataset_parameters,
204
+ scratch=task.scratch,
200
205
  obs_ip_start_time=obs_ip_start_time,
201
206
  wavelength=testing_wavelength,
202
207
  )
@@ -6,7 +6,9 @@ from dataclasses import asdict
6
6
  from datetime import datetime
7
7
  from random import randint
8
8
 
9
+ from dkist_processing_common.codecs.basemodel import basemodel_encoder
9
10
  from dkist_processing_common.manual import ManualProcessing
11
+ from dkist_processing_common.models.input_dataset import InputDatasetPartDocumentList
10
12
  from dkist_processing_common.tasks import WorkflowTaskBase
11
13
  from dkist_service_configuration.logging import logger
12
14
 
@@ -64,11 +66,16 @@ class DatetimeEncoder(json.JSONEncoder):
64
66
 
65
67
  class CreateInputDatasetParameterDocument(WorkflowTaskBase):
66
68
  def run(self) -> None:
67
- doc_path = self.scratch.workflow_base_path / "input_dataset_parameters.json"
68
- with open(doc_path, "w") as f:
69
- f.write(json.dumps(self.input_dataset_document_simple_parameters_part))
70
- self.tag(doc_path, VispTag.input_dataset_parameters())
71
- logger.info(f"Wrote input dataset doc to {doc_path}")
69
+ relative_path = "input_dataset_parameters.json"
70
+ self.write(
71
+ data=InputDatasetPartDocumentList(
72
+ doc_list=self.input_dataset_document_simple_parameters_part
73
+ ),
74
+ relative_path=relative_path,
75
+ tags=VispTag.input_dataset_parameters(),
76
+ encoder=basemodel_encoder,
77
+ )
78
+ logger.info(f"Wrote input dataset parameter doc to {relative_path}")
72
79
 
73
80
  @property
74
81
  def input_dataset_document_simple_parameters_part(self):
@@ -7,7 +7,9 @@ from datetime import datetime
7
7
  from pathlib import Path
8
8
  from random import randint
9
9
 
10
+ from dkist_processing_common.codecs.basemodel import basemodel_encoder
10
11
  from dkist_processing_common.manual import ManualProcessing
12
+ from dkist_processing_common.models.input_dataset import InputDatasetPartDocumentList
11
13
  from dkist_processing_common.tasks import CreateTrialQualityReport
12
14
  from dkist_processing_common.tasks import QualityL1Metrics
13
15
  from dkist_processing_common.tasks import WorkflowTaskBase
@@ -108,11 +110,16 @@ class DatetimeEncoder(json.JSONEncoder):
108
110
 
109
111
  class CreateInputDatasetParameterDocument(WorkflowTaskBase):
110
112
  def run(self) -> None:
111
- doc_path = self.scratch.workflow_base_path / "input_dataset_parameters.json"
112
- with open(doc_path, "w") as f:
113
- f.write(json.dumps(self.input_dataset_document_simple_parameters_part))
114
- self.tag(doc_path, VispTag.input_dataset_parameters())
115
- logger.info(f"Wrote input dataset doc to {doc_path}")
113
+ relative_path = "input_dataset_parameters.json"
114
+ self.write(
115
+ data=InputDatasetPartDocumentList(
116
+ doc_list=self.input_dataset_document_simple_parameters_part
117
+ ),
118
+ relative_path=relative_path,
119
+ tags=VispTag.input_dataset_parameters(),
120
+ encoder=basemodel_encoder,
121
+ )
122
+ logger.info(f"Wrote input dataset parameter doc to {relative_path}")
116
123
 
117
124
  @property
118
125
  def input_dataset_document_simple_parameters_part(self):
@@ -7,8 +7,10 @@ from pathlib import Path
7
7
  from random import randint
8
8
 
9
9
  from dkist_header_validator import spec214_validator
10
+ from dkist_processing_common.codecs.basemodel import basemodel_encoder
10
11
  from dkist_processing_common.codecs.fits import fits_access_decoder
11
12
  from dkist_processing_common.manual import ManualProcessing
13
+ from dkist_processing_common.models.input_dataset import InputDatasetPartDocumentList
12
14
  from dkist_processing_common.tasks import CreateTrialAsdf
13
15
  from dkist_processing_common.tasks import CreateTrialQualityReport
14
16
  from dkist_processing_common.tasks import QualityL1Metrics
@@ -81,11 +83,16 @@ if QUALITY:
81
83
 
82
84
  class CreateInputDatasetParameterDocument(WorkflowTaskBase):
83
85
  def run(self) -> None:
84
- doc_path = self.scratch.workflow_base_path / "input_dataset_parameters.json"
85
- with open(doc_path, "w") as f:
86
- f.write(json.dumps(self.input_dataset_document_simple_parameters_part))
87
- self.tag(doc_path, VispTag.input_dataset_parameters())
88
- logger.info(f"Wrote input dataset doc to {doc_path}")
86
+ relative_path = "input_dataset_parameters.json"
87
+ self.write(
88
+ data=InputDatasetPartDocumentList(
89
+ doc_list=self.input_dataset_document_simple_parameters_part
90
+ ),
91
+ relative_path=relative_path,
92
+ tags=VispTag.input_dataset_parameters(),
93
+ encoder=basemodel_encoder,
94
+ )
95
+ logger.info(f"Wrote input dataset parameter doc to {relative_path}")
89
96
 
90
97
  @property
91
98
  def input_dataset_document_simple_parameters_part(self):
@@ -24,7 +24,6 @@ from dkist_processing_common.parsers.time import TaskReadoutExpTimesBud
24
24
  from dkist_processing_common.tasks import ParseL0InputDataBase
25
25
  from dkist_processing_common.tasks import WorkflowTaskBase
26
26
  from dkist_processing_common.tasks.mixin.globus import GlobusTransferItem
27
- from dkist_processing_common.tasks.mixin.input_dataset import InputDatasetMixin
28
27
  from dkist_processing_common.tasks.trial_output_data import TransferTrialData
29
28
  from dkist_processing_math.statistics import average_numpy_arrays
30
29
  from loguru import logger
@@ -380,7 +379,7 @@ class SetNumModstates(VispTaskBase):
380
379
  self.constants._update({BudName.num_modstates.value: 10})
381
380
 
382
381
 
383
- class ParseCalOnlyL0InputData(ParseL0InputDataBase, InputDatasetMixin):
382
+ class ParseCalOnlyL0InputData(ParseL0InputDataBase):
384
383
  """
385
384
  Parse input ViSP data. Subclassed from the ParseL0InputDataBase task in dkist_processing_common to add ViSP specific parameters.
386
385
 
@@ -406,7 +405,7 @@ class ParseCalOnlyL0InputData(ParseL0InputDataBase, InputDatasetMixin):
406
405
  workflow_name=workflow_name,
407
406
  workflow_version=workflow_version,
408
407
  )
409
- self.parameters = VispParsingParameters(self.input_dataset_parameters)
408
+ self.parameters = VispParsingParameters(scratch=self.scratch)
410
409
 
411
410
  @property
412
411
  def fits_parsing_class(self):
@@ -351,7 +351,7 @@ def constants_bad_exp_times() -> VispConstantsDb:
351
351
 
352
352
 
353
353
  @pytest.fixture(scope="session")
354
- def constatns_nor_polarimetric() -> VispConstantsDb:
354
+ def constants_nor_polarimetric() -> VispConstantsDb:
355
355
  return VispConstantsDb(
356
356
  SOLAR_EXPOSURE_TIMES=(10.0,),
357
357
  OBSERVE_EXPOSURE_TIMES=(10.0,),
@@ -361,38 +361,42 @@ def constatns_nor_polarimetric() -> VispConstantsDb:
361
361
 
362
362
 
363
363
  @pytest.fixture(scope="function")
364
- def background_light_calibration_task(
364
+ def background_light_calibration_task_factory(
365
365
  tmp_path,
366
- assign_input_dataset_doc_to_task,
367
366
  init_visp_constants_db,
367
+ default_constants,
368
368
  recipe_run_id,
369
+ assign_input_dataset_doc_to_task,
369
370
  background_testing_parameter_values,
370
371
  ):
371
- constants_db = VispConstantsDb()
372
- init_visp_constants_db(recipe_run_id, constants_db)
373
- with BackgroundLightCalibration(
374
- recipe_run_id=recipe_run_id,
375
- workflow_name="background_light_calibration",
376
- workflow_version="vX.Y",
377
- ) as task:
378
- try: # This try... block is here to make sure the dbs get cleaned up if there's a failure in the fixture
379
- task.scratch = WorkflowFileSystem(
380
- scratch_base_path=tmp_path, recipe_run_id=recipe_run_id
381
- )
382
- assign_input_dataset_doc_to_task(task, background_testing_parameter_values())
372
+ def make_task(background_on: bool = True, constants: VispConstantsDb = default_constants):
373
+ constants_db = VispConstantsDb()
374
+ init_visp_constants_db(recipe_run_id, constants_db)
375
+ with BackgroundLightCalibration(
376
+ recipe_run_id=recipe_run_id,
377
+ workflow_name="background_light_calibration",
378
+ workflow_version="vX.Y",
379
+ ) as task:
380
+ try: # This try... block is here to make sure the dbs get cleaned up if there's a failure in the fixture
381
+ task.scratch = WorkflowFileSystem(
382
+ scratch_base_path=tmp_path, recipe_run_id=recipe_run_id
383
+ )
384
+ init_visp_constants_db(task.recipe_run_id, constants)
385
+ assign_input_dataset_doc_to_task(
386
+ task, background_testing_parameter_values(background_on=background_on)
387
+ )
388
+ yield task
389
+ except:
390
+ raise
391
+ finally:
392
+ task._purge()
383
393
 
384
- yield task
385
- except:
386
- raise
387
- finally:
388
- task._purge()
394
+ return make_task
389
395
 
390
396
 
391
397
  def test_background_light_calibration_task(
392
- background_light_calibration_task,
398
+ background_light_calibration_task_factory,
393
399
  write_background_input_files_to_task,
394
- default_constants,
395
- init_visp_constants_db,
396
400
  total_polcal_files,
397
401
  num_polcal_dark_files,
398
402
  background_light,
@@ -406,8 +410,8 @@ def test_background_light_calibration_task(
406
410
  mocker.patch(
407
411
  "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
408
412
  )
409
- task = background_light_calibration_task
410
- init_visp_constants_db(task.recipe_run_id, default_constants)
413
+ task_generator = background_light_calibration_task_factory()
414
+ task = next(task_generator)
411
415
  write_background_input_files_to_task(task)
412
416
  task()
413
417
 
@@ -435,7 +439,9 @@ def test_background_light_calibration_task(
435
439
 
436
440
 
437
441
  def test_background_light_bad_exposure_times(
438
- background_light_calibration_task, constants_bad_exp_times, init_visp_constants_db, mocker
442
+ background_light_calibration_task_factory,
443
+ constants_bad_exp_times,
444
+ mocker,
439
445
  ):
440
446
  """
441
447
  Given: A set of data where the polcal exposure times don't match those of solar gain and observe
@@ -445,14 +451,16 @@ def test_background_light_bad_exposure_times(
445
451
  mocker.patch(
446
452
  "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
447
453
  )
448
- task = background_light_calibration_task
449
- init_visp_constants_db(task.recipe_run_id, constants_bad_exp_times)
454
+ task_generator = background_light_calibration_task_factory(constants=constants_bad_exp_times)
455
+ task = next(task_generator)
450
456
  with pytest.raises(ValueError, match="do not all have the same FPA exposure time"):
451
457
  task()
452
458
 
453
459
 
454
460
  def test_background_light_non_polarimetric_dataset(
455
- background_light_calibration_task, constatns_nor_polarimetric, init_visp_constants_db, mocker
461
+ background_light_calibration_task_factory,
462
+ constants_nor_polarimetric,
463
+ mocker,
456
464
  ):
457
465
  """
458
466
  Given: A dataset that is non-polarimetric (i.e., Stokes-I only)
@@ -462,8 +470,9 @@ def test_background_light_non_polarimetric_dataset(
462
470
  mocker.patch(
463
471
  "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
464
472
  )
465
- task = background_light_calibration_task
466
- init_visp_constants_db(task.recipe_run_id, constatns_nor_polarimetric)
473
+
474
+ task_generator = background_light_calibration_task_factory(constants=constants_nor_polarimetric)
475
+ task = next(task_generator)
467
476
  task()
468
477
 
469
478
  # Test that no BACKGROUND files were created
@@ -474,11 +483,7 @@ def test_background_light_non_polarimetric_dataset(
474
483
 
475
484
 
476
485
  def test_background_light_switch_off(
477
- background_light_calibration_task,
478
- default_constants,
479
- init_visp_constants_db,
480
- assign_input_dataset_doc_to_task,
481
- background_testing_parameter_values,
486
+ background_light_calibration_task_factory,
482
487
  mocker,
483
488
  ):
484
489
  """
@@ -489,9 +494,8 @@ def test_background_light_switch_off(
489
494
  mocker.patch(
490
495
  "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
491
496
  )
492
- task = background_light_calibration_task
493
- init_visp_constants_db(task.recipe_run_id, default_constants)
494
- assign_input_dataset_doc_to_task(task, background_testing_parameter_values(background_on=False))
497
+ task_generator = background_light_calibration_task_factory(background_on=False)
498
+ task = next(task_generator)
495
499
  task()
496
500
 
497
501
  # Test that no BACKGROUND files were created
@@ -26,6 +26,7 @@ def task_with_downsample_mixin(
26
26
  assign_input_dataset_doc_to_task(task, VispInputDatasetParameterValues())
27
27
 
28
28
  yield task
29
+ task._purge()
29
30
 
30
31
 
31
32
  @pytest.fixture(scope="session")