dkist-processing-test 1.42.17__tar.gz → 1.43.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 (53) hide show
  1. dkist_processing_test-1.43.0/.snyk +13 -0
  2. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/PKG-INFO +108 -106
  3. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/__init__.py +1 -0
  4. dkist_processing_test-1.43.0/dkist_processing_test/tasks/exercise_multiprocessing.py +59 -0
  5. dkist_processing_test-1.43.0/dkist_processing_test/tests/test_workflows.py +17 -0
  6. dkist_processing_test-1.43.0/dkist_processing_test/workflows/exercise_multiprocessing.py +19 -0
  7. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test.egg-info/PKG-INFO +108 -106
  8. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test.egg-info/SOURCES.txt +2 -0
  9. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test.egg-info/requires.txt +107 -105
  10. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test.egg-info/scm_file_list.json +23 -21
  11. dkist_processing_test-1.43.0/dkist_processing_test.egg-info/scm_version.json +8 -0
  12. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/pyproject.toml +109 -107
  13. dkist_processing_test-1.42.17/.snyk +0 -2
  14. dkist_processing_test-1.42.17/dkist_processing_test/tests/test_workflows.py +0 -10
  15. dkist_processing_test-1.42.17/dkist_processing_test.egg-info/scm_version.json +0 -8
  16. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/.gitignore +0 -0
  17. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/.pre-commit-config.yaml +0 -0
  18. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/.rovodev/.review-agent.md +0 -0
  19. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/README.rst +0 -0
  20. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/bitbucket-pipelines.yml +0 -0
  21. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/__init__.py +0 -0
  22. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/config.py +0 -0
  23. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/models/__init__.py +0 -0
  24. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/models/constants.py +0 -0
  25. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/models/parameters.py +0 -0
  26. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/parsers/__init__.py +0 -0
  27. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/parsers/test_l0_fits_access.py +0 -0
  28. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/parsers/time.py +0 -0
  29. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/construct_dataset_extras.py +0 -0
  30. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/exercise_numba.py +0 -0
  31. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/fail.py +0 -0
  32. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/fake_science.py +0 -0
  33. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/high_memory.py +0 -0
  34. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/manual.py +0 -0
  35. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/movie.py +0 -0
  36. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/noop.py +0 -0
  37. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/parse.py +0 -0
  38. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/quality.py +0 -0
  39. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/write_l1.py +0 -0
  40. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tests/__init__.py +0 -0
  41. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tests/conftest.py +0 -0
  42. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/tests/test_tasks.py +0 -0
  43. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/__init__.py +0 -0
  44. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/common_tasks.py +0 -0
  45. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/end_to_end.py +0 -0
  46. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/exercise_numba.py +0 -0
  47. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/fail.py +0 -0
  48. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/noop.py +0 -0
  49. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/resource_queue.py +0 -0
  50. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/trial_end_to_end.py +0 -0
  51. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test.egg-info/dependency_links.txt +0 -0
  52. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/dkist_processing_test.egg-info/top_level.txt +0 -0
  53. {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0}/setup.cfg +0 -0
@@ -0,0 +1,13 @@
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-test
3
- Version: 1.42.17
3
+ Version: 1.43.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,7 +12,7 @@ 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.3.4
15
+ Requires-Dist: dkist-processing-common==14.3.5
16
16
  Requires-Dist: dkist-header-validator==5.4.0
17
17
  Requires-Dist: dkist-service-configuration==4.3.0
18
18
  Requires-Dist: dkist-fits-specifications==4.28.0
@@ -31,17 +31,17 @@ 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.11.8; extra == "inventory"
34
+ Requires-Dist: dkist-inventory==1.11.9; extra == "inventory"
35
35
  Provides-Extra: asdf
36
36
  Requires-Dist: dkist-processing-common[asdf]; extra == "asdf"
37
- Requires-Dist: dkist-inventory[asdf]==1.11.8; extra == "asdf"
37
+ Requires-Dist: dkist-inventory[asdf]==1.11.9; extra == "asdf"
38
38
  Provides-Extra: quality
39
39
  Requires-Dist: dkist-quality==2.0.1; extra == "quality"
40
40
  Provides-Extra: frozen
41
41
  Requires-Dist: Deprecated==1.3.1; extra == "frozen"
42
- Requires-Dist: ImageIO==2.37.3; extra == "frozen"
42
+ Requires-Dist: ImageIO==2.37.4; extra == "frozen"
43
43
  Requires-Dist: Jinja2==3.1.6; extra == "frozen"
44
- Requires-Dist: Mako==1.3.12; extra == "frozen"
44
+ Requires-Dist: Mako==1.4.1; extra == "frozen"
45
45
  Requires-Dist: MarkupSafe==3.0.3; extra == "frozen"
46
46
  Requires-Dist: PyJWT==2.13.0; extra == "frozen"
47
47
  Requires-Dist: PyYAML==6.0.3; extra == "frozen"
