dkist-processing-test 1.42.17__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.43.0rc1/.snyk +13 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/PKG-INFO +110 -105
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/README.rst +3 -0
- {dkist_processing_test-1.42.17 → 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.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test.egg-info/PKG-INFO +110 -105
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test.egg-info/SOURCES.txt +2 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test.egg-info/requires.txt +106 -104
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test.egg-info/scm_file_list.json +23 -21
- dkist_processing_test-1.43.0rc1/dkist_processing_test.egg-info/scm_version.json +8 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/pyproject.toml +108 -106
- dkist_processing_test-1.42.17/.snyk +0 -2
- dkist_processing_test-1.42.17/dkist_processing_test/tests/test_workflows.py +0 -10
- dkist_processing_test-1.42.17/dkist_processing_test.egg-info/scm_version.json +0 -8
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/.gitignore +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/.pre-commit-config.yaml +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/.rovodev/.review-agent.md +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/__init__.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/config.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/models/__init__.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/models/constants.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/models/parameters.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/parsers/__init__.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/parsers/test_l0_fits_access.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/parsers/time.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/construct_dataset_extras.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/exercise_numba.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/fail.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/fake_science.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/high_memory.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/manual.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/movie.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/noop.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/parse.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/quality.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tasks/write_l1.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tests/__init__.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tests/conftest.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/tests/test_tasks.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/__init__.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/common_tasks.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/end_to_end.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/exercise_numba.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/fail.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/noop.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/resource_queue.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test/workflows/trial_end_to_end.py +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test.egg-info/dependency_links.txt +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/dkist_processing_test.egg-info/top_level.txt +0 -0
- {dkist_processing_test-1.42.17 → dkist_processing_test-1.43.0rc1}/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.
|
|
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
|
|
@@ -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.
|
|
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.
|
|
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.
|
|
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,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.
|
|
54
|
-
Requires-Dist: aiohappyeyeballs==2.
|
|
55
|
-
Requires-Dist: aiohttp==3.14.
|
|
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.
|
|
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.
|
|
63
|
-
Requires-Dist: anyio==4.14.
|
|
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.
|
|
67
|
-
Requires-Dist: apache-airflow-providers-common-compat==1.
|
|
68
|
-
Requires-Dist: apache-airflow-providers-common-io==1.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
85
|
-
Requires-Dist: asttokens==3.0.
|
|
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.
|
|
94
|
-
Requires-Dist: botocore==1.43.
|
|
95
|
-
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"
|
|
96
96
|
Requires-Dist: celery==5.6.3; extra == "frozen"
|
|
97
|
-
Requires-Dist: certifi==2026.
|
|
98
|
-
Requires-Dist: cffi==2.
|
|
99
|
-
Requires-Dist: charset-normalizer==3.4.
|
|
100
|
-
Requires-Dist: click==8.4.
|
|
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.
|
|
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.
|
|
109
|
-
Requires-Dist: cryptography==
|
|
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.
|
|
117
|
-
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"
|
|
118
118
|
Requires-Dist: dkist-processing-pac==3.1.2; extra == "frozen"
|
|
119
|
-
Requires-Dist: dkist-processing-test==1.
|
|
119
|
+
Requires-Dist: dkist-processing-test==1.43.0rc1; 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.
|
|
127
|
-
Requires-Dist: fastapi-cli==0.0.
|
|
128
|
-
Requires-Dist: fastjsonschema==2.
|
|
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.
|
|
133
|
+
Requires-Dist: fsspec==2026.7.0; extra == "frozen"
|
|
134
134
|
Requires-Dist: globus-sdk==4.8.1; extra == "frozen"
|
|
135
|
-
Requires-Dist: googleapis-common-protos==1.75.
|
|
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.
|
|
139
|
-
Requires-Dist: grpcio==1.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
166
|
+
Requires-Dist: jupyterlab==4.6.2; 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
200
|
-
Requires-Dist: opentelemetry-exporter-otlp==1.
|
|
201
|
-
Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.
|
|
202
|
-
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.
|
|
203
|
-
Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.
|
|
204
|
-
Requires-Dist: opentelemetry-instrumentation==0.
|
|
205
|
-
Requires-Dist: opentelemetry-instrumentation-aiohttp-client==0.
|
|
206
|
-
Requires-Dist: opentelemetry-instrumentation-asgi==0.
|
|
207
|
-
Requires-Dist: opentelemetry-instrumentation-botocore==0.
|
|
208
|
-
Requires-Dist: opentelemetry-instrumentation-celery==0.
|
|
209
|
-
Requires-Dist: opentelemetry-instrumentation-dbapi==0.
|
|
210
|
-
Requires-Dist: opentelemetry-instrumentation-fastapi==0.
|
|
211
|
-
Requires-Dist: opentelemetry-instrumentation-pika==0.
|
|
212
|
-
Requires-Dist: opentelemetry-instrumentation-psycopg2==0.
|
|
213
|
-
Requires-Dist: opentelemetry-instrumentation-pymongo==0.
|
|
214
|
-
Requires-Dist: opentelemetry-instrumentation-redis==0.
|
|
215
|
-
Requires-Dist: opentelemetry-instrumentation-requests==0.
|
|
216
|
-
Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.
|
|
217
|
-
Requires-Dist: opentelemetry-instrumentation-system-metrics==0.
|
|
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.
|
|
220
|
-
Requires-Dist: opentelemetry-sdk==1.
|
|
221
|
-
Requires-Dist: opentelemetry-semantic-conventions==0.
|
|
222
|
-
Requires-Dist: opentelemetry-util-http==0.
|
|
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.
|
|
225
|
-
Requires-Dist: pandas==3.0.
|
|
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.
|
|
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
|
|
236
|
-
Requires-Dist: platformdirs==4.
|
|
235
|
+
Requires-Dist: pip==26.2.1; extra == "frozen"
|
|
236
|
+
Requires-Dist: platformdirs==4.11.1; 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.
|
|
241
|
-
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"
|
|
242
242
|
Requires-Dist: propcache==0.5.2; extra == "frozen"
|
|
243
|
-
Requires-Dist: protobuf==
|
|
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.
|
|
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.
|
|
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.
|
|
273
|
-
Requires-Dist: rpds-py==2026.
|
|
274
|
-
Requires-Dist: s3transfer==0.19.
|
|
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.
|
|
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==
|
|
289
|
-
Requires-Dist: svcs==
|
|
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.
|
|
298
|
-
Requires-Dist: tqdm==4.
|
|
299
|
-
Requires-Dist: traitlets==5.
|
|
300
|
-
Requires-Dist: typer==0.
|
|
301
|
-
Requires-Dist: typing-inspection==0.4.
|
|
302
|
-
Requires-Dist: typing_extensions==4.
|
|
303
|
-
Requires-Dist: tzdata==2026.
|
|
304
|
-
Requires-Dist: tzlocal==5.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"
|
|
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.
|
|
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.
|
|
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==
|
|
322
|
+
Requires-Dist: websockets==17.0.1; extra == "frozen"
|
|
321
323
|
Requires-Dist: wirerope==1.0.0; extra == "frozen"
|
|
322
|
-
Requires-Dist: wrapt==2.
|
|
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.
|
|
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
|
|
@@ -442,6 +444,9 @@ Environment Variables
|
|
|
442
444
|
- annotation=int required=False default=16 description='Number of databases in the scratch inventory (redis).'
|
|
443
445
|
* - DOCS_BASE_URL
|
|
444
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
|
+
|
|
445
450
|
|
|
446
451
|
Development
|
|
447
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
|
+
)
|