dkist-processing-test 1.28.0__tar.gz → 1.30.0rc1__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.

Potentially problematic release.


This version of dkist-processing-test might be problematic. Click here for more details.

Files changed (41) hide show
  1. {dkist_processing_test-1.28.0/dkist_processing_test.egg-info → dkist_processing_test-1.30.0rc1}/PKG-INFO +22 -19
  2. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tasks/parse.py +8 -26
  3. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tests/test_tasks.py +109 -7
  4. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1/dkist_processing_test.egg-info}/PKG-INFO +22 -19
  5. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test.egg-info/requires.txt +21 -18
  6. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/pyproject.toml +23 -20
  7. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/.gitignore +0 -0
  8. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/.pre-commit-config.yaml +0 -0
  9. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/.snyk +0 -0
  10. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/README.rst +0 -0
  11. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/bitbucket-pipelines.yml +0 -0
  12. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/__init__.py +0 -0
  13. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/config.py +0 -0
  14. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/models/__init__.py +0 -0
  15. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/models/constants.py +0 -0
  16. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/models/parameters.py +0 -0
  17. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tasks/__init__.py +0 -0
  18. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tasks/exercise_numba.py +0 -0
  19. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tasks/fail.py +0 -0
  20. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tasks/fake_science.py +0 -0
  21. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tasks/high_memory.py +0 -0
  22. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tasks/manual.py +0 -0
  23. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tasks/movie.py +0 -0
  24. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tasks/noop.py +0 -0
  25. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tasks/quality.py +0 -0
  26. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tasks/write_l1.py +0 -0
  27. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tests/__init__.py +0 -0
  28. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tests/conftest.py +0 -0
  29. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/tests/test_workflows.py +0 -0
  30. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/workflows/__init__.py +0 -0
  31. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/workflows/common_tasks.py +0 -0
  32. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/workflows/end_to_end.py +0 -0
  33. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/workflows/exercise_numba.py +0 -0
  34. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/workflows/fail.py +0 -0
  35. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/workflows/noop.py +0 -0
  36. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/workflows/resource_queue.py +0 -0
  37. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test/workflows/trial_end_to_end.py +0 -0
  38. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test.egg-info/SOURCES.txt +0 -0
  39. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test.egg-info/dependency_links.txt +0 -0
  40. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/dkist_processing_test.egg-info/top_level.txt +0 -0
  41. {dkist_processing_test-1.28.0 → dkist_processing_test-1.30.0rc1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-test
3
- Version: 1.28.0
3
+ Version: 1.30.0rc1
4
4
  Summary: Example instrument code used by the DKIST science data processing pipelines to test processing infrastructure
5
5
  Author-email: NSO / AURA <dkistdc@nso.edu>
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
12
12
  Classifier: Programming Language :: Python :: 3.11
13
13
  Requires-Python: >=3.11
14
14
  Description-Content-Type: text/x-rst
15
- Requires-Dist: dkist-processing-common==10.9.0
15
+ Requires-Dist: dkist-processing-common==11.0.0rc2
16
16
  Requires-Dist: dkist-header-validator==5.2.1
17
17
  Requires-Dist: dkist-service-configuration==2.3.0
18
18
  Requires-Dist: dkist-fits-specifications==4.17.0
@@ -31,12 +31,12 @@ Requires-Dist: dkist-processing-test[asdf]; extra == "test"
31
31
  Requires-Dist: dkist-processing-test[quality]; extra == "test"
32
32
  Provides-Extra: inventory
33
33
  Requires-Dist: dkist-processing-common[inventory]; extra == "inventory"
34
- Requires-Dist: dkist-inventory==1.8.3; extra == "inventory"
34
+ Requires-Dist: dkist-inventory==1.8.4; extra == "inventory"
35
35
  Provides-Extra: asdf
36
36
  Requires-Dist: dkist-processing-common[asdf]; extra == "asdf"
37
- Requires-Dist: dkist-inventory[asdf]==1.8.3; extra == "asdf"
37
+ Requires-Dist: dkist-inventory[asdf]==1.8.4; extra == "asdf"
38
38
  Provides-Extra: quality
39
- Requires-Dist: dkist-quality==1.2.1; extra == "quality"
39
+ Requires-Dist: dkist-quality==1.3.0rc2; extra == "quality"
40
40
  Provides-Extra: frozen
41
41
  Requires-Dist: ConfigUpdater==3.2; extra == "frozen"
42
42
  Requires-Dist: Deprecated==1.2.18; extra == "frozen"
@@ -61,7 +61,7 @@ Requires-Dist: SQLAlchemy-JSONField==1.0.2; extra == "frozen"
61
61
  Requires-Dist: SQLAlchemy-Utils==0.41.2; extra == "frozen"
62
62
  Requires-Dist: WTForms==3.2.1; extra == "frozen"
63
63
  Requires-Dist: Werkzeug==2.2.3; extra == "frozen"
64
- Requires-Dist: aioftp==0.25.2; extra == "frozen"
64
+ Requires-Dist: aioftp==0.26.2; extra == "frozen"
65
65
  Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
66
66
  Requires-Dist: aiohttp==3.12.13; extra == "frozen"
67
67
  Requires-Dist: aiosignal==1.3.2; extra == "frozen"
@@ -89,14 +89,14 @@ Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
89
89
  Requires-Dist: asgiref==3.8.1; extra == "frozen"
90
90
  Requires-Dist: asteval==1.0.6; extra == "frozen"
91
91
  Requires-Dist: astropy==7.0.2; extra == "frozen"
92
- Requires-Dist: astropy-iers-data==0.2025.6.23.0.39.50; extra == "frozen"
92
+ Requires-Dist: astropy-iers-data==0.2025.6.30.0.39.40; extra == "frozen"
93
93
  Requires-Dist: asyncpg==0.30.0; extra == "frozen"
94
94
  Requires-Dist: attrs==25.3.0; extra == "frozen"
95
95
  Requires-Dist: babel==2.17.0; extra == "frozen"
96
96
  Requires-Dist: billiard==4.2.1; extra == "frozen"
97
97
  Requires-Dist: blinker==1.9.0; extra == "frozen"
98
- Requires-Dist: boto3==1.38.43; extra == "frozen"
99
- Requires-Dist: botocore==1.38.43; extra == "frozen"
98
+ Requires-Dist: boto3==1.39.1; extra == "frozen"
99
+ Requires-Dist: botocore==1.39.1; extra == "frozen"
100
100
  Requires-Dist: cachelib==0.13.0; extra == "frozen"
101
101
  Requires-Dist: celery==5.5.3; extra == "frozen"
102
102
  Requires-Dist: certifi==2025.6.15; extra == "frozen"
@@ -104,7 +104,7 @@ Requires-Dist: cffi==1.17.1; extra == "frozen"
104
104
  Requires-Dist: charset-normalizer==3.4.2; extra == "frozen"
105
105
  Requires-Dist: click==8.2.1; extra == "frozen"
106
106
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
107
- Requires-Dist: click-plugins==1.1.1; extra == "frozen"
107
+ Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
108
108
  Requires-Dist: click-repl==0.3.0; extra == "frozen"
109
109
  Requires-Dist: clickclick==20.10.2; extra == "frozen"
110
110
  Requires-Dist: colorama==0.4.6; extra == "frozen"
@@ -113,16 +113,16 @@ Requires-Dist: connexion==2.14.2; extra == "frozen"
113
113
  Requires-Dist: contourpy==1.3.2; extra == "frozen"
114
114
  Requires-Dist: cron-descriptor==1.4.5; extra == "frozen"
115
115
  Requires-Dist: croniter==6.0.0; extra == "frozen"
116
- Requires-Dist: cryptography==45.0.4; extra == "frozen"
116
+ Requires-Dist: cryptography==45.0.5; extra == "frozen"
117
117
  Requires-Dist: cycler==0.12.1; extra == "frozen"
118
118
  Requires-Dist: dacite==1.9.2; extra == "frozen"
119
119
  Requires-Dist: decorator==5.2.1; extra == "frozen"
120
120
  Requires-Dist: dill==0.4.0; extra == "frozen"
121
121
  Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
122
- Requires-Dist: dkist-processing-common==10.9.0; extra == "frozen"
122
+ Requires-Dist: dkist-processing-common==11.0.0rc2; extra == "frozen"
123
123
  Requires-Dist: dkist-processing-core==5.1.1; extra == "frozen"
124
124
  Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
125
- Requires-Dist: dkist-processing-test==1.28.0; extra == "frozen"
125
+ Requires-Dist: dkist-processing-test==1.30.0rc1; extra == "frozen"
126
126
  Requires-Dist: dkist-service-configuration==2.3.0; extra == "frozen"
127
127
  Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
128
128
  Requires-Dist: dkist_fits_specifications==4.17.0; extra == "frozen"
@@ -135,11 +135,12 @@ Requires-Dist: flower==2.0.1; extra == "frozen"
135
135
  Requires-Dist: fonttools==4.58.4; extra == "frozen"
136
136
  Requires-Dist: frozenlist==1.7.0; extra == "frozen"
137
137
  Requires-Dist: fsspec==2025.5.1; extra == "frozen"
138
- Requires-Dist: globus-sdk==3.58.0; extra == "frozen"
138
+ Requires-Dist: globus-sdk==3.59.0; extra == "frozen"
139
139
  Requires-Dist: google-re2==1.1.20240702; extra == "frozen"
140
140
  Requires-Dist: googleapis-common-protos==1.70.0; extra == "frozen"
141
141
  Requires-Dist: gqlclient==1.2.3; extra == "frozen"
142
- Requires-Dist: grpcio==1.73.0; extra == "frozen"
142
+ Requires-Dist: greenlet==3.2.3; extra == "frozen"
143
+ Requires-Dist: grpcio==1.73.1; extra == "frozen"
143
144
  Requires-Dist: gunicorn==23.0.0; extra == "frozen"
144
145
  Requires-Dist: h11==0.16.0; extra == "frozen"
145
146
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
@@ -174,7 +175,7 @@ Requires-Dist: mdurl==0.1.2; extra == "frozen"
174
175
  Requires-Dist: methodtools==0.4.7; extra == "frozen"
175
176
  Requires-Dist: more-itertools==10.7.0; extra == "frozen"
176
177
  Requires-Dist: moviepy==2.2.1; extra == "frozen"
177
- Requires-Dist: multidict==6.4.4; extra == "frozen"
178
+ Requires-Dist: multidict==6.6.3; extra == "frozen"
178
179
  Requires-Dist: nbformat==5.10.4; extra == "frozen"
179
180
  Requires-Dist: numba==0.61.2; extra == "frozen"
180
181
  Requires-Dist: numpy==2.2.5; extra == "frozen"
@@ -194,10 +195,11 @@ Requires-Dist: parfive==2.2.0; extra == "frozen"
194
195
  Requires-Dist: pathspec==0.12.1; extra == "frozen"
195
196
  Requires-Dist: pendulum==3.1.0; extra == "frozen"
196
197
  Requires-Dist: pika==1.3.2; extra == "frozen"
197
- Requires-Dist: pillow==11.2.1; extra == "frozen"
198
+ Requires-Dist: pillow==11.3.0; extra == "frozen"
198
199
  Requires-Dist: pip==25.1.1; extra == "frozen"
199
200
  Requires-Dist: platformdirs==4.3.8; extra == "frozen"
200
201
  Requires-Dist: pluggy==1.6.0; extra == "frozen"
202
+ Requires-Dist: pooch==1.8.2; extra == "frozen"
201
203
  Requires-Dist: prison==0.2.1; extra == "frozen"
202
204
  Requires-Dist: proglog==0.1.12; extra == "frozen"
203
205
  Requires-Dist: prometheus_client==0.22.1; extra == "frozen"
@@ -227,14 +229,15 @@ Requires-Dist: retry==0.9.2; extra == "frozen"
227
229
  Requires-Dist: rfc3339-validator==0.1.4; extra == "frozen"
228
230
  Requires-Dist: rich==13.9.4; extra == "frozen"
229
231
  Requires-Dist: rich-argparse==1.7.1; extra == "frozen"
230
- Requires-Dist: rpds-py==0.25.1; extra == "frozen"
232
+ Requires-Dist: rpds-py==0.26.0; extra == "frozen"
231
233
  Requires-Dist: s3transfer==0.13.0; extra == "frozen"
232
234
  Requires-Dist: scipy==1.16.0; extra == "frozen"
233
235
  Requires-Dist: semantic-version==2.10.0; extra == "frozen"
234
236
  Requires-Dist: setproctitle==1.3.6; extra == "frozen"
235
- Requires-Dist: setuptools==75.6.0; extra == "frozen"
237
+ Requires-Dist: setuptools==65.5.0; extra == "frozen"
236
238
  Requires-Dist: six==1.17.0; extra == "frozen"
237
239
  Requires-Dist: sniffio==1.3.1; extra == "frozen"
240
+ Requires-Dist: solar-wavelength-calibration==1.0; extra == "frozen"
238
241
  Requires-Dist: sqids==0.5.1; extra == "frozen"
239
242
  Requires-Dist: sqlparse==0.5.3; extra == "frozen"
240
243
  Requires-Dist: sunpy==7.0.0; extra == "frozen"
@@ -6,11 +6,13 @@ from dkist_processing_common.models.flower_pot import SpilledDirt
6
6
  from dkist_processing_common.models.flower_pot import Stem
7
7
  from dkist_processing_common.models.flower_pot import Thorn
8
8
  from dkist_processing_common.models.tags import StemName
9
+ from dkist_processing_common.models.task_name import TaskName
9
10
  from dkist_processing_common.parsers.l0_fits_access import L0FitsAccess
10
11
  from dkist_processing_common.parsers.single_value_single_key_flower import (
11
12
  SingleValueSingleKeyFlower,
12
13
  )
13
- from dkist_processing_common.parsers.unique_bud import UniqueBud
14
+ from dkist_processing_common.parsers.time import ObsIpStartTimeBud
15
+ from dkist_processing_common.parsers.unique_bud import TaskUniqueBud
14
16
  from dkist_processing_common.tasks import ParseL0InputDataBase
15
17
 
16
18
  __all__ = ["ParseL0TestInputData"]
@@ -18,30 +20,6 @@ __all__ = ["ParseL0TestInputData"]
18
20
  S = TypeVar("S", bound=Stem)
19
21
 
20
22
 
21
- class TotalDspsRepeatsBud(UniqueBud):
22
- def __init__(self):
23
- super().__init__(
24
- constant_name=BudName.num_dsps_repeats.value, metadata_key="num_dsps_repeats"
25
- )
26
-
27
- def setter(self, fits_obj: L0FitsAccess):
28
- if fits_obj.ip_task_type != "observe":
29
- return SpilledDirt
30
- return super().setter(fits_obj)
31
-
32
-
33
- class ObsIpStartTimeBud(UniqueBud):
34
- def __init__(self):
35
- super().__init__(
36
- constant_name=BudName.obs_ip_start_time.value, metadata_key="ip_start_time"
37
- )
38
-
39
- def setter(self, fits_obj: L0FitsAccess):
40
- if fits_obj.ip_task_type != "observe":
41
- return SpilledDirt
42
- return super().setter(fits_obj)
43
-
44
-
45
23
  class DspsRepeatNumberFlower(SingleValueSingleKeyFlower):
46
24
  def __init__(self):
47
25
  super().__init__(
@@ -82,7 +60,11 @@ class ParseL0TestInputData(ParseL0InputDataBase):
82
60
  @property
83
61
  def constant_buds(self) -> list[S]:
84
62
  return super().constant_buds + [
85
- TotalDspsRepeatsBud(),
63
+ TaskUniqueBud(
64
+ constant_name=BudName.num_dsps_repeats.value,
65
+ metadata_key="num_dsps_repeats",
66
+ ip_task_types=TaskName.observe.value,
67
+ ),
86
68
  PickyDummyBud(stem_name="PICKY_BUD"),
87
69
  ObsIpStartTimeBud(),
88
70
  ]
@@ -7,12 +7,14 @@ from dataclasses import dataclass
7
7
  from dataclasses import is_dataclass
8
8
  from datetime import datetime
9
9
  from datetime import timedelta
10
+ from itertools import chain
10
11
  from random import randint
11
12
  from uuid import uuid4
12
13
 
13
14
  import numpy as np
14
15
  import pytest
15
16
  from astropy.io import fits
17
+ from dkist_data_simulator.dataset import key_function
16
18
  from dkist_data_simulator.spec122 import Spec122Dataset
17
19
  from dkist_header_validator import spec122_validator
18
20
  from dkist_processing_common._util.scratch import WorkflowFileSystem
@@ -34,6 +36,7 @@ from dkist_processing_common.tests.conftest import FakeGQLClient
34
36
  from dkist_service_configuration.logging import logger
35
37
 
36
38
  from dkist_processing_test.models.parameters import TestParameters
39
+ from dkist_processing_test.tasks import ParseL0TestInputData
37
40
  from dkist_processing_test.tasks import TestQualityL0Metrics
38
41
  from dkist_processing_test.tasks.exercise_numba import ExerciseNumba
39
42
  from dkist_processing_test.tasks.fail import FailTask
@@ -402,20 +405,28 @@ def test_generate_calibrated_data(
402
405
  class CommonDataset(Spec122Dataset):
403
406
  # NOTE: We use ViSP data for unit tests because ViSP can be polarimetric
404
407
  # **BUT** in actual integration tests `*-procesing-test` processes VBI data
405
- def __init__(self):
408
+ def __init__(
409
+ self,
410
+ task_type: str = "observe",
411
+ num_dsps_repeats: int = 1,
412
+ num_files: int = 2,
413
+ start_datetime: datetime = datetime(2020, 1, 1, 0, 0, 0),
414
+ ):
415
+ array_shape = (1, 10, 10)
416
+ dataset_shape = (num_files,) + array_shape[1:]
406
417
  super().__init__(
407
- array_shape=(1, 10, 10),
418
+ array_shape=array_shape,
408
419
  time_delta=1,
409
- dataset_shape=(2, 10, 10),
420
+ dataset_shape=dataset_shape,
410
421
  instrument="visp",
411
- start_time=datetime(2020, 1, 1, 0, 0, 0),
422
+ start_time=start_datetime,
412
423
  )
413
424
 
414
425
  self.add_constant_key("TELEVATN", 6.28)
415
426
  self.add_constant_key("TAZIMUTH", 3.14)
416
427
  self.add_constant_key("TTBLANGL", 1.23)
417
428
  self.add_constant_key("VISP_012", "bar")
418
- self.add_constant_key("DKIST004", "observe")
429
+ self.add_constant_key("DKIST004", task_type)
419
430
  self.add_constant_key("ID___005", "ip id")
420
431
  self.add_constant_key("PAC__004", "Sapphire Polarizer")
421
432
  self.add_constant_key("PAC__005", "31.2")
@@ -426,12 +437,12 @@ class CommonDataset(Spec122Dataset):
426
437
  self.add_constant_key("WAVELNTH", 1080.0)
427
438
  self.add_constant_key("DATE-OBS", "2020-01-02T00:00:00.000")
428
439
  self.add_constant_key("DATE-END", "2020-01-03T00:00:00.000")
440
+ self.add_constant_key("ID___012", "EXPERIMENT_ID1")
429
441
  self.add_constant_key("ID___013", "PROPOSAL_ID1")
430
442
  self.add_constant_key("PAC__002", "clear")
431
443
  self.add_constant_key("PAC__003", "on")
432
444
  self.add_constant_key("TELSCAN", "Raster")
433
- self.add_constant_key("DKIST008", 1)
434
- self.add_constant_key("DKIST009", 1)
445
+ self.add_constant_key("DKIST008", num_dsps_repeats)
435
446
  self.add_constant_key("BZERO", 0)
436
447
  self.add_constant_key("BSCALE", 1)
437
448
 
@@ -441,6 +452,11 @@ class CommonDataset(Spec122Dataset):
441
452
  self.add_constant_key("VSPMAP", 1)
442
453
  self.add_constant_key("VSPNMAPS", 2)
443
454
 
455
+ @key_function("DKIST009")
456
+ def current_dsps_repeat(self, key: str) -> int:
457
+ """Current DSPS repeat number."""
458
+ return self.index
459
+
444
460
 
445
461
  @pytest.fixture()
446
462
  def complete_common_header():
@@ -459,6 +475,92 @@ def complete_common_header():
459
475
  return header_list[0]
460
476
 
461
477
 
478
+ @pytest.fixture(scope="function")
479
+ def parse_inputs_task_no_data(tmp_path, recipe_run_id):
480
+ with ParseL0TestInputData(
481
+ recipe_run_id=recipe_run_id,
482
+ workflow_name="test_parse_l0_inputs",
483
+ workflow_version="VX.Y",
484
+ ) as task:
485
+
486
+ yield task
487
+ task._purge()
488
+
489
+
490
+ def test_parse_task(parse_inputs_task_no_data, tmp_path, recipe_run_id):
491
+ """
492
+ Given: A `ParseL0TestInputData` task with observe and non-observe INPUT data frames
493
+ When: Parsing the input data
494
+ Then: The correct constants and tags are applied
495
+ """
496
+ num_dsps_repeats = 3
497
+ start_datetime = datetime(1988, 7, 2)
498
+ num_non_obs_files = 2
499
+ task = parse_inputs_task_no_data
500
+
501
+ task.scratch = WorkflowFileSystem(scratch_base_path=tmp_path, recipe_run_id=recipe_run_id)
502
+ obs_ds = CommonDataset(
503
+ task_type="observe",
504
+ num_dsps_repeats=num_dsps_repeats,
505
+ num_files=num_dsps_repeats,
506
+ start_datetime=start_datetime,
507
+ )
508
+ non_obs_ds = CommonDataset(task_type="not_observe", num_files=num_non_obs_files)
509
+ ds = chain(obs_ds, non_obs_ds)
510
+ header_generator = (d.header() for d in ds)
511
+ for header in header_generator:
512
+ hdul = generate_214_l0_fits_frame(s122_header=header)
513
+ task.write(data=hdul, tags=[Tag.input(), Tag.frame()], encoder=fits_hdulist_encoder)
514
+
515
+ task()
516
+
517
+ assert task.constants._db_dict[BudName.instrument.value] == "VISP"
518
+ assert task.constants._db_dict[BudName.num_dsps_repeats.value] == num_dsps_repeats
519
+ assert task.constants._db_dict[BudName.obs_ip_start_time] == start_datetime.isoformat()
520
+
521
+ assert (
522
+ task.count(tags=[Tag.input(), Tag.frame(), Tag.task(TaskName.observe.value)])
523
+ == num_dsps_repeats
524
+ )
525
+ assert task.count(tags=[Tag.input(), Tag.frame(), Tag.task("not_observe")]) == num_non_obs_files
526
+ for dsps in range(num_dsps_repeats):
527
+ assert (
528
+ task.count(
529
+ tags=[
530
+ Tag.input(),
531
+ Tag.frame(),
532
+ Tag.task(TaskName.observe.value),
533
+ Tag.dsps_repeat(dsps),
534
+ ]
535
+ )
536
+ == 1
537
+ )
538
+ assert (
539
+ task.count(
540
+ tags=[Tag.input(), Tag.frame(), Tag.task("not_observe"), Tag.dsps_repeat(dsps)]
541
+ )
542
+ == 0
543
+ )
544
+
545
+
546
+ def test_parse_picky_bud(parse_inputs_task_no_data, tmp_path, recipe_run_id):
547
+ """
548
+ Given: A `ParseL0TestInputData` task with data that will trigger an error in the `PickyBud` assigned to that task
549
+ When: Parsing the input data
550
+ Then: The correct error is raised
551
+ """
552
+ task = parse_inputs_task_no_data
553
+ task.scratch = WorkflowFileSystem(scratch_base_path=tmp_path, recipe_run_id=recipe_run_id)
554
+ ds = CommonDataset(task_type="bad value")
555
+ header_generator = (d.header() for d in ds)
556
+ for header in header_generator:
557
+ hdul = generate_214_l0_fits_frame(s122_header=header)
558
+ task.write(data=hdul, tags=[Tag.input(), Tag.frame()], encoder=fits_hdulist_encoder)
559
+
560
+ with pytest.raises(ValueError, match="This task type is bad!"):
561
+ task()
562
+
563
+
462
564
  @pytest.fixture(scope="function", params=[1, 4])
463
565
  def write_l1_task(complete_common_header, request):
464
566
  with WriteL1Data(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-test
3
- Version: 1.28.0
3
+ Version: 1.30.0rc1
4
4
  Summary: Example instrument code used by the DKIST science data processing pipelines to test processing infrastructure
5
5
  Author-email: NSO / AURA <dkistdc@nso.edu>
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
12
12
  Classifier: Programming Language :: Python :: 3.11
13
13
  Requires-Python: >=3.11
14
14
  Description-Content-Type: text/x-rst
15
- Requires-Dist: dkist-processing-common==10.9.0
15
+ Requires-Dist: dkist-processing-common==11.0.0rc2
16
16
  Requires-Dist: dkist-header-validator==5.2.1
17
17
  Requires-Dist: dkist-service-configuration==2.3.0
18
18
  Requires-Dist: dkist-fits-specifications==4.17.0
@@ -31,12 +31,12 @@ Requires-Dist: dkist-processing-test[asdf]; extra == "test"
31
31
  Requires-Dist: dkist-processing-test[quality]; extra == "test"
32
32
  Provides-Extra: inventory
33
33
  Requires-Dist: dkist-processing-common[inventory]; extra == "inventory"
34
- Requires-Dist: dkist-inventory==1.8.3; extra == "inventory"
34
+ Requires-Dist: dkist-inventory==1.8.4; extra == "inventory"
35
35
  Provides-Extra: asdf
36
36
  Requires-Dist: dkist-processing-common[asdf]; extra == "asdf"
37
- Requires-Dist: dkist-inventory[asdf]==1.8.3; extra == "asdf"
37
+ Requires-Dist: dkist-inventory[asdf]==1.8.4; extra == "asdf"
38
38
  Provides-Extra: quality
39
- Requires-Dist: dkist-quality==1.2.1; extra == "quality"
39
+ Requires-Dist: dkist-quality==1.3.0rc2; extra == "quality"
40
40
  Provides-Extra: frozen
41
41
  Requires-Dist: ConfigUpdater==3.2; extra == "frozen"
42
42
  Requires-Dist: Deprecated==1.2.18; extra == "frozen"
@@ -61,7 +61,7 @@ Requires-Dist: SQLAlchemy-JSONField==1.0.2; extra == "frozen"
61
61
  Requires-Dist: SQLAlchemy-Utils==0.41.2; extra == "frozen"
62
62
  Requires-Dist: WTForms==3.2.1; extra == "frozen"
63
63
  Requires-Dist: Werkzeug==2.2.3; extra == "frozen"
64
- Requires-Dist: aioftp==0.25.2; extra == "frozen"
64
+ Requires-Dist: aioftp==0.26.2; extra == "frozen"
65
65
  Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
66
66
  Requires-Dist: aiohttp==3.12.13; extra == "frozen"
67
67
  Requires-Dist: aiosignal==1.3.2; extra == "frozen"
@@ -89,14 +89,14 @@ Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
89
89
  Requires-Dist: asgiref==3.8.1; extra == "frozen"
90
90
  Requires-Dist: asteval==1.0.6; extra == "frozen"
91
91
  Requires-Dist: astropy==7.0.2; extra == "frozen"
92
- Requires-Dist: astropy-iers-data==0.2025.6.23.0.39.50; extra == "frozen"
92
+ Requires-Dist: astropy-iers-data==0.2025.6.30.0.39.40; extra == "frozen"
93
93
  Requires-Dist: asyncpg==0.30.0; extra == "frozen"
94
94
  Requires-Dist: attrs==25.3.0; extra == "frozen"
95
95
  Requires-Dist: babel==2.17.0; extra == "frozen"
96
96
  Requires-Dist: billiard==4.2.1; extra == "frozen"
97
97
  Requires-Dist: blinker==1.9.0; extra == "frozen"
98
- Requires-Dist: boto3==1.38.43; extra == "frozen"
99
- Requires-Dist: botocore==1.38.43; extra == "frozen"
98
+ Requires-Dist: boto3==1.39.1; extra == "frozen"
99
+ Requires-Dist: botocore==1.39.1; extra == "frozen"
100
100
  Requires-Dist: cachelib==0.13.0; extra == "frozen"
101
101
  Requires-Dist: celery==5.5.3; extra == "frozen"
102
102
  Requires-Dist: certifi==2025.6.15; extra == "frozen"
@@ -104,7 +104,7 @@ Requires-Dist: cffi==1.17.1; extra == "frozen"
104
104
  Requires-Dist: charset-normalizer==3.4.2; extra == "frozen"
105
105
  Requires-Dist: click==8.2.1; extra == "frozen"
106
106
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
107
- Requires-Dist: click-plugins==1.1.1; extra == "frozen"
107
+ Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
108
108
  Requires-Dist: click-repl==0.3.0; extra == "frozen"
109
109
  Requires-Dist: clickclick==20.10.2; extra == "frozen"
110
110
  Requires-Dist: colorama==0.4.6; extra == "frozen"
@@ -113,16 +113,16 @@ Requires-Dist: connexion==2.14.2; extra == "frozen"
113
113
  Requires-Dist: contourpy==1.3.2; extra == "frozen"
114
114
  Requires-Dist: cron-descriptor==1.4.5; extra == "frozen"
115
115
  Requires-Dist: croniter==6.0.0; extra == "frozen"
116
- Requires-Dist: cryptography==45.0.4; extra == "frozen"
116
+ Requires-Dist: cryptography==45.0.5; extra == "frozen"
117
117
  Requires-Dist: cycler==0.12.1; extra == "frozen"
118
118
  Requires-Dist: dacite==1.9.2; extra == "frozen"
119
119
  Requires-Dist: decorator==5.2.1; extra == "frozen"
120
120
  Requires-Dist: dill==0.4.0; extra == "frozen"
121
121
  Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
122
- Requires-Dist: dkist-processing-common==10.9.0; extra == "frozen"
122
+ Requires-Dist: dkist-processing-common==11.0.0rc2; extra == "frozen"
123
123
  Requires-Dist: dkist-processing-core==5.1.1; extra == "frozen"
124
124
  Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
125
- Requires-Dist: dkist-processing-test==1.28.0; extra == "frozen"
125
+ Requires-Dist: dkist-processing-test==1.30.0rc1; extra == "frozen"
126
126
  Requires-Dist: dkist-service-configuration==2.3.0; extra == "frozen"
127
127
  Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
128
128
  Requires-Dist: dkist_fits_specifications==4.17.0; extra == "frozen"
@@ -135,11 +135,12 @@ Requires-Dist: flower==2.0.1; extra == "frozen"
135
135
  Requires-Dist: fonttools==4.58.4; extra == "frozen"
136
136
  Requires-Dist: frozenlist==1.7.0; extra == "frozen"
137
137
  Requires-Dist: fsspec==2025.5.1; extra == "frozen"
138
- Requires-Dist: globus-sdk==3.58.0; extra == "frozen"
138
+ Requires-Dist: globus-sdk==3.59.0; extra == "frozen"
139
139
  Requires-Dist: google-re2==1.1.20240702; extra == "frozen"
140
140
  Requires-Dist: googleapis-common-protos==1.70.0; extra == "frozen"
141
141
  Requires-Dist: gqlclient==1.2.3; extra == "frozen"
142
- Requires-Dist: grpcio==1.73.0; extra == "frozen"
142
+ Requires-Dist: greenlet==3.2.3; extra == "frozen"
143
+ Requires-Dist: grpcio==1.73.1; extra == "frozen"
143
144
  Requires-Dist: gunicorn==23.0.0; extra == "frozen"
144
145
  Requires-Dist: h11==0.16.0; extra == "frozen"
145
146
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
@@ -174,7 +175,7 @@ Requires-Dist: mdurl==0.1.2; extra == "frozen"
174
175
  Requires-Dist: methodtools==0.4.7; extra == "frozen"
175
176
  Requires-Dist: more-itertools==10.7.0; extra == "frozen"
176
177
  Requires-Dist: moviepy==2.2.1; extra == "frozen"
177
- Requires-Dist: multidict==6.4.4; extra == "frozen"
178
+ Requires-Dist: multidict==6.6.3; extra == "frozen"
178
179
  Requires-Dist: nbformat==5.10.4; extra == "frozen"
179
180
  Requires-Dist: numba==0.61.2; extra == "frozen"
180
181
  Requires-Dist: numpy==2.2.5; extra == "frozen"
@@ -194,10 +195,11 @@ Requires-Dist: parfive==2.2.0; extra == "frozen"
194
195
  Requires-Dist: pathspec==0.12.1; extra == "frozen"
195
196
  Requires-Dist: pendulum==3.1.0; extra == "frozen"
196
197
  Requires-Dist: pika==1.3.2; extra == "frozen"
197
- Requires-Dist: pillow==11.2.1; extra == "frozen"
198
+ Requires-Dist: pillow==11.3.0; extra == "frozen"
198
199
  Requires-Dist: pip==25.1.1; extra == "frozen"
199
200
  Requires-Dist: platformdirs==4.3.8; extra == "frozen"
200
201
  Requires-Dist: pluggy==1.6.0; extra == "frozen"
202
+ Requires-Dist: pooch==1.8.2; extra == "frozen"
201
203
  Requires-Dist: prison==0.2.1; extra == "frozen"
202
204
  Requires-Dist: proglog==0.1.12; extra == "frozen"
203
205
  Requires-Dist: prometheus_client==0.22.1; extra == "frozen"
@@ -227,14 +229,15 @@ Requires-Dist: retry==0.9.2; extra == "frozen"
227
229
  Requires-Dist: rfc3339-validator==0.1.4; extra == "frozen"
228
230
  Requires-Dist: rich==13.9.4; extra == "frozen"
229
231
  Requires-Dist: rich-argparse==1.7.1; extra == "frozen"
230
- Requires-Dist: rpds-py==0.25.1; extra == "frozen"
232
+ Requires-Dist: rpds-py==0.26.0; extra == "frozen"
231
233
  Requires-Dist: s3transfer==0.13.0; extra == "frozen"
232
234
  Requires-Dist: scipy==1.16.0; extra == "frozen"
233
235
  Requires-Dist: semantic-version==2.10.0; extra == "frozen"
234
236
  Requires-Dist: setproctitle==1.3.6; extra == "frozen"
235
- Requires-Dist: setuptools==75.6.0; extra == "frozen"
237
+ Requires-Dist: setuptools==65.5.0; extra == "frozen"
236
238
  Requires-Dist: six==1.17.0; extra == "frozen"
237
239
  Requires-Dist: sniffio==1.3.1; extra == "frozen"
240
+ Requires-Dist: solar-wavelength-calibration==1.0; extra == "frozen"
238
241
  Requires-Dist: sqids==0.5.1; extra == "frozen"
239
242
  Requires-Dist: sqlparse==0.5.3; extra == "frozen"
240
243
  Requires-Dist: sunpy==7.0.0; extra == "frozen"
@@ -1,4 +1,4 @@
1
- dkist-processing-common==10.9.0
1
+ dkist-processing-common==11.0.0rc2
2
2
  dkist-header-validator==5.2.1
3
3
  dkist-service-configuration==2.3.0
4
4
  dkist-fits-specifications==4.17.0
@@ -9,7 +9,7 @@ dkist-spectral-lines==3.0.0
9
9
 
10
10
  [asdf]
11
11
  dkist-processing-common[asdf]
12
- dkist-inventory[asdf]==1.8.3
12
+ dkist-inventory[asdf]==1.8.4
13
13
 
14
14
  [frozen]
15
15
  ConfigUpdater==3.2
@@ -35,7 +35,7 @@ SQLAlchemy-JSONField==1.0.2
35
35
  SQLAlchemy-Utils==0.41.2
36
36
  WTForms==3.2.1
37
37
  Werkzeug==2.2.3
38
- aioftp==0.25.2
38
+ aioftp==0.26.2
39
39
  aiohappyeyeballs==2.6.1
40
40
  aiohttp==3.12.13
41
41
  aiosignal==1.3.2
@@ -63,14 +63,14 @@ asdf_transform_schemas==0.6.0
63
63
  asgiref==3.8.1
64
64
  asteval==1.0.6
65
65
  astropy==7.0.2
66
- astropy-iers-data==0.2025.6.23.0.39.50
66
+ astropy-iers-data==0.2025.6.30.0.39.40
67
67
  asyncpg==0.30.0
68
68
  attrs==25.3.0
69
69
  babel==2.17.0
70
70
  billiard==4.2.1
71
71
  blinker==1.9.0
72
- boto3==1.38.43
73
- botocore==1.38.43
72
+ boto3==1.39.1
73
+ botocore==1.39.1
74
74
  cachelib==0.13.0
75
75
  celery==5.5.3
76
76
  certifi==2025.6.15
@@ -78,7 +78,7 @@ cffi==1.17.1
78
78
  charset-normalizer==3.4.2
79
79
  click==8.2.1
80
80
  click-didyoumean==0.3.1
81
- click-plugins==1.1.1
81
+ click-plugins==1.1.1.2
82
82
  click-repl==0.3.0
83
83
  clickclick==20.10.2
84
84
  colorama==0.4.6
@@ -87,16 +87,16 @@ connexion==2.14.2
87
87
  contourpy==1.3.2
88
88
  cron-descriptor==1.4.5
89
89
  croniter==6.0.0
90
- cryptography==45.0.4
90
+ cryptography==45.0.5
91
91
  cycler==0.12.1
92
92
  dacite==1.9.2
93
93
  decorator==5.2.1
94
94
  dill==0.4.0
95
95
  dkist-header-validator==5.2.1
96
- dkist-processing-common==10.9.0
96
+ dkist-processing-common==11.0.0rc2
97
97
  dkist-processing-core==5.1.1
98
98
  dkist-processing-pac==3.1.1
99
- dkist-processing-test==1.28.0
99
+ dkist-processing-test==1.30.0rc1
100
100
  dkist-service-configuration==2.3.0
101
101
  dkist-spectral-lines==3.0.0
102
102
  dkist_fits_specifications==4.17.0
@@ -109,11 +109,12 @@ flower==2.0.1
109
109
  fonttools==4.58.4
110
110
  frozenlist==1.7.0
111
111
  fsspec==2025.5.1
112
- globus-sdk==3.58.0
112
+ globus-sdk==3.59.0
113
113
  google-re2==1.1.20240702
114
114
  googleapis-common-protos==1.70.0
115
115
  gqlclient==1.2.3
116
- grpcio==1.73.0
116
+ greenlet==3.2.3
117
+ grpcio==1.73.1
117
118
  gunicorn==23.0.0
118
119
  h11==0.16.0
119
120
  httpcore==1.0.9
@@ -148,7 +149,7 @@ mdurl==0.1.2
148
149
  methodtools==0.4.7
149
150
  more-itertools==10.7.0
150
151
  moviepy==2.2.1
151
- multidict==6.4.4
152
+ multidict==6.6.3
152
153
  nbformat==5.10.4
153
154
  numba==0.61.2
154
155
  numpy==2.2.5
@@ -168,10 +169,11 @@ parfive==2.2.0
168
169
  pathspec==0.12.1
169
170
  pendulum==3.1.0
170
171
  pika==1.3.2
171
- pillow==11.2.1
172
+ pillow==11.3.0
172
173
  pip==25.1.1
173
174
  platformdirs==4.3.8
174
175
  pluggy==1.6.0
176
+ pooch==1.8.2
175
177
  prison==0.2.1
176
178
  proglog==0.1.12
177
179
  prometheus_client==0.22.1
@@ -201,14 +203,15 @@ retry==0.9.2
201
203
  rfc3339-validator==0.1.4
202
204
  rich==13.9.4
203
205
  rich-argparse==1.7.1
204
- rpds-py==0.25.1
206
+ rpds-py==0.26.0
205
207
  s3transfer==0.13.0
206
208
  scipy==1.16.0
207
209
  semantic-version==2.10.0
208
210
  setproctitle==1.3.6
209
- setuptools==75.6.0
211
+ setuptools==65.5.0
210
212
  six==1.17.0
211
213
  sniffio==1.3.1
214
+ solar-wavelength-calibration==1.0
212
215
  sqids==0.5.1
213
216
  sqlparse==0.5.3
214
217
  sunpy==7.0.0
@@ -238,10 +241,10 @@ zipp==3.23.0
238
241
 
239
242
  [inventory]
240
243
  dkist-processing-common[inventory]
241
- dkist-inventory==1.8.3
244
+ dkist-inventory==1.8.4
242
245
 
243
246
  [quality]
244
- dkist-quality==1.2.1
247
+ dkist-quality==1.3.0rc2
245
248
 
246
249
  [test]
247
250
  pytest
@@ -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 = "1.28.0"
13
- date = 2025-06-24T15:22:31.631881
12
+ version = "1.30.0rc1"
13
+ date = 2025-07-02T09:27:45.704916
14
14
 
15
15
  [project]
16
16
  dynamic = ["version"]
@@ -26,7 +26,7 @@ classifiers = [
26
26
  "Programming Language :: Python :: 3.11",
27
27
  ]
28
28
  dependencies = [
29
- "dkist-processing-common == 10.9.0",
29
+ "dkist-processing-common == 11.0.0rc2",
30
30
  "dkist-header-validator == 5.2.1",
31
31
  "dkist-service-configuration == 2.3.0",
32
32
  "dkist-fits-specifications == 4.17.0",
@@ -54,14 +54,14 @@ test = [
54
54
  ]
55
55
  inventory = [
56
56
  "dkist-processing-common[inventory]",
57
- "dkist-inventory==1.8.3",
57
+ "dkist-inventory==1.8.4",
58
58
  ]
59
59
  asdf = [
60
60
  "dkist-processing-common[asdf]",
61
- "dkist-inventory[asdf]==1.8.3",
61
+ "dkist-inventory[asdf]==1.8.4",
62
62
  ]
63
63
  quality = [
64
- "dkist-quality == 1.2.1",
64
+ "dkist-quality == 1.3.0rc2",
65
65
  ]
66
66
  frozen = [
67
67
  "ConfigUpdater == 3.2",
@@ -87,7 +87,7 @@ frozen = [
87
87
  "SQLAlchemy-Utils == 0.41.2",
88
88
  "WTForms == 3.2.1",
89
89
  "Werkzeug == 2.2.3",
90
- "aioftp == 0.25.2",
90
+ "aioftp == 0.26.2",
91
91
  "aiohappyeyeballs == 2.6.1",
92
92
  "aiohttp == 3.12.13",
93
93
  "aiosignal == 1.3.2",
@@ -115,14 +115,14 @@ frozen = [
115
115
  "asgiref == 3.8.1",
116
116
  "asteval == 1.0.6",
117
117
  "astropy == 7.0.2",
118
- "astropy-iers-data == 0.2025.6.23.0.39.50",
118
+ "astropy-iers-data == 0.2025.6.30.0.39.40",
119
119
  "asyncpg == 0.30.0",
120
120
  "attrs == 25.3.0",
121
121
  "babel == 2.17.0",
122
122
  "billiard == 4.2.1",
123
123
  "blinker == 1.9.0",
124
- "boto3 == 1.38.43",
125
- "botocore == 1.38.43",
124
+ "boto3 == 1.39.1",
125
+ "botocore == 1.39.1",
126
126
  "cachelib == 0.13.0",
127
127
  "celery == 5.5.3",
128
128
  "certifi == 2025.6.15",
@@ -130,7 +130,7 @@ frozen = [
130
130
  "charset-normalizer == 3.4.2",
131
131
  "click == 8.2.1",
132
132
  "click-didyoumean == 0.3.1",
133
- "click-plugins == 1.1.1",
133
+ "click-plugins == 1.1.1.2",
134
134
  "click-repl == 0.3.0",
135
135
  "clickclick == 20.10.2",
136
136
  "colorama == 0.4.6",
@@ -139,16 +139,16 @@ frozen = [
139
139
  "contourpy == 1.3.2",
140
140
  "cron-descriptor == 1.4.5",
141
141
  "croniter == 6.0.0",
142
- "cryptography == 45.0.4",
142
+ "cryptography == 45.0.5",
143
143
  "cycler == 0.12.1",
144
144
  "dacite == 1.9.2",
145
145
  "decorator == 5.2.1",
146
146
  "dill == 0.4.0",
147
147
  "dkist-header-validator == 5.2.1",
148
- "dkist-processing-common == 10.9.0",
148
+ "dkist-processing-common == 11.0.0rc2",
149
149
  "dkist-processing-core == 5.1.1",
150
150
  "dkist-processing-pac == 3.1.1",
151
- "dkist-processing-test == 1.28.0",
151
+ "dkist-processing-test == 1.30.0rc1",
152
152
  "dkist-service-configuration == 2.3.0",
153
153
  "dkist-spectral-lines == 3.0.0",
154
154
  "dkist_fits_specifications == 4.17.0",
@@ -161,11 +161,12 @@ frozen = [
161
161
  "fonttools == 4.58.4",
162
162
  "frozenlist == 1.7.0",
163
163
  "fsspec == 2025.5.1",
164
- "globus-sdk == 3.58.0",
164
+ "globus-sdk == 3.59.0",
165
165
  "google-re2 == 1.1.20240702",
166
166
  "googleapis-common-protos == 1.70.0",
167
167
  "gqlclient == 1.2.3",
168
- "grpcio == 1.73.0",
168
+ "greenlet == 3.2.3",
169
+ "grpcio == 1.73.1",
169
170
  "gunicorn == 23.0.0",
170
171
  "h11 == 0.16.0",
171
172
  "httpcore == 1.0.9",
@@ -200,7 +201,7 @@ frozen = [
200
201
  "methodtools == 0.4.7",
201
202
  "more-itertools == 10.7.0",
202
203
  "moviepy == 2.2.1",
203
- "multidict == 6.4.4",
204
+ "multidict == 6.6.3",
204
205
  "nbformat == 5.10.4",
205
206
  "numba == 0.61.2",
206
207
  "numpy == 2.2.5",
@@ -220,10 +221,11 @@ frozen = [
220
221
  "pathspec == 0.12.1",
221
222
  "pendulum == 3.1.0",
222
223
  "pika == 1.3.2",
223
- "pillow == 11.2.1",
224
+ "pillow == 11.3.0",
224
225
  "pip == 25.1.1",
225
226
  "platformdirs == 4.3.8",
226
227
  "pluggy == 1.6.0",
228
+ "pooch == 1.8.2",
227
229
  "prison == 0.2.1",
228
230
  "proglog == 0.1.12",
229
231
  "prometheus_client == 0.22.1",
@@ -253,14 +255,15 @@ frozen = [
253
255
  "rfc3339-validator == 0.1.4",
254
256
  "rich == 13.9.4",
255
257
  "rich-argparse == 1.7.1",
256
- "rpds-py == 0.25.1",
258
+ "rpds-py == 0.26.0",
257
259
  "s3transfer == 0.13.0",
258
260
  "scipy == 1.16.0",
259
261
  "semantic-version == 2.10.0",
260
262
  "setproctitle == 1.3.6",
261
- "setuptools == 75.6.0",
263
+ "setuptools == 65.5.0",
262
264
  "six == 1.17.0",
263
265
  "sniffio == 1.3.1",
266
+ "solar-wavelength-calibration == 1.0",
264
267
  "sqids == 0.5.1",
265
268
  "sqlparse == 0.5.3",
266
269
  "sunpy == 7.0.0",