@@ -50,39 +50,39 @@ Requires-Dist: Pygments==2.20.0; extra == "frozen"
50
50
  Requires-Dist: SQLAlchemy==2.0.51; extra == "frozen"
51
51
  Requires-Dist: Send2Trash==2.1.0; extra == "frozen"
52
52
  Requires-Dist: a2wsgi==1.10.10; extra == "frozen"
53
- Requires-Dist: aioftp==0.27.2; extra == "frozen"
54
- Requires-Dist: aiohappyeyeballs==2.6.2; extra == "frozen"
55
- Requires-Dist: aiohttp==3.14.1; extra == "frozen"
53
+ Requires-Dist: aioftp==0.28.0; extra == "frozen"
54
+ Requires-Dist: aiohappyeyeballs==2.7.1; extra == "frozen"
55
+ Requires-Dist: aiohttp==3.14.3; extra == "frozen"
56
56
  Requires-Dist: aiosignal==1.4.0; extra == "frozen"
57
57
  Requires-Dist: aiosmtplib==5.1.2; extra == "frozen"
58
58
  Requires-Dist: aiosqlite==0.21.0; extra == "frozen"
59
- Requires-Dist: alembic==1.18.4; extra == "frozen"
59
+ Requires-Dist: alembic==1.19.1; extra == "frozen"
60
60
  Requires-Dist: amqp==5.3.1; extra == "frozen"
61
- Requires-Dist: annotated-doc==0.0.4; extra == "frozen"
62
- Requires-Dist: annotated-types==0.7.0; extra == "frozen"
63
- Requires-Dist: anyio==4.14.0; extra == "frozen"
61
+ Requires-Dist: annotated-doc==0.0.5; extra == "frozen"
62
+ Requires-Dist: annotated-types==0.8.0; extra == "frozen"
63
+ Requires-Dist: anyio==4.14.2; extra == "frozen"
64
64
  Requires-Dist: apache-airflow==3.2.1; extra == "frozen"
65
65
  Requires-Dist: apache-airflow-core==3.2.1; extra == "frozen"
66
- Requires-Dist: apache-airflow-providers-celery==3.20.0; extra == "frozen"
67
- Requires-Dist: apache-airflow-providers-common-compat==1.15.0; extra == "frozen"
68
- Requires-Dist: apache-airflow-providers-common-io==1.7.3; extra == "frozen"
69
- Requires-Dist: apache-airflow-providers-common-sql==2.0.1; extra == "frozen"
70
- Requires-Dist: apache-airflow-providers-postgres==6.7.1; extra == "frozen"
71
- Requires-Dist: apache-airflow-providers-smtp==3.0.1; extra == "frozen"
72
- Requires-Dist: apache-airflow-providers-standard==1.14.0; extra == "frozen"
66
+ Requires-Dist: apache-airflow-providers-celery==3.23.1; extra == "frozen"
67
+ Requires-Dist: apache-airflow-providers-common-compat==1.18.0; extra == "frozen"
68
+ Requires-Dist: apache-airflow-providers-common-io==1.8.0; extra == "frozen"
69
+ Requires-Dist: apache-airflow-providers-common-sql==2.1.0; extra == "frozen"
70
+ Requires-Dist: apache-airflow-providers-postgres==7.0.1; extra == "frozen"
71
+ Requires-Dist: apache-airflow-providers-smtp==3.0.3; extra == "frozen"
72
+ Requires-Dist: apache-airflow-providers-standard==1.17.0; extra == "frozen"
73
73
  Requires-Dist: apache-airflow-task-sdk==1.2.1; extra == "frozen"
74
74
  Requires-Dist: appnope==0.1.4; extra == "frozen"
75
- Requires-Dist: argcomplete==3.6.3; extra == "frozen"
75
+ Requires-Dist: argcomplete==3.7.2; extra == "frozen"
76
76
  Requires-Dist: argon2-cffi==25.1.0; extra == "frozen"
77
77
  Requires-Dist: argon2-cffi-bindings==25.1.0; extra == "frozen"
78
78
  Requires-Dist: arrow==1.4.0; extra == "frozen"
79
79
  Requires-Dist: asdf==5.3.1; extra == "frozen"
80
80
  Requires-Dist: asdf_standard==1.5.0; extra == "frozen"
81
- Requires-Dist: asgiref==3.11.1; extra == "frozen"
81
+ Requires-Dist: asgiref==3.12.1; extra == "frozen"
82
82
  Requires-Dist: asteval==1.0.9; extra == "frozen"
83
83
  Requires-Dist: astropy==7.0.2; extra == "frozen"
84
- Requires-Dist: astropy-iers-data==0.2026.6.22.1.23.34; extra == "frozen"
85
- Requires-Dist: asttokens==3.0.1; extra == "frozen"
84
+ Requires-Dist: astropy-iers-data==0.2026.8.10.0.32.39; extra == "frozen"
85
+ Requires-Dist: asttokens==3.0.2; extra == "frozen"
86
86
  Requires-Dist: async-lru==2.3.0; extra == "frozen"
