parsl 2024.3.11__py3-none-any.whl → 2024.3.25__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 (43) hide show
  1. parsl/addresses.py +3 -1
  2. parsl/config.py +4 -0
  3. parsl/dataflow/dflow.py +14 -5
  4. parsl/executors/base.py +10 -0
  5. parsl/executors/high_throughput/executor.py +12 -0
  6. parsl/executors/high_throughput/interchange.py +30 -8
  7. parsl/executors/high_throughput/manager_record.py +1 -0
  8. parsl/executors/high_throughput/process_worker_pool.py +41 -5
  9. parsl/executors/status_handling.py +2 -9
  10. parsl/executors/taskvine/executor.py +24 -3
  11. parsl/executors/taskvine/manager.py +1 -0
  12. parsl/executors/taskvine/manager_config.py +3 -4
  13. parsl/executors/workqueue/executor.py +19 -0
  14. parsl/jobs/error_handlers.py +1 -1
  15. parsl/jobs/job_status_poller.py +8 -7
  16. parsl/launchers/launchers.py +6 -6
  17. parsl/log_utils.py +8 -4
  18. parsl/monitoring/db_manager.py +4 -2
  19. parsl/monitoring/monitoring.py +30 -264
  20. parsl/monitoring/router.py +208 -0
  21. parsl/monitoring/visualization/plots/default/workflow_plots.py +3 -0
  22. parsl/monitoring/visualization/views.py +2 -1
  23. parsl/providers/cluster_provider.py +1 -3
  24. parsl/tests/configs/user_opts.py +2 -1
  25. parsl/tests/test_htex/test_drain.py +78 -0
  26. parsl/tests/test_monitoring/test_app_names.py +86 -0
  27. parsl/tests/test_monitoring/test_fuzz_zmq.py +2 -2
  28. parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py +82 -0
  29. parsl/tests/test_python_apps/test_context_manager.py +40 -0
  30. parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py +1 -10
  31. parsl/tests/test_shutdown/__init__.py +0 -0
  32. parsl/tests/test_shutdown/test_kill_monitoring.py +65 -0
  33. parsl/utils.py +2 -2
  34. parsl/version.py +1 -1
  35. {parsl-2024.3.11.data → parsl-2024.3.25.data}/scripts/process_worker_pool.py +41 -5
  36. {parsl-2024.3.11.dist-info → parsl-2024.3.25.dist-info}/METADATA +4 -4
  37. {parsl-2024.3.11.dist-info → parsl-2024.3.25.dist-info}/RECORD +43 -36
  38. {parsl-2024.3.11.data → parsl-2024.3.25.data}/scripts/exec_parsl_function.py +0 -0
  39. {parsl-2024.3.11.data → parsl-2024.3.25.data}/scripts/parsl_coprocess.py +0 -0
  40. {parsl-2024.3.11.dist-info → parsl-2024.3.25.dist-info}/LICENSE +0 -0
  41. {parsl-2024.3.11.dist-info → parsl-2024.3.25.dist-info}/WHEEL +0 -0
  42. {parsl-2024.3.11.dist-info → parsl-2024.3.25.dist-info}/entry_points.txt +0 -0
  43. {parsl-2024.3.11.dist-info → parsl-2024.3.25.dist-info}/top_level.txt +0 -0
@@ -36,6 +36,7 @@ from parsl.executors.high_throughput.mpi_resource_management import (
36
36
  from parsl.executors.high_throughput.mpi_prefix_composer import compose_all, VALID_LAUNCHERS
37
37
 
38
38
  HEARTBEAT_CODE = (2 ** 32) - 1
39
+ DRAINED_CODE = (2 ** 32) - 2
39
40
 
40
41
 
41
42
  class Manager:
@@ -73,7 +74,8 @@ class Manager:
73
74
  enable_mpi_mode: bool = False,
74
75
  mpi_launcher: str = "mpiexec",
75
76
  available_accelerators: Sequence[str],
76
- cert_dir: Optional[str]):
77
+ cert_dir: Optional[str],
78
+ drain_period: Optional[int]):
77
79
  """
78
80
  Parameters
79
81
  ----------
@@ -138,6 +140,9 @@ class Manager:
138
140
 
139
141
  cert_dir : str | None
140
142
  Path to the certificate directory.
143
+
144
+ drain_period: int | None
145
+ Number of seconds to drain after TODO: could be a nicer timespec involving m,s,h qualifiers for user friendliness?
141
146
  """
142
147
 
143
148
  logger.info("Manager initializing")
@@ -227,6 +232,14 @@ class Manager:
227
232
  self.heartbeat_period = heartbeat_period
228
233
  self.heartbeat_threshold = heartbeat_threshold
229
234
  self.poll_period = poll_period
235
+
236
+ self.drain_time: float
237
+ if drain_period:
238
+ self.drain_time = self._start_time + drain_period
239
+ logger.info(f"Will request drain at {self.drain_time}")
240
+ else:
241
+ self.drain_time = float('inf')
242
+
230
243
  self.cpu_affinity = cpu_affinity
231
244
 
232
245
  # Define accelerator available, adjust worker count accordingly
@@ -262,10 +275,19 @@ class Manager:
262
275
  """ Send heartbeat to the incoming task queue
263
276
  """
264
277
  msg = {'type': 'heartbeat'}
278
+ # don't need to dumps and encode this every time - could do as a global on import?
265
279
  b_msg = json.dumps(msg).encode('utf-8')
266
280
  self.task_incoming.send(b_msg)
267
281
  logger.debug("Sent heartbeat")
268
282
 
