parsl 2025.9.1__py3-none-any.whl → 2025.9.15__py3-none-any.whl
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.
Potentially problematic release.
This version of parsl might be problematic. Click here for more details.
- parsl/__init__.py +0 -4
- parsl/curvezmq.py +0 -16
- parsl/dataflow/dflow.py +1 -3
- parsl/dataflow/memoization.py +0 -14
- parsl/executors/high_throughput/executor.py +8 -0
- parsl/executors/high_throughput/interchange.py +26 -23
- parsl/executors/high_throughput/zmq_pipes.py +29 -43
- parsl/monitoring/db_manager.py +8 -8
- parsl/monitoring/monitoring.py +2 -2
- parsl/monitoring/radios/udp_router.py +2 -2
- parsl/monitoring/radios/zmq_router.py +2 -2
- parsl/multiprocessing.py +0 -49
- parsl/tests/test_checkpointing/test_python_checkpoint_1.py +6 -3
- parsl/tests/test_curvezmq.py +0 -42
- parsl/tests/test_htex/test_command_concurrency_regression_1321.py +54 -0
- parsl/tests/test_htex/test_interchange_exit_bad_registration.py +2 -1
- parsl/tests/test_htex/test_priority_queue.py +1 -0
- parsl/tests/test_htex/test_zmq_binding.py +2 -1
- parsl/tests/test_python_apps/test_memoize_exception.py +41 -0
- parsl/version.py +1 -1
- {parsl-2025.9.1.data → parsl-2025.9.15.data}/scripts/interchange.py +26 -23
- {parsl-2025.9.1.dist-info → parsl-2025.9.15.dist-info}/METADATA +2 -2
- {parsl-2025.9.1.dist-info → parsl-2025.9.15.dist-info}/RECORD +30 -34
- parsl/tests/site_tests/test_provider.py +0 -88
- parsl/tests/site_tests/test_site.py +0 -70
- parsl/tests/test_aalst_patterns.py +0 -474
- parsl/tests/test_docs/test_workflow2.py +0 -42
- parsl/tests/test_error_handling/test_rand_fail.py +0 -171
- parsl/tests/test_regression/test_854.py +0 -62
- {parsl-2025.9.1.data → parsl-2025.9.15.data}/scripts/exec_parsl_function.py +0 -0
- {parsl-2025.9.1.data → parsl-2025.9.15.data}/scripts/parsl_coprocess.py +0 -0
- {parsl-2025.9.1.data → parsl-2025.9.15.data}/scripts/process_worker_pool.py +0 -0
- {parsl-2025.9.1.dist-info → parsl-2025.9.15.dist-info}/LICENSE +0 -0
- {parsl-2025.9.1.dist-info → parsl-2025.9.15.dist-info}/WHEEL +0 -0
- {parsl-2025.9.1.dist-info → parsl-2025.9.15.dist-info}/entry_points.txt +0 -0
- {parsl-2025.9.1.dist-info → parsl-2025.9.15.dist-info}/top_level.txt +0 -0
|
@@ -56,6 +56,7 @@ class Interchange:
|
|
|
56
56
|
cert_dir: Optional[str],
|
|
57
57
|
manager_selector: ManagerSelector,
|
|
58
58
|
run_id: str,
|
|
59
|
+
_check_python_mismatch: bool,
|
|
59
60
|
) -> None:
|
|
60
61
|
"""
|
|
61
62
|
Parameters
|
|
@@ -99,6 +100,11 @@ class Interchange:
|
|
|
99
100
|
|
|
100
101
|
cert_dir : str | None
|
|
101
102
|
Path to the certificate directory.
|
|
103
|
+
|
|
104
|
+
_check_python_mismatch : bool
|
|
105
|
+
If True, the interchange and worker managers must run the same version of
|
|
106
|
+
Python. Running different versions can cause inter-process communication
|
|
107
|
+
errors, so proceed with caution.
|
|
102
108
|
"""
|
|
103
109
|
self.cert_dir = cert_dir
|
|
104
110
|
self.logdir = logdir
|
|
@@ -126,6 +132,7 @@ class Interchange:
|
|
|
126
132
|
logger.info("Connected to client")
|
|
127
133
|
|
|
128
134
|
self.run_id = run_id
|
|
135
|
+
self._check_python_mismatch = _check_python_mismatch
|
|
129
136
|
|
|
130
137
|
self.hub_address = hub_address
|
|
131
138
|
self.hub_zmq_port = hub_zmq_port
|
|
@@ -222,35 +229,29 @@ class Interchange:
|
|
|
222
229
|
reply = self.connected_block_history
|
|
223
230
|
|
|
224
231
|
elif command_req == "WORKERS":
|
|
225
|
-
|
|
226
|
-
for manager in self._ready_managers.values():
|
|
227
|
-
num_workers += manager['worker_count']
|
|
228
|
-
reply = num_workers
|
|
232
|
+
reply = sum(m['worker_count'] for m in self._ready_managers.values())
|
|
229
233
|
|
|
230
234
|
elif command_req == "MANAGERS":
|
|
231
235
|
reply = []
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
'python_version': m['python_version'],
|
|
247
|
-
'draining': m['draining']}
|
|
236
|
+
now = time.time()
|
|
237
|
+
for manager_id, m in self._ready_managers.items():
|
|
238
|
+
idle_duration = now - (m['idle_since'] or now)
|
|
239
|
+
resp = {
|
|
240
|
+
'manager': manager_id.decode('utf-8'),
|
|
241
|
+
'block_id': m['block_id'],
|
|
242
|
+
'worker_count': m['worker_count'],
|
|
243
|
+
'tasks': len(m['tasks']),
|
|
244
|
+
'idle_duration': idle_duration,
|
|
245
|
+
'active': m['active'],
|
|
246
|
+
'parsl_version': m['parsl_version'],
|
|
247
|
+
'python_version': m['python_version'],
|
|
248
|
+
'draining': m['draining']
|
|
249
|
+
}
|
|
248
250
|
reply.append(resp)
|
|
249
251
|
|
|
250
252
|
elif command_req == "MANAGERS_PACKAGES":
|
|
251
253
|
reply = {}
|
|
252
|
-
for manager_id in self._ready_managers:
|
|
253
|
-
m = self._ready_managers[manager_id]
|
|
254
|
+
for manager_id, m in self._ready_managers.items():
|
|
254
255
|
manager_id_str = manager_id.decode('utf-8')
|
|
255
256
|
reply[manager_id_str] = m["packages"]
|
|
256
257
|
|
|
@@ -402,7 +403,9 @@ class Interchange:
|
|
|
402
403
|
logger.info(f'Registration info for manager {manager_id!r}: {meta}')
|
|
403
404
|
self._send_monitoring_info(monitoring_radio, new_rec)
|
|
404
405
|
|
|
405
|
-
|
|
406
|
+
python_mismatch: bool = ix_minor_py != mgr_minor_py
|
|
407
|
+
parsl_mismatch: bool = ix_parsl_v != mgr_parsl_v
|
|
408
|
+
if parsl_mismatch or (self._check_python_mismatch and python_mismatch):
|
|
406
409
|
kill_event.set()
|
|
407
410
|
vm_exc = VersionMismatch(
|
|
408
411
|
f"py.v={ix_minor_py} parsl.v={ix_parsl_v}",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: parsl
|
|
3
|
-
Version: 2025.9.
|
|
3
|
+
Version: 2025.9.15
|
|
4
4
|
Summary: Simple data dependent workflows in Python
|
|
5
5
|
Home-page: https://github.com/Parsl/parsl
|
|
6
|
-
Download-URL: https://github.com/Parsl/parsl/archive/2025.09.
|
|
6
|
+
Download-URL: https://github.com/Parsl/parsl/archive/2025.09.15.tar.gz
|
|
7
7
|
Author: The Parsl Team
|
|
8
8
|
Author-email: parsl@googlegroups.com
|
|
9
9
|
License: Apache 2.0
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
parsl/__init__.py,sha256=
|
|
1
|
+
parsl/__init__.py,sha256=QaS0vxlxGVp2UYEIGcYYiUMOZJKSrQOXFR2X_KozL88,1641
|
|
2
2
|
parsl/addresses.py,sha256=z5GnIWdbzz4klRiMZtX8XmRT7OP8dJYvAk8RIKD2kzI,5290
|
|
3
3
|
parsl/config.py,sha256=p5HQoxLj5aMagUAYfngcXG2kw0s6SJoc6u7vH2sVhPU,9635
|
|
4
|
-
parsl/curvezmq.py,sha256=
|
|
4
|
+
parsl/curvezmq.py,sha256=QQh-Wp7CxvKxExIkjRkwt_UB5ooglkkuOgjEc7SF0fE,6582
|
|
5
5
|
parsl/errors.py,sha256=SzINzQFZDBDbj9l-DPQznD0TbGkNhHIRAPkcBCogf_A,1019
|
|
6
6
|
parsl/log_utils.py,sha256=7L3uzvK9ew11pj5D25us-Hs12QTL_jwXNs1LL8dZhOI,3559
|
|
7
|
-
parsl/multiprocessing.py,sha256=
|
|
7
|
+
parsl/multiprocessing.py,sha256=xqieTLko3DrHykCqqSHQszMwd8ORYllrgz6Qc_PsHCE,2112
|
|
8
8
|
parsl/process_loggers.py,sha256=uQ7Gd0W72Jz7rrcYlOMfLsAEhkRltxXJL2MgdduJjEw,1136
|
|
9
9
|
parsl/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
parsl/utils.py,sha256=smVYTusMoYUTD5N9OxTW5bh6o2iioh0NnfjrBAj8zYk,14452
|
|
11
|
-
parsl/version.py,sha256=
|
|
11
|
+
parsl/version.py,sha256=04n0OtGcsR5PaVZquDBsldk0-OzzWFiR5c7fgxx8s94,131
|
|
12
12
|
parsl/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
13
|
parsl/app/app.py,sha256=0gbM4AH2OtFOLsv07I5nglpElcwMSOi-FzdZZfrk7So,8532
|
|
14
14
|
parsl/app/bash.py,sha256=jm2AvePlCT9DZR7H_4ANDWxatp5dN_22FUlT_gWhZ-g,5528
|
|
@@ -55,10 +55,10 @@ parsl/data_provider/staging.py,sha256=ZDZuuFg38pjUStegKPcvPsfGp3iMeReMzfU6DSwtJj
|
|
|
55
55
|
parsl/data_provider/zip.py,sha256=S4kVuH9lxAegRURYbvIUR7EYYBOccyslaqyCrVWUBhw,4497
|
|
56
56
|
parsl/dataflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
57
|
parsl/dataflow/dependency_resolvers.py,sha256=Om8Dgh7a0ZwgXAc6TlhxLSzvxXHDlNNV1aBNiD3JTNY,3325
|
|
58
|
-
parsl/dataflow/dflow.py,sha256=
|
|
58
|
+
parsl/dataflow/dflow.py,sha256=jn6gzrvz1XHpxX6SZYsh8Ics9ZUG6n8Mhd-bB2gOqow,62940
|
|
59
59
|
parsl/dataflow/errors.py,sha256=daVfr2BWs1zRsGD6JtosEMttWHvK1df1Npiu_MUvFKg,3998
|
|
60
60
|
parsl/dataflow/futures.py,sha256=08LuP-HFiHBIZmeKCjlsazw_WpQ5fwevrU2_WbidkYw,6080
|
|
61
|
-
parsl/dataflow/memoization.py,sha256=
|
|
61
|
+
parsl/dataflow/memoization.py,sha256=dJRISYd3pXDH8NQzU0HW4jDH4rCfBLSs48d2SrbX1uA,12206
|
|
62
62
|
parsl/dataflow/rundirs.py,sha256=JZdzybVGubY35jL2YiKcDo65ZmRl1WyOApc8ajYxztc,1087
|
|
63
63
|
parsl/dataflow/states.py,sha256=hV6mfv-y4A6xrujeQglcomnfEs7y3Xm2g6JFwC6dvgQ,2612
|
|
64
64
|
parsl/dataflow/taskrecord.py,sha256=qIW7T6hn9dYTuNPdUura3HQwwUpUJACwPP5REm5COf4,3042
|
|
@@ -75,8 +75,8 @@ parsl/executors/flux/executor.py,sha256=NLdjOli5VjrSdEfyWbfqKN_8APvFkp_qFCouS_9N
|
|
|
75
75
|
parsl/executors/flux/flux_instance_manager.py,sha256=5T3Rp7ZM-mlT0Pf0Gxgs5_YmnaPrSF9ec7zvRfLfYJw,2129
|
|
76
76
|
parsl/executors/high_throughput/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
77
|
parsl/executors/high_throughput/errors.py,sha256=k2XuvvFdUfNs2foHFnxmS-BToRMfdXpYEa4EF3ELKq4,1554
|
|
78
|
-
parsl/executors/high_throughput/executor.py,sha256=
|
|
79
|
-
parsl/executors/high_throughput/interchange.py,sha256=
|
|
78
|
+
parsl/executors/high_throughput/executor.py,sha256=TpossRt_No5AwpJsg5tNQrkyUSVb1FzflPqgVo7AzsI,40407
|
|
79
|
+
parsl/executors/high_throughput/interchange.py,sha256=DYIZkgYxliW0iNwhF8P6yMv_24KQm9Vaz3OYhzRvpyw,26152
|
|
80
80
|
parsl/executors/high_throughput/manager_record.py,sha256=ZMsqFxvreGLRXAw3N-JnODDa9Qfizw2tMmcBhm4lco4,490
|
|
81
81
|
parsl/executors/high_throughput/manager_selector.py,sha256=UKcUE6v0tO7PDMTThpKSKxVpOpOUilxDL7UbNgpZCxo,2116
|
|
82
82
|
parsl/executors/high_throughput/monitoring_info.py,sha256=HC0drp6nlXQpAop5PTUKNjdXMgtZVvrBL0JzZJebPP4,298
|
|
@@ -85,7 +85,7 @@ parsl/executors/high_throughput/mpi_prefix_composer.py,sha256=DmpKugANNa1bdYlqQB
|
|
|
85
85
|
parsl/executors/high_throughput/mpi_resource_management.py,sha256=73bTW2ZbHRfcrPN318cyjiqDN50AM1cOCQqUGJDIlBg,8199
|
|
86
86
|
parsl/executors/high_throughput/probe.py,sha256=QlBFwSSxMmtH-Aa2JEvCzQLddsbWZluMUxq5ypLR51E,3831
|
|
87
87
|
parsl/executors/high_throughput/process_worker_pool.py,sha256=v-YesFPRU4-Zctyf-N8Tb9YCEqmDNNUaW66YsGsQcxo,40538
|
|
88
|
-
parsl/executors/high_throughput/zmq_pipes.py,sha256=
|
|
88
|
+
parsl/executors/high_throughput/zmq_pipes.py,sha256=fANpmyvBetp0_b-qsI59yqBW8ank-PDNqThuQ3JeVl4,8183
|
|
89
89
|
parsl/executors/radical/__init__.py,sha256=CKbtV2numw5QvgIBq1htMUrt9TqDCIC2zifyf2svTNU,186
|
|
90
90
|
parsl/executors/radical/executor.py,sha256=e3XS4mvug1uJ6wrt4UH6hBgfbDbc-mQH3xUW2ZmBsMQ,22888
|
|
91
91
|
parsl/executors/radical/rpex_resources.py,sha256=Q7-0u3K447LBCe2y7mVcdw6jqWI7SdPXxCKhkr6FoRQ,5139
|
|
@@ -116,10 +116,10 @@ parsl/launchers/base.py,sha256=CblcvPTJiu-MNLWaRtFe29SZQ0BpTOlaY8CGcHdlHIE,538
|
|
|
116
116
|
parsl/launchers/errors.py,sha256=8YMV_CHpBNVa4eXkGE4x5DaFQlZkDCRCHmBktYcY6TA,467
|
|
117
117
|
parsl/launchers/launchers.py,sha256=cQsNsHuCOL_nQTjPXf0--YsgsDoMoJ77bO1Wt4ncLjs,15134
|
|
118
118
|
parsl/monitoring/__init__.py,sha256=0ywNz6i0lM1xo_7_BIxhETDGeVd2C_0wwD7qgeaMR4c,83
|
|
119
|
-
parsl/monitoring/db_manager.py,sha256=
|
|
119
|
+
parsl/monitoring/db_manager.py,sha256=VZrDS2xr6HaYxLN9ueLbFJiWucrzjOyIc75tf8FeJ9c,33207
|
|
120
120
|
parsl/monitoring/errors.py,sha256=VQNIMoo5Ro8GlJ-Ad-6q-YA0y6sTc-IibSdNXZC-GuU,306
|
|
121
121
|
parsl/monitoring/message_type.py,sha256=Khn88afNxcOIciKiCK4GLnn90I5BlRTiOL3zK-P07yQ,401
|
|
122
|
-
parsl/monitoring/monitoring.py,sha256
|
|
122
|
+
parsl/monitoring/monitoring.py,sha256=-kr4cq1AGiXHHfi0XUJ-NPk0D_rz-fS-T-PD8DHt7Wo,6602
|
|
123
123
|
parsl/monitoring/remote.py,sha256=Kki5sTnZwHUIFMJh99w11vQrKxiHGO7ElBydwAIctbY,12636
|
|
124
124
|
parsl/monitoring/types.py,sha256=oOCrzv-ab-_rv4pb8o58Sdb8G_RGp1aZriRbdf9zBEk,339
|
|
125
125
|
parsl/monitoring/queries/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -131,9 +131,9 @@ parsl/monitoring/radios/filesystem_router.py,sha256=_Sf1M00oUn-gBvq-P7Ua1Ws5_SbP
|
|
|
131
131
|
parsl/monitoring/radios/htex.py,sha256=R3Ce7fxiVtQFxn0EgJ-9wKiMJ_xCJml02b0rXnxORXQ,1870
|
|
132
132
|
parsl/monitoring/radios/multiprocessing.py,sha256=4ua-6kmdQ6XiXzPBM8DjkFXy1LP5x0sERxeaR-WyKHc,1308
|
|
133
133
|
parsl/monitoring/radios/udp.py,sha256=vrcl-yHWQ9YpOw6cmAQgczlNAUr_Um1y-GLye-9j-7s,3499
|
|
134
|
-
parsl/monitoring/radios/udp_router.py,sha256=
|
|
134
|
+
parsl/monitoring/radios/udp_router.py,sha256=l4VTEIT48HWDXwjNzWl-Yp-7iY7EiAS-lwkFxm8TK-c,8987
|
|
135
135
|
parsl/monitoring/radios/zmq.py,sha256=fhoHp9ylhf-D3eTJb2aSHRsuic8-FJ_oRNGnniGkCAI,592
|
|
136
|
-
parsl/monitoring/radios/zmq_router.py,sha256=
|
|
136
|
+
parsl/monitoring/radios/zmq_router.py,sha256=upX6gLVSRHZYxnknmpRjAb1kUnF2wHuT_uHTc2l_LLw,7826
|
|
137
137
|
parsl/monitoring/visualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
138
|
parsl/monitoring/visualization/app.py,sha256=xMeRlAnzl5lHddAOdSBcqY3D5lmOYw3Z3Z2_YyoVwnw,1425
|
|
139
139
|
parsl/monitoring/visualization/models.py,sha256=C7CcF6w6PhtrdvDX9VgDH-aSrpLfvYU1fJ4-HDUeFVQ,5138
|
|
@@ -199,9 +199,8 @@ parsl/serialize/proxystore.py,sha256=o-ha9QAvVhbN8y9S1itk3W0O75eyHYZw2AvB2xu5_Lg
|
|
|
199
199
|
parsl/tests/__init__.py,sha256=VTtJzOzz_x6fWNh8IOnsgFqVbdiJShi2AZH21mcmID4,204
|
|
200
200
|
parsl/tests/callables_helper.py,sha256=ceP1YYsNtrZgKT6MAIvpgdccEjQ_CpFEOnZBGHKGOx0,30
|
|
201
201
|
parsl/tests/conftest.py,sha256=PqXpj1AxpPQrcKXJBQ83WIF8TIzZ4-YhAjKQPahE1Tw,15618
|
|
202
|
-
parsl/tests/test_aalst_patterns.py,sha256=lNIxb7nIgh1yX7hR2fr_ck_mxYJxx8ASKK9zHUVqPno,9614
|
|
203
202
|
parsl/tests/test_callables.py,sha256=97vrIF1_hfDGd81FM1bhR6FemZMWFcALrH6pVHMTCt8,1974
|
|
204
|
-
parsl/tests/test_curvezmq.py,sha256=
|
|
203
|
+
parsl/tests/test_curvezmq.py,sha256=CmLQforq2WPYFC5OsOGh5a9ujiEFKygktZi1mpOn3XU,11239
|
|
205
204
|
parsl/tests/test_execute_task.py,sha256=lVZEcRocBTQHOQNEp8Gq858lQiYsTb6uI2jNxEUVog8,816
|
|
206
205
|
parsl/tests/test_flux.py,sha256=TxkVPjksl1usdE9Y6y2FYhdOOmYFTlbEv_V9WnvF41A,5098
|
|
207
206
|
parsl/tests/test_summary.py,sha256=x1RfWCFLzHjBw2ukwoRZPW1LFCKiwDmxx86ES-6yGRA,552
|
|
@@ -258,8 +257,6 @@ parsl/tests/manual_tests/test_regression_220.py,sha256=Jo2puWt1W0r1rJfaJFgd2ZPgR
|
|
|
258
257
|
parsl/tests/manual_tests/test_worker_count.py,sha256=Cv8nAWMXAREiiGEBUr_8JyI87ffp8JGAyDqVXzcjX_0,2072
|
|
259
258
|
parsl/tests/site_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
260
259
|
parsl/tests/site_tests/site_config_selector.py,sha256=cpToBNdvHZPOxYfiFpGVuydSMlmxfeo27N3VEjRFLgw,1815
|
|
261
|
-
parsl/tests/site_tests/test_provider.py,sha256=o9pUn_qzQnUSnuh-OQGBec_dNrmOVTD79-i27p_K-N8,2696
|
|
262
|
-
parsl/tests/site_tests/test_site.py,sha256=kykFelM7Z78EF0rmS2NRaN-qhXBE9vaSflUGtps-h60,1946
|
|
263
260
|
parsl/tests/sites/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
264
261
|
parsl/tests/sites/test_affinity.py,sha256=CCfYxSkpoznREGV2-K2As4YbsMY7bCiYqRMZkUp-zO0,1500
|
|
265
262
|
parsl/tests/sites/test_concurrent.py,sha256=ybHOnIsRyYs2tFPggv2ivRVoqH8Ts4PTEvb4IN3Obv8,1219
|
|
@@ -284,7 +281,7 @@ parsl/tests/test_bash_apps/test_std_uri.py,sha256=CvAt8BUhNl2pA5chq9YyhkD6eo2IUH
|
|
|
284
281
|
parsl/tests/test_bash_apps/test_stdout.py,sha256=lNBzCJGst0IhKaSl8CM8-mTJ5eaK7hTlZ8gY-M2TDBU,3244
|
|
285
282
|
parsl/tests/test_checkpointing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
286
283
|
parsl/tests/test_checkpointing/test_periodic.py,sha256=nfMgrG7sZ8rkMu6iOHS6lp_iTU4IsOyQLQ2Gur_FMmE,1509
|
|
287
|
-
parsl/tests/test_checkpointing/test_python_checkpoint_1.py,sha256=
|
|
284
|
+
parsl/tests/test_checkpointing/test_python_checkpoint_1.py,sha256=bi7c6fy6P7jmrMQkQP5me-LTfwVwJGq1O9BjnmdDIKc,715
|
|
288
285
|
parsl/tests/test_checkpointing/test_python_checkpoint_2.py,sha256=Q_cXeAVz_dJuDDeiemUIGd-wmb7aCY3ggpqYjRRhHRc,1089
|
|
289
286
|
parsl/tests/test_checkpointing/test_regression_232.py,sha256=AsI6AJ0DcFaefAbEY9qWa41ER0VX-4yLuIdlgvBw360,2637
|
|
290
287
|
parsl/tests/test_checkpointing/test_regression_233.py,sha256=jii7BKuygK6KMIGtg4IeBjix7Z28cYhv57rE9ixoXMU,1774
|
|
@@ -295,12 +292,10 @@ parsl/tests/test_docs/test_from_slides.py,sha256=KcULKUfmKEkSMzSL1HcyEhAF_OoDScu
|
|
|
295
292
|
parsl/tests/test_docs/test_kwargs.py,sha256=A8kmPIGoM0E9mN8TcAeA93UbX62etEk6p3I18N5nLpk,963
|
|
296
293
|
parsl/tests/test_docs/test_tutorial_1.py,sha256=2k_owiw39HJcm1i3YGYna9cNnMS0hpnFbEEdhP2xpxU,1437
|
|
297
294
|
parsl/tests/test_docs/test_workflow1.py,sha256=UrU9axV_cXqhD2GEQ_riJ34icJyNxqJ28eVT2BpG8kQ,976
|
|
298
|
-
parsl/tests/test_docs/test_workflow2.py,sha256=qeI789Qr9qtSG1DGhyt-Y_3KUcPltQfIyQVeZ73DeX4,1149
|
|
299
295
|
parsl/tests/test_docs/test_workflow4.py,sha256=PfOVDx5v_NtwDvg-ccC3A3SVM-SF0Pcybx2c7BF9Jdw,1159
|
|
300
296
|
parsl/tests/test_error_handling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
301
297
|
parsl/tests/test_error_handling/test_fail.py,sha256=xx4TGWfL7le4cQ9nvnUkrlmKQJkskhD0l_3W1xwZSEI,282
|
|
302
298
|
parsl/tests/test_error_handling/test_python_walltime.py,sha256=rdmGZHIkuann2Njt3i62odKJ0FaODGr7-L96rOXNVYg,950
|
|
303
|
-
parsl/tests/test_error_handling/test_rand_fail.py,sha256=crFg4GmwdDpvx49_7w5Xt2P7H2R_V9f6i1Ar-QkASuU,3864
|
|
304
299
|
parsl/tests/test_error_handling/test_resource_spec.py,sha256=dyuzMkS3M_BmZUbu1mF7yojwkJehDbdFvphNlYwU9yM,1458
|
|
305
300
|
parsl/tests/test_error_handling/test_retries.py,sha256=zJ9D2hrvXQURnK2OIf5LfQFcSDVZ8rhdpp6peGccY7s,2372
|
|
306
301
|
parsl/tests/test_error_handling/test_retry_handler.py,sha256=8fMHffMBLhRyNreIqkrwamx9TYRZ498uVYNlkcbAoLU,1407
|
|
@@ -312,22 +307,23 @@ parsl/tests/test_htex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
312
307
|
parsl/tests/test_htex/test_basic.py,sha256=OCX4hbXLqxRakjt_pB9F68qJJv8qGOTkpiIzjHkSq1k,451
|
|
313
308
|
parsl/tests/test_htex/test_block_manager_selector_unit.py,sha256=BeSj8jDeBHUEJVMVXwf0KLBhZ_pnsBEkG4vacldBfEY,737
|
|
314
309
|
parsl/tests/test_htex/test_command_client_timeout.py,sha256=5tBViUhPT1ejnDDztTcEA690aA2BUxnPY0FpMf-1AXE,2008
|
|
310
|
+
parsl/tests/test_htex/test_command_concurrency_regression_1321.py,sha256=_Bx7vRKOwyVEnJMnV7eHa1XjNWECWPohGY6eE2tQ9Tk,1251
|
|
315
311
|
parsl/tests/test_htex/test_connected_blocks.py,sha256=gaXZSr__pIaLvKY6rF-4r1p_4dO5V28gtxHLT-psEFg,1640
|
|
316
312
|
parsl/tests/test_htex/test_cpu_affinity_explicit.py,sha256=DVHrRCskDbJIrfB5YSi3ZSbfR4WzijA46aZfZzjNcrU,1382
|
|
317
313
|
parsl/tests/test_htex/test_disconnected_blocks.py,sha256=3V1Ol9gMS6knjLTgIjB5GrunRSp4ANsJ_2vAvpyMR6c,1858
|
|
318
314
|
parsl/tests/test_htex/test_disconnected_blocks_failing_provider.py,sha256=eOdipRpKMOkWAXB3UtY1UjqTiwfNs_csNLve8vllG_M,2040
|
|
319
315
|
parsl/tests/test_htex/test_drain.py,sha256=gYA7qzbv5ozox3clVdW0rlxAzwa_f_P0kqsAez3tIfk,2370
|
|
320
316
|
parsl/tests/test_htex/test_htex.py,sha256=J1uEGezic8ziPPZsQwfK9iNiTJ53NqXMhIg9CUunjZw,4901
|
|
321
|
-
parsl/tests/test_htex/test_interchange_exit_bad_registration.py,sha256=
|
|
317
|
+
parsl/tests/test_htex/test_interchange_exit_bad_registration.py,sha256=VWe-kj7kyvQcdUiAh3b2cZn8KWwHWIpel7bVa4XwlP0,4544
|
|
322
318
|
parsl/tests/test_htex/test_manager_failure.py,sha256=N-obuSZ8f7XA_XcddoN2LWKSVtpKUZvTHb7BFelS3iQ,1143
|
|
323
319
|
parsl/tests/test_htex/test_manager_selector_by_block.py,sha256=VQqSE6MDhGpDSjShGUTbj7l9Ahuj2tC9qD--o4puF44,1310
|
|
324
320
|
parsl/tests/test_htex/test_managers_command.py,sha256=SCwkfyGB-Udgu5L2yDMpR5bsaT-aNjNkiXxtuRb25DI,1622
|
|
325
321
|
parsl/tests/test_htex/test_missing_worker.py,sha256=gyp5i7_t-JHyJGtz_eXZKKBY5w8oqLOIxO6cJgGJMtQ,745
|
|
326
322
|
parsl/tests/test_htex/test_multiple_disconnected_blocks.py,sha256=2vXZoIx4NuAWYuiNoL5Gxr85w72qZ7Kdb3JGh0FufTg,1867
|
|
327
|
-
parsl/tests/test_htex/test_priority_queue.py,sha256=
|
|
323
|
+
parsl/tests/test_htex/test_priority_queue.py,sha256=cxeM3WNO6hm2FRST3C_qCfejzXeYZMdim4ztRCwJMw8,2177
|
|
328
324
|
parsl/tests/test_htex/test_resource_spec_validation.py,sha256=ZXW02jDd1rNxjBLh1jHyiz31zNoB9JzDw94aWllXFd4,1102
|
|
329
325
|
parsl/tests/test_htex/test_worker_failure.py,sha256=Uz-RHI-LK78FMjXUvrUFmo4iYfmpDVBUcBxxRb3UG9M,603
|
|
330
|
-
parsl/tests/test_htex/test_zmq_binding.py,sha256=
|
|
326
|
+
parsl/tests/test_htex/test_zmq_binding.py,sha256=SmX_63vvXKnzWISBr8HnJCrRqubx7K0blvgjq4Px2gc,4391
|
|
331
327
|
parsl/tests/test_monitoring/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
332
328
|
parsl/tests/test_monitoring/test_app_names.py,sha256=A-mOMCVhZDnUyJp32fsTUkHdcyval8o7WPEWacDkbD4,2208
|
|
333
329
|
parsl/tests/test_monitoring/test_basic.py,sha256=qyKKzjmoYwQC485Xk4QHqU3FvVILpuIjnJThMOl7pq4,6316
|
|
@@ -379,6 +375,7 @@ parsl/tests/test_python_apps/test_memoize_1.py,sha256=E_VQAaykFKT_G7yRUWOhXxfOIC
|
|
|
379
375
|
parsl/tests/test_python_apps/test_memoize_2.py,sha256=uG9zG9j3ap1FqeJ8aB0Gj_dX191pN3dxWXeQ-asxPgU,553
|
|
380
376
|
parsl/tests/test_python_apps/test_memoize_4.py,sha256=CdK_vHW5s-phi5KPqcAQm_BRh8xek91GVGeQRjfJ4Bk,569
|
|
381
377
|
parsl/tests/test_python_apps/test_memoize_bad_id_for_memo.py,sha256=5v25zdU6koXexRTkccj_3sSSdXqHdsU8ZdNrnZ3ONZU,1436
|
|
378
|
+
parsl/tests/test_python_apps/test_memoize_exception.py,sha256=GdvB5XFnW5pbkFMETzxWC3nIKo13Pm0benq9u2UnM1E,1232
|
|
382
379
|
parsl/tests/test_python_apps/test_memoize_ignore_args.py,sha256=u-s6r6Nxpvu_x_Uwputi_QIC1tUnzakDF-LSKiEtl9Q,739
|
|
383
380
|
parsl/tests/test_python_apps/test_memoize_joinapp.py,sha256=htiNmE0PGVA7_pdwRcZ9Wv5Fh6Bph6EdPmywJi8m1oM,435
|
|
384
381
|
parsl/tests/test_python_apps/test_outputs.py,sha256=5ai9hz5jJEqZxptuFU-E3TObTuBpU9i9HXm1gt21GDY,645
|
|
@@ -398,7 +395,6 @@ parsl/tests/test_regression/test_221.py,sha256=jOS0EVu_2sbh10eg5hnivPvhNt0my_50v
|
|
|
398
395
|
parsl/tests/test_regression/test_226.py,sha256=tVqGAU99RRQqz9KuMgeLVoddot2pRqG2y4daW44RrlE,1110
|
|
399
396
|
parsl/tests/test_regression/test_2652.py,sha256=R_ZoX7Vgz4H2ionhjm_KWFW-vWt_MlgWV_zdTsT68M0,848
|
|
400
397
|
parsl/tests/test_regression/test_69a.py,sha256=sRkMT95b7WvFAK1hUy7eNwKnzFNqaX9qESdNmoh0rAo,1902
|
|
401
|
-
parsl/tests/test_regression/test_854.py,sha256=acFLEciwL0_ZHq6lBtFHRMTEHaPpAf3L4q4_f1LnAAU,1884
|
|
402
398
|
parsl/tests/test_regression/test_97_parallelism_0.py,sha256=Fe58KFhQpZuU982IP9ZSpKBb_Jpftv9pJjH73f8_ec8,1592
|
|
403
399
|
parsl/tests/test_regression/test_98.py,sha256=E7dituuonKN5uWocZkJYZlaE5x5rDM4MZlv2PloAKzY,452
|
|
404
400
|
parsl/tests/test_scaling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -456,13 +452,13 @@ parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
456
452
|
parsl/usage_tracking/api.py,sha256=iaCY58Dc5J4UM7_dJzEEs871P1p1HdxBMtNGyVdzc9g,1821
|
|
457
453
|
parsl/usage_tracking/levels.py,sha256=xbfzYEsd55KiZJ-mzNgPebvOH4rRHum04hROzEf41tU,291
|
|
458
454
|
parsl/usage_tracking/usage.py,sha256=hbMo5BYgIWqMcFWqN-HYP1TbwNrTonpv-usfwnCFJKY,9212
|
|
459
|
-
parsl-2025.9.
|
|
460
|
-
parsl-2025.9.
|
|
461
|
-
parsl-2025.9.
|
|
462
|
-
parsl-2025.9.
|
|
463
|
-
parsl-2025.9.
|
|
464
|
-
parsl-2025.9.
|
|
465
|
-
parsl-2025.9.
|
|
466
|
-
parsl-2025.9.
|
|
467
|
-
parsl-2025.9.
|
|
468
|
-
parsl-2025.9.
|
|
455
|
+
parsl-2025.9.15.data/scripts/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
|
|
456
|
+
parsl-2025.9.15.data/scripts/interchange.py,sha256=ZAX7oUrTesSbXSu771fBN1Vm-7eAbMvfp5SjLRggt8E,26139
|
|
457
|
+
parsl-2025.9.15.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
|
|
458
|
+
parsl-2025.9.15.data/scripts/process_worker_pool.py,sha256=-5VLVjeab6oROulx7OwI9tdNNHd6uap45I1jltm-UDc,40524
|
|
459
|
+
parsl-2025.9.15.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
460
|
+
parsl-2025.9.15.dist-info/METADATA,sha256=izlhMELBLUU4kbZ6vS0RigWGAjqv--7yoDthEFkwkW4,4055
|
|
461
|
+
parsl-2025.9.15.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
462
|
+
parsl-2025.9.15.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
|
|
463
|
+
parsl-2025.9.15.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
|
|
464
|
+
parsl-2025.9.15.dist-info/RECORD,,
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import argparse
|
|
2
|
-
import logging
|
|
3
|
-
import time
|
|
4
|
-
|
|
5
|
-
import pytest
|
|
6
|
-
|
|
7
|
-
import parsl
|
|
8
|
-
from parsl.app.app import python_app # , bash_app
|
|
9
|
-
from parsl.jobs.states import JobState
|
|
10
|
-
from parsl.tests.site_tests.site_config_selector import fresh_config
|
|
11
|
-
|
|
12
|
-
logger = logging.getLogger(__name__)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@python_app
|
|
16
|
-
def platform(sleep=10, stdout=None):
|
|
17
|
-
import time
|
|
18
|
-
time.sleep(sleep)
|
|
19
|
-
return True
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
@pytest.mark.local
|
|
23
|
-
@pytest.mark.skip("This test cannot run on sites which cannot be identified by site_config_selector")
|
|
24
|
-
def test_provider():
|
|
25
|
-
""" Provider scaling
|
|
26
|
-
"""
|
|
27
|
-
logger.info("Starting test_provider")
|
|
28
|
-
config = fresh_config()
|
|
29
|
-
name = config.executors[0].label
|
|
30
|
-
parsl.load(config)
|
|
31
|
-
|
|
32
|
-
dfk = parsl.dfk()
|
|
33
|
-
logger.info("Trying to get executor : {}".format(name))
|
|
34
|
-
|
|
35
|
-
x = platform(sleep=0)
|
|
36
|
-
logger.info("Result is {}".format(x.result()))
|
|
37
|
-
|
|
38
|
-
executor = dfk.executors[name]
|
|
39
|
-
provider = dfk.executors[name].provider
|
|
40
|
-
|
|
41
|
-
# At this point we should have 1 job
|
|
42
|
-
_, current_jobs = executor._get_block_and_job_ids()
|
|
43
|
-
assert len(current_jobs) == 1, "Expected 1 job at init, got {}".format(len(current_jobs))
|
|
44
|
-
|
|
45
|
-
logger.info("Getting provider status (1)")
|
|
46
|
-
status = provider.status(current_jobs)
|
|
47
|
-
logger.info("Got provider status")
|
|
48
|
-
assert status[0].state == JobState.RUNNING, "Expected job to be in state RUNNING"
|
|
49
|
-
|
|
50
|
-
# Scale down to 0
|
|
51
|
-
scale_in_blocks = executor.scale_in(blocks=1)
|
|
52
|
-
logger.info("Now sleeping 60 seconds")
|
|
53
|
-
time.sleep(60)
|
|
54
|
-
logger.info("Sleep finished")
|
|
55
|
-
logger.info("Getting provider status (2)")
|
|
56
|
-
status = executor.status()
|
|
57
|
-
logger.info("Got executor status")
|
|
58
|
-
logger.info("Block status: {}".format(status))
|
|
59
|
-
assert status[scale_in_blocks[0]].terminal is True, "Terminal state"
|
|
60
|
-
logger.info("Job in terminal state")
|
|
61
|
-
|
|
62
|
-
_, current_jobs = executor._get_block_and_job_ids()
|
|
63
|
-
# PR 1952 stoped removing scale_in blocks from self.blocks_to_job_id
|
|
64
|
-
# A new PR will handle removing blocks from self.block
|
|
65
|
-
# this includes failed/completed/canceled blocks
|
|
66
|
-
assert len(current_jobs) == 1, "Expected current_jobs == 1"
|
|
67
|
-
dfk.cleanup()
|
|
68
|
-
parsl.clear()
|
|
69
|
-
logger.info("Ended test_provider")
|
|
70
|
-
return True
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if __name__ == '__main__':
|
|
74
|
-
|
|
75
|
-
parser = argparse.ArgumentParser()
|
|
76
|
-
parser.add_argument("-c", "--count", default="4",
|
|
77
|
-
help="Count of apps to launch")
|
|
78
|
-
parser.add_argument("-t", "--time", default="60",
|
|
79
|
-
help="Sleep time for each app")
|
|
80
|
-
|
|
81
|
-
parser.add_argument("-d", "--debug", action='store_true',
|
|
82
|
-
help="Count of apps to launch")
|
|
83
|
-
args = parser.parse_args()
|
|
84
|
-
|
|
85
|
-
if args.debug:
|
|
86
|
-
parsl.set_stream_logger()
|
|
87
|
-
|
|
88
|
-
x = test_provider()
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import argparse
|
|
2
|
-
|
|
3
|
-
import pytest
|
|
4
|
-
|
|
5
|
-
import parsl
|
|
6
|
-
from parsl.app.app import python_app
|
|
7
|
-
from parsl.tests.site_tests.site_config_selector import fresh_config
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@python_app
|
|
11
|
-
def platform(sleep=10, stdout=None):
|
|
12
|
-
import platform
|
|
13
|
-
import time
|
|
14
|
-
time.sleep(sleep)
|
|
15
|
-
return platform.uname()
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@pytest.mark.local
|
|
19
|
-
@pytest.mark.skip("The behaviour this test is testing is unclear: there is no guarantee that tasks will go to different nodes")
|
|
20
|
-
def test_platform(n=2, sleep_dur=10):
|
|
21
|
-
""" This should sleep to make sure that concurrent apps will go to different workers
|
|
22
|
-
on different nodes.
|
|
23
|
-
"""
|
|
24
|
-
config = fresh_config()
|
|
25
|
-
if config.executors[0].label == "htex_local":
|
|
26
|
-
return
|
|
27
|
-
|
|
28
|
-
parsl.load(fresh_config())
|
|
29
|
-
|
|
30
|
-
dfk = parsl.dfk()
|
|
31
|
-
name = list(dfk.executors.keys())[0]
|
|
32
|
-
print("Trying to get executor : ", name)
|
|
33
|
-
|
|
34
|
-
x = [platform(sleep=1) for i in range(2)]
|
|
35
|
-
print([i.result() for i in x])
|
|
36
|
-
|
|
37
|
-
print("Executor : ", dfk.executors[name])
|
|
38
|
-
print("Connected : ", dfk.executors[name].connected_workers())
|
|
39
|
-
print("Outstanding : ", dfk.executors[name].outstanding())
|
|
40
|
-
|
|
41
|
-
d = []
|
|
42
|
-
for i in range(0, n):
|
|
43
|
-
x = platform(sleep=sleep_dur)
|
|
44
|
-
d.append(x)
|
|
45
|
-
|
|
46
|
-
pinfo = set([i.result()for i in d])
|
|
47
|
-
assert len(pinfo) == 2, "Expected two nodes, instead got {}".format(pinfo)
|
|
48
|
-
|
|
49
|
-
print("Test passed")
|
|
50
|
-
|
|
51
|
-
dfk.cleanup()
|
|
52
|
-
parsl.clear()
|
|
53
|
-
return True
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if __name__ == '__main__':
|
|
57
|
-
|
|
58
|
-
parser = argparse.ArgumentParser()
|
|
59
|
-
parser.add_argument("-c", "--count", default="4",
|
|
60
|
-
help="Count of apps to launch")
|
|
61
|
-
parser.add_argument("-t", "--time", default="60",
|
|
62
|
-
help="Sleep time for each app")
|
|
63
|
-
parser.add_argument("-d", "--debug", action='store_true',
|
|
64
|
-
help="Count of apps to launch")
|
|
65
|
-
args = parser.parse_args()
|
|
66
|
-
|
|
67
|
-
if args.debug:
|
|
68
|
-
parsl.set_stream_logger()
|
|
69
|
-
|
|
70
|
-
x = test_platform(n=int(args.count), sleep_dur=int(args.time))
|