87
87
  Requires-Dist: asyncpg==0.31.0; extra == "frozen"
88
88
  Requires-Dist: attrs==26.1.0; extra == "frozen"
@@ -90,63 +90,63 @@ Requires-Dist: babel==2.18.0; extra == "frozen"
90
90
  Requires-Dist: beautifulsoup4==4.15.0; extra == "frozen"
91
91
  Requires-Dist: billiard==4.2.4; extra == "frozen"
92
92
  Requires-Dist: bleach==6.4.0; extra == "frozen"
93
- Requires-Dist: boto3==1.43.34; extra == "frozen"
94
- Requires-Dist: botocore==1.43.34; extra == "frozen"
95
- Requires-Dist: cadwyn==7.1.0; extra == "frozen"
93
+ Requires-Dist: boto3==1.43.68; extra == "frozen"
94
+ Requires-Dist: botocore==1.43.68; extra == "frozen"
95
+ Requires-Dist: cadwyn==7.2.0; extra == "frozen"
96
96
  Requires-Dist: celery==5.6.3; extra == "frozen"
97
- Requires-Dist: certifi==2026.6.17; extra == "frozen"
98
- Requires-Dist: cffi==2.0.0; extra == "frozen"
99
- Requires-Dist: charset-normalizer==3.4.7; extra == "frozen"
100
- Requires-Dist: click==8.4.1; extra == "frozen"
97
+ Requires-Dist: certifi==2026.7.22; extra == "frozen"
98
+ Requires-Dist: cffi==2.1.1; extra == "frozen"
99
+ Requires-Dist: charset-normalizer==3.4.9; extra == "frozen"
100
+ Requires-Dist: click==8.4.2; extra == "frozen"
101
101
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
102
102
  Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
103
103
  Requires-Dist: click-repl==0.3.0; extra == "frozen"
104
- Requires-Dist: colorlog==6.10.1; extra == "frozen"
104
+ Requires-Dist: colorlog==6.12.0; extra == "frozen"
105
105
  Requires-Dist: comm==0.2.3; extra == "frozen"
106
106
  Requires-Dist: contourpy==1.3.3; extra == "frozen"
107
107
  Requires-Dist: cron_descriptor==2.1.0; extra == "frozen"
108
- Requires-Dist: croniter==6.2.2; extra == "frozen"
109
- Requires-Dist: cryptography==49.0.0; extra == "frozen"
108
+ Requires-Dist: croniter==6.2.4; extra == "frozen"
109
+ Requires-Dist: cryptography==50.0.0; extra == "frozen"
110
110
  Requires-Dist: cycler==0.12.1; extra == "frozen"
111
111
  Requires-Dist: debugpy==1.8.21; extra == "frozen"
112
112
  Requires-Dist: decorator==5.3.1; extra == "frozen"
113
113
  Requires-Dist: defusedxml==0.7.1; extra == "frozen"
114
114
  Requires-Dist: dill==0.4.1; extra == "frozen"
115
115
  Requires-Dist: dkist-header-validator==5.4.0; extra == "frozen"
116
- Requires-Dist: dkist-processing-common==14.3.4; extra == "frozen"
117
- Requires-Dist: dkist-processing-core==7.3.0; extra == "frozen"
116
+ Requires-Dist: dkist-processing-common==14.3.5; extra == "frozen"
117
+ Requires-Dist: dkist-processing-core==7.4.0; extra == "frozen"
118
118
  Requires-Dist: dkist-processing-pac==3.1.2; extra == "frozen"
119
- Requires-Dist: dkist-processing-test==1.42.17; extra == "frozen"
119
+ Requires-Dist: dkist-processing-test==1.43.0; extra == "frozen"
120
120
  Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
121
121
  Requires-Dist: dkist-spectral-lines==3.0.1; extra == "frozen"
122
122
  Requires-Dist: dkist_fits_specifications==4.28.0; extra == "frozen"
123
123
  Requires-Dist: dnspython==2.8.0; extra == "frozen"
124
124
  Requires-Dist: email-validator==2.3.0; extra == "frozen"
125
125
  Requires-Dist: executing==2.2.1; extra == "frozen"
126
- Requires-Dist: fastapi==0.138.0; extra == "frozen"
127
- Requires-Dist: fastapi-cli==0.0.27; extra == "frozen"
128
- Requires-Dist: fastjsonschema==2.21.2; extra == "frozen"
126
+ Requires-Dist: fastapi==0.141.1; extra == "frozen"
127
+ Requires-Dist: fastapi-cli==0.0.32; extra == "frozen"
128
+ Requires-Dist: fastjsonschema==2.22.1; extra == "frozen"
129
129
  Requires-Dist: flower==2.0.1; extra == "frozen"
130
130
  Requires-Dist: fonttools==4.63.0; extra == "frozen"
131
131
  Requires-Dist: fqdn==1.5.1; extra == "frozen"
132
132
  Requires-Dist: frozenlist==1.8.0; extra == "frozen"
