parsl 2025.6.23__py3-none-any.whl → 2025.7.7__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/configs/anvil.py +34 -0
- parsl/configs/delta.py +35 -0
- parsl/configs/osg.py +1 -1
- parsl/dataflow/dflow.py +14 -4
- parsl/executors/base.py +14 -6
- parsl/executors/high_throughput/executor.py +20 -15
- parsl/executors/high_throughput/interchange.py +177 -191
- parsl/executors/high_throughput/mpi_executor.py +7 -4
- parsl/executors/high_throughput/probe.py +61 -49
- parsl/executors/high_throughput/process_worker_pool.py +105 -103
- parsl/executors/taskvine/executor.py +9 -3
- parsl/executors/taskvine/manager.py +3 -1
- parsl/executors/threads.py +8 -1
- parsl/executors/workqueue/executor.py +9 -3
- parsl/monitoring/errors.py +5 -0
- parsl/monitoring/monitoring.py +25 -42
- parsl/monitoring/radios/base.py +63 -2
- parsl/monitoring/radios/filesystem.py +18 -3
- parsl/monitoring/radios/filesystem_router.py +13 -26
- parsl/monitoring/radios/htex.py +22 -13
- parsl/monitoring/radios/multiprocessing.py +22 -2
- parsl/monitoring/radios/udp.py +57 -19
- parsl/monitoring/radios/udp_router.py +49 -15
- parsl/monitoring/remote.py +19 -40
- parsl/providers/local/local.py +12 -13
- parsl/tests/configs/htex_local_alternate.py +0 -1
- parsl/tests/test_htex/test_interchange_exit_bad_registration.py +5 -7
- parsl/tests/test_htex/test_zmq_binding.py +5 -6
- parsl/tests/test_monitoring/test_basic.py +12 -10
- parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py +0 -1
- parsl/tests/test_monitoring/test_radio_filesystem.py +7 -9
- parsl/tests/test_monitoring/test_radio_multiprocessing.py +44 -0
- parsl/tests/test_monitoring/test_radio_udp.py +163 -12
- parsl/tests/test_monitoring/test_stdouterr.py +1 -3
- parsl/tests/test_scaling/test_worker_interchange_bad_messages_3262.py +3 -7
- parsl/version.py +1 -1
- {parsl-2025.6.23.data → parsl-2025.7.7.data}/scripts/interchange.py +177 -191
- {parsl-2025.6.23.data → parsl-2025.7.7.data}/scripts/process_worker_pool.py +105 -103
- {parsl-2025.6.23.dist-info → parsl-2025.7.7.dist-info}/METADATA +2 -2
- {parsl-2025.6.23.dist-info → parsl-2025.7.7.dist-info}/RECORD +46 -43
- {parsl-2025.6.23.data → parsl-2025.7.7.data}/scripts/exec_parsl_function.py +0 -0
- {parsl-2025.6.23.data → parsl-2025.7.7.data}/scripts/parsl_coprocess.py +0 -0
- {parsl-2025.6.23.dist-info → parsl-2025.7.7.dist-info}/LICENSE +0 -0
- {parsl-2025.6.23.dist-info → parsl-2025.7.7.dist-info}/WHEEL +0 -0
- {parsl-2025.6.23.dist-info → parsl-2025.7.7.dist-info}/entry_points.txt +0 -0
- {parsl-2025.6.23.dist-info → parsl-2025.7.7.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,6 @@
|
|
1
1
|
#!python
|
2
2
|
|
3
3
|
import argparse
|
4
|
-
import json
|
5
4
|
import logging
|
6
5
|
import math
|
7
6
|
import multiprocessing
|
@@ -66,8 +65,7 @@ class Manager:
|
|
66
65
|
def __init__(self, *,
|
67
66
|
addresses,
|
68
67
|
address_probe_timeout,
|
69
|
-
|
70
|
-
result_port,
|
68
|
+
port,
|
71
69
|
cores_per_worker,
|
72
70
|
mem_per_worker,
|
73
71
|
max_workers_per_node,
|
@@ -156,26 +154,23 @@ class Manager:
|
|
156
154
|
|
157
155
|
self._start_time = time.time()
|
158
156
|
|
159
|
-
try:
|
160
|
-
ix_address = probe_addresses(addresses.split(','), task_port, timeout=address_probe_timeout)
|
161
|
-
if not ix_address:
|
162
|
-
raise Exception("No viable address found")
|
163
|
-
else:
|
164
|
-
logger.info("Connection to Interchange successful on {}".format(ix_address))
|
165
|
-
task_q_url = tcp_url(ix_address, task_port)
|
166
|
-
result_q_url = tcp_url(ix_address, result_port)
|
167
|
-
logger.info("Task url : {}".format(task_q_url))
|
168
|
-
logger.info("Result url : {}".format(result_q_url))
|
169
|
-
except Exception:
|
170
|
-
logger.exception("Caught exception while trying to determine viable address to interchange")
|
171
|
-
print("Failed to find a viable address to connect to interchange. Exiting")
|
172
|
-
exit(5)
|
173
|
-
|
174
157
|
self.cert_dir = cert_dir
|
175
158
|
self.zmq_context = curvezmq.ClientContext(self.cert_dir)
|
176
159
|
|
177
|
-
|
178
|
-
|
160
|
+
addresses = ','.join(tcp_url(a, port) for a in addresses.split(','))
|
161
|
+
try:
|
162
|
+
self._ix_url = probe_addresses(
|
163
|
+
self.zmq_context,
|
164
|
+
addresses,
|
165
|
+
timeout_ms=1_000 * address_probe_timeout,
|
166
|
+
identity=uid.encode('utf-8'),
|
167
|
+
)
|
168
|
+
except ConnectionError:
|
169
|
+
addys = ", ".join(addresses.split(","))
|
170
|
+
logger.error(f"Unable to connect to interchange; attempted addresses: {addys}")
|
171
|
+
raise
|
172
|
+
|
173
|
+
logger.info(f"Probe discovered interchange url: {self._ix_url}")
|
179
174
|
|
180
175
|
self.uid = uid
|
181
176
|
self.block_id = block_id
|
@@ -250,37 +245,37 @@ class Manager:
|
|
250
245
|
self.worker_count = min(len(self.available_accelerators), self.worker_count)
|
251
246
|
logger.info("Manager will spawn {} workers".format(self.worker_count))
|
252
247
|
|
253
|
-
def create_reg_message(self):
|
248
|
+
def create_reg_message(self) -> dict:
|
254
249
|
""" Creates a registration message to identify the worker to the interchange
|
255
250
|
"""
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
251
|
+
return {
|
252
|
+
'type': 'registration',
|
253
|
+
'parsl_v': PARSL_VERSION,
|
254
|
+
'python_v': "{}.{}.{}".format(
|
255
|
+
sys.version_info.major,
|
256
|
+
sys.version_info.minor,
|
257
|
+
sys.version_info.micro
|
258
|
+
),
|
259
|
+
'packages': {d.metadata['Name']: d.version for d in distributions()},
|
260
|
+
'worker_count': self.worker_count,
|
261
|
+
'uid': self.uid,
|
262
|
+
'block_id': self.block_id,
|
263
|
+
'start_time': self.start_time,
|
264
|
+
'prefetch_capacity': self.prefetch_capacity,
|
265
|
+
'max_capacity': self.worker_count + self.prefetch_capacity,
|
266
|
+
'os': platform.system(),
|
267
|
+
'hostname': platform.node(),
|
268
|
+
'dir': os.getcwd(),
|
269
|
+
'cpu_count': psutil.cpu_count(logical=False),
|
270
|
+
'total_memory': psutil.virtual_memory().total,
|
271
|
+
}
|
276
272
|
|
277
273
|
@staticmethod
|
278
274
|
def heartbeat_to_incoming(task_incoming: zmq.Socket) -> None:
|
279
275
|
""" Send heartbeat to the incoming task queue
|
280
276
|
"""
|
281
|
-
msg = {'type': 'heartbeat'}
|
282
277
|
# don't need to dumps and encode this every time - could do as a global on import?
|
283
|
-
b_msg =
|
278
|
+
b_msg = pickle.dumps({'type': 'heartbeat'})
|
284
279
|
task_incoming.send(b_msg)
|
285
280
|
logger.debug("Sent heartbeat")
|
286
281
|
|
@@ -289,32 +284,46 @@ class Manager:
|
|
289
284
|
""" Send heartbeat to the incoming task queue
|
290
285
|
"""
|
291
286
|
msg = {'type': 'drain'}
|
292
|
-
b_msg =
|
287
|
+
b_msg = pickle.dumps(msg)
|
293
288
|
task_incoming.send(b_msg)
|
294
289
|
logger.debug("Sent drain")
|
295
290
|
|
296
291
|
@wrap_with_logs
|
297
|
-
def
|
292
|
+
def interchange_communicator(self, pair_setup: threading.Event):
|
298
293
|
""" Pull tasks from the incoming tasks zmq pipe onto the internal
|
299
294
|
pending task queue
|
300
295
|
"""
|
301
296
|
logger.info("starting")
|
302
297
|
|
298
|
+
results_sock = self.zmq_context.socket(zmq.PAIR)
|
299
|
+
results_sock.setsockopt(zmq.LINGER, 0)
|
300
|
+
results_sock.bind("inproc://results")
|
301
|
+
pair_setup.set()
|
302
|
+
|
303
303
|
# Linger is set to 0, so that the manager can exit even when there might be
|
304
304
|
# messages in the pipe
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
305
|
+
ix_sock = self.zmq_context.socket(zmq.DEALER)
|
306
|
+
ix_sock.setsockopt(zmq.IDENTITY, self.uid.encode('utf-8'))
|
307
|
+
ix_sock.setsockopt(zmq.LINGER, 0)
|
308
|
+
ix_sock.connect(self._ix_url)
|
309
309
|
logger.info("Manager task pipe connected to interchange")
|
310
310
|
|
311
311
|
poller = zmq.Poller()
|
312
|
-
poller.register(
|
312
|
+
poller.register(results_sock, zmq.POLLIN)
|
313
|
+
poller.register(ix_sock, zmq.POLLIN)
|
314
|
+
|
315
|
+
ix_sock.send(pickle.dumps({"type": "connection_probe"}))
|
316
|
+
evts = dict(poller.poll(timeout=self.heartbeat_period))
|
317
|
+
if evts.get(ix_sock) is None:
|
318
|
+
logger.error(f"Failed to connect to interchange ({self._ix_url}")
|
319
|
+
|
320
|
+
ix_sock.recv()
|
321
|
+
logger.info(f"Successfully connected to interchange via URL: {self._ix_url}")
|
313
322
|
|
314
323
|
# Send a registration message
|
315
324
|
msg = self.create_reg_message()
|
316
|
-
logger.debug("Sending registration message:
|
317
|
-
|
325
|
+
logger.debug("Sending registration message: %s", msg)
|
326
|
+
ix_sock.send(pickle.dumps(msg))
|
318
327
|
last_beat = time.time()
|
319
328
|
last_interchange_contact = time.time()
|
320
329
|
task_recv_counter = 0
|
@@ -335,18 +344,21 @@ class Manager:
|
|
335
344
|
pending_task_count = self.pending_task_queue.qsize()
|
336
345
|
except NotImplementedError:
|
337
346
|
# Ref: https://github.com/python/cpython/blob/6d5e0dc0e330f4009e8dc3d1642e46b129788877/Lib/multiprocessing/queues.py#L125
|
338
|
-
pending_task_count = f"pending task count is not available on {platform.system()}"
|
347
|
+
pending_task_count = f"pending task count is not available on {platform.system()}" # type: ignore[assignment]
|
339
348
|
|
340
|
-
logger.debug(
|
341
|
-
|
349
|
+
logger.debug(
|
350
|
+
'ready workers: %d, pending tasks: %d',
|
351
|
+
self.ready_worker_count.value, # type: ignore[attr-defined]
|
352
|
+
pending_task_count,
|
353
|
+
)
|
342
354
|
|
343
355
|
if time.time() >= last_beat + self.heartbeat_period:
|
344
|
-
self.heartbeat_to_incoming(
|
356
|
+
self.heartbeat_to_incoming(ix_sock)
|
345
357
|
last_beat = time.time()
|
346
358
|
|
347
359
|
if time.time() > self.drain_time:
|
348
360
|
logger.info("Requesting drain")
|
349
|
-
self.drain_to_incoming(
|
361
|
+
self.drain_to_incoming(ix_sock)
|
350
362
|
# This will start the pool draining...
|
351
363
|
# Drained exit behaviour does not happen here. It will be
|
352
364
|
# driven by the interchange sending a DRAINED_CODE message.
|
@@ -358,8 +370,8 @@ class Manager:
|
|
358
370
|
poll_duration_s = max(0, next_interesting_event_time - time.time())
|
359
371
|
socks = dict(poller.poll(timeout=poll_duration_s * 1000))
|
360
372
|
|
361
|
-
if socks.get(
|
362
|
-
|
373
|
+
if socks.get(ix_sock) == zmq.POLLIN:
|
374
|
+
pkl_msg = ix_sock.recv()
|
363
375
|
tasks = pickle.loads(pkl_msg)
|
364
376
|
last_interchange_contact = time.time()
|
365
377
|
|
@@ -377,6 +389,11 @@ class Manager:
|
|
377
389
|
for task in tasks:
|
378
390
|
self.task_scheduler.put_task(task)
|
379
391
|
|
392
|
+
elif socks.get(results_sock) == zmq.POLLIN:
|
393
|
+
meta_b = pickle.dumps({'type': 'result'})
|
394
|
+
ix_sock.send_multipart([meta_b, results_sock.recv()])
|
395
|
+
logger.debug("Result sent to interchange")
|
396
|
+
|
380
397
|
else:
|
381
398
|
logger.debug("No incoming tasks")
|
382
399
|
|
@@ -387,45 +404,36 @@ class Manager:
|
|
387
404
|
logger.critical("Exiting")
|
388
405
|
break
|
389
406
|
|
390
|
-
|
407
|
+
ix_sock.close()
|
391
408
|
logger.info("Exiting")
|
392
409
|
|
393
410
|
@wrap_with_logs
|
394
|
-
def
|
395
|
-
""" Listens on the pending_result_queue and
|
411
|
+
def ferry_result(self, may_connect: threading.Event):
|
412
|
+
""" Listens on the pending_result_queue and ferries results to the interchange
|
413
|
+
connected thread
|
396
414
|
"""
|
397
|
-
logger.debug("
|
415
|
+
logger.debug("Begin")
|
398
416
|
|
399
417
|
# Linger is set to 0, so that the manager can exit even when there might be
|
400
418
|
# messages in the pipe
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
logger.info("Manager result pipe connected to interchange")
|
419
|
+
notify_sock = self.zmq_context.socket(zmq.PAIR)
|
420
|
+
notify_sock.setsockopt(zmq.LINGER, 0)
|
421
|
+
may_connect.wait()
|
422
|
+
notify_sock.connect("inproc://results")
|
406
423
|
|
407
424
|
while not self._stop_event.is_set():
|
408
|
-
logger.debug("Starting pending_result_queue get")
|
409
425
|
try:
|
410
426
|
r = self.task_scheduler.get_result()
|
411
427
|
if r is None:
|
412
428
|
continue
|
413
|
-
logger.debug("Result received from worker
|
414
|
-
|
415
|
-
logger.debug("Result sent to interchange: %s", id(r))
|
429
|
+
logger.debug("Result received from worker")
|
430
|
+
notify_sock.send(r)
|
416
431
|
except Exception:
|
417
432
|
logger.exception("Failed to send result to interchange")
|
418
433
|
|
419
|
-
|
434
|
+
notify_sock.close()
|
420
435
|
logger.debug("Exiting")
|
421
436
|
|
422
|
-
@wrap_with_logs
|
423
|
-
def heartbeater(self):
|
424
|
-
while not self._stop_event.wait(self.heartbeat_period):
|
425
|
-
heartbeat_message = f"heartbeat_period={self.heartbeat_period} seconds"
|
426
|
-
logger.info(f"Sending heartbeat via results connection: {heartbeat_message}")
|
427
|
-
self.pending_result_queue.put(pickle.dumps({'type': 'heartbeat'}))
|
428
|
-
|
429
437
|
def worker_watchdog(self, procs: dict[int, SpawnProcess]):
|
430
438
|
"""Keeps workers alive."""
|
431
439
|
logger.debug("Starting worker watchdog")
|
@@ -492,23 +500,26 @@ class Manager:
|
|
492
500
|
|
493
501
|
logger.debug("Workers started")
|
494
502
|
|
495
|
-
|
496
|
-
|
497
|
-
|
503
|
+
pair_setup = threading.Event()
|
504
|
+
|
505
|
+
thr_task_puller = threading.Thread(
|
506
|
+
target=self.interchange_communicator,
|
507
|
+
args=(pair_setup,),
|
508
|
+
name="Interchange-Communicator",
|
498
509
|
)
|
510
|
+
thr_result_ferry = threading.Thread(
|
511
|
+
target=self.ferry_result, args=(pair_setup,), name="Result-Shovel")
|
499
512
|
thr_worker_watchdog = threading.Thread(
|
500
513
|
target=self.worker_watchdog, args=(procs,), name="worker-watchdog"
|
501
514
|
)
|
502
515
|
thr_monitoring_handler = threading.Thread(
|
503
516
|
target=self.handle_monitoring_messages, name="Monitoring-Handler"
|
504
517
|
)
|
505
|
-
thr_heartbeater = threading.Thread(target=self.heartbeater, name="Heartbeater")
|
506
518
|
|
507
519
|
thr_task_puller.start()
|
508
|
-
|
520
|
+
thr_result_ferry.start()
|
509
521
|
thr_worker_watchdog.start()
|
510
522
|
thr_monitoring_handler.start()
|
511
|
-
thr_heartbeater.start()
|
512
523
|
|
513
524
|
logger.info("Manager threads started")
|
514
525
|
|
@@ -520,11 +531,10 @@ class Manager:
|
|
520
531
|
self.monitoring_queue.put(None)
|
521
532
|
self.pending_result_queue.put(None)
|
522
533
|
|
523
|
-
thr_heartbeater.join()
|
524
|
-
thr_task_puller.join()
|
525
|
-
thr_result_pusher.join()
|
526
|
-
thr_worker_watchdog.join()
|
527
534
|
thr_monitoring_handler.join()
|
535
|
+
thr_worker_watchdog.join()
|
536
|
+
thr_result_ferry.join()
|
537
|
+
thr_task_puller.join()
|
528
538
|
|
529
539
|
for worker_id in procs:
|
530
540
|
p = procs[worker_id]
|
@@ -862,10 +872,10 @@ def get_arg_parser() -> argparse.ArgumentParser:
|
|
862
872
|
help="GB of memory assigned to each worker process. Default=0, no assignment",
|
863
873
|
)
|
864
874
|
parser.add_argument(
|
865
|
-
"-
|
866
|
-
"--
|
875
|
+
"-P",
|
876
|
+
"--port",
|
867
877
|
required=True,
|
868
|
-
help="
|
878
|
+
help="Port for communication with the interchange",
|
869
879
|
)
|
870
880
|
parser.add_argument(
|
871
881
|
"--max_workers_per_node",
|
@@ -901,12 +911,6 @@ def get_arg_parser() -> argparse.ArgumentParser:
|
|
901
911
|
parser.add_argument(
|
902
912
|
"--poll", default=10, help="Poll period used in milliseconds"
|
903
913
|
)
|
904
|
-
parser.add_argument(
|
905
|
-
"-r",
|
906
|
-
"--result_port",
|
907
|
-
required=True,
|
908
|
-
help="Result port for posting results to the interchange",
|
909
|
-
)
|
910
914
|
parser.add_argument(
|
911
915
|
"--cpu-affinity",
|
912
916
|
type=strategyorlist,
|
@@ -953,8 +957,7 @@ if __name__ == "__main__":
|
|
953
957
|
f"\n Block ID: {args.block_id}"
|
954
958
|
f"\n cores_per_worker: {args.cores_per_worker}"
|
955
959
|
f"\n mem_per_worker: {args.mem_per_worker}"
|
956
|
-
f"\n
|
957
|
-
f"\n result_port: {args.result_port}"
|
960
|
+
f"\n Interchange port: {args.port}"
|
958
961
|
f"\n addresses: {args.addresses}"
|
959
962
|
f"\n max_workers_per_node: {args.max_workers_per_node}"
|
960
963
|
f"\n poll_period: {args.poll}"
|
@@ -969,8 +972,7 @@ if __name__ == "__main__":
|
|
969
972
|
f"\n mpi_launcher: {args.mpi_launcher}"
|
970
973
|
)
|
971
974
|
try:
|
972
|
-
manager = Manager(
|
973
|
-
result_port=args.result_port,
|
975
|
+
manager = Manager(port=args.port,
|
974
976
|
addresses=args.addresses,
|
975
977
|
address_probe_timeout=int(args.address_probe_timeout),
|
976
978
|
uid=args.uid,
|
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: parsl
|
3
|
-
Version: 2025.
|
3
|
+
Version: 2025.7.7
|
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.
|
6
|
+
Download-URL: https://github.com/Parsl/parsl/archive/2025.07.07.tar.gz
|
7
7
|
Author: The Parsl Team
|
8
8
|
Author-email: parsl@googlegroups.com
|
9
9
|
License: Apache 2.0
|
@@ -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=codTX6_KLhgeTwNkRzc1lo4bgc1M93eJ-lkqOO98fvk,14331
|
11
|
-
parsl/version.py,sha256=
|
11
|
+
parsl/version.py,sha256=XoqJk9aOyLN-8UXU2YL-5sYMes5sy0YqZEK4D22Nsbk,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
|
@@ -21,8 +21,10 @@ parsl/concurrent/__init__.py,sha256=TvIVceJYaJAsxedNBF3Vdo9lEQNHH_j3uxJv0zUjP7w,
|
|
21
21
|
parsl/configs/ASPIRE1.py,sha256=nQm6BvCPE07YXEsC94wMrHeVAyYcyfvPgWyHIysjAoA,1690
|
22
22
|
parsl/configs/Azure.py,sha256=CJms3xWmdb-S3CksbHrPF2TfMxJC5I0faqUKCOzVg0k,1268
|
23
23
|
parsl/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
|
+
parsl/configs/anvil.py,sha256=kC0GvIKOPw6Phhghi-Q7IkEaBRKPy9NUsEgQ8RhZ0i4,1259
|
24
25
|
parsl/configs/bridges.py,sha256=NsTvCiHZHbJj-BsOXOpgS4hCblCHW_lnMa_VMb3SIww,1523
|
25
26
|
parsl/configs/cc_in2p3.py,sha256=8KQ18URTKX5o16k66_h-TRCRQeh7Vrsi-s2d_AuOBHs,705
|
27
|
+
parsl/configs/delta.py,sha256=5b_arUTDrRiwJyst4A9v2tb43SaGYrf3qx7JNPkGJAc,1282
|
26
28
|
parsl/configs/ec2.py,sha256=5xtlZI4Fc558sYXdM4nQQvQDBNPdzhRRCO14F-8H7Y4,944
|
27
29
|
parsl/configs/expanse.py,sha256=ADUY3GZWSfVKmqFWbgdfC85kRxNPChqOGwly0XdcKSw,1033
|
28
30
|
parsl/configs/frontera.py,sha256=HkZ3sFvFqKrk8kdxMonbUiWjGaZxz3vgvhtgg6_0vpY,1415
|
@@ -34,7 +36,7 @@ parsl/configs/improv.py,sha256=le9fDip-Mr-HqKObiyHXbdR-Ne7cy15Ao5ONoUzCSaE,1252
|
|
34
36
|
parsl/configs/kubernetes.py,sha256=s6ABVRwHEKsIFi-w9gc5OK-P0UDmlAZsoHc6OZ3oOD4,1325
|
35
37
|
parsl/configs/local_threads.py,sha256=I1VFfGo2TMTrBL9g_rlG3TEqEWkhL-AHpkqJ3lvcTf8,221
|
36
38
|
parsl/configs/midway.py,sha256=An2Z-TbL3b6AP3uQwauxtUqZaYO2CtUiP8XH05hpWks,1221
|
37
|
-
parsl/configs/osg.py,sha256=
|
39
|
+
parsl/configs/osg.py,sha256=iSfYZuAiCLy_Dtz4NOhQ98Z0Xpb0EdKZdFDLBDIH7So,1211
|
38
40
|
parsl/configs/polaris.py,sha256=rbUdeFC-R4YGcs3cShfs66IuZEKyBx_sFrVdjje_l_g,1731
|
39
41
|
parsl/configs/stampede2.py,sha256=2FTUZ6lQ-0_b0xtpDC6ZngFBhqc_vI45dHOSwrtzl3Y,1405
|
40
42
|
parsl/configs/summit.py,sha256=wCiYDwNomgVAy79Of1_gywtEO0oajlgm9mOvUTBaGSc,1153
|
@@ -53,7 +55,7 @@ parsl/data_provider/staging.py,sha256=ZDZuuFg38pjUStegKPcvPsfGp3iMeReMzfU6DSwtJj
|
|
53
55
|
parsl/data_provider/zip.py,sha256=S4kVuH9lxAegRURYbvIUR7EYYBOccyslaqyCrVWUBhw,4497
|
54
56
|
parsl/dataflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
55
57
|
parsl/dataflow/dependency_resolvers.py,sha256=Om8Dgh7a0ZwgXAc6TlhxLSzvxXHDlNNV1aBNiD3JTNY,3325
|
56
|
-
parsl/dataflow/dflow.py,sha256=
|
58
|
+
parsl/dataflow/dflow.py,sha256=ztSXUn5gmdafikpaPFe88jMkT-1gu4p3dFNY85WdWA8,62588
|
57
59
|
parsl/dataflow/errors.py,sha256=daVfr2BWs1zRsGD6JtosEMttWHvK1df1Npiu_MUvFKg,3998
|
58
60
|
parsl/dataflow/futures.py,sha256=08LuP-HFiHBIZmeKCjlsazw_WpQ5fwevrU2_WbidkYw,6080
|
59
61
|
parsl/dataflow/memoization.py,sha256=QUkTduZ_gdr8i08VWNWrqhfEvoMGsPDZegWUE2_7sGQ,12579
|
@@ -61,28 +63,28 @@ parsl/dataflow/rundirs.py,sha256=JZdzybVGubY35jL2YiKcDo65ZmRl1WyOApc8ajYxztc,108
|
|
61
63
|
parsl/dataflow/states.py,sha256=hV6mfv-y4A6xrujeQglcomnfEs7y3Xm2g6JFwC6dvgQ,2612
|
62
64
|
parsl/dataflow/taskrecord.py,sha256=qIW7T6hn9dYTuNPdUura3HQwwUpUJACwPP5REm5COf4,3042
|
63
65
|
parsl/executors/__init__.py,sha256=PEuXYrnVqwlaz_nt82s9D_YNaVsX7ET29DeIZRUR8hw,577
|
64
|
-
parsl/executors/base.py,sha256=
|
66
|
+
parsl/executors/base.py,sha256=Qlc7Qa-jbfGpQcGB29JUFXCdhcSN63bjGubEcbDk270,4948
|
65
67
|
parsl/executors/errors.py,sha256=ZxL3nK5samPos8Xixo_jpRtPIiRJfZ5D397_qaXj2g0,2515
|
66
68
|
parsl/executors/execute_task.py,sha256=PtqHxk778UQaNah1AN-TJV5emZbOcU5TGtWDxFn3_F4,1079
|
67
69
|
parsl/executors/globus_compute.py,sha256=p59iBrv2BvYUAZ3YZSpOrm_Wpai592ueiJm3zFS7gvY,5304
|
68
70
|
parsl/executors/status_handling.py,sha256=n2DLASEvKZNgFpviAMYDfqcAsxMiU7QxFemw91YSenc,15746
|
69
|
-
parsl/executors/threads.py,sha256=
|
71
|
+
parsl/executors/threads.py,sha256=lX9VuaMDBg_dqAObKfeaZlYCY4-ti33U-YMWOhWFGTY,4141
|
70
72
|
parsl/executors/flux/__init__.py,sha256=P9grTTeRPXfqXurFhlSS7XhmE6tTbnCnyQ1f9b-oYHE,136
|
71
73
|
parsl/executors/flux/execute_parsl_task.py,sha256=zHP5M7ILGiwnoalZ8WsfVVdZM7uP4iQo2ThVh4crxpM,1530
|
72
74
|
parsl/executors/flux/executor.py,sha256=NLdjOli5VjrSdEfyWbfqKN_8APvFkp_qFCouS_9NeLQ,17069
|
73
75
|
parsl/executors/flux/flux_instance_manager.py,sha256=5T3Rp7ZM-mlT0Pf0Gxgs5_YmnaPrSF9ec7zvRfLfYJw,2129
|
74
76
|
parsl/executors/high_throughput/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
75
77
|
parsl/executors/high_throughput/errors.py,sha256=k2XuvvFdUfNs2foHFnxmS-BToRMfdXpYEa4EF3ELKq4,1554
|
76
|
-
parsl/executors/high_throughput/executor.py,sha256=
|
77
|
-
parsl/executors/high_throughput/interchange.py,sha256=
|
78
|
+
parsl/executors/high_throughput/executor.py,sha256=i1XMvB0h40gReWyD4ID14VxdF-Pftl4iGa9vyxC6nKQ,39939
|
79
|
+
parsl/executors/high_throughput/interchange.py,sha256=R6zcY7yh1daMJR8Ke8o9QCj8AtkH7lwzECS0MAWugvA,25964
|
78
80
|
parsl/executors/high_throughput/manager_record.py,sha256=ZMsqFxvreGLRXAw3N-JnODDa9Qfizw2tMmcBhm4lco4,490
|
79
81
|
parsl/executors/high_throughput/manager_selector.py,sha256=UKcUE6v0tO7PDMTThpKSKxVpOpOUilxDL7UbNgpZCxo,2116
|
80
82
|
parsl/executors/high_throughput/monitoring_info.py,sha256=HC0drp6nlXQpAop5PTUKNjdXMgtZVvrBL0JzZJebPP4,298
|
81
|
-
parsl/executors/high_throughput/mpi_executor.py,sha256=
|
83
|
+
parsl/executors/high_throughput/mpi_executor.py,sha256=P8n81Y9t5cw-YuNFgkrGtc4oG75ntBJDonUIfhkp_5I,5223
|
82
84
|
parsl/executors/high_throughput/mpi_prefix_composer.py,sha256=DmpKugANNa1bdYlqQBLHkrFc15fJpefPPhW9hkAlh1s,4308
|
83
85
|
parsl/executors/high_throughput/mpi_resource_management.py,sha256=73bTW2ZbHRfcrPN318cyjiqDN50AM1cOCQqUGJDIlBg,8199
|
84
|
-
parsl/executors/high_throughput/probe.py,sha256=
|
85
|
-
parsl/executors/high_throughput/process_worker_pool.py,sha256=
|
86
|
+
parsl/executors/high_throughput/probe.py,sha256=QlBFwSSxMmtH-Aa2JEvCzQLddsbWZluMUxq5ypLR51E,3831
|
87
|
+
parsl/executors/high_throughput/process_worker_pool.py,sha256=v-YesFPRU4-Zctyf-N8Tb9YCEqmDNNUaW66YsGsQcxo,40538
|
86
88
|
parsl/executors/high_throughput/zmq_pipes.py,sha256=NUK25IEh0UkxzdqQQyM8tMtuZmjSiTeWu1DzkkAIOhA,8980
|
87
89
|
parsl/executors/radical/__init__.py,sha256=CKbtV2numw5QvgIBq1htMUrt9TqDCIC2zifyf2svTNU,186
|
88
90
|
parsl/executors/radical/executor.py,sha256=e3XS4mvug1uJ6wrt4UH6hBgfbDbc-mQH3xUW2ZmBsMQ,22888
|
@@ -91,16 +93,16 @@ parsl/executors/radical/rpex_worker.py,sha256=z6r82ZujKb6sdKIdHsQ_5EBMDIQieeGcrl
|
|
91
93
|
parsl/executors/taskvine/__init__.py,sha256=9rwp3M8B0YyEhZMLO0RHaNw7u1nc01WHbXLqnBTanu0,293
|
92
94
|
parsl/executors/taskvine/errors.py,sha256=euIYkSslrNSI85kyi2s0xzOaO9ik4c1fYHstMIeiBJk,652
|
93
95
|
parsl/executors/taskvine/exec_parsl_function.py,sha256=ftGdJU78lKPPkphSHlEi4rj164mhuMHJjghVqfgeXKk,7085
|
94
|
-
parsl/executors/taskvine/executor.py,sha256=
|
96
|
+
parsl/executors/taskvine/executor.py,sha256=AXLQZHhibGpApddq8CvEVObWBS91F_dpzIz61nc19co,31326
|
95
97
|
parsl/executors/taskvine/factory.py,sha256=GU5JryEAKJuYKwrSc162BN-lhcKhapvBZHT820pxwic,2772
|
96
98
|
parsl/executors/taskvine/factory_config.py,sha256=ZQC5vyDe8cM0nuv7fbBCV2xnWGAZ87iLlT2UqmFFI1U,3695
|
97
|
-
parsl/executors/taskvine/manager.py,sha256=
|
99
|
+
parsl/executors/taskvine/manager.py,sha256=2GKpw9bnA2NQmti1AACZ6gHRVa8MN88NBk6j5VyTUIY,25935
|
98
100
|
parsl/executors/taskvine/manager_config.py,sha256=96G1LMBvgg74sHX4UcOzkCXhEdtVXry4ZzMDEYLWBTQ,7669
|
99
101
|
parsl/executors/taskvine/utils.py,sha256=iSrIogeiauL3UNy_9tiZp1cBSNn6fIJkMYQRVi1n_r8,4156
|
100
102
|
parsl/executors/workqueue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
101
103
|
parsl/executors/workqueue/errors.py,sha256=XO2naYhAsHHyiOBH6hpObg3mPNDmvMoFqErsj0-v7jc,541
|
102
104
|
parsl/executors/workqueue/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
|
103
|
-
parsl/executors/workqueue/executor.py,sha256=
|
105
|
+
parsl/executors/workqueue/executor.py,sha256=PpJVu4Fa12bqnhE4gkFtXtjYjjMOAuCsyuKFmYsBn4I,50203
|
104
106
|
parsl/executors/workqueue/parsl_coprocess.py,sha256=cF1UmTgVLoey6QzBcbYgEiEsRidSaFfuO54f1HFw_EM,5737
|
105
107
|
parsl/executors/workqueue/parsl_coprocess_stub.py,sha256=_bJmpPIgL42qM6bVzeEKt1Mn1trSP41rtJguXxPGfHI,735
|
106
108
|
parsl/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -115,21 +117,21 @@ parsl/launchers/errors.py,sha256=8YMV_CHpBNVa4eXkGE4x5DaFQlZkDCRCHmBktYcY6TA,467
|
|
115
117
|
parsl/launchers/launchers.py,sha256=cQsNsHuCOL_nQTjPXf0--YsgsDoMoJ77bO1Wt4ncLjs,15134
|
116
118
|
parsl/monitoring/__init__.py,sha256=0ywNz6i0lM1xo_7_BIxhETDGeVd2C_0wwD7qgeaMR4c,83
|
117
119
|
parsl/monitoring/db_manager.py,sha256=L0c5S9ockq0UIchT2bjmkSAWXS-t0G-Q_neOIBfLbm0,33444
|
118
|
-
parsl/monitoring/errors.py,sha256=
|
120
|
+
parsl/monitoring/errors.py,sha256=VQNIMoo5Ro8GlJ-Ad-6q-YA0y6sTc-IibSdNXZC-GuU,306
|
119
121
|
parsl/monitoring/message_type.py,sha256=Khn88afNxcOIciKiCK4GLnn90I5BlRTiOL3zK-P07yQ,401
|
120
|
-
parsl/monitoring/monitoring.py,sha256=
|
121
|
-
parsl/monitoring/remote.py,sha256=
|
122
|
+
parsl/monitoring/monitoring.py,sha256=oIXwI_oxan-b1XdTneoza--4uTqYF6ar2X4zWgarGVQ,6602
|
123
|
+
parsl/monitoring/remote.py,sha256=Kki5sTnZwHUIFMJh99w11vQrKxiHGO7ElBydwAIctbY,12636
|
122
124
|
parsl/monitoring/types.py,sha256=oOCrzv-ab-_rv4pb8o58Sdb8G_RGp1aZriRbdf9zBEk,339
|
123
125
|
parsl/monitoring/queries/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
124
126
|
parsl/monitoring/queries/pandas.py,sha256=0Z2r0rjTKCemf0eaDkF1irvVHn5g7KC5SYETvQPRxwU,2232
|
125
127
|
parsl/monitoring/radios/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
126
|
-
parsl/monitoring/radios/base.py,sha256=
|
127
|
-
parsl/monitoring/radios/filesystem.py,sha256=
|
128
|
-
parsl/monitoring/radios/filesystem_router.py,sha256=
|
129
|
-
parsl/monitoring/radios/htex.py,sha256=
|
130
|
-
parsl/monitoring/radios/multiprocessing.py,sha256=
|
131
|
-
parsl/monitoring/radios/udp.py,sha256=
|
132
|
-
parsl/monitoring/radios/udp_router.py,sha256=
|
128
|
+
parsl/monitoring/radios/base.py,sha256=LnTWz4Czew-Nh6TwHMGXLHO8bH5zlSoMO-0rkqyezO0,2622
|
129
|
+
parsl/monitoring/radios/filesystem.py,sha256=R6ueEVsmmx1ltpBdZUILYLAueiSe8KwTJLqjseaySNo,2240
|
130
|
+
parsl/monitoring/radios/filesystem_router.py,sha256=_Sf1M00oUn-gBvq-P7Ua1Ws5_SbPFiTQvYAJ1Q6Mbro,2992
|
131
|
+
parsl/monitoring/radios/htex.py,sha256=R3Ce7fxiVtQFxn0EgJ-9wKiMJ_xCJml02b0rXnxORXQ,1870
|
132
|
+
parsl/monitoring/radios/multiprocessing.py,sha256=4ua-6kmdQ6XiXzPBM8DjkFXy1LP5x0sERxeaR-WyKHc,1308
|
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
|
133
135
|
parsl/monitoring/radios/zmq.py,sha256=fhoHp9ylhf-D3eTJb2aSHRsuic8-FJ_oRNGnniGkCAI,592
|
134
136
|
parsl/monitoring/radios/zmq_router.py,sha256=oqGlOI4OkmvGLNKGp5F0iLFLYj3JdUkpnwg40JOvEak,7826
|
135
137
|
parsl/monitoring/visualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -175,7 +177,7 @@ parsl/providers/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
175
177
|
parsl/providers/kubernetes/kube.py,sha256=WFCsIVWwXMxjOvfjZIm40YTEAYT11dj8KHICVcXZuaI,15515
|
176
178
|
parsl/providers/kubernetes/template.py,sha256=VsRz6cmNaII-y4OdMT6sCwzQy95SJX6NMB0hmmFBhX4,50
|
177
179
|
parsl/providers/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
178
|
-
parsl/providers/local/local.py,sha256=
|
180
|
+
parsl/providers/local/local.py,sha256=3AxfINGwHrROy1geQzC7FAp61-Hfs1EkSpMmXmLpDSI,10306
|
179
181
|
parsl/providers/lsf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
180
182
|
parsl/providers/lsf/lsf.py,sha256=dB3CwYY39rM7E2dg3eP2UkeNHvatBxfl6JJns6FvLEY,10661
|
181
183
|
parsl/providers/lsf/template.py,sha256=leQ_TpXv7ePMzbHfLaWvqMR0VORxlp-hjX5JxtkcwwU,269
|
@@ -217,7 +219,7 @@ parsl/tests/configs/flux_local.py,sha256=xliKQfB5FFpfNHWYEHoA8FKOTVHFCXVhWNuKQ5V
|
|
217
219
|
parsl/tests/configs/frontera.py,sha256=WEXJjFmHMhFT8X8JLUIUK35Qm2FRDolhOCAaE0zlL0U,1483
|
218
220
|
parsl/tests/configs/globus_compute.py,sha256=5lRtOVmXSUJ1vLgCk3eoR96GVX-vitP9IsU8_e3netE,418
|
219
221
|
parsl/tests/configs/htex_local.py,sha256=6TKsAbEyFknFWT1cpMyd34DmPoo0OrsyPTayzSf2OFQ,675
|
220
|
-
parsl/tests/configs/htex_local_alternate.py,sha256=
|
222
|
+
parsl/tests/configs/htex_local_alternate.py,sha256=2ErwD2QNmmiUVZtqdP4TIBNyCW8MQl27HxclgXaSirE,2404
|
221
223
|
parsl/tests/configs/htex_local_intask_staging.py,sha256=JTcrc8qNseF1sdBHxX_BfiGc-ZCPv7HXHlzZ94Jh-YE,806
|
222
224
|
parsl/tests/configs/htex_local_rsync_staging.py,sha256=WaETbdg6y9PHY8p_3N3eTsuK5b_L2Znke0KW_XlVhVQ,860
|
223
225
|
parsl/tests/configs/local_radical.py,sha256=C70I6ssfaaHEY1MMCC77izpp6sdANALH-P2mDR2msN0,417
|
@@ -324,7 +326,7 @@ parsl/tests/test_htex/test_disconnected_blocks.py,sha256=3V1Ol9gMS6knjLTgIjB5Gru
|
|
324
326
|
parsl/tests/test_htex/test_disconnected_blocks_failing_provider.py,sha256=eOdipRpKMOkWAXB3UtY1UjqTiwfNs_csNLve8vllG_M,2040
|
325
327
|
parsl/tests/test_htex/test_drain.py,sha256=gYA7qzbv5ozox3clVdW0rlxAzwa_f_P0kqsAez3tIfk,2370
|
326
328
|
parsl/tests/test_htex/test_htex.py,sha256=J1uEGezic8ziPPZsQwfK9iNiTJ53NqXMhIg9CUunjZw,4901
|
327
|
-
parsl/tests/test_htex/test_interchange_exit_bad_registration.py,sha256=
|
329
|
+
parsl/tests/test_htex/test_interchange_exit_bad_registration.py,sha256=fQGNp5jX1m6cQAT1gr519GLMxviYtG-Fs43ru9Yyoec,4485
|
328
330
|
parsl/tests/test_htex/test_manager_failure.py,sha256=N-obuSZ8f7XA_XcddoN2LWKSVtpKUZvTHb7BFelS3iQ,1143
|
329
331
|
parsl/tests/test_htex/test_manager_selector_by_block.py,sha256=VQqSE6MDhGpDSjShGUTbj7l9Ahuj2tC9qD--o4puF44,1310
|
330
332
|
parsl/tests/test_htex/test_managers_command.py,sha256=SCwkfyGB-Udgu5L2yDMpR5bsaT-aNjNkiXxtuRb25DI,1622
|
@@ -333,20 +335,21 @@ parsl/tests/test_htex/test_multiple_disconnected_blocks.py,sha256=2vXZoIx4NuAWYu
|
|
333
335
|
parsl/tests/test_htex/test_priority_queue.py,sha256=vH58WwDZVpyIiMqhjwGkme7Cv5-jupTmM52EOcbdrEg,2106
|
334
336
|
parsl/tests/test_htex/test_resource_spec_validation.py,sha256=ZXW02jDd1rNxjBLh1jHyiz31zNoB9JzDw94aWllXFd4,1102
|
335
337
|
parsl/tests/test_htex/test_worker_failure.py,sha256=Uz-RHI-LK78FMjXUvrUFmo4iYfmpDVBUcBxxRb3UG9M,603
|
336
|
-
parsl/tests/test_htex/test_zmq_binding.py,sha256=
|
338
|
+
parsl/tests/test_htex/test_zmq_binding.py,sha256=RaUK6Pmvg8v2vqXg3fFj-k2bQ8Cbuxh6dprsq2WSA98,4339
|
337
339
|
parsl/tests/test_monitoring/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
338
340
|
parsl/tests/test_monitoring/test_app_names.py,sha256=A-mOMCVhZDnUyJp32fsTUkHdcyval8o7WPEWacDkbD4,2208
|
339
|
-
parsl/tests/test_monitoring/test_basic.py,sha256=
|
341
|
+
parsl/tests/test_monitoring/test_basic.py,sha256=qyKKzjmoYwQC485Xk4QHqU3FvVILpuIjnJThMOl7pq4,6316
|
340
342
|
parsl/tests/test_monitoring/test_db_locks.py,sha256=3s3c1xhKo230ZZIJ3f1Ca4U7LcEdXnanOGVXQyNlk2U,2895
|
341
343
|
parsl/tests/test_monitoring/test_exit_helper.py,sha256=ob8Qd1hlkq_mowygfPetTnYN9LfuqeXHRpPilSfDSog,1232
|
342
344
|
parsl/tests/test_monitoring/test_htex_fuzz_zmq.py,sha256=MUaVBVjmoKSVg00DlMIRdj9KUizYvHjzW95Y3n_ViqE,3659
|
343
|
-
parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py,sha256=
|
345
|
+
parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py,sha256=r3F3l7_vV45ns6qrs0se9XkeFa00kUiHaI6NB3bXyMo,2573
|
344
346
|
parsl/tests/test_monitoring/test_incomplete_futures.py,sha256=ZnO1sFSwlWUBHX64C_zwfTVRVC_UFNlU4h0POgx6NEo,2005
|
345
347
|
parsl/tests/test_monitoring/test_memoization_representation.py,sha256=dknv2nO7pNZ1jGxWGsC_AW3rs90gjMIeC5d7pIJ75Xc,2645
|
346
|
-
parsl/tests/test_monitoring/test_radio_filesystem.py,sha256=
|
347
|
-
parsl/tests/test_monitoring/
|
348
|
+
parsl/tests/test_monitoring/test_radio_filesystem.py,sha256=YVkPbStNzzAi5BwwladUzKUX5FuKgKaXGOQ9_rn9NjU,1304
|
349
|
+
parsl/tests/test_monitoring/test_radio_multiprocessing.py,sha256=S6O3KcZB9ypL-p4Y99ObOas70Al5X9rUeFjKpbP2STc,1246
|
350
|
+
parsl/tests/test_monitoring/test_radio_udp.py,sha256=fIO5z-RAAl88inKcNr-5P94VM621ktLB2pessrrMor8,6448
|
348
351
|
parsl/tests/test_monitoring/test_radio_zmq.py,sha256=7ARjDbde9kSuP4NCx_z-UtmMf2X5opbkkKM7mZcayuA,783
|
349
|
-
parsl/tests/test_monitoring/test_stdouterr.py,sha256=
|
352
|
+
parsl/tests/test_monitoring/test_stdouterr.py,sha256=vZZVZhCfMSboW9f4H_z9syM1DbYI6Ja2OXKkxIF07YI,4516
|
350
353
|
parsl/tests/test_monitoring/test_viz_colouring.py,sha256=83Qdmn3gM0j7IL6kPDcuIsp_nl4zj-liPijyIN632SY,592
|
351
354
|
parsl/tests/test_mpi_apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
352
355
|
parsl/tests/test_mpi_apps/test_bad_mpi_config.py,sha256=QKvEUSrHIBrvqu2fRj1MAqxsYxDfcrdQ7dzWdOZejuU,1320
|
@@ -415,7 +418,7 @@ parsl/tests/test_scaling/test_scale_down.py,sha256=GmxzNtlG13SySVDGGlSqXEnaHxyCx
|
|
415
418
|
parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py,sha256=EnVNllKO2AGKkGa6927cLrzvvG6mpNQeFDzVktv6x08,4521
|
416
419
|
parsl/tests/test_scaling/test_scale_down_htex_unregistered.py,sha256=OrdnYmd58n7UfkANPJ7mzha4WSCPdbgJRX1O1Zdu0tI,1954
|
417
420
|
parsl/tests/test_scaling/test_shutdown_scalein.py,sha256=sr40of5DwxeyQI97MDZxFqJILZSXZJb9Dv7qTf2gql8,2471
|
418
|
-
parsl/tests/test_scaling/test_worker_interchange_bad_messages_3262.py,sha256=
|
421
|
+
parsl/tests/test_scaling/test_worker_interchange_bad_messages_3262.py,sha256=wDv6JD-4OZ70Hw8pfOd12wOKzGtTuAsSqjoy-4tBV0k,2738
|
419
422
|
parsl/tests/test_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
420
423
|
parsl/tests/test_serialization/test_2555_caching_deserializer.py,sha256=jEXJvbriaLVI7frV5t-iJRKYyeQ7a9_-t3X9lhhBWQo,767
|
421
424
|
parsl/tests/test_serialization/test_3495_deserialize_managerlost.py,sha256=GoMtK6BmARicawzYR2eQj5jUSL9RZ_tHV3g19BdQuQ8,1144
|
@@ -460,13 +463,13 @@ parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
460
463
|
parsl/usage_tracking/api.py,sha256=iaCY58Dc5J4UM7_dJzEEs871P1p1HdxBMtNGyVdzc9g,1821
|
461
464
|
parsl/usage_tracking/levels.py,sha256=xbfzYEsd55KiZJ-mzNgPebvOH4rRHum04hROzEf41tU,291
|
462
465
|
parsl/usage_tracking/usage.py,sha256=hbMo5BYgIWqMcFWqN-HYP1TbwNrTonpv-usfwnCFJKY,9212
|
463
|
-
parsl-2025.
|
464
|
-
parsl-2025.
|
465
|
-
parsl-2025.
|
466
|
-
parsl-2025.
|
467
|
-
parsl-2025.
|
468
|
-
parsl-2025.
|
469
|
-
parsl-2025.
|
470
|
-
parsl-2025.
|
471
|
-
parsl-2025.
|
472
|
-
parsl-2025.
|
466
|
+
parsl-2025.7.7.data/scripts/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
|
467
|
+
parsl-2025.7.7.data/scripts/interchange.py,sha256=dh9_Q5bLvgHLhSRAXrFIlOd5Yo-ZkudDGFWz0N3hQBg,25951
|
468
|
+
parsl-2025.7.7.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
|
469
|
+
parsl-2025.7.7.data/scripts/process_worker_pool.py,sha256=-5VLVjeab6oROulx7OwI9tdNNHd6uap45I1jltm-UDc,40524
|
470
|
+
parsl-2025.7.7.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
471
|
+
parsl-2025.7.7.dist-info/METADATA,sha256=3qPGD-IwRS9lxk6_rAYLl0pHtLgVZ5hsCOxR2QzerJg,4054
|
472
|
+
parsl-2025.7.7.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
473
|
+
parsl-2025.7.7.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
|
474
|
+
parsl-2025.7.7.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
|
475
|
+
parsl-2025.7.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|