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.
Files changed (46) hide show
  1. parsl/configs/anvil.py +34 -0
  2. parsl/configs/delta.py +35 -0
  3. parsl/configs/osg.py +1 -1
  4. parsl/dataflow/dflow.py +14 -4
  5. parsl/executors/base.py +14 -6
  6. parsl/executors/high_throughput/executor.py +20 -15
  7. parsl/executors/high_throughput/interchange.py +177 -191
  8. parsl/executors/high_throughput/mpi_executor.py +7 -4
  9. parsl/executors/high_throughput/probe.py +61 -49
  10. parsl/executors/high_throughput/process_worker_pool.py +105 -103
  11. parsl/executors/taskvine/executor.py +9 -3
  12. parsl/executors/taskvine/manager.py +3 -1
  13. parsl/executors/threads.py +8 -1
  14. parsl/executors/workqueue/executor.py +9 -3
  15. parsl/monitoring/errors.py +5 -0
  16. parsl/monitoring/monitoring.py +25 -42
  17. parsl/monitoring/radios/base.py +63 -2
  18. parsl/monitoring/radios/filesystem.py +18 -3
  19. parsl/monitoring/radios/filesystem_router.py +13 -26
  20. parsl/monitoring/radios/htex.py +22 -13
  21. parsl/monitoring/radios/multiprocessing.py +22 -2
  22. parsl/monitoring/radios/udp.py +57 -19
  23. parsl/monitoring/radios/udp_router.py +49 -15
  24. parsl/monitoring/remote.py +19 -40
  25. parsl/providers/local/local.py +12 -13
  26. parsl/tests/configs/htex_local_alternate.py +0 -1
  27. parsl/tests/test_htex/test_interchange_exit_bad_registration.py +5 -7
  28. parsl/tests/test_htex/test_zmq_binding.py +5 -6
  29. parsl/tests/test_monitoring/test_basic.py +12 -10
  30. parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py +0 -1
  31. parsl/tests/test_monitoring/test_radio_filesystem.py +7 -9
  32. parsl/tests/test_monitoring/test_radio_multiprocessing.py +44 -0
  33. parsl/tests/test_monitoring/test_radio_udp.py +163 -12
  34. parsl/tests/test_monitoring/test_stdouterr.py +1 -3
  35. parsl/tests/test_scaling/test_worker_interchange_bad_messages_3262.py +3 -7
  36. parsl/version.py +1 -1
  37. {parsl-2025.6.23.data → parsl-2025.7.7.data}/scripts/interchange.py +177 -191
  38. {parsl-2025.6.23.data → parsl-2025.7.7.data}/scripts/process_worker_pool.py +105 -103
  39. {parsl-2025.6.23.dist-info → parsl-2025.7.7.dist-info}/METADATA +2 -2
  40. {parsl-2025.6.23.dist-info → parsl-2025.7.7.dist-info}/RECORD +46 -43
  41. {parsl-2025.6.23.data → parsl-2025.7.7.data}/scripts/exec_parsl_function.py +0 -0
  42. {parsl-2025.6.23.data → parsl-2025.7.7.data}/scripts/parsl_coprocess.py +0 -0
  43. {parsl-2025.6.23.dist-info → parsl-2025.7.7.dist-info}/LICENSE +0 -0
  44. {parsl-2025.6.23.dist-info → parsl-2025.7.7.dist-info}/WHEEL +0 -0
  45. {parsl-2025.6.23.dist-info → parsl-2025.7.7.dist-info}/entry_points.txt +0 -0
  46. {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
- task_port,
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
- self._task_q_url = task_q_url
178
- self._result_q_url = result_q_url
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
- msg = {'type': 'registration',
257
- 'parsl_v': PARSL_VERSION,
258
- 'python_v': "{}.{}.{}".format(sys.version_info.major,
259
- sys.version_info.minor,
260
- sys.version_info.micro),
261
- 'packages': {dist.metadata['Name']: dist.version for dist in distributions()},
262
- 'worker_count': self.worker_count,
263
- 'uid': self.uid,
264
- 'block_id': self.block_id,
265
- 'start_time': self.start_time,
266
- 'prefetch_capacity': self.prefetch_capacity,
267
- 'max_capacity': self.worker_count + self.prefetch_capacity,
268
- 'os': platform.system(),
269
- 'hostname': platform.node(),
270
- 'dir': os.getcwd(),
271
- 'cpu_count': psutil.cpu_count(logical=False),
272
- 'total_memory': psutil.virtual_memory().total,
273
- }
274
- b_msg = json.dumps(msg).encode('utf-8')
275
- return b_msg
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 = json.dumps(msg).encode('utf-8')
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 = json.dumps(msg).encode('utf-8')
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 pull_tasks(self):
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
- task_incoming = self.zmq_context.socket(zmq.DEALER)
306
- task_incoming.setsockopt(zmq.IDENTITY, self.uid.encode('utf-8'))
307
- task_incoming.setsockopt(zmq.LINGER, 0)
308
- task_incoming.connect(self._task_q_url)
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(task_incoming, zmq.POLLIN)
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: {}".format(msg))
317
- task_incoming.send(msg)
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("ready workers: {}, pending tasks: {}".format(self.ready_worker_count.value,
341
- pending_task_count))
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(task_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(task_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(task_incoming) == zmq.POLLIN:
362
- _, pkl_msg = task_incoming.recv_multipart()
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
- task_incoming.close()
407
+ ix_sock.close()
391
408
  logger.info("Exiting")
392
409
 
393
410
  @wrap_with_logs
394
- def push_results(self):
395
- """ Listens on the pending_result_queue and sends out results via zmq
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("Starting result push thread")
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
- result_outgoing = self.zmq_context.socket(zmq.DEALER)
402
- result_outgoing.setsockopt(zmq.IDENTITY, self.uid.encode('utf-8'))
403
- result_outgoing.setsockopt(zmq.LINGER, 0)
404
- result_outgoing.connect(self._result_q_url)
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: %s", id(r))
414
- result_outgoing.send(r)
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
- result_outgoing.close()
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
- thr_task_puller = threading.Thread(target=self.pull_tasks, name="Task-Puller")
496
- thr_result_pusher = threading.Thread(
497
- target=self.push_results, name="Result-Pusher"
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
- thr_result_pusher.start()
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
- "-t",
866
- "--task_port",
875
+ "-P",
876
+ "--port",
867
877
  required=True,
868
- help="Task port for receiving tasks from the interchange",
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 task_port: {args.task_port}"
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(task_port=args.task_port,
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.6.23
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.06.23.tar.gz
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=Ic4ZXjmRNaNVe4VgUeJZzbs04AL3PcIpDFnIlIUjmIQ,131
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=OVpR2Q33EL6OYGRyj-VpfpbGDhRwGAu3_rT388n1UaY,1220
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=9-aD-CmOgjAkXykZsfZ6OAVbOhlNjMmM83J5dEq_Wrg,61941
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=OApNwTcBrzVXweWFPj8rMrP87qStcvF2facsxaevSqA,4568
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=JkbjJGtZPJNzsVF3DFQHOsZpKmFr7wcGbH1wbwDPSrw,3754
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=JTNgVfZfwzgH9RheMWCCDuNd_1i3LN69B_SYzL7rY3Q,39840
77
- parsl/executors/high_throughput/interchange.py,sha256=lnPhV-5OR_rp4fa_Wj0tmG3avwUdPgJH4LTTBZQcrf8,28922
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=AKc5OX7mNH9eYPiBL1g7Xlrj3P-ouniDgE17bhpIems,5052
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=QOEaliO3x5cB6ltMOZMsZQ-ath9AAuFqXcBzRgWOM60,2754
85
- parsl/executors/high_throughput/process_worker_pool.py,sha256=Q7FN0MdXIAOouxDarim6etYVHEgbXFiaMhBahC2ZtIQ,41137
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=h47c90QoaeoWcqTdJKgfqwQBZVW-kkF44O95sKUfJ8g,30978
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=SUi5mqqMm_rnkBLrZtTQe7RiHqWDn1oOejQscYzfwAU,25797
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=R4cBX3Ac2OePpKsXo-4Kq68X6wAkyltYkhLysk45QwY,49855
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=pol4Xp9lkpTurc1F5vJ0g48R4R-nUr8GBHubD7SU9Aw,165
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=8g8JVbR9Nq2JV17EBBwMaFFR-kvKDVd_PWtHyO0vUlQ,7564
121
- parsl/monitoring/remote.py,sha256=t0qCTUMCzeJ_JOARFpjqlTNrAWdEb20BxhmZh9X7kEM,13728
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=MBW3aAbxQY7TMuNGZEN15dWoy3mAELOqz-GMN1d7vF4,221
127
- parsl/monitoring/radios/filesystem.py,sha256=nn9NJ7EteEAixkqS2b0jJ9M7j55xdouXmYiK0qu5AjY,1763
128
- parsl/monitoring/radios/filesystem_router.py,sha256=T6Okb5deWeLwaugb1Bkskjfdz1_KpM6pX2EyQLey8p4,3312
129
- parsl/monitoring/radios/htex.py,sha256=1v4on4_KmJa_PuEc3a9OrL4NJV2h0bIuUKh_mdoPVKc,1641
130
- parsl/monitoring/radios/multiprocessing.py,sha256=fsfaaoMDp6VJv1DSAl-P0R2ofO6jp13byx6NsPItV3Y,655
131
- parsl/monitoring/radios/udp.py,sha256=bTpt7JYp-5hyBBLzgiLj1_BlSTn28UVp39OYgVGLXCw,1613
132
- parsl/monitoring/radios/udp_router.py,sha256=M7UtHx5dYphKU4YKB2KmkA7aZRtqOFcxuaLVvBn8QJA,7590
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=s8Qx3ONJNoCrC-fYTDrZ_RHwmgmCsFpe9y9Y5hYvSYA,10472
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=CgIpjBpenLn-xOG0Ix5xrWgqO8wllOFnNXomJEWSkDY,2453
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=3yqX_VVQz9fCEiV6Wd1BlcFYcARDDpNaR6ws7LWn-oc,4549
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=G7D2_p9vOekgpB50MBiPRwtIz98DEkUpMqA3rdwzYTQ,4397
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=QJS0SJkf1KV6A4UvikBu-wAIcBJZVoVe-BSVWgyFonI,6180
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=_QV8zjBKVF_qBbBnhT0C3X9AmfS7IKLcOnEw_cU6HeM,2622
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=hA-RXmU29nEG4Dm6eLcyVYoTdGog_wvYDcvNsN5-3lU,1531
347
- parsl/tests/test_monitoring/test_radio_udp.py,sha256=dyb9SOY-ceSuZ4R2rAIn-7DqsRljYl4U6zNdACyCACU,1538
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=SEMKBk4v5Saoq3QiraFpzUpVe5vS_132GQPSf1Qu0qM,4573
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=GaXmRli1srTal-JQmCGDTP4BAwAKI_daXMmrjULsZkY,2788
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.6.23.data/scripts/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
464
- parsl-2025.6.23.data/scripts/interchange.py,sha256=_FRB1LxkL9vnT3y24NTXHOzotMlDJEXwF5ZZCjGmcww,28909
465
- parsl-2025.6.23.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
466
- parsl-2025.6.23.data/scripts/process_worker_pool.py,sha256=__gFeFQJpV5moRofj3WKQCnKp6gmzieXjzkmzVuTmX4,41123
467
- parsl-2025.6.23.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
468
- parsl-2025.6.23.dist-info/METADATA,sha256=MzCr6YRZ0einE2SSqmtGkBDaX8tdfR0I57QP3W3QOXE,4055
469
- parsl-2025.6.23.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
470
- parsl-2025.6.23.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
471
- parsl-2025.6.23.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
472
- parsl-2025.6.23.dist-info/RECORD,,
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,,