133
- Requires-Dist: fsspec==2026.6.0; extra == "frozen"
134
- Requires-Dist: globus-sdk==4.8.1; extra == "frozen"
135
- Requires-Dist: googleapis-common-protos==1.75.0; extra == "frozen"
133
+ Requires-Dist: fsspec==2026.7.0; extra == "frozen"
134
+ Requires-Dist: globus-sdk==4.9.0; extra == "frozen"
135
+ Requires-Dist: googleapis-common-protos==1.75.1; extra == "frozen"
136
136
  Requires-Dist: gqlclient==2.0.0; extra == "frozen"
137
137
  Requires-Dist: greenback==1.3.0; extra == "frozen"
138
- Requires-Dist: greenlet==3.5.2; extra == "frozen"
139
- Requires-Dist: grpcio==1.81.1; extra == "frozen"
138
+ Requires-Dist: greenlet==3.5.5; extra == "frozen"
139
+ Requires-Dist: grpcio==1.83.0; extra == "frozen"
140
140
  Requires-Dist: h11==0.16.0; extra == "frozen"
141
141
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
142
142
  Requires-Dist: httptools==0.8.0; extra == "frozen"
143
143
  Requires-Dist: httpx==0.28.1; extra == "frozen"
144
- Requires-Dist: humanize==4.15.0; extra == "frozen"
144
+ Requires-Dist: humanize==4.16.0; extra == "frozen"
145
145
  Requires-Dist: idna==3.18; extra == "frozen"
146
146
  Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
147
147
  Requires-Dist: importlib_metadata==9.0.0; extra == "frozen"
148
148
  Requires-Dist: ipykernel==7.3.0; extra == "frozen"
149
- Requires-Dist: ipython==9.14.1; extra == "frozen"
149
+ Requires-Dist: ipython==9.16.1; extra == "frozen"
150
150
  Requires-Dist: ipython_pygments_lexers==1.1.1; extra == "frozen"
151
151
  Requires-Dist: isoduration==20.11.0; extra == "frozen"
152
152
  Requires-Dist: itsdangerous==2.2.0; extra == "frozen"
@@ -158,30 +158,30 @@ Requires-Dist: jsonschema==4.26.0; extra == "frozen"
158
158
  Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
159
159
  Requires-Dist: jupyter-events==0.12.1; extra == "frozen"
160
160
  Requires-Dist: jupyter-lsp==2.3.1; extra == "frozen"
161
- Requires-Dist: jupyter_builder==1.0.2; extra == "frozen"
161
+ Requires-Dist: jupyter_builder==1.2.2; extra == "frozen"
162
162
  Requires-Dist: jupyter_client==8.9.1; extra == "frozen"
163
163
  Requires-Dist: jupyter_core==5.9.1; extra == "frozen"
164
164
  Requires-Dist: jupyter_server==2.20.0; extra == "frozen"
165
165
  Requires-Dist: jupyter_server_terminals==0.5.4; extra == "frozen"
166
- Requires-Dist: jupyterlab==4.6.0; extra == "frozen"
166
+ Requires-Dist: jupyterlab==4.6.3; extra == "frozen"
167
167
  Requires-Dist: jupyterlab_pygments==0.3.0; extra == "frozen"
168
168
  Requires-Dist: jupyterlab_server==2.28.0; extra == "frozen"
169
169
  Requires-Dist: kiwisolver==1.5.0; extra == "frozen"
170
170
  Requires-Dist: kombu==5.6.2; extra == "frozen"
171
171
  Requires-Dist: lark==1.3.1; extra == "frozen"
172
172
  Requires-Dist: lazy-object-proxy==1.12.0; extra == "frozen"
173
- Requires-Dist: libcst==1.8.6; extra == "frozen"
173
+ Requires-Dist: libcst==1.9.0; extra == "frozen"
174
174
  Requires-Dist: linkify-it-py==2.1.0; extra == "frozen"
175
175
  Requires-Dist: llvmlite==0.44.0; extra == "frozen"
176
176
  Requires-Dist: lmfit==1.3.4; extra == "frozen"
177
177
  Requires-Dist: lockfile==0.12.2; extra == "frozen"
178
178
  Requires-Dist: loguru==0.7.3; extra == "frozen"
179
179
  Requires-Dist: markdown-it-py==4.2.0; extra == "frozen"
180
- Requires-Dist: matplotlib==3.11.0; extra == "frozen"
180
+ Requires-Dist: matplotlib==3.11.1; extra == "frozen"
181
181
  Requires-Dist: matplotlib-inline==0.2.2; extra == "frozen"
182
182
  Requires-Dist: mdurl==0.1.2; extra == "frozen"
183
183
  Requires-Dist: methodtools==0.4.7; extra == "frozen"
184
- Requires-Dist: mistune==3.3.1; extra == "frozen"
184
+ Requires-Dist: mistune==3.3.4; extra == "frozen"
185
185
  Requires-Dist: more-itertools==11.1.0; extra == "frozen"
186
186
  Requires-Dist: moviepy==2.2.1; extra == "frozen"