283
+ def drain_to_incoming(self):
284
+ """ Send heartbeat to the incoming task queue
285
+ """
286
+ msg = {'type': 'drain'}
287
+ b_msg = json.dumps(msg).encode('utf-8')
288
+ self.task_incoming.send(b_msg)
289
+ logger.debug("Sent drain")
290
+
269
291
  @wrap_with_logs
270
292
  def pull_tasks(self, kill_event):
271
293
  """ Pull tasks from the incoming tasks zmq pipe onto the internal
@@ -298,6 +320,7 @@ class Manager:
298
320
  # time here are correctly copy-pasted from the relevant if
299
321
  # statements.
300
322
  next_interesting_event_time = min(last_beat + self.heartbeat_period,
323
+ self.drain_time,
301
324
  last_interchange_contact + self.heartbeat_threshold)
302
325
  try:
303
326
  pending_task_count = self.pending_task_queue.qsize()
@@ -312,6 +335,14 @@ class Manager:
312
335
  self.heartbeat_to_incoming()
313
336
  last_beat = time.time()
314
337
 
338
+ if self.drain_time and time.time() > self.drain_time:
339
+ logger.info("Requesting drain")
340
+ self.drain_to_incoming()
341
+ self.drain_time = None
342
+ # This will start the pool draining...
343
+ # Drained exit behaviour does not happen here. It will be
344
+ # driven by the interchange sending a DRAINED_CODE message.
345
+
315
346
  poll_duration_s = max(0, next_interesting_event_time - time.time())
316
347
  socks = dict(poller.poll(timeout=poll_duration_s * 1000))
317
348
 
@@ -322,7 +353,9 @@ class Manager:
322
353
 
323
354
  if tasks == HEARTBEAT_CODE:
324
355
  logger.debug("Got heartbeat from interchange")
325
-
356
+ elif tasks == DRAINED_CODE:
357
+ logger.info("Got fulled drained message from interchange - setting kill flag")
358
+ kill_event.set()
326
359
  else:
327
360
  task_recv_counter += len(tasks)
328
361
  logger.debug("Got executor tasks: {}, cumulative count of tasks: {}".format([t['task_id'] for t in tasks], task_recv_counter))
@@ -490,9 +523,8 @@ class Manager:
490
523
  self._worker_watchdog_thread.start()
491
524
  self._monitoring_handler_thread.start()
492
525
 
493
- logger.info("Loop start")
526
+ logger.info("Manager threads started")
494
527
 
495
- # TODO : Add mechanism in this loop to stop the worker pool
496
528
  # This might need a multiprocessing event to signal back.
497
529
  self._kill_event.wait()
498
530
  logger.critical("Received kill event, terminating worker processes")
@@ -804,6 +836,8 @@ if __name__ == "__main__":
804
836
  help="Heartbeat period in seconds. Uses manager default unless set")
805
837
  parser.add_argument("--hb_threshold", default=120,
806
838
  help="Heartbeat threshold in seconds. Uses manager default unless set")
839
+ parser.add_argument("--drain_period", default=None,
840
+ help="Drain this pool after specified number of seconds. By default, does not drain.")
807
841
  parser.add_argument("--address_probe_timeout", default=30,
808
842
  help="Timeout to probe for viable address to interchange. Default: 30s")
809
843
  parser.add_argument("--poll", default=10,
@@ -824,7 +858,7 @@ if __name__ == "__main__":
824
858
  required=True,
825
859
  help="Whether/how workers should control CPU affinity.")
826
860
  parser.add_argument("--available-accelerators", type=str, nargs="*",
827
- help="Names of available accelerators")
861
+ help="Names of available accelerators, if not given assumed to be zero accelerators available", default=[])
828
862
  parser.add_argument("--enable_mpi_mode", action='store_true',
829
863
  help="Enable MPI mode")
830
864
  parser.add_argument("--mpi-launcher", type=str, choices=VALID_LAUNCHERS,
@@ -856,6 +890,7 @@ if __name__ == "__main__":
856
890
  logger.info("Prefetch capacity: {}".format(args.prefetch_capacity))
857
891
  logger.info("Heartbeat threshold: {}".format(args.hb_threshold))
858
892
  logger.info("Heartbeat period: {}".format(args.hb_period))
893
+ logger.info("Drain period: {}".format(args.drain_period))
859
894
  logger.info("CPU affinity: {}".format(args.cpu_affinity))
860
895
  logger.info("Accelerators: {}".format(" ".join(args.available_accelerators)))
861
896
  logger.info("enable_mpi_mode: {}".format(args.enable_mpi_mode))
@@ -876,6 +911,7 @@ if __name__ == "__main__":
876
911
  prefetch_capacity=int(args.prefetch_capacity),
877
912
  heartbeat_threshold=int(args.hb_threshold),
878
913
  heartbeat_period=int(args.hb_period),
914
+ drain_period=None if args.drain_period == "None" else int(args.drain_period),
879
915
  poll_period=int(args.poll),
880
916
  cpu_affinity=args.cpu_affinity,
881
917
  enable_mpi_mode=args.enable_mpi_mode,
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsl
3
- Version: 2024.3.11
3
+ Version: 2024.3.25
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/2024.03.11.tar.gz
6
+ Download-URL: https://github.com/Parsl/parsl/archive/2024.03.25.tar.gz
7
7
  Author: The Parsl Team
8
8
  Author-email: parsl@googlegroups.com
9
9
  License: Apache 2.0
@@ -54,7 +54,7 @@ Requires-Dist: pyyaml ; extra == 'all'
54
54
  Requires-Dist: cffi ; extra == 'all'
55
55
  Requires-Dist: jsonschema ; extra == 'all'
56
56
  Requires-Dist: proxystore ; extra == 'all'
57
- Requires-Dist: radical.pilot ; extra == 'all'
57
+ Requires-Dist: radical.pilot ==1.47 ; extra == 'all'
58
58
  Provides-Extra: aws
59
59
  Requires-Dist: boto3 ; extra == 'aws'
60
60
  Provides-Extra: azure
@@ -83,7 +83,7 @@ Requires-Dist: oauth-ssh >=0.9 ; extra == 'oauth_ssh'
83
83
  Provides-Extra: proxystore
84
84
  Requires-Dist: proxystore ; extra == 'proxystore'
85
85
  Provides-Extra: radical-pilot
86
- Requires-Dist: radical.pilot ; extra == 'radical-pilot'
86
+ Requires-Dist: radical.pilot ==1.47 ; extra == 'radical-pilot'
87
87
  Provides-Extra: visualization
88
88
  Requires-Dist: pydot ; extra == 'visualization'
89
89
  Requires-Dist: networkx <2.6,>=2.5 ; extra == 'visualization'
@@ -1,14 +1,14 @@
1
1
  parsl/__init__.py,sha256=hq8rJmP59wzd9-yxaGcmq5gPpshOopH-Y1K0BkUBNY0,1843
2
- parsl/addresses.py,sha256=LjjYZhsuAQw50FyQEx1wKfhaNXlpOPcLnj0F3_YQoKA,4808
3
- parsl/config.py,sha256=ysUWBfm9bygayHHdItaJbP4oozkHJJmVQVnWCt5igjE,6808
2
+ parsl/addresses.py,sha256=mO4u1kVxAnBHHIIUyqdzsOxT9aUsGeBP5PfAPkz3sug,4819
3
+ parsl/config.py,sha256=E90pKPeagHpIdk9XYifHqSpTAaKdDQN59NPDi8PrTAc,7038
4
4
  parsl/curvezmq.py,sha256=FtZEYP1IWDry39cH-tOKUm9TnaR1U7krOmvVYpATcOk,6939
5
5
  parsl/errors.py,sha256=SzINzQFZDBDbj9l-DPQznD0TbGkNhHIRAPkcBCogf_A,1019
6
- parsl/log_utils.py,sha256=AGem-dhQs5TYUyJg6GKkRuHxAw8FHhYlWB_0s7_ROw4,3175
6
+ parsl/log_utils.py,sha256=Ckeb7YiIoK0FA8dA5CsWJDe28i9Sf4sxhFwp__VsD3o,3274
7
7
  parsl/multiprocessing.py,sha256=hakfdg-sgxEjwloZeDrt6EhzwdzecvjJhkPHHxh8lII,1938
8
8
  parsl/process_loggers.py,sha256=1G3Rfrh5wuZNo2X03grG4kTYPGOxz7hHCyG6L_A3b0A,1137
9
9
  parsl/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- parsl/utils.py,sha256=PyJSz5BTlWTmVt01V2ueJPQYnrHMUwJlilSmW40oUJw,10956
11
- parsl/version.py,sha256=n-auQw6rmeOyMm-tuSSnWf2Lj2VPfiF3nix6T-dWYsw,131
10
+ parsl/utils.py,sha256=A3WDMGaNB4ajVx_jCuc-74W6PFy4zswJy-pLE7u8Dz0,10979
11
+ parsl/version.py,sha256=xw1wZ0QmQ9UaGCS5xiCsTOYpLaH5Ht4qp-xYq_4FbaE,131
12
12
  parsl/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  parsl/app/app.py,sha256=wAHchJetgnicT1pn0NJKDeDX0lV3vDFlG8cQd_Ciax4,8522
14
14
  parsl/app/bash.py,sha256=bx9x1XFwkOTpZZD3CPwnVL9SyNRDjbUGtOnuGLvxN_8,5396
@@ -60,7 +60,7 @@ parsl/data_provider/http.py,sha256=nDHTW7XmJqAukWJjPRQjyhUXt8r6GsQ36mX9mv_wOig,2
60
60
  parsl/data_provider/rsync.py,sha256=2-ZxqrT-hBj39x082NusJaBqsGW4Jd2qCW6JkVPpEl0,4254
61
61
  parsl/data_provider/staging.py,sha256=l-mAXFburs3BWPjkSmiQKuAgJpsxCG62yATPDbrafYI,4523
62
62
  parsl/dataflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
- parsl/dataflow/dflow.py,sha256=pkfhp3hBKivmE-xmMFXCxVogC_ZFqWfDm0BlzhpSVV8,64148
63
+ parsl/dataflow/dflow.py,sha256=38bZ0cFnCKqlbyf-XYxyA8PscsypQNOzd_8bIUWT0wM,64461
64
64
  parsl/dataflow/errors.py,sha256=w2vOt_ymzG2dOqJUO4IDcmTlrCIHlMZL8nBVyVq0O_8,2176
65
65
  parsl/dataflow/futures.py,sha256=aVfEUTzp4-EdunDAtNcqVQf8l_A7ArDi2c82KZMwxfY,5256
66
66
  parsl/dataflow/memoization.py,sha256=AsJO6c6cRp2ac6H8uGn2USlEi78_nX3QWvpxYt4XdYE,9583
@@ -68,9 +68,9 @@ parsl/dataflow/rundirs.py,sha256=XKmBZpBEIsGACBhYOkbbs2e5edC0pQegJcSlk4FWeag,115
68
68
  parsl/dataflow/states.py,sha256=hV6mfv-y4A6xrujeQglcomnfEs7y3Xm2g6JFwC6dvgQ,2612
69
69
  parsl/dataflow/taskrecord.py,sha256=bzIBmlDTsRrELtB9PUQwxTWcwrCd8aMsUAzvijle1eo,3114
70
70
  parsl/executors/__init__.py,sha256=J50N97Nm9YRjz6K0oNXDxUYIsDjL43_tp3LVb2w7n-M,381
71
- parsl/executors/base.py,sha256=DyKzXZztPagh9xQykTUuJRMR9g3i6qkbZi8YpWrIfXM,4340
71
+ parsl/executors/base.py,sha256=CNWddQ7eP_Kqd2THv4bj5Dg1Jgb3dbI3z3aznsRP6dc,4574
72
72
  parsl/executors/errors.py,sha256=xVswxgi7vmJcUMCeYDAPK8sQT2kHFFROVoOr0dnmcWE,2098
73
- parsl/executors/status_handling.py,sha256=GNBYrAhOpHSnmJA0NouK9by_uJxXn8vlPgBhcp0pSFo,10940
73
+ parsl/executors/status_handling.py,sha256=DP7Wu2BjoMPcJ8bdYmwALHvC5Fd1y8-g9sLj_cKoGOQ,10574
74
74
  parsl/executors/threads.py,sha256=bMU3JFghm17Lpcua13pr3NgQhkUDDc2mqvF2yJBrVNQ,3353
75
75
  parsl/executors/flux/__init__.py,sha256=P9grTTeRPXfqXurFhlSS7XhmE6tTbnCnyQ1f9b-oYHE,136
76
76
  parsl/executors/flux/execute_parsl_task.py,sha256=yUG_WjZLcX8LrgPl26mpEBWZhQMlVNbRLGu08yIjdf4,1553
@@ -78,14 +78,14 @@ parsl/executors/flux/executor.py,sha256=0omXRPvykdW5VZb8mwgBJjxVk4H6G8xoL5D_R9pu
78
78
  parsl/executors/flux/flux_instance_manager.py,sha256=tTEOATClm9SwdgLeBRWPC6D55iNDuh0YxqJOw3c3eQ4,2036
79
79
  parsl/executors/high_throughput/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
80
  parsl/executors/high_throughput/errors.py,sha256=vl69wLuVOplbKxHI9WphEGBExHWkTn5n8T9QhBXuNH0,380
81
- parsl/executors/high_throughput/executor.py,sha256=oG32cJ17MkuMLLcY-rkUGN6CNx5ygeQcCiN5Mo5TIZQ,36927
82
- parsl/executors/high_throughput/interchange.py,sha256=QhjIhSnhihNJheVBNyBZA6gRX1x5h-8jRdQJ1cDPMRk,30309
83
- parsl/executors/high_throughput/manager_record.py,sha256=T8-JVMfDJU6SJfzJRooD0mO8AHGMXlcn3PBOM0m_vng,366
81
+ parsl/executors/high_throughput/executor.py,sha256=mSxDizbw79zmnW4yMDuRflZfGwZKciWmZ8XW9rAy4gI,37591
82
+ parsl/executors/high_throughput/interchange.py,sha256=Rt6HyFvQYFuqUJ1ytXmUFTDIK9wOBm4l96IHoL6OFRc,31491
83
+ parsl/executors/high_throughput/manager_record.py,sha256=w5EwzVqPtsLOyOW8jP44U3uaogt8H--tkwp7FNyKN_o,385
84
84
  parsl/executors/high_throughput/monitoring_info.py,sha256=3gQpwQjjNDEBz0cQqJZB6hRiwLiWwXs83zkQDmbOwxY,297
85
85
  parsl/executors/high_throughput/mpi_prefix_composer.py,sha256=GPSejuNL407gvzw9f7dTWArTLn6heTi-erJjgcM-_8Y,4273
86
86
  parsl/executors/high_throughput/mpi_resource_management.py,sha256=geLYmp2teKYgTnzATAR_JPtjAa0ysu6pHpXs90vwkds,7975
87
87
  parsl/executors/high_throughput/probe.py,sha256=lvnuf-vBv57tHvFh-J51F9sDYBES7jCgs6KYgWvmKRs,2749
88
- parsl/executors/high_throughput/process_worker_pool.py,sha256=H8SXtCRtG3sZYJgiBIMDnM8SeJByHZqIoL9x7z9bMxo,39290
88
+ parsl/executors/high_throughput/process_worker_pool.py,sha256=hUKno44b3hzPQHKnF91K_BQxusDoapT8K8y-2E0DlDo,41109
89
89
  parsl/executors/high_throughput/zmq_pipes.py,sha256=TEIr1PcBDVbchBukzPaEsku2lbIIFCYYjeUq5zw_VBA,6514
90
90
  parsl/executors/radical/__init__.py,sha256=CKbtV2numw5QvgIBq1htMUrt9TqDCIC2zifyf2svTNU,186
91
91
  parsl/executors/radical/executor.py,sha256=5r9WZkOr0clg79zm35E7nC7zNv0DpbyM8iTC2B6d4N0,21024
@@ -95,34 +95,35 @@ parsl/executors/radical/rpex_worker.py,sha256=1M1df-hzFdmZMWbRZlUzIX7uAWMKJ_SkxL
95
95
  parsl/executors/taskvine/__init__.py,sha256=sWIJdvSLgQKul9dlSjIkNat7yBDgU3SrBF3X2yhT86E,293
96
96
  parsl/executors/taskvine/errors.py,sha256=MNS_NjpvHjwevQXOjqjSEBFroqEWi-LT1ZEVZ2C5Dx0,652
97
97
  parsl/executors/taskvine/exec_parsl_function.py,sha256=oUAKbPWwpbzWwQ47bZQlVDxS8txhnhPsonMf3AOEMGQ,7085
98
- parsl/executors/taskvine/executor.py,sha256=usevSTpiNIQb0WEreTx-6NbULPMJIeHgzLb4GRwjIOI,31433
98
+ parsl/executors/taskvine/executor.py,sha256=YAPnZZV31R_H1A4mILNIiDQVVvzO6G1wUo0HIjmcw7g,32264
99
99
  parsl/executors/taskvine/factory.py,sha256=sHhfGv7xRFrWkQclzRXuFEAHuSXhsZu2lR5LJ81aucA,2638
100
100
  parsl/executors/taskvine/factory_config.py,sha256=AbE2fN2snrF5ITYrrS4DnGn2XkJHUFr_17DYHDHIwq0,3693
101
- parsl/executors/taskvine/manager.py,sha256=X4Fir46doc4qMdTSKNfyS78HvhnUqq7Rw7jCvbD0Tfw,25732
102
- parsl/executors/taskvine/manager_config.py,sha256=Kg1CknT88jTW0jEpFv5oKq1CeGeIJo5P1muayROcwzQ,7431
101
+ parsl/executors/taskvine/manager.py,sha256=VxVN2L5zFVPNfSAJrGgq87MRJKpcxf-BHdO5QWxB4TU,25822
102
+ parsl/executors/taskvine/manager_config.py,sha256=LzHc-bXqxixPlxMG5TdxxZ5E46D_hnn1tiPqLRPvUHY,7457
103
103
  parsl/executors/taskvine/utils.py,sha256=iSrIogeiauL3UNy_9tiZp1cBSNn6fIJkMYQRVi1n_r8,4156
104
104
  parsl/executors/workqueue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
105
  parsl/executors/workqueue/errors.py,sha256=ghB93Ptb_QbOAvgLe7siV_snRRkU_T-cFHv3AR6Ziwo,541
106
106
  parsl/executors/workqueue/exec_parsl_function.py,sha256=NtWNeBvRqksej38eRPw8zPBJ1CeW6vgaitve0tfz_qc,7801
107
- parsl/executors/workqueue/executor.py,sha256=En8UJJbcQUY88bwYchASco71LTWb6YfXXlbxPlD46Sk,49107
107
+ parsl/executors/workqueue/executor.py,sha256=QnHNdj7aVVYOzK-jmo0YqKMqW2__XmmruHHilqGUVy0,49823
108
108
  parsl/executors/workqueue/parsl_coprocess.py,sha256=kEFGC-A97c_gweUPvrc9EEGume7vUpkJLJlyAb87xtQ,5737
109
109
  parsl/executors/workqueue/parsl_coprocess_stub.py,sha256=_bJmpPIgL42qM6bVzeEKt1Mn1trSP41rtJguXxPGfHI,735
110
110
  parsl/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
- parsl/jobs/error_handlers.py,sha256=dvfZFqTwAcFXrIx3sjFTcjtwOB0-xGn6QnPwJEG-kAI,2311
111
+ parsl/jobs/error_handlers.py,sha256=WcWZUA7KyE1ocX5zrMf_EwqOob8Jb7uHMjD3nlb_BUo,2319
112
112
  parsl/jobs/errors.py,sha256=cpSQXCrlKtuHsQf7usjF-lX8XsDkFnE5kWpmFjiN6OU,178
113
- parsl/jobs/job_status_poller.py,sha256=MUwxrVtAGDAaurMw_eksWcoGXloABlAOavgPHmWGscI,5285
113
+ parsl/jobs/job_status_poller.py,sha256=hLFyT9tnvYrIev72bg0jZUhabYR9GJ0o15M5l9TR3Qo,5422
114
114
  parsl/jobs/states.py,sha256=rPBoAEEudKngWFijlwvXXhAagDs_9DCXvQP9rwzVgCM,4855
115
115
  parsl/jobs/strategy.py,sha256=a-W3vxEHHCfe521LMfSoZLpJjdTtwCfTgdn1ChxzUuI,12959
116
116
  parsl/launchers/__init__.py,sha256=k8zAB3IBP-brfqXUptKwGkvsIRaXjAJZNBJa2XVtY1A,546
117
117
  parsl/launchers/base.py,sha256=CblcvPTJiu-MNLWaRtFe29SZQ0BpTOlaY8CGcHdlHIE,538
118
118
  parsl/launchers/errors.py,sha256=v5i460H_rovzukSccQetxQBVtd92jLQz-NbuDe2TdGI,467
119
- parsl/launchers/launchers.py,sha256=t9nuX38GMlAUPHs0aksnMd_5jI59IcqwlUD667w1cu4,15358
119
+ parsl/launchers/launchers.py,sha256=VB--fiVv_IQne3DydTMSdGUY0o0g69puAs-Hd3mJ2vo,15464
120
120
  parsl/monitoring/__init__.py,sha256=0ywNz6i0lM1xo_7_BIxhETDGeVd2C_0wwD7qgeaMR4c,83
121
- parsl/monitoring/db_manager.py,sha256=DeFzJCn9pKHFEIvAogPQVTZPqbaLUwKs79RQM8K6bX4,36945
121
+ parsl/monitoring/db_manager.py,sha256=hdmmXSTXp8Wwhr7vLpQalD_ahRl3SNxKYVsplnThRk8,37021
122
122
  parsl/monitoring/message_type.py,sha256=Khn88afNxcOIciKiCK4GLnn90I5BlRTiOL3zK-P07yQ,401
123
- parsl/monitoring/monitoring.py,sha256=YauAj-0xryXqAe_SOFoXIPL0Kt3lN_vC_9GWbMtK2AE,24945
123
+ parsl/monitoring/monitoring.py,sha256=ZkwbIKGG7Zx8Nxj8TEaTT_FrmjwJvmv1jNlEmaUZYAM,14313
124
124
  parsl/monitoring/radios.py,sha256=T2_6QuUjC-dd_7qMnIk6WHQead1iWz7m_P6ZC4QAqdA,5265
125
125
  parsl/monitoring/remote.py,sha256=OcIgudujtPO_DsY-YV36x92skeiNdGt-6aEOqaCU8T0,13900
126
+ parsl/monitoring/router.py,sha256=Y_PJjffS23HwfTJClhg5W4gUXnkAI_3crjjZMoyzxVA,9592
126
127
  parsl/monitoring/types.py,sha256=SO6Fjjbb83sv_MtbutoxGssiWh6oXKkEEsD4EvwOnZ4,629
127
128
  parsl/monitoring/queries/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
129
  parsl/monitoring/queries/pandas.py,sha256=J09lIxSvVtAfBTbFcwKgUkHwZfaS6vYOzXHxS7UBLoc,2233
@@ -131,11 +132,11 @@ parsl/monitoring/visualization/app.py,sha256=_RZNBHWJYKwadusPE5p0uFMTqKqI3gI2fBz
131
132
  parsl/monitoring/visualization/models.py,sha256=-pzynw6PCh-7_Kat4cqDFt9wAKbo9lWjF4O2muBqDDc,5139
132
133
  parsl/monitoring/visualization/utils.py,sha256=IIKnDdHSkvk6e8q-1O9cE-DclPMdrhXbum04EDDYI-0,314
133
134
  parsl/monitoring/visualization/version.py,sha256=mjxUkRW-XaF1dhu2IEUPPviGpfOvbxhWfTOYl250lVs,134
134
- parsl/monitoring/visualization/views.py,sha256=fsuVVGl1spq7eCulqRRXPj2mqzC6vlvD8yW31XTbCK0,8172
135
+ parsl/monitoring/visualization/views.py,sha256=o6mfKSPv85kSPb6fgLG5v3OEKGj3efpngE3UoiyTkDY,8256
135
136
  parsl/monitoring/visualization/plots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
137
  parsl/monitoring/visualization/plots/default/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
138
  parsl/monitoring/visualization/plots/default/task_plots.py,sha256=j-0PZ5MsK3CU83kQVWDIuGHGFeXF5Z0se-wlRRd_z9s,1654
138
- parsl/monitoring/visualization/plots/default/workflow_plots.py,sha256=T5xRSBJz5urPGfFrFdAjMdGUVx2HYV8F17GTsuI17ME,11942
139
+ parsl/monitoring/visualization/plots/default/workflow_plots.py,sha256=zd2k6O4YMKGe69c56EtGKgGalAKYxbbGpoxIE0iB_yE,11985
139
140
  parsl/monitoring/visualization/plots/default/workflow_resource_plots.py,sha256=Z7LK5atAWn-2zwRYmCks3OKbYX80UKXHOmoK6Mec1TI,10269
140
141
  parsl/monitoring/visualization/static/parsl-logo-white.png,sha256=LAua5kwDq0Ngt2D3yk9Vh2dBNSIsjj6cqiHKaP2Rn08,14199
141
142
  parsl/monitoring/visualization/static/parsl-monitor.css,sha256=9j2mW1IOXBcuaT6-i0feIftuQLMV6gpJ1mpFhxUE3VU,337
@@ -149,7 +150,7 @@ parsl/monitoring/visualization/templates/workflow.html,sha256=QCSHAPHK_2C3gNcZ3N
149
150
  parsl/monitoring/visualization/templates/workflows_summary.html,sha256=7brKKNsxcT4z-l10BKJlgTxQtGL033ZS5jEDdSmsPEE,891
150
151
  parsl/providers/__init__.py,sha256=jd-1_vd-HtWYDHzwO30lNW5GMw6nfeTyNn3tI8CG7L4,1207
151
152
  parsl/providers/base.py,sha256=LvSMClsbCQI_7geGdNDpKZ6vWCl1EpD73o0xkxilqJ4,5702
152
- parsl/providers/cluster_provider.py,sha256=FLl3AUHdFRRapQl_YoM1gxg_UhH3gxxaDvl6NNQqSTg,4701
153
+ parsl/providers/cluster_provider.py,sha256=7eM2i9bVkNRDhrggFbnlQBxzzC9wz_BmNNqxtFM8VJ4,4668
153
154
  parsl/providers/errors.py,sha256=7ig0DEqyFIwjVx1QVXfeutz1Ek16IEAS4doaqg-BTfQ,2270
154
155
  parsl/providers/ad_hoc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
155
156
  parsl/providers/ad_hoc/ad_hoc.py,sha256=jeYMxMT_ox7banr8Db_UeT2qer6XTGLZOZvC307S54U,8302
@@ -240,7 +241,7 @@ parsl/tests/configs/summit.py,sha256=_Dd8r5mod30QRCSp16BlzsQYSKbdM71Rt4azvz9Pzfk
240
241
  parsl/tests/configs/swan_htex.py,sha256=5mIYnzwOFEQ8fNsepP9QjFj9ZMW2m8u4pJluZ5BZGpw,1501
241
242
  parsl/tests/configs/taskvine_ex.py,sha256=e_sXe3d-uSL8cli19-xrBloqQcEQQ4tKVa_x_aDcYGM,632
242
243
  parsl/tests/configs/theta.py,sha256=d5fLCW7SpgKkH3K8iRzj6IhsDozlKr4qgDrQ6Dv1bYA,1298
243
- parsl/tests/configs/user_opts.py,sha256=c586f66gOY5f1CdgakKvw1JFFzEm1z4ewoxbQx78DUg,6238
244
+ parsl/tests/configs/user_opts.py,sha256=fNO1OxISFPP7IyJ_iwf8dQ6EagVr2StXtOWmGnA9MeI,6265
244
245
  parsl/tests/configs/workqueue_ex.py,sha256=5gbjlGECkUd0p9PJbq-IBYARlEbEBiPpXWgHn1GC1d8,514
245
246
  parsl/tests/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
246
247
  parsl/tests/integration/latency.py,sha256=kWYkXsbnVnpwS6rHsdm7a1FsUOJWHhuXDsRPlApw6iE,3289
@@ -340,6 +341,7 @@ parsl/tests/test_htex/test_basic.py,sha256=GIOF3cr6A87QDVMxeN0LrvJnXO2Nap0c-TH46
340
341
  parsl/tests/test_htex/test_connected_blocks.py,sha256=0628oJ_0_aVsda5xuFwG3_3q8ZiEAM-sfIOINkUHQrk,1639
341
342
  parsl/tests/test_htex/test_cpu_affinity_explicit.py,sha256=tv12ojw4DdymlVBjVNnrFX7_mhwix2jnBLkRbKOQRao,1422
342
343
  parsl/tests/test_htex/test_disconnected_blocks.py,sha256=HQhtX757t4CdWbtu-VT3MttLHQowGyHPOp9vX0TN_a4,1890
344
+ parsl/tests/test_htex/test_drain.py,sha256=bnbQfoEQi9EIlDJsDMp7adR45gsAScTNPoOZ2vc12HY,2260
343
345
  parsl/tests/test_htex/test_htex.py,sha256=4dXtcthZQvgEDtMc00g6Pw7FnqNWB_0j8fuJqHKO-IE,3896
344
346
  parsl/tests/test_htex/test_manager_failure.py,sha256=gemQopZoDEoZLOvep5JZkY6tQlZoko8Z0Kmpj1-Gbws,1161
345
347
  parsl/tests/test_htex/test_missing_worker.py,sha256=oiDN3ylsf-72jmX-Y5OWA2kQWpbVbvmoSLnu2vnyZeY,976
@@ -347,9 +349,11 @@ parsl/tests/test_htex/test_multiple_disconnected_blocks.py,sha256=L4vw_Mo-upp2p9
347
349
  parsl/tests/test_htex/test_worker_failure.py,sha256=Uz-RHI-LK78FMjXUvrUFmo4iYfmpDVBUcBxxRb3UG9M,603
348
350
  parsl/tests/test_htex/test_zmq_binding.py,sha256=MQWAL7XxaI1P2k_VUgm5DKD4GVEn5c2Y8MEyOSABRA4,2937
349
351
  parsl/tests/test_monitoring/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
352
+ parsl/tests/test_monitoring/test_app_names.py,sha256=4Ziggxv0JLP0UGAd5jjXdivUdZQLlMvVVMfiTStjxRk,2191
350
353
  parsl/tests/test_monitoring/test_basic.py,sha256=uXWx2O2Y2gfSO4e8zTjyj5bucKHG9OVzMxQNnq9abeY,2776
351
354
  parsl/tests/test_monitoring/test_db_locks.py,sha256=PGoRmvqA6AYPXTPHOZPLH38Z4D6EEgSb6ZgNfZtwIGk,2910
352
- parsl/tests/test_monitoring/test_fuzz_zmq.py,sha256=Xi08Drt_DZKbo3Ihl83cgsTTMRok1bBpyrVOQQWlbf4,3145
355
+ parsl/tests/test_monitoring/test_fuzz_zmq.py,sha256=CpTRF2z2xpshlHHTNiNIIJMOx8bxSmSyAwbMYcOkgBk,3121
356
+ parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py,sha256=aFxQWL0p3kmVWHgLjYTx0MdY3JMkVPQSae3pmRn5T3s,2605
353
357
  parsl/tests/test_monitoring/test_incomplete_futures.py,sha256=9lJhkWlVB8gCCTkFjObzoh1uCL1pRmU6gFgEzLCztnY,2021
354
358
  parsl/tests/test_monitoring/test_memoization_representation.py,sha256=tErT7zseSMaQ5eNmK3hH90J6OZKuAaFQG50OXK6Jy9s,2660
355
359
  parsl/tests/test_monitoring/test_viz_colouring.py,sha256=k8SiELxPtnGYZ4r02VQt46RC61fGDVC4nmY768snX1U,591
@@ -370,6 +374,7 @@ parsl/tests/test_providers/test_submiterror_deprecation.py,sha256=ZutVj_0VJ7M-5U
370
374
  parsl/tests/test_python_apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
371
375
  parsl/tests/test_python_apps/test_arg_input_types.py,sha256=JXpfHiu8lr9BN6u1OzqFvGwBhxzsGTPMewHx6Wdo-HI,670
372
376
  parsl/tests/test_python_apps/test_basic.py,sha256=lFqh4ugePbp_FRiHGUXxzV34iS7l8C5UkxTHuLcpnYs,855
377
+ parsl/tests/test_python_apps/test_context_manager.py,sha256=ajG8Vy0gxXzMO_rAm7yO_WO6XJCjEqUgmdRHdPBLCY0,844
373
378
  parsl/tests/test_python_apps/test_dep_standard_futures.py,sha256=BloeaYBci0jS5al2d8Eqe3OfZ1tvolA5ZflOBQPR9Wo,859
374
379
  parsl/tests/test_python_apps/test_dependencies.py,sha256=IRiTI_lPoWBSFSFnaBlE6Bv08PKEaf-qj5dfqO2RjT0,272
375
380
  parsl/tests/test_python_apps/test_depfail_propagation.py,sha256=3q3HlVWrOixFtXWBvR_ypKtbdAHAJcKndXQ5drwrBQU,1488
@@ -411,7 +416,7 @@ parsl/tests/test_scaling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
411
416
  parsl/tests/test_scaling/test_block_error_handler.py,sha256=VFKs_jq7yd7bpdfYva3Sa_TBS8VcjGUS6YJ9Y34RbyI,6050
412
417
  parsl/tests/test_scaling/test_regression_1621.py,sha256=iRu3GFsg2l9J61AVZKWLc6zJcvI2JYD0WvtTYDSv22I,1770
413
418
  parsl/tests/test_scaling/test_scale_down.py,sha256=T8NVmoIebdpSjrNJCdgDHumpz9eKLkJrpeW7Kwi8cBg,2821
414
- parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py,sha256=h85esh-5O76PZZWAneS7-b_clhgfxIyVivNuxtcpQJ8,5036
419
+ parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py,sha256=1vP2a8qygnxuUji7B3kJOUgwjmmIC1fDPhDdqzs5YFA,4597
415
420
  parsl/tests/test_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
416
421
  parsl/tests/test_serialization/test_2555_caching_deserializer.py,sha256=J8__b4djA5tErd8FUSXGkGcdXlW2KHbBWRbCTAnV08Q,767
417
422
  parsl/tests/test_serialization/test_basic.py,sha256=51KshqIk2RNr7S2iSkl5tZo40CJBb0h6uby8YPgOGlg,543
@@ -419,6 +424,8 @@ parsl/tests/test_serialization/test_htex_code_cache.py,sha256=YW9ab4GCpeZWRdYsVE
419
424
  parsl/tests/test_serialization/test_pack_resource_spec.py,sha256=eZ_gykB4uTDyEEF1HkExTUn98j9pTljxAnn6ucFhdvo,640
420
425
  parsl/tests/test_serialization/test_proxystore_configured.py,sha256=_JbMzeUgcR-1Ss2hGAb2v0LBA0fzKpNpfO-HaUCR7Yo,2293
421
426
  parsl/tests/test_serialization/test_proxystore_impl.py,sha256=Pn_4ulwCd7Tc6Qlmypq2ImT4DtErGDIfqHHmPTr7aOI,1226
427
+ parsl/tests/test_shutdown/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
428
+ parsl/tests/test_shutdown/test_kill_monitoring.py,sha256=5uzhcOPyvS9u4xzlweC5jV2Inl7eWZ1zFzcev73LWwY,1941
422
429
  parsl/tests/test_staging/__init__.py,sha256=WZl9EHSkfYiSoE3Gbulcq2ifmn7IFGUkasJIobL5T5A,208
423
430
  parsl/tests/test_staging/staging_provider.py,sha256=DEONOOGrYgDZimE3rkrbzFl_4KxhzmNJledh8Hho9fo,3242
424
431
  parsl/tests/test_staging/test_1316.py,sha256=pj1QbmOJSRES1R4Ov380MmVe6xXvPUXh4FB48nE6vjI,2687
@@ -436,12 +443,12 @@ parsl/tests/test_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
436
443
  parsl/tests/test_utils/test_representation_mixin.py,sha256=kUZeIDwA2rlbJ3-beGzLLwf3dOplTMCrWJN87etHcyY,1633
437
444
  parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
438
445
  parsl/usage_tracking/usage.py,sha256=pSADeogWqvkYI_n2pojv4IWDEFAQ3KwXNx6LDTohMHQ,6684
439
- parsl-2024.3.11.data/scripts/exec_parsl_function.py,sha256=NtWNeBvRqksej38eRPw8zPBJ1CeW6vgaitve0tfz_qc,7801
440
- parsl-2024.3.11.data/scripts/parsl_coprocess.py,sha256=Y7Tc-h9WGui-YDe3w_h91w2Sm1JNL1gJ9kAV4PE_gw8,5722
441
- parsl-2024.3.11.data/scripts/process_worker_pool.py,sha256=4qe-PIxiJiIbuZsxvW82qnG1myo9UYzr_IhX-Dk3nzo,39276
442
- parsl-2024.3.11.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
443
- parsl-2024.3.11.dist-info/METADATA,sha256=PoVGqk84z5yI7sYhj_OQ7wmREyBMBQ5A3RwEWR0n9jc,3960
444
- parsl-2024.3.11.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
445
- parsl-2024.3.11.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
446
- parsl-2024.3.11.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
447
- parsl-2024.3.11.dist-info/RECORD,,
446
+ parsl-2024.3.25.data/scripts/exec_parsl_function.py,sha256=NtWNeBvRqksej38eRPw8zPBJ1CeW6vgaitve0tfz_qc,7801
447
+ parsl-2024.3.25.data/scripts/parsl_coprocess.py,sha256=Y7Tc-h9WGui-YDe3w_h91w2Sm1JNL1gJ9kAV4PE_gw8,5722
448
+ parsl-2024.3.25.data/scripts/process_worker_pool.py,sha256=iVrw160CpTAVuX9PH-ezU4ebm9C1_U6IMrkcdyTQJ58,41095
449
+ parsl-2024.3.25.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
450
+ parsl-2024.3.25.dist-info/METADATA,sha256=9FTVzNNJqpfn1NqveTatneCqEQhMu3Oo9kA-M7fx40k,3974
451
+ parsl-2024.3.25.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
452
+ parsl-2024.3.25.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
453
+ parsl-2024.3.25.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
454
+ parsl-2024.3.25.dist-info/RECORD,,