dkist-processing-test 1.42.18__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.
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/PKG-INFO +59 -56
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/__init__.py +1 -0
- dkist_processing_test-1.43.0/dkist_processing_test/tasks/exercise_multiprocessing.py +59 -0
- dkist_processing_test-1.43.0/dkist_processing_test/tests/test_workflows.py +17 -0
- dkist_processing_test-1.43.0/dkist_processing_test/workflows/exercise_multiprocessing.py +19 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test.egg-info/PKG-INFO +59 -56
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test.egg-info/SOURCES.txt +2 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test.egg-info/requires.txt +58 -55
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test.egg-info/scm_file_list.json +24 -22
- dkist_processing_test-1.43.0/dkist_processing_test.egg-info/scm_version.json +8 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/pyproject.toml +60 -57
- dkist_processing_test-1.42.18/dkist_processing_test/tests/test_workflows.py +0 -10
- dkist_processing_test-1.42.18/dkist_processing_test.egg-info/scm_version.json +0 -8
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/.gitignore +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/.pre-commit-config.yaml +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/.rovodev/.review-agent.md +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/.snyk +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/README.rst +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/__init__.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/config.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/models/__init__.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/models/constants.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/models/parameters.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/parsers/__init__.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/parsers/test_l0_fits_access.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/parsers/time.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/construct_dataset_extras.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/exercise_numba.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/fail.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/fake_science.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/high_memory.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/manual.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/movie.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/noop.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/parse.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/quality.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tasks/write_l1.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tests/__init__.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tests/conftest.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/tests/test_tasks.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/__init__.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/common_tasks.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/end_to_end.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/exercise_numba.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/fail.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/noop.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/resource_queue.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test/workflows/trial_end_to_end.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test.egg-info/dependency_links.txt +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/dkist_processing_test.egg-info/top_level.txt +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dkist-processing-test
|
|
3
|
-
Version: 1.
|
|
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.
|
|
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
|
|
@@ -41,7 +41,7 @@ Provides-Extra: frozen
|
|
|
41
41
|
Requires-Dist: Deprecated==1.3.1; extra == "frozen"
|
|
42
42
|
Requires-Dist: ImageIO==2.37.4; extra == "frozen"
|
|
43
43
|
Requires-Dist: Jinja2==3.1.6; extra == "frozen"
|
|
44
|
-
Requires-Dist: Mako==1.
|
|
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,28 +50,29 @@ 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.
|
|
53
|
+
Requires-Dist: aioftp==0.28.0; extra == "frozen"
|
|
54
54
|
Requires-Dist: aiohappyeyeballs==2.7.1; extra == "frozen"
|
|
55
|
-
Requires-Dist: aiohttp==3.14.
|
|
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.
|
|
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.
|
|
62
|
-
Requires-Dist: annotated-types==0.
|
|
61
|
+
Requires-Dist: annotated-doc==0.0.5; extra == "frozen"
|
|
62
|
+
Requires-Dist: annotated-types==0.8.0; extra == "frozen"
|
|
63
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.
|
|
67
|
-
Requires-Dist: apache-airflow-providers-common-compat==1.
|
|
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
68
|
Requires-Dist: apache-airflow-providers-common-io==1.8.0; extra == "frozen"
|
|
69
|
-
Requires-Dist: apache-airflow-providers-common-sql==2.0
|
|
70
|
-
Requires-Dist: apache-airflow-providers-postgres==
|
|
71
|
-
Requires-Dist: apache-airflow-providers-smtp==3.0.
|
|
72
|
-
Requires-Dist: apache-airflow-providers-standard==1.
|
|
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
|
-
Requires-Dist:
|
|
74
|
+
Requires-Dist: appnope==0.1.4; extra == "frozen"
|
|
75
|
+
Requires-Dist: argcomplete==3.7.2; extra == "frozen"
|
|
75
76
|
Requires-Dist: argon2-cffi==25.1.0; extra == "frozen"
|
|
76
77
|
Requires-Dist: argon2-cffi-bindings==25.1.0; extra == "frozen"
|
|
77
78
|
Requires-Dist: arrow==1.4.0; extra == "frozen"
|
|
@@ -80,7 +81,7 @@ Requires-Dist: asdf_standard==1.5.0; extra == "frozen"
|
|
|
80
81
|
Requires-Dist: asgiref==3.12.1; extra == "frozen"
|
|
81
82
|
Requires-Dist: asteval==1.0.9; extra == "frozen"
|
|
82
83
|
Requires-Dist: astropy==7.0.2; extra == "frozen"
|
|
83
|
-
Requires-Dist: astropy-iers-data==0.2026.
|
|
84
|
+
Requires-Dist: astropy-iers-data==0.2026.8.10.0.32.39; extra == "frozen"
|
|
84
85
|
Requires-Dist: asttokens==3.0.2; extra == "frozen"
|
|
85
86
|
Requires-Dist: async-lru==2.3.0; extra == "frozen"
|
|
86
87
|
Requires-Dist: asyncpg==0.31.0; extra == "frozen"
|
|
@@ -89,53 +90,53 @@ Requires-Dist: babel==2.18.0; extra == "frozen"
|
|
|
89
90
|
Requires-Dist: beautifulsoup4==4.15.0; extra == "frozen"
|
|
90
91
|
Requires-Dist: billiard==4.2.4; extra == "frozen"
|
|
91
92
|
Requires-Dist: bleach==6.4.0; extra == "frozen"
|
|
92
|
-
Requires-Dist: boto3==1.43.
|
|
93
|
-
Requires-Dist: botocore==1.43.
|
|
94
|
-
Requires-Dist: cadwyn==7.
|
|
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"
|
|
95
96
|
Requires-Dist: celery==5.6.3; extra == "frozen"
|
|
96
97
|
Requires-Dist: certifi==2026.7.22; extra == "frozen"
|
|
97
|
-
Requires-Dist: cffi==2.1.
|
|
98
|
+
Requires-Dist: cffi==2.1.1; extra == "frozen"
|
|
98
99
|
Requires-Dist: charset-normalizer==3.4.9; extra == "frozen"
|
|
99
100
|
Requires-Dist: click==8.4.2; extra == "frozen"
|
|
100
101
|
Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
|
|
101
102
|
Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
|
|
102
103
|
Requires-Dist: click-repl==0.3.0; extra == "frozen"
|
|
103
|
-
Requires-Dist: colorlog==6.
|
|
104
|
+
Requires-Dist: colorlog==6.12.0; extra == "frozen"
|
|
104
105
|
Requires-Dist: comm==0.2.3; extra == "frozen"
|
|
105
106
|
Requires-Dist: contourpy==1.3.3; extra == "frozen"
|
|
106
107
|
Requires-Dist: cron_descriptor==2.1.0; extra == "frozen"
|
|
107
108
|
Requires-Dist: croniter==6.2.4; extra == "frozen"
|
|
108
|
-
Requires-Dist: cryptography==
|
|
109
|
+
Requires-Dist: cryptography==50.0.0; extra == "frozen"
|
|
109
110
|
Requires-Dist: cycler==0.12.1; extra == "frozen"
|
|
110
111
|
Requires-Dist: debugpy==1.8.21; extra == "frozen"
|
|
111
112
|
Requires-Dist: decorator==5.3.1; extra == "frozen"
|
|
112
113
|
Requires-Dist: defusedxml==0.7.1; extra == "frozen"
|
|
113
114
|
Requires-Dist: dill==0.4.1; extra == "frozen"
|
|
114
115
|
Requires-Dist: dkist-header-validator==5.4.0; extra == "frozen"
|
|
115
|
-
Requires-Dist: dkist-processing-common==14.3.
|
|
116
|
-
Requires-Dist: dkist-processing-core==7.
|
|
116
|
+
Requires-Dist: dkist-processing-common==14.3.5; extra == "frozen"
|
|
117
|
+
Requires-Dist: dkist-processing-core==7.4.0; extra == "frozen"
|
|
117
118
|
Requires-Dist: dkist-processing-pac==3.1.2; extra == "frozen"
|
|
118
|
-
Requires-Dist: dkist-processing-test==1.
|
|
119
|
+
Requires-Dist: dkist-processing-test==1.43.0; extra == "frozen"
|
|
119
120
|
Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
|
|
120
121
|
Requires-Dist: dkist-spectral-lines==3.0.1; extra == "frozen"
|
|
121
122
|
Requires-Dist: dkist_fits_specifications==4.28.0; extra == "frozen"
|
|
122
123
|
Requires-Dist: dnspython==2.8.0; extra == "frozen"
|
|
123
124
|
Requires-Dist: email-validator==2.3.0; extra == "frozen"
|
|
124
125
|
Requires-Dist: executing==2.2.1; extra == "frozen"
|
|
125
|
-
Requires-Dist: fastapi==0.
|
|
126
|
+
Requires-Dist: fastapi==0.141.1; extra == "frozen"
|
|
126
127
|
Requires-Dist: fastapi-cli==0.0.32; extra == "frozen"
|
|
127
|
-
Requires-Dist: fastjsonschema==2.
|
|
128
|
+
Requires-Dist: fastjsonschema==2.22.1; extra == "frozen"
|
|
128
129
|
Requires-Dist: flower==2.0.1; extra == "frozen"
|
|
129
130
|
Requires-Dist: fonttools==4.63.0; extra == "frozen"
|
|
130
131
|
Requires-Dist: fqdn==1.5.1; extra == "frozen"
|
|
131
132
|
Requires-Dist: frozenlist==1.8.0; extra == "frozen"
|
|
132
|
-
Requires-Dist: fsspec==2026.
|
|
133
|
-
Requires-Dist: globus-sdk==4.
|
|
134
|
-
Requires-Dist: googleapis-common-protos==1.75.
|
|
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"
|
|
135
136
|
Requires-Dist: gqlclient==2.0.0; extra == "frozen"
|
|
136
137
|
Requires-Dist: greenback==1.3.0; extra == "frozen"
|
|
137
|
-
Requires-Dist: greenlet==3.5.
|
|
138
|
-
Requires-Dist: grpcio==1.
|
|
138
|
+
Requires-Dist: greenlet==3.5.5; extra == "frozen"
|
|
139
|
+
Requires-Dist: grpcio==1.83.0; extra == "frozen"
|
|
139
140
|
Requires-Dist: h11==0.16.0; extra == "frozen"
|
|
140
141
|
Requires-Dist: httpcore==1.0.9; extra == "frozen"
|
|
141
142
|
Requires-Dist: httptools==0.8.0; extra == "frozen"
|
|
@@ -145,7 +146,7 @@ Requires-Dist: idna==3.18; extra == "frozen"
|
|
|
145
146
|
Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
|
|
146
147
|
Requires-Dist: importlib_metadata==9.0.0; extra == "frozen"
|
|
147
148
|
Requires-Dist: ipykernel==7.3.0; extra == "frozen"
|
|
148
|
-
Requires-Dist: ipython==9.
|
|
149
|
+
Requires-Dist: ipython==9.16.1; extra == "frozen"
|
|
149
150
|
Requires-Dist: ipython_pygments_lexers==1.1.1; extra == "frozen"
|
|
150
151
|
Requires-Dist: isoduration==20.11.0; extra == "frozen"
|
|
151
152
|
Requires-Dist: itsdangerous==2.2.0; extra == "frozen"
|
|
@@ -157,19 +158,19 @@ Requires-Dist: jsonschema==4.26.0; extra == "frozen"
|
|
|
157
158
|
Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
|
|
158
159
|
Requires-Dist: jupyter-events==0.12.1; extra == "frozen"
|
|
159
160
|
Requires-Dist: jupyter-lsp==2.3.1; extra == "frozen"
|
|
160
|
-
Requires-Dist: jupyter_builder==1.
|
|
161
|
+
Requires-Dist: jupyter_builder==1.2.2; extra == "frozen"
|
|
161
162
|
Requires-Dist: jupyter_client==8.9.1; extra == "frozen"
|
|
162
163
|
Requires-Dist: jupyter_core==5.9.1; extra == "frozen"
|
|
163
164
|
Requires-Dist: jupyter_server==2.20.0; extra == "frozen"
|
|
164
165
|
Requires-Dist: jupyter_server_terminals==0.5.4; extra == "frozen"
|
|
165
|
-
Requires-Dist: jupyterlab==4.6.
|
|
166
|
+
Requires-Dist: jupyterlab==4.6.3; extra == "frozen"
|
|
166
167
|
Requires-Dist: jupyterlab_pygments==0.3.0; extra == "frozen"
|
|
167
168
|
Requires-Dist: jupyterlab_server==2.28.0; extra == "frozen"
|
|
168
169
|
Requires-Dist: kiwisolver==1.5.0; extra == "frozen"
|
|
169
170
|
Requires-Dist: kombu==5.6.2; extra == "frozen"
|
|
170
171
|
Requires-Dist: lark==1.3.1; extra == "frozen"
|
|
171
172
|
Requires-Dist: lazy-object-proxy==1.12.0; extra == "frozen"
|
|
172
|
-
Requires-Dist: libcst==1.
|
|
173
|
+
Requires-Dist: libcst==1.9.0; extra == "frozen"
|
|
173
174
|
Requires-Dist: linkify-it-py==2.1.0; extra == "frozen"
|
|
174
175
|
Requires-Dist: llvmlite==0.44.0; extra == "frozen"
|
|
175
176
|
Requires-Dist: lmfit==1.3.4; extra == "frozen"
|
|
@@ -188,7 +189,7 @@ Requires-Dist: multidict==6.7.1; extra == "frozen"
|
|
|
188
189
|
Requires-Dist: natsort==8.4.0; extra == "frozen"
|
|
189
190
|
Requires-Dist: nbclient==0.11.0; extra == "frozen"
|
|
190
191
|
Requires-Dist: nbconvert==7.17.1; extra == "frozen"
|
|
191
|
-
Requires-Dist: nbformat==5.
|
|
192
|
+
Requires-Dist: nbformat==5.11.0; extra == "frozen"
|
|
192
193
|
Requires-Dist: nest-asyncio2==1.7.2; extra == "frozen"
|
|
193
194
|
Requires-Dist: notebook==7.6.1; extra == "frozen"
|
|
194
195
|
Requires-Dist: notebook_shim==0.2.4; extra == "frozen"
|
|
@@ -220,8 +221,8 @@ Requires-Dist: opentelemetry-sdk==1.44.0; extra == "frozen"
|
|
|
220
221
|
Requires-Dist: opentelemetry-semantic-conventions==0.65b0; extra == "frozen"
|
|
221
222
|
Requires-Dist: opentelemetry-util-http==0.65b0; extra == "frozen"
|
|
222
223
|
Requires-Dist: outcome==1.3.0.post0; extra == "frozen"
|
|
223
|
-
Requires-Dist: packaging==26.
|
|
224
|
-
Requires-Dist: pandas==3.0.
|
|
224
|
+
Requires-Dist: packaging==26.3; extra == "frozen"
|
|
225
|
+
Requires-Dist: pandas==3.0.5; extra == "frozen"
|
|
225
226
|
Requires-Dist: pandocfilters==1.5.1; extra == "frozen"
|
|
226
227
|
Requires-Dist: parfive==2.3.1; extra == "frozen"
|
|
227
228
|
Requires-Dist: parso==0.8.7; extra == "frozen"
|
|
@@ -229,25 +230,27 @@ Requires-Dist: pathlib_abc==0.5.2; extra == "frozen"
|
|
|
229
230
|
Requires-Dist: pathspec==1.1.1; extra == "frozen"
|
|
230
231
|
Requires-Dist: pendulum==3.2.0; extra == "frozen"
|
|
231
232
|
Requires-Dist: pexpect==4.9.0; extra == "frozen"
|
|
232
|
-
Requires-Dist: pika==1.4.
|
|
233
|
+
Requires-Dist: pika==1.4.4; extra == "frozen"
|
|
233
234
|
Requires-Dist: pillow==11.3.0; extra == "frozen"
|
|
234
|
-
Requires-Dist: pip==26.1
|
|
235
|
-
Requires-Dist: platformdirs==4.11.
|
|
235
|
+
Requires-Dist: pip==26.2.1; extra == "frozen"
|
|
236
|
+
Requires-Dist: platformdirs==4.11.2; extra == "frozen"
|
|
236
237
|
Requires-Dist: pluggy==1.6.0; extra == "frozen"
|
|
237
238
|
Requires-Dist: pooch==1.9.0; extra == "frozen"
|
|
238
239
|
Requires-Dist: proglog==0.1.12; extra == "frozen"
|
|
239
|
-
Requires-Dist: prometheus_client==0.
|
|
240
|
-
Requires-Dist: prompt_toolkit==3.0.
|
|
240
|
+
Requires-Dist: prometheus_client==0.26.0; extra == "frozen"
|
|
241
|
+
Requires-Dist: prompt_toolkit==3.0.53; extra == "frozen"
|
|
241
242
|
Requires-Dist: propcache==0.5.2; extra == "frozen"
|
|
242
243
|
Requires-Dist: protobuf==7.35.1; extra == "frozen"
|
|
243
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"
|
|
244
247
|
Requires-Dist: psycopg2-binary==2.9.12; extra == "frozen"
|
|
245
248
|
Requires-Dist: ptyprocess==0.7.0; extra == "frozen"
|
|
246
249
|
Requires-Dist: pure_eval==0.2.3; extra == "frozen"
|
|
247
250
|
Requires-Dist: pycparser==3.0; extra == "frozen"
|
|
248
251
|
Requires-Dist: pydantic==2.13.4; extra == "frozen"
|
|
249
252
|
Requires-Dist: pydantic-extra-types==2.11.1; extra == "frozen"
|
|
250
|
-
Requires-Dist: pydantic-settings==2.
|
|
253
|
+
Requires-Dist: pydantic-settings==2.15.0; extra == "frozen"
|
|
251
254
|
Requires-Dist: pydantic_core==2.46.4; extra == "frozen"
|
|
252
255
|
Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
|
|
253
256
|
Requires-Dist: pygtrie==2.5.0; extra == "frozen"
|
|
@@ -258,7 +261,7 @@ Requires-Dist: python-dotenv==1.2.2; extra == "frozen"
|
|
|
258
261
|
Requires-Dist: python-json-logger==4.1.0; extra == "frozen"
|
|
259
262
|
Requires-Dist: python-multipart==0.0.32; extra == "frozen"
|
|
260
263
|
Requires-Dist: python-slugify==8.0.4; extra == "frozen"
|
|
261
|
-
Requires-Dist: pytz==2026.
|
|
264
|
+
Requires-Dist: pytz==2026.3.post1; extra == "frozen"
|
|
262
265
|
Requires-Dist: pyzmq==27.1.0; extra == "frozen"
|
|
263
266
|
Requires-Dist: redis==6.4.0; extra == "frozen"
|
|
264
267
|
Requires-Dist: referencing==0.37.0; extra == "frozen"
|
|
@@ -270,7 +273,7 @@ Requires-Dist: rich==15.0.0; extra == "frozen"
|
|
|
270
273
|
Requires-Dist: rich-argparse==1.8.0; extra == "frozen"
|
|
271
274
|
Requires-Dist: rich-toolkit==0.20.3; extra == "frozen"
|
|
272
275
|
Requires-Dist: rpds-py==2026.6.3; extra == "frozen"
|
|
273
|
-
Requires-Dist: s3transfer==0.19.
|
|
276
|
+
Requires-Dist: s3transfer==0.19.2; extra == "frozen"
|
|
274
277
|
Requires-Dist: scipy==1.18.0; extra == "frozen"
|
|
275
278
|
Requires-Dist: semantic-version==2.10.0; extra == "frozen"
|
|
276
279
|
Requires-Dist: setproctitle==1.3.7; extra == "frozen"
|
|
@@ -278,7 +281,7 @@ Requires-Dist: shellingham==1.5.4; extra == "frozen"
|
|
|
278
281
|
Requires-Dist: six==1.17.0; extra == "frozen"
|
|
279
282
|
Requires-Dist: sniffio==1.3.1; extra == "frozen"
|
|
280
283
|
Requires-Dist: solar-wavelength-calibration==2.0.3; extra == "frozen"
|
|
281
|
-
Requires-Dist: soupsieve==2.9.
|
|
284
|
+
Requires-Dist: soupsieve==2.9.2; extra == "frozen"
|
|
282
285
|
Requires-Dist: sqids==0.5.1; extra == "frozen"
|
|
283
286
|
Requires-Dist: sqlparse==0.5.5; extra == "frozen"
|
|
284
287
|
Requires-Dist: stack-data==0.6.3; extra == "frozen"
|
|
@@ -293,11 +296,11 @@ Requires-Dist: termcolor==3.3.0; extra == "frozen"
|
|
|
293
296
|
Requires-Dist: terminado==0.18.1; extra == "frozen"
|
|
294
297
|
Requires-Dist: text-unidecode==1.3; extra == "frozen"
|
|
295
298
|
Requires-Dist: tinycss2==1.5.1; extra == "frozen"
|
|
296
|
-
Requires-Dist: tornado==6.5.
|
|
297
|
-
Requires-Dist: tqdm==4.
|
|
298
|
-
Requires-Dist: traitlets==5.
|
|
299
|
-
Requires-Dist: typer==0.27.
|
|
300
|
-
Requires-Dist: typing-inspection==0.4.
|
|
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"
|
|
301
304
|
Requires-Dist: typing_extensions==4.16.0; extra == "frozen"
|
|
302
305
|
Requires-Dist: tzdata==2026.3; extra == "frozen"
|
|
303
306
|
Requires-Dist: tzlocal==5.4.4; extra == "frozen"
|
|
@@ -307,7 +310,7 @@ Requires-Dist: universal_pathlib==0.3.10; extra == "frozen"
|
|
|
307
310
|
Requires-Dist: uri-template==1.3.0; extra == "frozen"
|
|
308
311
|
Requires-Dist: urllib3==2.7.0; extra == "frozen"
|
|
309
312
|
Requires-Dist: uuid6==2025.0.1; extra == "frozen"
|
|
310
|
-
Requires-Dist: uvicorn==0.
|
|
313
|
+
Requires-Dist: uvicorn==0.52.1; extra == "frozen"
|
|
311
314
|
Requires-Dist: uvloop==0.22.1; extra == "frozen"
|
|
312
315
|
Requires-Dist: vine==5.1.0; extra == "frozen"
|
|
313
316
|
Requires-Dist: voluptuous==0.16.0; extra == "frozen"
|
|
@@ -316,9 +319,9 @@ Requires-Dist: wcwidth==0.8.2; extra == "frozen"
|
|
|
316
319
|
Requires-Dist: webcolors==25.10.0; extra == "frozen"
|
|
317
320
|
Requires-Dist: webencodings==0.5.1; extra == "frozen"
|
|
318
321
|
Requires-Dist: websocket-client==1.9.0; extra == "frozen"
|
|
319
|
-
Requires-Dist: websockets==
|
|
322
|
+
Requires-Dist: websockets==17.0.1; extra == "frozen"
|
|
320
323
|
Requires-Dist: wirerope==1.0.0; extra == "frozen"
|
|
321
|
-
Requires-Dist: wrapt==2.
|
|
324
|
+
Requires-Dist: wrapt==2.3.0; extra == "frozen"
|
|
322
325
|
Requires-Dist: yamale==6.1.0; extra == "frozen"
|
|
323
326
|
Requires-Dist: yarl==1.24.5; extra == "frozen"
|
|
324
327
|
Requires-Dist: zipp==4.1.0; extra == "frozen"
|
|
@@ -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
|
+
)
|