187
187
  Requires-Dist: msgspec==0.21.1; extra == "frozen"
@@ -189,40 +189,40 @@ Requires-Dist: multidict==6.7.1; extra == "frozen"
189
189
  Requires-Dist: natsort==8.4.0; extra == "frozen"
190
190
  Requires-Dist: nbclient==0.11.0; extra == "frozen"
191
191
  Requires-Dist: nbconvert==7.17.1; extra == "frozen"
192
- Requires-Dist: nbformat==5.10.4; extra == "frozen"
192
+ Requires-Dist: nbformat==5.11.0; extra == "frozen"
193
193
  Requires-Dist: nest-asyncio2==1.7.2; extra == "frozen"
194
- Requires-Dist: notebook==7.6.0; extra == "frozen"
194
+ Requires-Dist: notebook==7.6.1; extra == "frozen"
195
195
  Requires-Dist: notebook_shim==0.2.4; extra == "frozen"
196
196
  Requires-Dist: numba==0.61.2; extra == "frozen"
197
197
  Requires-Dist: numpy==2.2.5; extra == "frozen"
198
198
  Requires-Dist: object-clerk==1.0.0; extra == "frozen"
199
- Requires-Dist: opentelemetry-api==1.42.1; extra == "frozen"
200
- Requires-Dist: opentelemetry-exporter-otlp==1.42.1; extra == "frozen"
201
- Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.42.1; extra == "frozen"
202
- Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.42.1; extra == "frozen"
203
- Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.42.1; extra == "frozen"
204
- Requires-Dist: opentelemetry-instrumentation==0.63b1; extra == "frozen"
205
- Requires-Dist: opentelemetry-instrumentation-aiohttp-client==0.63b1; extra == "frozen"
206
- Requires-Dist: opentelemetry-instrumentation-asgi==0.63b1; extra == "frozen"
207
- Requires-Dist: opentelemetry-instrumentation-botocore==0.63b1; extra == "frozen"
208
- Requires-Dist: opentelemetry-instrumentation-celery==0.63b1; extra == "frozen"
209
- Requires-Dist: opentelemetry-instrumentation-dbapi==0.63b1; extra == "frozen"
210
- Requires-Dist: opentelemetry-instrumentation-fastapi==0.63b1; extra == "frozen"
211
- Requires-Dist: opentelemetry-instrumentation-pika==0.63b1; extra == "frozen"
212
- Requires-Dist: opentelemetry-instrumentation-psycopg2==0.63b1; extra == "frozen"
213
- Requires-Dist: opentelemetry-instrumentation-pymongo==0.63b1; extra == "frozen"
214
- Requires-Dist: opentelemetry-instrumentation-redis==0.63b1; extra == "frozen"
215
- Requires-Dist: opentelemetry-instrumentation-requests==0.63b1; extra == "frozen"
216
- Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.63b1; extra == "frozen"
217
- Requires-Dist: opentelemetry-instrumentation-system-metrics==0.63b1; extra == "frozen"
199
+ Requires-Dist: opentelemetry-api==1.44.0; extra == "frozen"
200
+ Requires-Dist: opentelemetry-exporter-otlp==1.44.0; extra == "frozen"
201
+ Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.44.0; extra == "frozen"
202
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.44.0; extra == "frozen"
203
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.44.0; extra == "frozen"
204
+ Requires-Dist: opentelemetry-instrumentation==0.65b0; extra == "frozen"
205
+ Requires-Dist: opentelemetry-instrumentation-aiohttp-client==0.65b0; extra == "frozen"
206
+ Requires-Dist: opentelemetry-instrumentation-asgi==0.65b0; extra == "frozen"
207
+ Requires-Dist: opentelemetry-instrumentation-botocore==0.65b0; extra == "frozen"
208
+ Requires-Dist: opentelemetry-instrumentation-celery==0.65b0; extra == "frozen"
209
+ Requires-Dist: opentelemetry-instrumentation-dbapi==0.65b0; extra == "frozen"
210
+ Requires-Dist: opentelemetry-instrumentation-fastapi==0.65b0; extra == "frozen"
211
+ Requires-Dist: opentelemetry-instrumentation-pika==0.65b0; extra == "frozen"
212
+ Requires-Dist: opentelemetry-instrumentation-psycopg2==0.65b0; extra == "frozen"
213
+ Requires-Dist: opentelemetry-instrumentation-pymongo==0.65b0; extra == "frozen"
214
+ Requires-Dist: opentelemetry-instrumentation-redis==0.65b0; extra == "frozen"
215
+ Requires-Dist: opentelemetry-instrumentation-requests==0.65b0; extra == "frozen"
216
+ Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.65b0; extra == "frozen"
217
+ Requires-Dist: opentelemetry-instrumentation-system-metrics==0.65b0; extra == "frozen"
218
218
  Requires-Dist: opentelemetry-propagator-aws-xray==1.0.2; extra == "frozen"
