dkist-processing-test 1.45.0rc1__tar.gz → 1.46.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. dkist_processing_test-1.46.0/.snyk +24 -0
  2. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/PKG-INFO +25 -25
  3. dkist_processing_test-1.46.0/dkist_processing_test/tests/test_workflows.py +55 -0
  4. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/workflows/common_tasks.py +13 -1
  5. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/workflows/end_to_end.py +8 -1
  6. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/workflows/trial_end_to_end.py +8 -1
  7. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test.egg-info/PKG-INFO +25 -25
  8. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test.egg-info/requires.txt +24 -24
  9. dkist_processing_test-1.46.0/dkist_processing_test.egg-info/scm_version.json +8 -0
  10. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/pyproject.toml +26 -26
  11. dkist_processing_test-1.45.0rc1/.snyk +0 -13
  12. dkist_processing_test-1.45.0rc1/dkist_processing_test/tests/test_workflows.py +0 -17
  13. dkist_processing_test-1.45.0rc1/dkist_processing_test.egg-info/scm_version.json +0 -8
  14. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/.gitignore +0 -0
  15. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/.pre-commit-config.yaml +0 -0
  16. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/.rovodev/.review-agent.md +0 -0
  17. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/README.rst +0 -0
  18. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/bitbucket-pipelines.yml +0 -0
  19. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/__init__.py +0 -0
  20. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/config.py +0 -0
  21. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/models/__init__.py +0 -0
  22. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/models/constants.py +0 -0
  23. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/models/parameters.py +0 -0
  24. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/parsers/__init__.py +0 -0
  25. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/parsers/test_l0_fits_access.py +0 -0
  26. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/parsers/time.py +0 -0
  27. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/__init__.py +0 -0
  28. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/construct_dataset_extras.py +0 -0
  29. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/exercise_gpu.py +0 -0
  30. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/exercise_multiprocessing.py +0 -0
  31. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/exercise_numba.py +0 -0
  32. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/fail.py +0 -0
  33. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/fake_science.py +0 -0
  34. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/high_memory.py +0 -0
  35. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/manual.py +0 -0
  36. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/movie.py +0 -0
  37. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/noop.py +0 -0
  38. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/parse.py +0 -0
  39. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/quality.py +0 -0
  40. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tasks/write_l1.py +0 -0
  41. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tests/__init__.py +0 -0
  42. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tests/conftest.py +0 -0
  43. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/tests/test_tasks.py +0 -0
  44. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/workflows/__init__.py +0 -0
  45. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/workflows/exercise_dask.py +0 -0
  46. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/workflows/exercise_gpu.py +0 -0
  47. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/workflows/exercise_multiprocessing.py +0 -0
  48. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/workflows/exercise_numba.py +0 -0
  49. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/workflows/fail.py +0 -0
  50. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/workflows/noop.py +0 -0
  51. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test/workflows/resource_queue.py +0 -0
  52. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test.egg-info/SOURCES.txt +0 -0
  53. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test.egg-info/dependency_links.txt +0 -0
  54. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test.egg-info/scm_file_list.json +0 -0
  55. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/dkist_processing_test.egg-info/top_level.txt +0 -0
  56. {dkist_processing_test-1.45.0rc1 → dkist_processing_test-1.46.0}/setup.cfg +0 -0
@@ -0,0 +1,24 @@
1
+ # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities
2
+ # https://docs.snyk.io/manage-risk/policies/the-.snyk-file#syntax-of-the-.snyk-file
3
+ version: v1.25.0
4
+ ignore:
5
+ SNYK-PYTHON-PILLOW-21277783:
6
+ - '*':
7
+ reason: 'Pillow upgrade blocked by version incompatibility with moviepy'
8
+ expires: '2027-10-20T00:00:00.000Z'
9
+ SNYK-PYTHON-PILLOW-21277801:
10
+ - '*':
11
+ reason: 'Pillow upgrade blocked by version incompatibility with moviepy'
12
+ expires: '2027-10-20T00:00:00.000Z'
13
+ SNYK-PYTHON-PILLOW-21277802:
14
+ - '*':
15
+ reason: 'Pillow upgrade blocked by version incompatibility with moviepy'
16
+ expires: '2027-10-20T00:00:00.000Z'
17
+ SNYK-PYTHON-PILLOW-21279300:
18
+ - '*':
19
+ reason: 'Pillow upgrade blocked by version incompatibility with moviepy'
20
+ expires: '2027-10-20T00:00:00.000Z'
21
+ SNYK-PYTHON-PILLOW-21431493:
22
+ - '*':
23
+ reason: 'Pillow upgrade blocked by version incompatibility with moviepy'
24
+ expires: '2027-10-20T00:00:00.000Z'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-test
3
- Version: 1.45.0rc1
3
+ Version: 1.46.0
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,12 +12,12 @@ Classifier: Programming Language :: Python :: 3
12
12
  Classifier: Programming Language :: Python :: 3.13
13
13
  Requires-Python: >=3.13
14
14
  Description-Content-Type: text/x-rst
15
- Requires-Dist: dkist-processing-common==14.7.0rc1
15
+ Requires-Dist: dkist-processing-common==14.8.0
16
16
  Requires-Dist: dkist-header-validator==6.0.0
17
17
  Requires-Dist: dkist-service-configuration==4.3.0
18
18
  Requires-Dist: dkist-fits-specifications==4.30.0
19
19
  Requires-Dist: numba==0.61.2
20
- Requires-Dist: astropy==7.0.2
20
+ Requires-Dist: astropy==7.2.2
21
21
  Requires-Dist: numpy==2.2.5
22
22
  Requires-Dist: dkist-spectral-lines==3.0.1
23
23
  Provides-Extra: test
@@ -53,7 +53,7 @@ Requires-Dist: PyJWT==2.15.1; extra == "frozen"
53
53
  Requires-Dist: PyYAML==6.0.3; extra == "frozen"
54
54
  Requires-Dist: PyYAML-ft==8.0.0; extra == "frozen"
55
55
  Requires-Dist: Pygments==2.21.0; extra == "frozen"
56
- Requires-Dist: SQLAlchemy==2.1.5; extra == "frozen"
56
+ Requires-Dist: SQLAlchemy==2.1.6; extra == "frozen"
57
57
  Requires-Dist: Send2Trash==2.1.0; extra == "frozen"
58
58
  Requires-Dist: a2wsgi==1.10.10; extra == "frozen"
59
59
  Requires-Dist: aioftp==0.28.3; extra == "frozen"
@@ -62,7 +62,7 @@ Requires-Dist: aiohttp==3.14.5; extra == "frozen"
62
62
  Requires-Dist: aiosignal==1.4.0; extra == "frozen"
63
63
  Requires-Dist: aiosmtplib==5.1.3; extra == "frozen"
64
64
  Requires-Dist: aiosqlite==0.22.1; extra == "frozen"
65
- Requires-Dist: alembic==1.20.0; extra == "frozen"
65
+ Requires-Dist: alembic==1.20.1; extra == "frozen"
66
66
  Requires-Dist: amqp==5.4.1; extra == "frozen"
67
67
  Requires-Dist: annotated-doc==0.0.5; extra == "frozen"
68
68
  Requires-Dist: annotated-types==0.8.0; extra == "frozen"
@@ -86,7 +86,7 @@ Requires-Dist: asdf==5.4.0; extra == "frozen"
86
86
  Requires-Dist: asdf_standard==1.5.0; extra == "frozen"
