parsl 2025.9.1__py3-none-any.whl → 2025.9.8__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.
- parsl/__init__.py +0 -4
- parsl/dataflow/dflow.py +1 -3
- parsl/dataflow/memoization.py +0 -14
- parsl/executors/high_throughput/interchange.py +16 -22
- parsl/monitoring/db_manager.py +8 -8
- parsl/monitoring/radios/udp_router.py +2 -2
- parsl/monitoring/radios/zmq_router.py +2 -2
- parsl/tests/test_checkpointing/test_python_checkpoint_1.py +6 -3
- parsl/tests/test_python_apps/test_memoize_exception.py +41 -0
- parsl/version.py +1 -1
- {parsl-2025.9.1.data → parsl-2025.9.8.data}/scripts/interchange.py +16 -22
- {parsl-2025.9.1.dist-info → parsl-2025.9.8.dist-info}/METADATA +2 -2
- {parsl-2025.9.1.dist-info → parsl-2025.9.8.dist-info}/RECORD +20 -19
- {parsl-2025.9.1.data → parsl-2025.9.8.data}/scripts/exec_parsl_function.py +0 -0
- {parsl-2025.9.1.data → parsl-2025.9.8.data}/scripts/parsl_coprocess.py +0 -0
- {parsl-2025.9.1.data → parsl-2025.9.8.data}/scripts/process_worker_pool.py +0 -0
- {parsl-2025.9.1.dist-info → parsl-2025.9.8.dist-info}/LICENSE +0 -0
- {parsl-2025.9.1.dist-info → parsl-2025.9.8.dist-info}/WHEEL +0 -0
- {parsl-2025.9.1.dist-info → parsl-2025.9.8.dist-info}/entry_points.txt +0 -0
- {parsl-2025.9.1.dist-info → parsl-2025.9.8.dist-info}/top_level.txt +0 -0
parsl/__init__.py
CHANGED
|
@@ -15,7 +15,6 @@ AUTO_LOGNAME
|
|
|
15
15
|
|
|
16
16
|
"""
|
|
17
17
|
import logging
|
|
18
|
-
import multiprocessing as _multiprocessing
|
|
19
18
|
import os
|
|
20
19
|
import platform
|
|
21
20
|
|
|
@@ -32,9 +31,6 @@ from parsl.log_utils import set_file_logger, set_stream_logger
|
|
|
32
31
|
from parsl.monitoring import MonitoringHub
|
|
33
32
|
from parsl.version import VERSION
|
|
34
33
|
|
|
35
|
-
if platform.system() == 'Darwin':
|
|
36
|
-
_multiprocessing.set_start_method('fork', force=True)
|
|
37
|
-
|
|
38
34
|
__author__ = 'The Parsl Team'
|
|
39
35
|
__version__ = VERSION
|
|
40
36
|
|
parsl/dataflow/dflow.py
CHANGED
|
@@ -1267,7 +1267,7 @@ class DataFlowKernel:
|
|
|
1267
1267
|
# should still see it.
|
|
1268
1268
|
logger.info("DFK cleanup complete")
|
|
1269
1269
|
|
|
1270
|
-
def checkpoint(self, tasks: Optional[Sequence[TaskRecord]] = None) ->
|
|
1270
|
+
def checkpoint(self, tasks: Optional[Sequence[TaskRecord]] = None) -> None:
|
|
1271
1271
|
"""Checkpoint the dfk incrementally to a checkpoint file.
|
|
1272
1272
|
|
|
1273
1273
|
When called, every task that has been completed yet not
|
|
@@ -1328,8 +1328,6 @@ class DataFlowKernel:
|
|
|
1328
1328
|
else:
|
|
1329
1329
|
logger.info("Done checkpointing {} tasks".format(count))
|
|
1330
1330
|
|
|
1331
|
-
return checkpoint_dir
|
|
1332
|
-
|
|
1333
1331
|
@staticmethod
|
|
1334
1332
|
def _log_std_streams(task_record: TaskRecord) -> None:
|
|
1335
1333
|
tid = task_record['id']
|
parsl/dataflow/memoization.py
CHANGED
|
@@ -242,20 +242,6 @@ class Memoizer:
|
|
|
242
242
|
assert isinstance(result, Future) or result is None
|
|
243
243
|
return result
|
|
244
244
|
|
|
245
|
-
def hash_lookup(self, hashsum: str) -> Future[Any]:
|
|
246
|
-
"""Lookup a hash in the memoization table.
|
|
247
|
-
|
|
248
|
-
Args:
|
|
249
|
-
- hashsum (str): The same hashes used to uniquely identify apps+inputs
|
|
250
|
-
|
|
251
|
-
Returns:
|
|
252
|
-
- Lookup result
|
|
253
|
-
|
|
254
|
-
Raises:
|
|
255
|
-
- KeyError: if hash not in table
|
|
256
|
-
"""
|
|
257
|
-
return self.memo_lookup_table[hashsum]
|
|
258
|
-
|
|
259
245
|
def update_memo(self, task: TaskRecord, r: Future[Any]) -> None:
|
|
260
246
|
"""Updates the memoization lookup table with the result from a task.
|
|
261
247
|
|
|
@@ -222,35 +222,29 @@ class Interchange:
|
|
|
222
222
|
reply = self.connected_block_history
|
|
223
223
|
|
|
224
224
|
elif command_req == "WORKERS":
|
|
225
|
-
|
|
226
|
-
for manager in self._ready_managers.values():
|
|
227
|
-
num_workers += manager['worker_count']
|
|
228
|
-
reply = num_workers
|
|
225
|
+
reply = sum(m['worker_count'] for m in self._ready_managers.values())
|
|
229
226
|
|
|
230
227
|
elif command_req == "MANAGERS":
|
|
231
228
|
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']}
|
|
229
|
+
now = time.time()
|
|
230
|
+
for manager_id, m in self._ready_managers.items():
|
|
231
|
+
idle_duration = now - (m['idle_since'] or now)
|
|
232
|
+
resp = {
|
|
233
|
+
'manager': manager_id.decode('utf-8'),
|
|
234
|
+
'block_id': m['block_id'],
|
|
235
|
+
'worker_count': m['worker_count'],
|
|
236
|
+
'tasks': len(m['tasks']),
|
|
237
|
+
'idle_duration': idle_duration,
|
|
238
|
+
'active': m['active'],
|
|
239
|
+
'parsl_version': m['parsl_version'],
|
|
240
|
+
'python_version': m['python_version'],
|
|
241
|
+
'draining': m['draining']
|
|
242
|
+
}
|
|
248
243
|
reply.append(resp)
|
|
249
244
|
|
|
250
245
|
elif command_req == "MANAGERS_PACKAGES":
|
|
251
246
|
reply = {}
|
|
252
|
-
for manager_id in self._ready_managers:
|
|
253
|
-
m = self._ready_managers[manager_id]
|
|
247
|
+
for manager_id, m in self._ready_managers.items():
|
|
254
248
|
manager_id_str = manager_id.decode('utf-8')
|
|
255
249
|
reply[manager_id_str] = m["packages"]
|
|
256
250
|
|
parsl/monitoring/db_manager.py
CHANGED
|
@@ -346,9 +346,9 @@ class DatabaseManager:
|
|
|
346
346
|
exception_happened = False
|
|
347
347
|
|
|
348
348
|
while (not self._kill_event.is_set() or
|
|
349
|
-
self.pending_priority_queue.
|
|
350
|
-
self.pending_node_queue.
|
|
351
|
-
resource_queue.
|
|
349
|
+
not self.pending_priority_queue.empty() or not self.pending_resource_queue.empty() or
|
|
350
|
+
not self.pending_node_queue.empty() or not self.pending_block_queue.empty() or
|
|
351
|
+
not resource_queue.empty()):
|
|
352
352
|
|
|
353
353
|
"""
|
|
354
354
|
WORKFLOW_INFO and TASK_INFO messages (i.e. priority messages)
|
|
@@ -357,9 +357,9 @@ class DatabaseManager:
|
|
|
357
357
|
try:
|
|
358
358
|
logger.debug("""Checking STOP conditions: {}, {}, {}, {}, {}, {}""".format(
|
|
359
359
|
self._kill_event.is_set(),
|
|
360
|
-
self.pending_priority_queue.
|
|
361
|
-
self.pending_node_queue.
|
|
362
|
-
resource_queue.
|
|
360
|
+
not self.pending_priority_queue.empty(), not self.pending_resource_queue.empty(),
|
|
361
|
+
not self.pending_node_queue.empty(), not self.pending_block_queue.empty(),
|
|
362
|
+
not resource_queue.empty()))
|
|
363
363
|
|
|
364
364
|
# This is the list of resource messages which can be reprocessed as if they
|
|
365
365
|
# had just arrived because the corresponding first task message has been
|
|
@@ -558,9 +558,9 @@ class DatabaseManager:
|
|
|
558
558
|
def _migrate_logs_to_internal(self, logs_queue: mpq.Queue, kill_event: threading.Event) -> None:
|
|
559
559
|
logger.info("Starting _migrate_logs_to_internal")
|
|
560
560
|
|
|
561
|
-
while not kill_event.is_set() or logs_queue.
|
|
561
|
+
while not kill_event.is_set() or not logs_queue.empty():
|
|
562
562
|
logger.debug("Checking STOP conditions: kill event: %s, queue has entries: %s",
|
|
563
|
-
kill_event.is_set(), logs_queue.
|
|
563
|
+
kill_event.is_set(), not logs_queue.empty())
|
|
564
564
|
|
|
565
565
|
try:
|
|
566
566
|
x = logs_queue.get(timeout=0.1)
|
|
@@ -21,9 +21,9 @@ from parsl.monitoring.errors import MonitoringRouterStartError
|
|
|
21
21
|
from parsl.monitoring.radios.base import MonitoringRadioReceiver
|
|
22
22
|
from parsl.monitoring.radios.multiprocessing import MultiprocessingQueueRadioSender
|
|
23
23
|
from parsl.multiprocessing import (
|
|
24
|
-
SizedQueue,
|
|
25
24
|
SpawnEvent,
|
|
26
25
|
SpawnProcess,
|
|
26
|
+
SpawnQueue,
|
|
27
27
|
join_terminate_close_proc,
|
|
28
28
|
)
|
|
29
29
|
from parsl.process_loggers import wrap_with_logs
|
|
@@ -198,7 +198,7 @@ def start_udp_receiver(*,
|
|
|
198
198
|
hmac_digest: str) -> UDPRadioReceiver:
|
|
199
199
|
|
|
200
200
|
udp_comm_q: Queue[Union[int, str]]
|
|
201
|
-
udp_comm_q =
|
|
201
|
+
udp_comm_q = SpawnQueue(maxsize=10)
|
|
202
202
|
|
|
203
203
|
router_exit_event = SpawnEvent()
|
|
204
204
|
|
|
@@ -19,9 +19,9 @@ from parsl.monitoring.errors import MonitoringRouterStartError
|
|
|
19
19
|
from parsl.monitoring.radios.multiprocessing import MultiprocessingQueueRadioSender
|
|
20
20
|
from parsl.monitoring.types import TaggedMonitoringMessage
|
|
21
21
|
from parsl.multiprocessing import (
|
|
22
|
-
SizedQueue,
|
|
23
22
|
SpawnEvent,
|
|
24
23
|
SpawnProcess,
|
|
24
|
+
SpawnQueue,
|
|
25
25
|
join_terminate_close_proc,
|
|
26
26
|
)
|
|
27
27
|
from parsl.process_loggers import wrap_with_logs
|
|
@@ -158,7 +158,7 @@ def start_zmq_receiver(*,
|
|
|
158
158
|
port_range: Tuple[int, int],
|
|
159
159
|
logdir: str,
|
|
160
160
|
worker_debug: bool) -> ZMQRadioReceiver:
|
|
161
|
-
comm_q =
|
|
161
|
+
comm_q = SpawnQueue(maxsize=10)
|
|
162
162
|
|
|
163
163
|
router_exit_event = SpawnEvent()
|
|
164
164
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
|
+
from pathlib import Path
|
|
2
3
|
|
|
3
4
|
import pytest
|
|
4
5
|
|
|
@@ -20,12 +21,14 @@ def uuid_app():
|
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
@pytest.mark.local
|
|
23
|
-
def test_initial_checkpoint_write():
|
|
24
|
+
def test_initial_checkpoint_write() -> None:
|
|
24
25
|
"""1. Launch a few apps and write the checkpoint once a few have completed
|
|
25
26
|
"""
|
|
26
27
|
uuid_app().result()
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
parsl.dfk().checkpoint()
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
cpt_dir = Path(parsl.dfk().run_dir) / 'checkpoint'
|
|
32
|
+
|
|
33
|
+
cptpath = cpt_dir / 'tasks.pkl'
|
|
31
34
|
assert os.path.exists(cptpath), f"Tasks checkpoint missing: {cptpath}"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import parsl
|
|
2
|
+
from parsl.app.app import python_app
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@python_app(cache=True)
|
|
6
|
+
def raise_exception_cache(x, cache=True):
|
|
7
|
+
raise RuntimeError("exception from raise_exception_cache")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@python_app(cache=False)
|
|
11
|
+
def raise_exception_nocache(x, cache=True):
|
|
12
|
+
raise RuntimeError("exception from raise_exception_nocache")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def test_python_memoization(n=2):
|
|
16
|
+
"""Test Python memoization of exceptions, with cache=True"""
|
|
17
|
+
x = raise_exception_cache(0)
|
|
18
|
+
|
|
19
|
+
# wait for x to be done
|
|
20
|
+
x.exception()
|
|
21
|
+
|
|
22
|
+
for i in range(0, n):
|
|
23
|
+
fut = raise_exception_cache(0)
|
|
24
|
+
|
|
25
|
+
# check that we get back the same exception object, rather than
|
|
26
|
+
# a new one from a second invocation of raise_exception().
|
|
27
|
+
assert fut.exception() is x.exception(), "Memoized exception should have been memoized"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def test_python_no_memoization(n=2):
|
|
31
|
+
"""Test Python non-memoization of exceptions, with cache=False"""
|
|
32
|
+
x = raise_exception_nocache(0)
|
|
33
|
+
|
|
34
|
+
# wait for x to be done
|
|
35
|
+
x.exception()
|
|
36
|
+
|
|
37
|
+
for i in range(0, n):
|
|
38
|
+
fut = raise_exception_nocache(0)
|
|
39
|
+
|
|
40
|
+
# check that we get back a different exception object each time
|
|
41
|
+
assert fut.exception() is not x.exception(), "Memoized exception should have been memoized"
|
parsl/version.py
CHANGED
|
@@ -222,35 +222,29 @@ class Interchange:
|
|
|
222
222
|
reply = self.connected_block_history
|
|
223
223
|
|
|
224
224
|
elif command_req == "WORKERS":
|
|
225
|
-
|
|
226
|
-
for manager in self._ready_managers.values():
|
|
227
|
-
num_workers += manager['worker_count']
|
|
228
|
-
reply = num_workers
|
|
225
|
+
reply = sum(m['worker_count'] for m in self._ready_managers.values())
|
|
229
226
|
|
|
230
227
|
elif command_req == "MANAGERS":
|
|
231
228
|
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']}
|
|
229
|
+
now = time.time()
|
|
230
|
+
for manager_id, m in self._ready_managers.items():
|
|
231
|
+
idle_duration = now - (m['idle_since'] or now)
|
|
232
|
+
resp = {
|
|
233
|
+
'manager': manager_id.decode('utf-8'),
|
|
234
|
+
'block_id': m['block_id'],
|
|
235
|
+
'worker_count': m['worker_count'],
|
|
236
|
+
'tasks': len(m['tasks']),
|
|
237
|
+
'idle_duration': idle_duration,
|
|
238
|
+
'active': m['active'],
|
|
239
|
+
'parsl_version': m['parsl_version'],
|
|
240
|
+
'python_version': m['python_version'],
|
|
241
|
+
'draining': m['draining']
|
|
242
|
+
}
|
|
248
243
|
reply.append(resp)
|
|
249
244
|
|
|
250
245
|
elif command_req == "MANAGERS_PACKAGES":
|
|
251
246
|
reply = {}
|
|
252
|
-
for manager_id in self._ready_managers:
|
|
253
|
-
m = self._ready_managers[manager_id]
|
|
247
|
+
for manager_id, m in self._ready_managers.items():
|
|
254
248
|
manager_id_str = manager_id.decode('utf-8')
|
|
255
249
|
reply[manager_id_str] = m["packages"]
|
|
256
250
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: parsl
|
|
3
|
-
Version: 2025.9.
|
|
3
|
+
Version: 2025.9.8
|
|
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.08.tar.gz
|
|
7
7
|
Author: The Parsl Team
|
|
8
8
|
Author-email: parsl@googlegroups.com
|
|
9
9
|
License: Apache 2.0
|
|
@@ -1,4 +1,4 @@
|
|
|
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
4
|
parsl/curvezmq.py,sha256=6Zi7RqTP_eKWi3DFgapfK2t-Jw8vJS-ZtN1bsrByPeo,7073
|
|
@@ -8,7 +8,7 @@ parsl/multiprocessing.py,sha256=JNAfgdZvQSsxVyUp229OOUqWwf_ZUhpmw8X9CdF3i6k,3614
|
|
|
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=jssTePzsql4ZyUWL8yCicTMRJRPaLyu8nXV2_BUgI0E,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
|
|
@@ -76,7 +76,7 @@ parsl/executors/flux/flux_instance_manager.py,sha256=5T3Rp7ZM-mlT0Pf0Gxgs5_YmnaP
|
|
|
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
78
|
parsl/executors/high_throughput/executor.py,sha256=oZGqdbtDy-lDOvV4CgdoFrtukmphRh5tVt31esJdh10,39911
|
|
79
|
-
parsl/executors/high_throughput/interchange.py,sha256=
|
|
79
|
+
parsl/executors/high_throughput/interchange.py,sha256=3NTPVpraYiEcT_wct4jwXIaU8xgBlW5krQag4dnVNCM,25653
|
|
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
|
|
@@ -116,7 +116,7 @@ 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
122
|
parsl/monitoring/monitoring.py,sha256=oIXwI_oxan-b1XdTneoza--4uTqYF6ar2X4zWgarGVQ,6602
|
|
@@ -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
|
|
@@ -284,7 +284,7 @@ parsl/tests/test_bash_apps/test_std_uri.py,sha256=CvAt8BUhNl2pA5chq9YyhkD6eo2IUH
|
|
|
284
284
|
parsl/tests/test_bash_apps/test_stdout.py,sha256=lNBzCJGst0IhKaSl8CM8-mTJ5eaK7hTlZ8gY-M2TDBU,3244
|
|
285
285
|
parsl/tests/test_checkpointing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
286
286
|
parsl/tests/test_checkpointing/test_periodic.py,sha256=nfMgrG7sZ8rkMu6iOHS6lp_iTU4IsOyQLQ2Gur_FMmE,1509
|
|
287
|
-
parsl/tests/test_checkpointing/test_python_checkpoint_1.py,sha256=
|
|
287
|
+
parsl/tests/test_checkpointing/test_python_checkpoint_1.py,sha256=bi7c6fy6P7jmrMQkQP5me-LTfwVwJGq1O9BjnmdDIKc,715
|
|
288
288
|
parsl/tests/test_checkpointing/test_python_checkpoint_2.py,sha256=Q_cXeAVz_dJuDDeiemUIGd-wmb7aCY3ggpqYjRRhHRc,1089
|
|
289
289
|
parsl/tests/test_checkpointing/test_regression_232.py,sha256=AsI6AJ0DcFaefAbEY9qWa41ER0VX-4yLuIdlgvBw360,2637
|
|
290
290
|
parsl/tests/test_checkpointing/test_regression_233.py,sha256=jii7BKuygK6KMIGtg4IeBjix7Z28cYhv57rE9ixoXMU,1774
|
|
@@ -379,6 +379,7 @@ parsl/tests/test_python_apps/test_memoize_1.py,sha256=E_VQAaykFKT_G7yRUWOhXxfOIC
|
|
|
379
379
|
parsl/tests/test_python_apps/test_memoize_2.py,sha256=uG9zG9j3ap1FqeJ8aB0Gj_dX191pN3dxWXeQ-asxPgU,553
|
|
380
380
|
parsl/tests/test_python_apps/test_memoize_4.py,sha256=CdK_vHW5s-phi5KPqcAQm_BRh8xek91GVGeQRjfJ4Bk,569
|
|
381
381
|
parsl/tests/test_python_apps/test_memoize_bad_id_for_memo.py,sha256=5v25zdU6koXexRTkccj_3sSSdXqHdsU8ZdNrnZ3ONZU,1436
|
|
382
|
+
parsl/tests/test_python_apps/test_memoize_exception.py,sha256=GdvB5XFnW5pbkFMETzxWC3nIKo13Pm0benq9u2UnM1E,1232
|
|
382
383
|
parsl/tests/test_python_apps/test_memoize_ignore_args.py,sha256=u-s6r6Nxpvu_x_Uwputi_QIC1tUnzakDF-LSKiEtl9Q,739
|
|
383
384
|
parsl/tests/test_python_apps/test_memoize_joinapp.py,sha256=htiNmE0PGVA7_pdwRcZ9Wv5Fh6Bph6EdPmywJi8m1oM,435
|
|
384
385
|
parsl/tests/test_python_apps/test_outputs.py,sha256=5ai9hz5jJEqZxptuFU-E3TObTuBpU9i9HXm1gt21GDY,645
|
|
@@ -456,13 +457,13 @@ parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
456
457
|
parsl/usage_tracking/api.py,sha256=iaCY58Dc5J4UM7_dJzEEs871P1p1HdxBMtNGyVdzc9g,1821
|
|
457
458
|
parsl/usage_tracking/levels.py,sha256=xbfzYEsd55KiZJ-mzNgPebvOH4rRHum04hROzEf41tU,291
|
|
458
459
|
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.
|
|
460
|
+
parsl-2025.9.8.data/scripts/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
|
|
461
|
+
parsl-2025.9.8.data/scripts/interchange.py,sha256=f1sCXmH7B7vhhBZbVJ44kbC6FtM3bH7vpKoYBvxgo1A,25640
|
|
462
|
+
parsl-2025.9.8.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
|
|
463
|
+
parsl-2025.9.8.data/scripts/process_worker_pool.py,sha256=-5VLVjeab6oROulx7OwI9tdNNHd6uap45I1jltm-UDc,40524
|
|
464
|
+
parsl-2025.9.8.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
465
|
+
parsl-2025.9.8.dist-info/METADATA,sha256=mPH_XO9WhfJ-yqGBbzAI_3kj6diHJKX-jtTq-iJ2zrQ,4054
|
|
466
|
+
parsl-2025.9.8.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
467
|
+
parsl-2025.9.8.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
|
|
468
|
+
parsl-2025.9.8.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
|
|
469
|
+
parsl-2025.9.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|