219
- Requires-Dist: opentelemetry-proto==1.42.1; extra == "frozen"
220
- Requires-Dist: opentelemetry-sdk==1.42.1; extra == "frozen"
221
- Requires-Dist: opentelemetry-semantic-conventions==0.63b1; extra == "frozen"
222
- Requires-Dist: opentelemetry-util-http==0.63b1; extra == "frozen"
219
+ Requires-Dist: opentelemetry-proto==1.44.0; extra == "frozen"
220
+ Requires-Dist: opentelemetry-sdk==1.44.0; extra == "frozen"
221
+ Requires-Dist: opentelemetry-semantic-conventions==0.65b0; extra == "frozen"
222
+ Requires-Dist: opentelemetry-util-http==0.65b0; extra == "frozen"
223
223
  Requires-Dist: outcome==1.3.0.post0; extra == "frozen"
224
- Requires-Dist: packaging==26.2; extra == "frozen"
225
- Requires-Dist: pandas==3.0.3; extra == "frozen"
224
+ Requires-Dist: packaging==26.3; extra == "frozen"
225
+ Requires-Dist: pandas==3.0.5; extra == "frozen"
226
226
  Requires-Dist: pandocfilters==1.5.1; extra == "frozen"
227
227
  Requires-Dist: parfive==2.3.1; extra == "frozen"
228
228
  Requires-Dist: parso==0.8.7; extra == "frozen"
@@ -230,25 +230,27 @@ Requires-Dist: pathlib_abc==0.5.2; extra == "frozen"
230
230
  Requires-Dist: pathspec==1.1.1; extra == "frozen"
231
231
  Requires-Dist: pendulum==3.2.0; extra == "frozen"
232
232
  Requires-Dist: pexpect==4.9.0; extra == "frozen"
233
- Requires-Dist: pika==1.4.1; extra == "frozen"
233
+ Requires-Dist: pika==1.4.4; extra == "frozen"
234
234
  Requires-Dist: pillow==11.3.0; extra == "frozen"
235
- Requires-Dist: pip==26.1.2; extra == "frozen"
236
- Requires-Dist: platformdirs==4.10.0; extra == "frozen"
235
+ Requires-Dist: pip==26.2.1; extra == "frozen"
236
+ Requires-Dist: platformdirs==4.11.2; extra == "frozen"
237
237
  Requires-Dist: pluggy==1.6.0; extra == "frozen"
238
238
  Requires-Dist: pooch==1.9.0; extra == "frozen"
239
239
  Requires-Dist: proglog==0.1.12; extra == "frozen"
240
- Requires-Dist: prometheus_client==0.25.0; extra == "frozen"
241
- Requires-Dist: prompt_toolkit==3.0.52; extra == "frozen"
240
+ Requires-Dist: prometheus_client==0.26.0; extra == "frozen"
241
+ Requires-Dist: prompt_toolkit==3.0.53; extra == "frozen"
242
242
  Requires-Dist: propcache==0.5.2; extra == "frozen"
243
- Requires-Dist: protobuf==6.33.6; extra == "frozen"
243
+ Requires-Dist: protobuf==7.35.1; extra == "frozen"
244
244
  Requires-Dist: psutil==7.2.2; extra == "frozen"
245
+ Requires-Dist: psycopg==3.3.4; extra == "frozen"
246
+ Requires-Dist: psycopg-binary==3.3.4; extra == "frozen"
245
247
  Requires-Dist: psycopg2-binary==2.9.12; extra == "frozen"
246
248
  Requires-Dist: ptyprocess==0.7.0; extra == "frozen"
247
249
  Requires-Dist: pure_eval==0.2.3; extra == "frozen"
248
250
  Requires-Dist: pycparser==3.0; extra == "frozen"
249
251
  Requires-Dist: pydantic==2.13.4; extra == "frozen"
250
252
  Requires-Dist: pydantic-extra-types==2.11.1; extra == "frozen"
251
- Requires-Dist: pydantic-settings==2.14.2; extra == "frozen"
253
+ Requires-Dist: pydantic-settings==2.15.0; extra == "frozen"
252
254
  Requires-Dist: pydantic_core==2.46.4; extra == "frozen"
253
255
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
254
256
  Requires-Dist: pygtrie==2.5.0; extra == "frozen"
@@ -259,7 +261,7 @@ Requires-Dist: python-dotenv==1.2.2; extra == "frozen"
259
261
  Requires-Dist: python-json-logger==4.1.0; extra == "frozen"
260
262
  Requires-Dist: python-multipart==0.0.32; extra == "frozen"
261
263
  Requires-Dist: python-slugify==8.0.4; extra == "frozen"
262
- Requires-Dist: pytz==2026.2; extra == "frozen"
264
+ Requires-Dist: pytz==2026.3.post1; extra == "frozen"
263
265
  Requires-Dist: pyzmq==27.1.0; extra == "frozen"
264
266
  Requires-Dist: redis==6.4.0; extra == "frozen"
265
267
  Requires-Dist: referencing==0.37.0; extra == "frozen"