87
87
  Requires-Dist: asgiref==3.12.1; extra == "frozen"
88
88
  Requires-Dist: asteval==1.0.10; extra == "frozen"
89
- Requires-Dist: astropy==7.0.2; extra == "frozen"
89
+ Requires-Dist: astropy==7.2.2; extra == "frozen"
90
90
  Requires-Dist: astropy-iers-data==0.2026.10.19.0.52.1; extra == "frozen"
91
91
  Requires-Dist: asttokens==3.0.2; extra == "frozen"
92
92
  Requires-Dist: async-lru==2.4.0; extra == "frozen"
@@ -96,12 +96,12 @@ Requires-Dist: babel==2.18.0; extra == "frozen"
96
96
  Requires-Dist: beautifulsoup4==4.15.0; extra == "frozen"
97
97
  Requires-Dist: billiard==4.3.1; extra == "frozen"
98
98
  Requires-Dist: bleach==6.4.0; extra == "frozen"
99
- Requires-Dist: boto3==1.43.114; extra == "frozen"
100
- Requires-Dist: botocore==1.43.114; extra == "frozen"
101
- Requires-Dist: cachetools==7.2.3; extra == "frozen"
99
+ Requires-Dist: boto3==1.43.118; extra == "frozen"
100
+ Requires-Dist: botocore==1.43.118; extra == "frozen"
101
+ Requires-Dist: cachetools==7.2.4; extra == "frozen"
102
102
  Requires-Dist: cadwyn==7.0.0; extra == "frozen"
103
103
  Requires-Dist: celery==5.6.3; extra == "frozen"
104
- Requires-Dist: certifi==2026.10.18; extra == "frozen"
104
+ Requires-Dist: certifi==2026.10.19; extra == "frozen"
105
105
  Requires-Dist: cffi==2.1.1; extra == "frozen"
106
106
  Requires-Dist: charset-normalizer==3.5.2; extra == "frozen"
107
107
  Requires-Dist: click==8.5.0; extra == "frozen"
@@ -120,10 +120,10 @@ Requires-Dist: decorator==5.3.1; extra == "frozen"
120
120
  Requires-Dist: defusedxml==0.7.1; extra == "frozen"
121
121
  Requires-Dist: dill==0.4.1; extra == "frozen"
122
122
  Requires-Dist: dkist-header-validator==6.0.0; extra == "frozen"
123
- Requires-Dist: dkist-processing-common==14.7.0rc1; extra == "frozen"
123
+ Requires-Dist: dkist-processing-common==14.8.0; extra == "frozen"
124
124
  Requires-Dist: dkist-processing-core==7.5.0; extra == "frozen"
125
125
  Requires-Dist: dkist-processing-pac==3.1.2; extra == "frozen"
126
- Requires-Dist: dkist-processing-test==1.45.0rc1; extra == "frozen"
126
+ Requires-Dist: dkist-processing-test==1.46.0; extra == "frozen"
127
127
  Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
128
128
  Requires-Dist: dkist-spectral-lines==3.0.1; extra == "frozen"
129
129
  Requires-Dist: dkist_fits_specifications==4.30.0; extra == "frozen"
@@ -138,12 +138,12 @@ Requires-Dist: fonttools==4.67.0; extra == "frozen"
138
138
  Requires-Dist: fqdn==1.6.0; extra == "frozen"
139
139
  Requires-Dist: frozenlist==1.8.0; extra == "frozen"
140
140
  Requires-Dist: fsspec==2026.9.0; extra == "frozen"
141
- Requires-Dist: globus-sdk==4.9.1; extra == "frozen"
141
+ Requires-Dist: globus-sdk==4.10.0; extra == "frozen"
142
142
  Requires-Dist: googleapis-common-protos==1.75.5; extra == "frozen"
143
143
  Requires-Dist: gqlclient==2.0.0; extra == "frozen"
144
144
  Requires-Dist: greenback==1.3.0; extra == "frozen"
145
145
  Requires-Dist: greenlet==3.5.6; extra == "frozen"
146
- Requires-Dist: grpcio==1.84.0; extra == "frozen"
146
+ Requires-Dist: grpcio==1.84.1; extra == "frozen"
147
147
  Requires-Dist: h11==0.16.0; extra == "frozen"
148
148
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
149
149
  Requires-Dist: httptools==0.9.0; extra == "frozen"
@@ -231,7 +231,7 @@ Requires-Dist: opentelemetry-semantic-conventions==0.66b1; extra == "frozen"
231
231
  Requires-Dist: opentelemetry-util-http==0.66b1; extra == "frozen"
232
232
  Requires-Dist: outcome==1.3.0.post0; extra == "frozen"
233
233
  Requires-Dist: packaging==26.3; extra == "frozen"
234
- Requires-Dist: pandas==3.0.6; extra == "frozen"
234
+ Requires-Dist: pandas==3.1.0; extra == "frozen"
235
235
  Requires-Dist: pandocfilters==1.5.1; extra == "frozen"
236
236
  Requires-Dist: parfive==2.3.1; extra == "frozen"
237
237
  Requires-Dist: parso==0.8.7; extra == "frozen"
@@ -241,7 +241,7 @@ Requires-Dist: pendulum==3.3.0; extra == "frozen"
241
241
  Requires-Dist: pexpect==4.9.0; extra == "frozen"
242
242
  Requires-Dist: pika==1.4.4; extra == "frozen"
243
243
  Requires-Dist: pillow==11.3.0; extra == "frozen"
244
- Requires-Dist: pip==26.2.1; extra == "frozen"
244
+ Requires-Dist: pip==26.2.2; extra == "frozen"
245
245
  Requires-Dist: platformdirs==4.13.5; extra == "frozen"
246
246
  Requires-Dist: pluggy==1.7.0; extra == "frozen"
247
247
  Requires-Dist: pooch==1.9.0; extra == "frozen"
@@ -256,10 +256,10 @@ Requires-Dist: psycopg-binary==3.3.6; extra == "frozen"
256
256
  Requires-Dist: psycopg2-binary==2.9.13; extra == "frozen"
257
257
  Requires-Dist: ptyprocess==0.7.0; extra == "frozen"
258
258
  Requires-Dist: pure_eval==0.2.4; extra == "frozen"
259
- Requires-Dist: pycparser==3.11; extra == "frozen"
259
+ Requires-Dist: pycparser==3.12; extra == "frozen"
260
260
  Requires-Dist: pydantic==2.14.1; extra == "frozen"
261
261
  Requires-Dist: pydantic-extra-types==2.11.1; extra == "frozen"
262
- Requires-Dist: pydantic-settings==2.16.0; extra == "frozen"
262
+ Requires-Dist: pydantic-settings==2.16.1; extra == "frozen"
263
263
  Requires-Dist: pydantic_core==2.50.1; extra == "frozen"
264
264
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
265
265
  Requires-Dist: pygtrie==2.6.2; extra == "frozen"
@@ -282,7 +282,7 @@ Requires-Dist: rich==15.0.0; extra == "frozen"
282
282
  Requires-Dist: rich-argparse==1.8.0; extra == "frozen"
283
283
  Requires-Dist: rich-toolkit==0.20.6; extra == "frozen"
284
284
  Requires-Dist: rpds-py==2026.9.1; extra == "frozen"
