dkist-processing-test 1.42.18__tar.gz → 1.43.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/PKG-INFO +60 -54
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/README.rst +3 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/__init__.py +1 -0
- dkist_processing_test-1.43.0rc1/dkist_processing_test/tasks/exercise_multiprocessing.py +56 -0
- dkist_processing_test-1.43.0rc1/dkist_processing_test/tests/test_workflows.py +17 -0
- dkist_processing_test-1.43.0rc1/dkist_processing_test/workflows/exercise_multiprocessing.py +19 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test.egg-info/PKG-INFO +60 -54
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test.egg-info/SOURCES.txt +2 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test.egg-info/requires.txt +56 -53
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test.egg-info/scm_file_list.json +24 -22
- dkist_processing_test-1.43.0rc1/dkist_processing_test.egg-info/scm_version.json +8 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/pyproject.toml +58 -55
- 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.0rc1}/.gitignore +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/.pre-commit-config.yaml +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/.rovodev/.review-agent.md +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/.snyk +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/__init__.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/config.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/models/__init__.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/models/constants.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/models/parameters.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/parsers/__init__.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/parsers/test_l0_fits_access.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/parsers/time.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/construct_dataset_extras.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/exercise_numba.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/fail.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/fake_science.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/high_memory.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/manual.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/movie.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/noop.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/parse.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/quality.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/write_l1.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tests/__init__.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tests/conftest.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tests/test_tasks.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/__init__.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/common_tasks.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/end_to_end.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/exercise_numba.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/fail.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/noop.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/resource_queue.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/trial_end_to_end.py +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test.egg-info/dependency_links.txt +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/dkist_processing_test.egg-info/top_level.txt +0 -0
- {dkist_processing_test-1.42.18 → dkist_processing_test-1.43.0rc1}/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.0rc1
|
|
4
4
|
Summary: Example instrument code used by the DKIST science data processing pipelines to test processing infrastructure
|
|
5
5
|
Author-email: NSO / AURA <dkistdc@nso.edu>
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.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.5rc1
|
|
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.67; extra == "frozen"
|
|
94
|
+
Requires-Dist: botocore==1.43.67; 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.5rc1; extra == "frozen"
|
|
117
|
+
Requires-Dist: dkist-processing-core==7.4.0rc1; 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.0rc1; 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: fsspec==2026.7.0; extra == "frozen"
|
|
133
134
|
Requires-Dist: globus-sdk==4.8.1; extra == "frozen"
|
|
134
|
-
Requires-Dist: googleapis-common-protos==1.75.
|
|
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,7 +158,7 @@ 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"
|
|
@@ -169,7 +170,7 @@ 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.1; 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"
|
|
@@ -441,6 +444,9 @@ Environment Variables
|
|
|
441
444
|
- annotation=int required=False default=16 description='Number of databases in the scratch inventory (redis).'
|
|
442
445
|
* - DOCS_BASE_URL
|
|
443
446
|
- annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
|
|
447
|
+
* - CPU_COUNT
|
|
448
|
+
- annotation=int required=False default=1 description='Number of CPUs available i.e. The maximum number of cores available for simultaneous execution.'
|
|
449
|
+
|
|
444
450
|
|
|
445
451
|
Development
|
|
446
452
|
-----------
|
|
@@ -116,6 +116,9 @@ Environment Variables
|
|
|
116
116
|
- annotation=int required=False default=16 description='Number of databases in the scratch inventory (redis).'
|
|
117
117
|
* - DOCS_BASE_URL
|
|
118
118
|
- annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
|
|
119
|
+
* - CPU_COUNT
|
|
120
|
+
- annotation=int required=False default=1 description='Number of CPUs available i.e. The maximum number of cores available for simultaneous execution.'
|
|
121
|
+
|
|
119
122
|
|
|
120
123
|
Development
|
|
121
124
|
-----------
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
with ProcessPoolExecutor(max_workers=worker_count) as executor:
|
|
43
|
+
workload_results = list(executor.map(_cpu_bound_workload, range(worker_count)))
|
|
44
|
+
|
|
45
|
+
worker_process_ids = {workload_result.process_id for workload_result in workload_results}
|
|
46
|
+
if len(worker_process_ids) != worker_count:
|
|
47
|
+
raise RuntimeError(
|
|
48
|
+
f"Expected {worker_count} worker processes; found {worker_process_ids}."
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
self.workload_results = workload_results
|
|
52
|
+
self.worker_process_ids = worker_process_ids
|
|
53
|
+
logger.info(
|
|
54
|
+
f"ExerciseMultiprocessing completed {worker_count} CPU-bound workloads "
|
|
55
|
+
f"using worker processes {sorted(worker_process_ids)}."
|
|
56
|
+
)
|
|
@@ -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
|
+
)
|