@@ -269,9 +271,9 @@ Requires-Dist: rfc3986-validator==0.1.1; extra == "frozen"
269
271
  Requires-Dist: rfc3987-syntax==1.1.0; extra == "frozen"
270
272
  Requires-Dist: rich==15.0.0; extra == "frozen"
271
273
  Requires-Dist: rich-argparse==1.8.0; extra == "frozen"
272
- Requires-Dist: rich-toolkit==0.20.1; extra == "frozen"
273
- Requires-Dist: rpds-py==2026.5.1; extra == "frozen"
274
- Requires-Dist: s3transfer==0.19.0; extra == "frozen"
274
+ Requires-Dist: rich-toolkit==0.20.3; extra == "frozen"
275
+ Requires-Dist: rpds-py==2026.6.3; extra == "frozen"
276
+ Requires-Dist: s3transfer==0.19.2; extra == "frozen"
275
277
  Requires-Dist: scipy==1.18.0; extra == "frozen"
276
278
  Requires-Dist: semantic-version==2.10.0; extra == "frozen"
277
279
  Requires-Dist: setproctitle==1.3.7; extra == "frozen"
@@ -279,14 +281,14 @@ Requires-Dist: shellingham==1.5.4; extra == "frozen"
279
281
  Requires-Dist: six==1.17.0; extra == "frozen"
280
282
  Requires-Dist: sniffio==1.3.1; extra == "frozen"
281
283
  Requires-Dist: solar-wavelength-calibration==2.0.3; extra == "frozen"
282
- Requires-Dist: soupsieve==2.8.4; extra == "frozen"
284
+ Requires-Dist: soupsieve==2.9.2; extra == "frozen"
283
285
  Requires-Dist: sqids==0.5.1; extra == "frozen"
284
286
  Requires-Dist: sqlparse==0.5.5; extra == "frozen"
285
287
  Requires-Dist: stack-data==0.6.3; extra == "frozen"
286
288
  Requires-Dist: starlette==0.52.1; extra == "frozen"
287
289
  Requires-Dist: structlog==26.1.0; extra == "frozen"
288
- Requires-Dist: sunpy==7.1.2; extra == "frozen"
289
- Requires-Dist: svcs==25.1.0; extra == "frozen"
290
+ Requires-Dist: sunpy==8.0.0; extra == "frozen"
291
+ Requires-Dist: svcs==26.1.0; extra == "frozen"
290
292
  Requires-Dist: tabulate==0.10.0; extra == "frozen"
291
293
  Requires-Dist: talus==1.3.4; extra == "frozen"
292
294
  Requires-Dist: tenacity==8.5.0; extra == "frozen"
@@ -294,34 +296,34 @@ Requires-Dist: termcolor==3.3.0; extra == "frozen"
294
296
  Requires-Dist: terminado==0.18.1; extra == "frozen"
295
297
  Requires-Dist: text-unidecode==1.3; extra == "frozen"
296
298
  Requires-Dist: tinycss2==1.5.1; extra == "frozen"
297
- Requires-Dist: tornado==6.5.7; extra == "frozen"
298
- Requires-Dist: tqdm==4.68.3; extra == "frozen"
299
- Requires-Dist: traitlets==5.15.1; extra == "frozen"
300
- Requires-Dist: typer==0.26.7; extra == "frozen"
301
- Requires-Dist: typing-inspection==0.4.2; extra == "frozen"
302
- Requires-Dist: typing_extensions==4.15.0; extra == "frozen"
303
- Requires-Dist: tzdata==2026.2; extra == "frozen"
304
- Requires-Dist: tzlocal==5.4.3; extra == "frozen"
299
+ Requires-Dist: tornado==6.5.8; extra == "frozen"
300
+ Requires-Dist: tqdm==4.70.0; extra == "frozen"
301
+ Requires-Dist: traitlets==5.16.1; extra == "frozen"
302
+ Requires-Dist: typer==0.27.1; extra == "frozen"
303
+ Requires-Dist: typing-inspection==0.4.3; extra == "frozen"
304
+ Requires-Dist: typing_extensions==4.16.0; extra == "frozen"
305
+ Requires-Dist: tzdata==2026.3; extra == "frozen"
306
+ Requires-Dist: tzlocal==5.4.4; extra == "frozen"
305
307
  Requires-Dist: uc-micro-py==2.0.0; extra == "frozen"
306
308
  Requires-Dist: uncertainties==3.2.3; extra == "frozen"
307
309
  Requires-Dist: universal_pathlib==0.3.10; extra == "frozen"
308
310
  Requires-Dist: uri-template==1.3.0; extra == "frozen"
309
311
  Requires-Dist: urllib3==2.7.0; extra == "frozen"
310
312
  Requires-Dist: uuid6==2025.0.1; extra == "frozen"
311
- Requires-Dist: uvicorn==0.49.0; extra == "frozen"
313
+ Requires-Dist: uvicorn==0.52.1; extra == "frozen"
312
314
  Requires-Dist: uvloop==0.22.1; extra == "frozen"
313
315
  Requires-Dist: vine==5.1.0; extra == "frozen"