285
- Requires-Dist: s3transfer==0.19.2; extra == "frozen"
285
+ Requires-Dist: s3transfer==0.19.3; extra == "frozen"
286
286
  Requires-Dist: scipy==1.18.1; extra == "frozen"
287
287
  Requires-Dist: semantic-version==2.10.0; extra == "frozen"
288
288
  Requires-Dist: setproctitle==1.3.8; extra == "frozen"
@@ -290,7 +290,7 @@ Requires-Dist: shellingham==1.5.4; extra == "frozen"
290
290
  Requires-Dist: six==1.17.0; extra == "frozen"
291
291
  Requires-Dist: sniffio==1.3.1; extra == "frozen"
292
292
  Requires-Dist: solar-wavelength-calibration==2.0.4; extra == "frozen"
293
- Requires-Dist: soupsieve==3.0.3; extra == "frozen"
293
+ Requires-Dist: soupsieve==3.0.4; extra == "frozen"
294
294
  Requires-Dist: sqids==0.5.1; extra == "frozen"
295
295
  Requires-Dist: sqlparse==0.6.0; extra == "frozen"
296
296
  Requires-Dist: stack-data==0.6.3; extra == "frozen"
@@ -305,14 +305,14 @@ Requires-Dist: termcolor==3.3.0; extra == "frozen"
305
305
  Requires-Dist: terminado==0.18.1; extra == "frozen"
306
306
  Requires-Dist: text-unidecode==1.3; extra == "frozen"
307
307
  Requires-Dist: tinycss2==1.5.1; extra == "frozen"
308
- Requires-Dist: tornado==6.5.10; extra == "frozen"
308
+ Requires-Dist: tornado==6.6; extra == "frozen"
309
309
  Requires-Dist: tqdm==4.70.1; extra == "frozen"
310
310
  Requires-Dist: traitlets==5.16.1; extra == "frozen"
311
311
  Requires-Dist: typer==0.27.3; extra == "frozen"
312
312
  Requires-Dist: typing-inspection==0.4.4; extra == "frozen"
313
313
  Requires-Dist: typing_extensions==4.16.0; extra == "frozen"
314
314
  Requires-Dist: tzdata==2026.5; extra == "frozen"
315
- Requires-Dist: tzlocal==5.4.4; extra == "frozen"
315
+ Requires-Dist: tzlocal==5.4.5; extra == "frozen"
316
316
  Requires-Dist: uncertainties==3.2.3; extra == "frozen"
317
317
  Requires-Dist: universal_pathlib==0.3.10; extra == "frozen"
318
318
  Requires-Dist: uri-template==1.3.0; extra == "frozen"
@@ -323,16 +323,16 @@ Requires-Dist: uvloop==0.23.0; extra == "frozen"
323
323
  Requires-Dist: vine==5.1.0; extra == "frozen"
324
324
  Requires-Dist: voluptuous==0.16.0; extra == "frozen"
325
325
  Requires-Dist: watchfiles==1.3.0; extra == "frozen"
326
- Requires-Dist: wcwidth==0.9.2; extra == "frozen"
326
+ Requires-Dist: wcwidth==0.9.3; extra == "frozen"
327
327
  Requires-Dist: webcolors==25.10.0; extra == "frozen"
328
328
  Requires-Dist: webencodings==0.6.1; extra == "frozen"
329
329
  Requires-Dist: websocket-client==1.9.2; extra == "frozen"
330
- Requires-Dist: websockets==17.2; extra == "frozen"
330
+ Requires-Dist: websockets==17.3; extra == "frozen"
331
331
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
332
332
  Requires-Dist: wrapt==2.5.1; extra == "frozen"
333
333
  Requires-Dist: yamale==6.1.0; extra == "frozen"
334
334
  Requires-Dist: yarl==1.25.1; extra == "frozen"
335
- Requires-Dist: zipp==4.1.1; extra == "frozen"
335
+ Requires-Dist: zipp==4.1.2; extra == "frozen"
336
336
 
337
337
  dkist-processing-test
338
338
  ---------------------
@@ -0,0 +1,55 @@
1
+ """Test integrity of workflows."""
2
+
3
+ import pytest
4
+ from dkist_processing_common.tasks import DeleteInputFrames
5
+ from dkist_processing_common.tasks import Teardown
6
+ from dkist_processing_common.tasks import TrialTeardown
7
+ from dkist_processing_core import ResourceQueue
8
+ from dkist_processing_core import Workflow
9
+ from dkist_processing_core.build_utils import validate_workflows
10
+ from dkist_processing_core.task import TaskBase
11
+
12
+ from dkist_processing_test import workflows
13
+ from dkist_processing_test.tasks import ExampleQualityL0Metrics
14
+ from dkist_processing_test.tasks import GenerateCalibratedData
15
+ from dkist_processing_test.tasks import ParseL0TestInputData
16
+ from dkist_processing_test.tasks.construct_dataset_extras import ExampleWriteL1DatasetExtras
17
+ from dkist_processing_test.workflows.end_to_end import end_to_end
18
+ from dkist_processing_test.workflows.exercise_multiprocessing import exercise_multiprocessing
19
+ from dkist_processing_test.workflows.trial_end_to_end import trial
20
+
21
+
22
+ def test_workflow_integrity():
23
+ """Validate workflow to ensure acyclic-ness and export compilation"""
24
+ validate_workflows(workflows)
25
+
26
+
27
+ def test_exercise_multiprocessing_uses_multi_core_resource_queue():
28
+ """The multiprocessing workflow runs on workers configured with multiple CPUs."""
29
+ assert exercise_multiprocessing.nodes[0].resource_queue == ResourceQueue.MULTI_CORE
30
+
31
+
32
+ @pytest.mark.parametrize(
33
+ "workflow, teardown_task",
34
+ [
35
+ pytest.param(end_to_end, Teardown, id="end-to-end"),
36
+ pytest.param(trial, TrialTeardown, id="trial"),
37
+ ],
38
+ )
39
+ def test_input_cleanup_ordering(workflow: Workflow, teardown_task: type[TaskBase]) -> None:
40
+ """
41
+ Given: An end-to-end workflow with parallel consumers of raw input frames.
42
+ When: Its Airflow dependencies are inspected.
43
+ Then: Cleanup waits for all raw-frame consumers and completes before teardown.
44
+ """
45
+ dag = workflow.load()
46
+ cleanup = dag.get_task(DeleteInputFrames.__name__)
47
+ cleanup_upstreams = {task.task_id for task in cleanup.get_flat_relatives(upstream=True)}
48
+
49
+ assert {
50
+ ParseL0TestInputData.__name__,
51
+ GenerateCalibratedData.__name__,
52
+ ExampleQualityL0Metrics.__name__,
53
+ ExampleWriteL1DatasetExtras.__name__,
54
+ } <= cleanup_upstreams
55
+ assert DeleteInputFrames.__name__ in dag.get_task(teardown_task.__name__).upstream_task_ids
@@ -1,11 +1,12 @@
1
1
  """
2
- Workflow which exercises the common tasks in an end to end scenario
2
+ Workflow which exercises the common tasks individually
3
3
  """
4
4
 
5
5
  from dkist_processing_common.tasks import AssembleQualityData
6
6
  from dkist_processing_common.tasks import CreateTrialAsdf
7
7
  from dkist_processing_common.tasks import CreateTrialDatasetInventory
