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.

Files changed (36) hide show
  1. parsl/__init__.py +0 -4
  2. parsl/curvezmq.py +0 -16
  3. parsl/dataflow/dflow.py +1 -3
  4. parsl/dataflow/memoization.py +0 -14
  5. parsl/executors/high_throughput/executor.py +8 -0
  6. parsl/executors/high_throughput/interchange.py +26 -23
  7. parsl/executors/high_throughput/zmq_pipes.py +29 -43
  8. parsl/monitoring/db_manager.py +8 -8
  9. parsl/monitoring/monitoring.py +2 -2
  10. parsl/monitoring/radios/udp_router.py +2 -2
  11. parsl/monitoring/radios/zmq_router.py +2 -2
  12. parsl/multiprocessing.py +0 -49
  13. parsl/tests/test_checkpointing/test_python_checkpoint_1.py +6 -3
  14. parsl/tests/test_curvezmq.py +0 -42
  15. parsl/tests/test_htex/test_command_concurrency_regression_1321.py +54 -0
  16. parsl/tests/test_htex/test_interchange_exit_bad_registration.py +2 -1
  17. parsl/tests/test_htex/test_priority_queue.py +1 -0
  18. parsl/tests/test_htex/test_zmq_binding.py +2 -1
  19. parsl/tests/test_python_apps/test_memoize_exception.py +41 -0
  20. parsl/version.py +1 -1
  21. {parsl-2025.9.1.data → parsl-2025.9.15.data}/scripts/interchange.py +26 -23
  22. {parsl-2025.9.1.dist-info → parsl-2025.9.15.dist-info}/METADATA +2 -2
  23. {parsl-2025.9.1.dist-info → parsl-2025.9.15.dist-info}/RECORD +30 -34
  24. parsl/tests/site_tests/test_provider.py +0 -88
  25. parsl/tests/site_tests/test_site.py +0 -70
  26. parsl/tests/test_aalst_patterns.py +0 -474
  27. parsl/tests/test_docs/test_workflow2.py +0 -42
  28. parsl/tests/test_error_handling/test_rand_fail.py +0 -171
  29. parsl/tests/test_regression/test_854.py +0 -62
  30. {parsl-2025.9.1.data → parsl-2025.9.15.data}/scripts/exec_parsl_function.py +0 -0
  31. {parsl-2025.9.1.data → parsl-2025.9.15.data}/scripts/parsl_coprocess.py +0 -0
  32. {parsl-2025.9.1.data → parsl-2025.9.15.data}/scripts/process_worker_pool.py +0 -0
  33. {parsl-2025.9.1.dist-info → parsl-2025.9.15.dist-info}/LICENSE +0 -0
  34. {parsl-2025.9.1.dist-info → parsl-2025.9.15.dist-info}/WHEEL +0 -0
  35. {parsl-2025.9.1.dist-info → parsl-2025.9.15.dist-info}/entry_points.txt +0 -0
  36. {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
- num_workers = 0
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
- for manager_id in self._ready_managers:
233
- m = self._ready_managers[manager_id]
234
- idle_since = m['idle_since']
235
- if idle_since is not None:
236
- idle_duration = time.time() - idle_since
237
- else:
238
- idle_duration = 0.0
239
- resp = {'manager': manager_id.decode('utf-8'),
240
- 'block_id': m['block_id'],
241
- 'worker_count': m['worker_count'],
242
- 'tasks': len(m['tasks']),
243
- 'idle_duration': idle_duration,
244
- 'active': m['active'],
245
- 'parsl_version': m['parsl_version'],
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
- if (mgr_minor_py, mgr_parsl_v) != (ix_minor_py, ix_parsl_v):
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.1
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.01.tar.gz
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=65VfBnxw2k8V3sHsbhKoUCqG-ps2XP2l3x3ALMqQ13Y,1777
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=6Zi7RqTP_eKWi3DFgapfK2t-Jw8vJS-ZtN1bsrByPeo,7073
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=JNAfgdZvQSsxVyUp229OOUqWwf_ZUhpmw8X9CdF3i6k,3614
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=W6ubpbX0pFzrOPUsDeb7_vF98nK_PE3qucgRVPhPIEQ,131
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=uAUD7psp39Je7Mcv70o9_B1fWm27H2Wa5nQhJAoS38c,62974
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=QUkTduZ_gdr8i08VWNWrqhfEvoMGsPDZegWUE2_7sGQ,12579
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=oZGqdbtDy-lDOvV4CgdoFrtukmphRh5tVt31esJdh10,39911
79
- parsl/executors/high_throughput/interchange.py,sha256=R6zcY7yh1daMJR8Ke8o9QCj8AtkH7lwzECS0MAWugvA,25964
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=NUK25IEh0UkxzdqQQyM8tMtuZmjSiTeWu1DzkkAIOhA,8980
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=ltW-g2apm92JYtoEIf0gc20erriu5b9-bR3ekbhKrXQ,33219
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=oIXwI_oxan-b1XdTneoza--4uTqYF6ar2X4zWgarGVQ,6602
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=r-u_RmvlY3cx_3a7dCaKJO6M5-446o2scDsAEqrz_go,8987
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=oqGlOI4OkmvGLNKGp5F0iLFLYj3JdUkpnwg40JOvEak,7826
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=yyhlS4vmaZdMitiySoy4l_ih9H1bsPiN-tMdwIh3H20,12431
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=TP6kSK_0qpCqecpp7O50AbTsnLKU6wvTvNG89hh4LQw,637
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=fQGNp5jX1m6cQAT1gr519GLMxviYtG-Fs43ru9Yyoec,4485
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=vH58WwDZVpyIiMqhjwGkme7Cv5-jupTmM52EOcbdrEg,2106
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=RaUK6Pmvg8v2vqXg3fFj-k2bQ8Cbuxh6dprsq2WSA98,4339
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.1.data/scripts/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
460
- parsl-2025.9.1.data/scripts/interchange.py,sha256=dh9_Q5bLvgHLhSRAXrFIlOd5Yo-ZkudDGFWz0N3hQBg,25951
461
- parsl-2025.9.1.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
462
- parsl-2025.9.1.data/scripts/process_worker_pool.py,sha256=-5VLVjeab6oROulx7OwI9tdNNHd6uap45I1jltm-UDc,40524
463
- parsl-2025.9.1.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
464
- parsl-2025.9.1.dist-info/METADATA,sha256=jxbUzjfVq5oN4pdJIA1yj_X2PBiFqnm0Th8W1unAMVg,4054
465
- parsl-2025.9.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
466
- parsl-2025.9.1.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
467
- parsl-2025.9.1.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
468
- parsl-2025.9.1.dist-info/RECORD,,
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))