314
316
  Requires-Dist: voluptuous==0.16.0; extra == "frozen"
315
317
  Requires-Dist: watchfiles==1.2.0; extra == "frozen"
316
- Requires-Dist: wcwidth==0.8.1; extra == "frozen"
318
+ Requires-Dist: wcwidth==0.8.2; extra == "frozen"
317
319
  Requires-Dist: webcolors==25.10.0; extra == "frozen"
318
320
  Requires-Dist: webencodings==0.5.1; extra == "frozen"
319
321
  Requires-Dist: websocket-client==1.9.0; extra == "frozen"
320
- Requires-Dist: websockets==16.0; extra == "frozen"
322
+ Requires-Dist: websockets==17.0.1; extra == "frozen"
321
323
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
322
- Requires-Dist: wrapt==2.2.2; extra == "frozen"
324
+ Requires-Dist: wrapt==2.3.0; extra == "frozen"
323
325
  Requires-Dist: yamale==6.1.0; extra == "frozen"
324
- Requires-Dist: yarl==1.24.2; extra == "frozen"
326
+ Requires-Dist: yarl==1.24.5; extra == "frozen"
325
327
  Requires-Dist: zipp==4.1.0; extra == "frozen"
326
328
 
327
329
  dkist-processing-test
@@ -1,3 +1,4 @@
1
+ from dkist_processing_test.tasks.exercise_multiprocessing import *
1
2
  from dkist_processing_test.tasks.exercise_numba import *
2
3
  from dkist_processing_test.tasks.fail import *
3
4
  from dkist_processing_test.tasks.fake_science import *
@@ -0,0 +1,59 @@
1
+ """Exercise CPU-level multiprocessing in the workflow execution environment."""
2
+
3
+ import os
4
+ from concurrent.futures import ProcessPoolExecutor
5
+
6
+ from dkist_processing_core import TaskBase
7
+ from dkist_service_configuration.logging import logger
8
+ from pydantic import BaseModel
9
+
10
+ from dkist_processing_test.config import dkist_processing_test_configurations
11
+
12
+ __all__ = ["CpuBoundWorkloadResult", "ExerciseMultiprocessing"]
13
+
14
+ # Keep computation short while giving each worker process meaningful CPU work.
15
+ WORKLOAD_SIZE = 1_000_000
16
+
17
+
18
+ class CpuBoundWorkloadResult(BaseModel):
19
+ """Result from a CPU-bound workload executed in a worker process."""
20
+
21
+ workload_id: int
22
+ process_id: int
23
+ result: int
24
+
25
+
26
+ def _cpu_bound_workload(workload_id: int) -> CpuBoundWorkloadResult:
27
+ """Run a deterministic CPU-bound workload and report the worker process."""
28
+ result = sum((value + workload_id) ** 2 for value in range(WORKLOAD_SIZE))
29
+ return CpuBoundWorkloadResult(
30
+ workload_id=workload_id,
31
+ process_id=os.getpid(),
32
+ result=result,
33
+ )
34
+
35
+
36
+ class ExerciseMultiprocessing(TaskBase):
37
+ """Run one CPU-bound workload per configured CPU in separate worker processes."""
38
+
39
+ def run(self) -> None:
40
+ worker_count = dkist_processing_test_configurations.cpu_count
41
+
42
+ if worker_count <= 1:
43
+ raise RuntimeError(f"Insufficient CPU count for multiprocessing test. {worker_count=}")
44
+
45
+ with ProcessPoolExecutor(max_workers=worker_count) as executor:
46
+ workload_results = list(executor.map(_cpu_bound_workload, range(worker_count)))
47
+
48
+ worker_process_ids = {workload_result.process_id for workload_result in workload_results}
49
+ if len(worker_process_ids) != worker_count:
50
+ raise RuntimeError(
51
+ f"Expected {worker_count} worker processes; found {worker_process_ids}."
52
+ )
53
+
54
+ self.workload_results = workload_results
55
+ self.worker_process_ids = worker_process_ids
56
+ logger.info(
57
+ f"ExerciseMultiprocessing completed {worker_count} CPU-bound workloads "
58
+ f"using worker processes {sorted(worker_process_ids)}."
59
+ )
@@ -0,0 +1,17 @@
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
@@ -0,0 +1,19 @@
1
+ """Workflow that exercises CPU-level multiprocessing."""
2
+
3
+ from dkist_processing_core import ResourceQueue
4
+ from dkist_processing_core import Workflow
5
+
6
+ from dkist_processing_test.tasks import ExerciseMultiprocessing
7
+
8
+ exercise_multiprocessing = Workflow(
9
+ input_data="input",
10
+ output_data="output",
11
+ category="test",
12
+ detail="exercise_multiprocessing",
13
+ workflow_package=__package__,
14
+ )
15
+ exercise_multiprocessing.add_node(
16
+ task=ExerciseMultiprocessing,
17
+ resource_queue=ResourceQueue.MULTI_CORE,
18
+ upstreams=None,
19
+ )