8
8
  from dkist_processing_common.tasks import CreateTrialQualityReport
9
+ from dkist_processing_common.tasks import DeleteInputFrames
9
10
  from dkist_processing_common.tasks import PublishCatalogAndQualityMessages
10
11
  from dkist_processing_common.tasks import QualityL1Metrics
11
12
  from dkist_processing_common.tasks import SubmitDatasetMetadata
@@ -156,6 +157,17 @@ publish_catalog_messages = Workflow(
156
157
  )
157
158
  publish_catalog_messages.add_node(task=PublishCatalogAndQualityMessages, upstreams=None)
158
159
 
160
+ # DeleteInputFrames Task
161
+ delete_input_frames = Workflow(
162
+ input_data="input",
163
+ output_data="output",
164
+ category="test",
165
+ detail="delete-input-frames",
166
+ workflow_package=__package__,
167
+ )
168
+ delete_input_frames.add_node(task=DeleteInputFrames, upstreams=None)
169
+
170
+
159
171
  # Teardown Task
160
172
  teardown = Workflow(
161
173
  input_data="input",
@@ -3,6 +3,7 @@ Workflow which exercises the common tasks in an end to end scenario
3
3
  """
4
4
 
5
5
  from dkist_processing_common.tasks import AssembleQualityData
6
+ from dkist_processing_common.tasks import DeleteInputFrames
6
7
  from dkist_processing_common.tasks import PublishCatalogAndQualityMessages
7
8
  from dkist_processing_common.tasks import QualityL1Metrics
8
9
  from dkist_processing_common.tasks import SubmitDatasetMetadata
@@ -48,6 +49,12 @@ end_to_end.add_node(task=ExampleQualityL0Metrics, upstreams=ParseL0TestInputData
48
49
  end_to_end.add_node(task=QualityL1Metrics, upstreams=GenerateCalibratedData)
49
50
  end_to_end.add_node(task=AssembleQualityData, upstreams=[ExampleQualityL0Metrics, QualityL1Metrics])
50
51
 
52
+ # Input cleanup waits for every task that reads raw frames.
53
+ end_to_end.add_node(
54
+ task=DeleteInputFrames,
55
+ upstreams=[GenerateCalibratedData, ExampleQualityL0Metrics, ExampleWriteL1DatasetExtras],
56
+ )
57
+
51
58
  # Output flow
52
59
  end_to_end.add_node(
53
60
  task=SubmitDatasetMetadata, upstreams=[WriteL1Data, ExampleWriteL1DatasetExtras]
@@ -66,4 +73,4 @@ end_to_end.add_node(
66
73
  )
67
74
 
68
75
  # goodby
69
- end_to_end.add_node(task=Teardown, upstreams=PublishCatalogAndQualityMessages)
76
+ end_to_end.add_node(task=Teardown, upstreams=[PublishCatalogAndQualityMessages, DeleteInputFrames])
@@ -6,6 +6,7 @@ from dkist_processing_common.tasks import AssembleQualityData
6
6
  from dkist_processing_common.tasks import CreateTrialAsdf
7
7
  from dkist_processing_common.tasks import CreateTrialDatasetInventory
8
8
  from dkist_processing_common.tasks import CreateTrialQualityReport
9
+ from dkist_processing_common.tasks import DeleteInputFrames
9
10
  from dkist_processing_common.tasks import QualityL1Metrics
10
11
  from dkist_processing_common.tasks import TransferL0Data
11
12
  from dkist_processing_common.tasks import TransferTrialData
@@ -45,6 +46,12 @@ trial.add_node(task=ExampleQualityL0Metrics, upstreams=ParseL0TestInputData)
45
46
  trial.add_node(task=QualityL1Metrics, upstreams=GenerateCalibratedData)
46
47
  trial.add_node(task=AssembleQualityData, upstreams=[ExampleQualityL0Metrics, QualityL1Metrics])
47
48
 
49
+ # Input cleanup waits for every task that reads raw frames.
50
+ trial.add_node(
51
+ task=DeleteInputFrames,
52
+ upstreams=[GenerateCalibratedData, ExampleQualityL0Metrics, ExampleWriteL1DatasetExtras],
53
+ )
54
+
48
55
  # Trial data generation
49
56
  trial.add_node(task=CreateTrialDatasetInventory, upstreams=WriteL1Data, pip_extras=["inventory"])
50
57
  trial.add_node(task=CreateTrialAsdf, upstreams=WriteL1Data, pip_extras=["asdf"])
@@ -67,4 +74,4 @@ trial.add_node(
67
74
  )
68
75
 
69
76
  # goodby
70
- trial.add_node(task=TrialTeardown, upstreams=TransferTrialData)
77
+ trial.add_node(task=TrialTeardown, upstreams=[TransferTrialData, DeleteInputFrames])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-test
3
- Version: 1.45.0rc1
3
+ Version: 1.46.0
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,12 +12,12 @@ Classifier: Programming Language :: Python :: 3
12
12
  Classifier: Programming Language :: Python :: 3.13
13
13
  Requires-Python: >=3.13
14
14
  Description-Content-Type: text/x-rst
15
- Requires-Dist: dkist-processing-common==14.7.0rc1
15
+ Requires-Dist: dkist-processing-common==14.8.0
16
16
  Requires-Dist: dkist-header-validator==6.0.0
17
17
  Requires-Dist: dkist-service-configuration==4.3.0
18
18
  Requires-Dist: dkist-fits-specifications==4.30.0
19
19
  Requires-Dist: numba==0.61.2
20
- Requires-Dist: astropy==7.0.2
20
+ Requires-Dist: astropy==7.2.2
21
21
  Requires-Dist: numpy==2.2.5
22
22
  Requires-Dist: dkist-spectral-lines==3.0.1
23
23
  Provides-Extra: test
@@ -53,7 +53,7 @@ Requires-Dist: PyJWT==2.15.1; extra == "frozen"
53
53
  Requires-Dist: PyYAML==6.0.3; extra == "frozen"
54
54
  Requires-Dist: PyYAML-ft==8.0.0; extra == "frozen"
55
55
  Requires-Dist: Pygments==2.21.0; extra == "frozen"
56
- Requires-Dist: SQLAlchemy==2.1.5; extra == "frozen"
56
+ Requires-Dist: SQLAlchemy==2.1.6; extra == "frozen"
57
57
  Requires-Dist: Send2Trash==2.1.0; extra == "frozen"
58
58
  Requires-Dist: a2wsgi==1.10.10; extra == "frozen"
59
59
  Requires-Dist: aioftp==0.28.3; extra == "frozen"
@@ -62,7 +62,7 @@ Requires-Dist: aiohttp==3.14.5; extra == "frozen"
62
62
  Requires-Dist: aiosignal==1.4.0; extra == "frozen"
63
63
  Requires-Dist: aiosmtplib==5.1.3; extra == "frozen"
64
64
  Requires-Dist: aiosqlite==0.22.1; extra == "frozen"
65
- Requires-Dist: alembic==1.20.0; extra == "frozen"
65
+ Requires-Dist: alembic==1.20.1; extra == "frozen"
66
66
  Requires-Dist: amqp==5.4.1; extra == "frozen"
67
67
  Requires-Dist: annotated-doc==0.0.5; extra == "frozen"
68
68
  Requires-Dist: annotated-types==0.8.0; extra == "frozen"
@@ -86,7 +86,7 @@ Requires-Dist: asdf==5.4.0; extra == "frozen"
86
86
  Requires-Dist: asdf_standard==1.5.0; extra == "frozen"
87
87
  Requires-Dist: asgiref==3.12.1; extra == "frozen"
88
88
  Requires-Dist: asteval==1.0.10; extra == "frozen"
89
- Requires-Dist: astropy==7.0.2; extra == "frozen"
89
+ Requires-Dist: astropy==7.2.2; extra == "frozen"
90
90
  Requires-Dist: astropy-iers-data==0.2026.10.19.0.52.1; extra == "frozen"
91
91
  Requires-Dist: asttokens==3.0.2; extra == "frozen"
92
92
  Requires-Dist: async-lru==2.4.0; extra == "frozen"
@@ -96,12 +96,12 @@ Requires-Dist: babel==2.18.0; extra == "frozen"
96
96
  Requires-Dist: beautifulsoup4==4.15.0; extra == "frozen"
97
97
  Requires-Dist: billiard==4.3.1; extra == "frozen"
98
98
  Requires-Dist: bleach==6.4.0; extra == "frozen"
99
- Requires-Dist: boto3==1.43.114; extra == "frozen"
100
- Requires-Dist: botocore==1.43.114; extra == "frozen"
101
- Requires-Dist: cachetools==7.2.3; extra == "frozen"
99
+ Requires-Dist: boto3==1.43.118; extra == "frozen"
100
+ Requires-Dist: botocore==1.43.118; extra == "frozen"
101
+ Requires-Dist: cachetools==7.2.4; extra == "frozen"
102
102
  Requires-Dist: cadwyn==7.0.0; extra == "frozen"
103
103
  Requires-Dist: celery==5.6.3; extra == "frozen"
104
- Requires-Dist: certifi==2026.10.18; extra == "frozen"
104
+ Requires-Dist: certifi==2026.10.19; extra == "frozen"
105
105
  Requires-Dist: cffi==2.1.1; extra == "frozen"
106
106
  Requires-Dist: charset-normalizer==3.5.2; extra == "frozen"
107
107
  Requires-Dist: click==8.5.0; extra == "frozen"
@@ -120,10 +120,10 @@ Requires-Dist: decorator==5.3.1; extra == "frozen"
120
120
  Requires-Dist: defusedxml==0.7.1; extra == "frozen"
121
121
  Requires-Dist: dill==0.4.1; extra == "frozen"
122
122
  Requires-Dist: dkist-header-validator==6.0.0; extra == "frozen"
123
- Requires-Dist: dkist-processing-common==14.7.0rc1; extra == "frozen"
123
+ Requires-Dist: dkist-processing-common==14.8.0; extra == "frozen"
124
124
  Requires-Dist: dkist-processing-core==7.5.0; extra == "frozen"
125
125
  Requires-Dist: dkist-processing-pac==3.1.2; extra == "frozen"
126
- Requires-Dist: dkist-processing-test==1.45.0rc1; extra == "frozen"
126
+ Requires-Dist: dkist-processing-test==1.46.0; extra == "frozen"
127
127
  Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
128
128
  Requires-Dist: dkist-spectral-lines==3.0.1; extra == "frozen"
129
129
  Requires-Dist: dkist_fits_specifications==4.30.0; extra == "frozen"
@@ -138,12 +138,12 @@ Requires-Dist: fonttools==4.67.0; extra == "frozen"
138
138
  Requires-Dist: fqdn==1.6.0; extra == "frozen"
139
139
  Requires-Dist: frozenlist==1.8.0; extra == "frozen"
140
140
  Requires-Dist: fsspec==2026.9.0; extra == "frozen"
141
- Requires-Dist: globus-sdk==4.9.1; extra == "frozen"
141
+ Requires-Dist: globus-sdk==4.10.0; extra == "frozen"
142
142
  Requires-Dist: googleapis-common-protos==1.75.5; extra == "frozen"
143
143
  Requires-Dist: gqlclient==2.0.0; extra == "frozen"
144
144
  Requires-Dist: greenback==1.3.0; extra == "frozen"
145
145
  Requires-Dist: greenlet==3.5.6; extra == "frozen"
146
- Requires-Dist: grpcio==1.84.0; extra == "frozen"
146
+ Requires-Dist: grpcio==1.84.1; extra == "frozen"
147
147
  Requires-Dist: h11==0.16.0; extra == "frozen"
148
148
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
149
149
  Requires-Dist: httptools==0.9.0; extra == "frozen"
@@ -231,7 +231,7 @@ Requires-Dist: opentelemetry-semantic-conventions==0.66b1; extra == "frozen"
231
231
  Requires-Dist: opentelemetry-util-http==0.66b1; extra == "frozen"
232
232
  Requires-Dist: outcome==1.3.0.post0; extra == "frozen"
233
233
  Requires-Dist: packaging==26.3; extra == "frozen"
234
- Requires-Dist: pandas==3.0.6; extra == "frozen"
234
+ Requires-Dist: pandas==3.1.0; extra == "frozen"
235
235
  Requires-Dist: pandocfilters==1.5.1; extra == "frozen"
236
236
  Requires-Dist: parfive==2.3.1; extra == "frozen"
237
237
  Requires-Dist: parso==0.8.7; extra == "frozen"
@@ -241,7 +241,7 @@ Requires-Dist: pendulum==3.3.0; extra == "frozen"
241
241
  Requires-Dist: pexpect==4.9.0; extra == "frozen"
242
242
  Requires-Dist: pika==1.4.4; extra == "frozen"
243
243
  Requires-Dist: pillow==11.3.0; extra == "frozen"
244
- Requires-Dist: pip==26.2.1; extra == "frozen"
244
+ Requires-Dist: pip==26.2.2; extra == "frozen"
245
245
  Requires-Dist: platformdirs==4.13.5; extra == "frozen"
246
246
  Requires-Dist: pluggy==1.7.0; extra == "frozen"
247
247
  Requires-Dist: pooch==1.9.0; extra == "frozen"
@@ -256,10 +256,10 @@ Requires-Dist: psycopg-binary==3.3.6; extra == "frozen"
256
256
  Requires-Dist: psycopg2-binary==2.9.13; extra == "frozen"
257
257
  Requires-Dist: ptyprocess==0.7.0; extra == "frozen"
258
258
  Requires-Dist: pure_eval==0.2.4; extra == "frozen"
259
- Requires-Dist: pycparser==3.11; extra == "frozen"
259
+ Requires-Dist: pycparser==3.12; extra == "frozen"
260
260
  Requires-Dist: pydantic==2.14.1; extra == "frozen"
261
261
  Requires-Dist: pydantic-extra-types==2.11.1; extra == "frozen"
262
- Requires-Dist: pydantic-settings==2.16.0; extra == "frozen"
262
+ Requires-Dist: pydantic-settings==2.16.1; extra == "frozen"
263
263
  Requires-Dist: pydantic_core==2.50.1; extra == "frozen"
264
264
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
265
265
  Requires-Dist: pygtrie==2.6.2; extra == "frozen"
@@ -282,7 +282,7 @@ Requires-Dist: rich==15.0.0; extra == "frozen"
282
282
  Requires-Dist: rich-argparse==1.8.0; extra == "frozen"
283
283
  Requires-Dist: rich-toolkit==0.20.6; extra == "frozen"
284
284
  Requires-Dist: rpds-py==2026.9.1; extra == "frozen"
285
- Requires-Dist: s3transfer==0.19.2; extra == "frozen"
285
+ Requires-Dist: s3transfer==0.19.3; extra == "frozen"
286
286
  Requires-Dist: scipy==1.18.1; extra == "frozen"
287
287
  Requires-Dist: semantic-version==2.10.0; extra == "frozen"
288
288
  Requires-Dist: setproctitle==1.3.8; extra == "frozen"
@@ -290,7 +290,7 @@ Requires-Dist: shellingham==1.5.4; extra == "frozen"
290
290
  Requires-Dist: six==1.17.0; extra == "frozen"
291
291
  Requires-Dist: sniffio==1.3.1; extra == "frozen"
292
292
  Requires-Dist: solar-wavelength-calibration==2.0.4; extra == "frozen"
293
- Requires-Dist: soupsieve==3.0.3; extra == "frozen"
293
+ Requires-Dist: soupsieve==3.0.4; extra == "frozen"
294
294
  Requires-Dist: sqids==0.5.1; extra == "frozen"
295
295
  Requires-Dist: sqlparse==0.6.0; extra == "frozen"
296
296
  Requires-Dist: stack-data==0.6.3; extra == "frozen"
@@ -305,14 +305,14 @@ Requires-Dist: termcolor==3.3.0; extra == "frozen"
305
305
  Requires-Dist: terminado==0.18.1; extra == "frozen"
306
306
  Requires-Dist: text-unidecode==1.3; extra == "frozen"
307
307
  Requires-Dist: tinycss2==1.5.1; extra == "frozen"
308
- Requires-Dist: tornado==6.5.10; extra == "frozen"
308
+ Requires-Dist: tornado==6.6; extra == "frozen"
309
309
  Requires-Dist: tqdm==4.70.1; extra == "frozen"
310
310
  Requires-Dist: traitlets==5.16.1; extra == "frozen"
311
311
  Requires-Dist: typer==0.27.3; extra == "frozen"
312
312
  Requires-Dist: typing-inspection==0.4.4; extra == "frozen"
313
313
  Requires-Dist: typing_extensions==4.16.0; extra == "frozen"
314
314
  Requires-Dist: tzdata==2026.5; extra == "frozen"
315
- Requires-Dist: tzlocal==5.4.4; extra == "frozen"
315
+ Requires-Dist: tzlocal==5.4.5; extra == "frozen"
316
316
  Requires-Dist: uncertainties==3.2.3; extra == "frozen"
317
317
  Requires-Dist: universal_pathlib==0.3.10; extra == "frozen"
318
318
  Requires-Dist: uri-template==1.3.0; extra == "frozen"
@@ -323,16 +323,16 @@ Requires-Dist: uvloop==0.23.0; extra == "frozen"
323
323
  Requires-Dist: vine==5.1.0; extra == "frozen"
324
324
  Requires-Dist: voluptuous==0.16.0; extra == "frozen"
325
325
  Requires-Dist: watchfiles==1.3.0; extra == "frozen"
326
- Requires-Dist: wcwidth==0.9.2; extra == "frozen"
326
+ Requires-Dist: wcwidth==0.9.3; extra == "frozen"
327
327
  Requires-Dist: webcolors==25.10.0; extra == "frozen"
328
328
  Requires-Dist: webencodings==0.6.1; extra == "frozen"
329
329
  Requires-Dist: websocket-client==1.9.2; extra == "frozen"
330
- Requires-Dist: websockets==17.2; extra == "frozen"
330
+ Requires-Dist: websockets==17.3; extra == "frozen"
331
331
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
332
332
  Requires-Dist: wrapt==2.5.1; extra == "frozen"
333
333
  Requires-Dist: yamale==6.1.0; extra == "frozen"
334
334
  Requires-Dist: yarl==1.25.1; extra == "frozen"
335
- Requires-Dist: zipp==4.1.1; extra == "frozen"
335
+ Requires-Dist: zipp==4.1.2; extra == "frozen"
336
336
 
337
337
  dkist-processing-test
338
338
  ---------------------
@@ -1,9 +1,9 @@
1
- dkist-processing-common==14.7.0rc1
1
+ dkist-processing-common==14.8.0
2
2
  dkist-header-validator==6.0.0
3
3
  dkist-service-configuration==4.3.0
4
4
  dkist-fits-specifications==4.30.0
5
5
  numba==0.61.2
6
- astropy==7.0.2
6
+ astropy==7.2.2
7
7
  numpy==2.2.5
8
8
  dkist-spectral-lines==3.0.1
9
9
 
@@ -24,7 +24,7 @@ PyJWT==2.15.1
24
24
  PyYAML==6.0.3
25
25
  PyYAML-ft==8.0.0
26
26
  Pygments==2.21.0
27
- SQLAlchemy==2.1.5
27
+ SQLAlchemy==2.1.6
28
28
  Send2Trash==2.1.0
29
29
  a2wsgi==1.10.10
30
30
  aioftp==0.28.3
@@ -33,7 +33,7 @@ aiohttp==3.14.5
33
33
  aiosignal==1.4.0
34
34
  aiosmtplib==5.1.3
35
35
  aiosqlite==0.22.1
36
- alembic==1.20.0
36
+ alembic==1.20.1
37
37
  amqp==5.4.1
38
38
  annotated-doc==0.0.5
39
39
  annotated-types==0.8.0
@@ -57,7 +57,7 @@ asdf==5.4.0
57
57
  asdf_standard==1.5.0
58
58
  asgiref==3.12.1
59
59
  asteval==1.0.10
60
- astropy==7.0.2
60
+ astropy==7.2.2
61
61
  astropy-iers-data==0.2026.10.19.0.52.1
62
62
  asttokens==3.0.2
63
63
  async-lru==2.4.0
@@ -67,12 +67,12 @@ babel==2.18.0
67
67
  beautifulsoup4==4.15.0
68
68
  billiard==4.3.1
69
69
  bleach==6.4.0
70
- boto3==1.43.114
71
- botocore==1.43.114
72
- cachetools==7.2.3
70
+ boto3==1.43.118
71
+ botocore==1.43.118
72
+ cachetools==7.2.4
73
73
  cadwyn==7.0.0
74
74
  celery==5.6.3
75
- certifi==2026.10.18
75
+ certifi==2026.10.19
76
76
  cffi==2.1.1
77
77
  charset-normalizer==3.5.2
78
78
  click==8.5.0
@@ -91,10 +91,10 @@ decorator==5.3.1
91
91
  defusedxml==0.7.1
92
92
  dill==0.4.1
93
93
  dkist-header-validator==6.0.0
94
- dkist-processing-common==14.7.0rc1
94
+ dkist-processing-common==14.8.0
95
95
  dkist-processing-core==7.5.0
96
96
  dkist-processing-pac==3.1.2
97
- dkist-processing-test==1.45.0rc1
97
+ dkist-processing-test==1.46.0
98
98
  dkist-service-configuration==4.3.0
99
99
  dkist-spectral-lines==3.0.1
100
100
  dkist_fits_specifications==4.30.0
@@ -109,12 +109,12 @@ fonttools==4.67.0
109
109
  fqdn==1.6.0
110
110
  frozenlist==1.8.0
111
111
  fsspec==2026.9.0
112
- globus-sdk==4.9.1
112
+ globus-sdk==4.10.0
113
113
  googleapis-common-protos==1.75.5
114
114
  gqlclient==2.0.0
115
115
  greenback==1.3.0
116
116
  greenlet==3.5.6
117
- grpcio==1.84.0
117
+ grpcio==1.84.1
118
118
  h11==0.16.0
119
119
  httpcore==1.0.9
120
120
  httptools==0.9.0
@@ -202,7 +202,7 @@ opentelemetry-semantic-conventions==0.66b1
202
202
  opentelemetry-util-http==0.66b1
203
203
  outcome==1.3.0.post0
204
204
  packaging==26.3
205
- pandas==3.0.6
205
+ pandas==3.1.0
206
206
  pandocfilters==1.5.1
207
207
  parfive==2.3.1
208
208
  parso==0.8.7
@@ -212,7 +212,7 @@ pendulum==3.3.0
212
212
  pexpect==4.9.0
213
213
  pika==1.4.4
214
214
  pillow==11.3.0
215
- pip==26.2.1
215
+ pip==26.2.2
216
216
  platformdirs==4.13.5
217
217
  pluggy==1.7.0
218
218
  pooch==1.9.0
@@ -227,10 +227,10 @@ psycopg-binary==3.3.6
227
227
  psycopg2-binary==2.9.13
228
228
  ptyprocess==0.7.0
229
229
  pure_eval==0.2.4
230
- pycparser==3.11
230
+ pycparser==3.12
231
231
  pydantic==2.14.1
232
232
  pydantic-extra-types==2.11.1
233
- pydantic-settings==2.16.0
233
+ pydantic-settings==2.16.1
234
234
  pydantic_core==2.50.1
235
235
  pyerfa==2.0.1.5
236
236
  pygtrie==2.6.2
@@ -253,7 +253,7 @@ rich==15.0.0
253
253
  rich-argparse==1.8.0
254
254
  rich-toolkit==0.20.6
255
255
  rpds-py==2026.9.1
256
- s3transfer==0.19.2
256
+ s3transfer==0.19.3
257
257
  scipy==1.18.1
258
258
  semantic-version==2.10.0
259
259
  setproctitle==1.3.8
@@ -261,7 +261,7 @@ shellingham==1.5.4
261
261
  six==1.17.0
262
262
  sniffio==1.3.1
263
263
  solar-wavelength-calibration==2.0.4
264
- soupsieve==3.0.3
264
+ soupsieve==3.0.4
265
265
  sqids==0.5.1
266
266
  sqlparse==0.6.0
267
267
  stack-data==0.6.3
@@ -276,14 +276,14 @@ termcolor==3.3.0
276
276
  terminado==0.18.1
277
277
  text-unidecode==1.3
278
278
  tinycss2==1.5.1
279
- tornado==6.5.10
279
+ tornado==6.6
280
280
  tqdm==4.70.1
281
281
  traitlets==5.16.1
282
282
  typer==0.27.3
283
283
  typing-inspection==0.4.4
284
284
  typing_extensions==4.16.0
285
285
  tzdata==2026.5
286
- tzlocal==5.4.4
286
+ tzlocal==5.4.5
287
287
  uncertainties==3.2.3
288
288
  universal_pathlib==0.3.10
289
289
  uri-template==1.3.0
@@ -294,16 +294,16 @@ uvloop==0.23.0
294
294
  vine==5.1.0
295
295
  voluptuous==0.16.0
296
296
  watchfiles==1.3.0
297
- wcwidth==0.9.2
297
+ wcwidth==0.9.3
298
298
  webcolors==25.10.0
299
299
  webencodings==0.6.1
300
300
  websocket-client==1.9.2
301
- websockets==17.2
301
+ websockets==17.3
302
302
  wirerope==1.0.0
303
303
  wrapt==2.5.1
304
304
  yamale==6.1.0
305
305
  yarl==1.25.1
306
- zipp==4.1.1
306
+ zipp==4.1.2
307
307
 
308
308
  [gpu]
309
309
  cupy-cuda12x[ctk]==14.1.1
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.46.0",
3
+ "distance": 0,
4
+ "node": "g82a3d781f9d8ccb50a75b8da63b60c2b78026e94",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-22"
8
+ }
@@ -9,8 +9,8 @@ exclude = ["build*"]
9
9
 
10
10
  [tool.dkist-dev-tools]
11
11
  # Most recently frozen version by dkist-dev-tools
12
- version = "1.45.0rc1"
13
- date = 2026-10-19T10:50:44.269834
12
+ version = "1.46.0"
13
+ date = 2026-10-22T16:01:32.311476
14
14
 
15
15
  [project]
16
16
  dynamic = ["version"]
@@ -26,12 +26,12 @@ classifiers = [
26
26
  "Programming Language :: Python :: 3.13",
27
27
  ]
28
28
  dependencies = [
29
- "dkist-processing-common == 14.7.0rc1",
29
+ "dkist-processing-common == 14.8.0",
30
30
  "dkist-header-validator == 6.0.0",
31
31
  "dkist-service-configuration == 4.3.0",
32
32
  "dkist-fits-specifications == 4.30.0",
33
33
  "numba == 0.61.2",
34
- "astropy == 7.0.2",
34
+ "astropy == 7.2.2",
35
35
  "numpy == 2.2.5",
36
36
  "dkist-spectral-lines == 3.0.1"
37
37
  ]
@@ -81,7 +81,7 @@ frozen = [
81
81
  "PyYAML == 6.0.3",
82
82
  "PyYAML-ft == 8.0.0",
83
83
  "Pygments == 2.21.0",
84
- "SQLAlchemy == 2.1.5",
84
+ "SQLAlchemy == 2.1.6",
85
85
  "Send2Trash == 2.1.0",
86
86
  "a2wsgi == 1.10.10",
87
87
  "aioftp == 0.28.3",
@@ -90,7 +90,7 @@ frozen = [
90
90
  "aiosignal == 1.4.0",
91
91
  "aiosmtplib == 5.1.3",
92
92
  "aiosqlite == 0.22.1",
93
- "alembic == 1.20.0",
93
+ "alembic == 1.20.1",
94
94
  "amqp == 5.4.1",
95
95
  "annotated-doc == 0.0.5",
96
96
  "annotated-types == 0.8.0",
@@ -114,7 +114,7 @@ frozen = [
114
114
  "asdf_standard == 1.5.0",
115
115
  "asgiref == 3.12.1",
116
116
  "asteval == 1.0.10",
117
- "astropy == 7.0.2",
117
+ "astropy == 7.2.2",
118
118
  "astropy-iers-data == 0.2026.10.19.0.52.1",
119
119
  "asttokens == 3.0.2",
120
120
  "async-lru == 2.4.0",
@@ -124,12 +124,12 @@ frozen = [
124
124
  "beautifulsoup4 == 4.15.0",
125
125
  "billiard == 4.3.1",
126
126
  "bleach == 6.4.0",
127
- "boto3 == 1.43.114",
128
- "botocore == 1.43.114",
129
- "cachetools == 7.2.3",
127
+ "boto3 == 1.43.118",
128
+ "botocore == 1.43.118",
129
+ "cachetools == 7.2.4",
130
130
  "cadwyn == 7.0.0",
131
131
  "celery == 5.6.3",
132
- "certifi == 2026.10.18",
132
+ "certifi == 2026.10.19",
133
133
  "cffi == 2.1.1",
134
134
  "charset-normalizer == 3.5.2",
135
135
  "click == 8.5.0",
@@ -148,10 +148,10 @@ frozen = [
148
148
  "defusedxml == 0.7.1",
149
149
  "dill == 0.4.1",
150
150
  "dkist-header-validator == 6.0.0",
151
- "dkist-processing-common == 14.7.0rc1",
151
+ "dkist-processing-common == 14.8.0",
152
152
  "dkist-processing-core == 7.5.0",
153
153
  "dkist-processing-pac == 3.1.2",
154
- "dkist-processing-test == 1.45.0rc1",
154
+ "dkist-processing-test == 1.46.0",
155
155
  "dkist-service-configuration == 4.3.0",
156
156
  "dkist-spectral-lines == 3.0.1",
157
157
  "dkist_fits_specifications == 4.30.0",
@@ -166,12 +166,12 @@ frozen = [
166
166
  "fqdn == 1.6.0",
167
167
  "frozenlist == 1.8.0",
168
168
  "fsspec == 2026.9.0",
169
- "globus-sdk == 4.9.1",
169
+ "globus-sdk == 4.10.0",
170
170
  "googleapis-common-protos == 1.75.5",
171
171
  "gqlclient == 2.0.0",
172
172
  "greenback == 1.3.0",
173
173
  "greenlet == 3.5.6",
174
- "grpcio == 1.84.0",
174
+ "grpcio == 1.84.1",
175
175
  "h11 == 0.16.0",
176
176
  "httpcore == 1.0.9",
177
177
  "httptools == 0.9.0",
@@ -259,7 +259,7 @@ frozen = [
259
259
  "opentelemetry-util-http == 0.66b1",
260
260
  "outcome == 1.3.0.post0",
261
261
  "packaging == 26.3",
262
- "pandas == 3.0.6",
262
+ "pandas == 3.1.0",
263
263
  "pandocfilters == 1.5.1",
264
264
  "parfive == 2.3.1",
265
265
  "parso == 0.8.7",
@@ -269,7 +269,7 @@ frozen = [
269
269
  "pexpect == 4.9.0",
270
270
  "pika == 1.4.4",
271
271
  "pillow == 11.3.0",
272
- "pip == 26.2.1",
272
+ "pip == 26.2.2",
273
273
  "platformdirs == 4.13.5",
274
274
  "pluggy == 1.7.0",
275
275
  "pooch == 1.9.0",
@@ -284,10 +284,10 @@ frozen = [
284
284
  "psycopg2-binary == 2.9.13",
285
285
  "ptyprocess == 0.7.0",
286
286
  "pure_eval == 0.2.4",
287
- "pycparser == 3.11",
287
+ "pycparser == 3.12",
288
288
  "pydantic == 2.14.1",
289
289
  "pydantic-extra-types == 2.11.1",
290
- "pydantic-settings == 2.16.0",
290
+ "pydantic-settings == 2.16.1",
291
291
  "pydantic_core == 2.50.1",
292
292
  "pyerfa == 2.0.1.5",
293
293
  "pygtrie == 2.6.2",
@@ -310,7 +310,7 @@ frozen = [
310
310
  "rich-argparse == 1.8.0",
311
311
  "rich-toolkit == 0.20.6",
312
312
  "rpds-py == 2026.9.1",
313
- "s3transfer == 0.19.2",
313
+ "s3transfer == 0.19.3",
314
314
  "scipy == 1.18.1",
315
315
  "semantic-version == 2.10.0",
316
316
  "setproctitle == 1.3.8",
@@ -318,7 +318,7 @@ frozen = [
318
318
  "six == 1.17.0",
319
319
  "sniffio == 1.3.1",
320
320
  "solar-wavelength-calibration == 2.0.4",
321
- "soupsieve == 3.0.3",
321
+ "soupsieve == 3.0.4",
322
322
  "sqids == 0.5.1",
323
323
  "sqlparse == 0.6.0",
324
324
  "stack-data == 0.6.3",
@@ -333,14 +333,14 @@ frozen = [
333
333
  "terminado == 0.18.1",
334
334
  "text-unidecode == 1.3",
335
335
  "tinycss2 == 1.5.1",
336
- "tornado == 6.5.10",
336
+ "tornado == 6.6",
337
337
  "tqdm == 4.70.1",
338
338
  "traitlets == 5.16.1",
339
339
  "typer == 0.27.3",
340
340
  "typing-inspection == 0.4.4",
341
341
  "typing_extensions == 4.16.0",
342
342
  "tzdata == 2026.5",
343
- "tzlocal == 5.4.4",
343
+ "tzlocal == 5.4.5",
344
344
  "uncertainties == 3.2.3",
345
345
  "universal_pathlib == 0.3.10",
346
346
  "uri-template == 1.3.0",
@@ -351,16 +351,16 @@ frozen = [
351
351
  "vine == 5.1.0",
352
352
  "voluptuous == 0.16.0",
353
353
  "watchfiles == 1.3.0",
354
- "wcwidth == 0.9.2",
354
+ "wcwidth == 0.9.3",
355
355
  "webcolors == 25.10.0",
356
356
  "webencodings == 0.6.1",
357
357
  "websocket-client == 1.9.2",
358
- "websockets == 17.2",
358
+ "websockets == 17.3",
359
359
  "wirerope == 1.0.0",
360
360
  "wrapt == 2.5.1",
361
361
  "yamale == 6.1.0",
362
362
  "yarl == 1.25.1",
363
- "zipp == 4.1.1",
363
+ "zipp == 4.1.2",
364
364
  ]
365
365
 
366
366
  [tool.pytest.ini_options]
@@ -1,13 +0,0 @@
1
- # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities
2
- # https://docs.snyk.io/manage-risk/policies/the-.snyk-file#syntax-of-the-.snyk-file
3
- version: v1.25.0
4
- ignore:
5
- SNYK-PYTHON-APACHEAIRFLOWCORE-17879182:
6
- - "*" :
7
- reason: 'Patched in Airflow 3.3.0, but we are not ready to upgrade till 3.3.1 or later'
8
- expires: '2027-07-07T00:00:00.000Z'
9
- SNYK-PYTHON-APACHEAIRFLOWCORE-17933331:
10
- - '*':
11
- reason: 'Ignored by bulk CI/CD Snyk policy update'
12
- expires: '2099-12-31T23:59:59.999Z'
13
- created: '2026-07-10T15:53:27.931Z'
@@ -1,17 +0,0 @@
1
- """Test integrity of workflows."""
2
-
3
- from dkist_processing_core import ResourceQueue
4
- from dkist_processing_core.build_utils import validate_workflows
5
-
6
- from dkist_processing_test import workflows
7
- from dkist_processing_test.workflows.exercise_multiprocessing import exercise_multiprocessing
8
-
9
-
10
- def test_workflow_integrity():
11
- """Validate workflow to ensure acyclic-ness and export compilation"""
12
- validate_workflows(workflows)
13
-
14
-
15
- def test_exercise_multiprocessing_uses_multi_core_resource_queue():
16
- """The multiprocessing workflow runs on workers configured with multiple CPUs."""
17
- assert exercise_multiprocessing.nodes[0].resource_queue == ResourceQueue.MULTI_CORE
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "1.45.0rc1",
3
- "distance": 0,
4
- "node": "gc756a2529ea18384f9f6913f3926fedc7b461467",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-10-19"
8
- }