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.
- parsl/addresses.py +3 -1
- parsl/config.py +4 -0
- parsl/dataflow/dflow.py +14 -5
- parsl/executors/base.py +10 -0
- parsl/executors/high_throughput/executor.py +12 -0
- parsl/executors/high_throughput/interchange.py +30 -8
- parsl/executors/high_throughput/manager_record.py +1 -0
- parsl/executors/high_throughput/process_worker_pool.py +41 -5
- parsl/executors/status_handling.py +2 -9
- parsl/executors/taskvine/executor.py +24 -3
- parsl/executors/taskvine/manager.py +1 -0
- parsl/executors/taskvine/manager_config.py +3 -4
- parsl/executors/workqueue/executor.py +19 -0
- parsl/jobs/error_handlers.py +1 -1
- parsl/jobs/job_status_poller.py +8 -7
- parsl/launchers/launchers.py +6 -6
- parsl/log_utils.py +8 -4
- parsl/monitoring/db_manager.py +4 -2
- parsl/monitoring/monitoring.py +30 -264
- parsl/monitoring/router.py +208 -0
- parsl/monitoring/visualization/plots/default/workflow_plots.py +3 -0
- parsl/monitoring/visualization/views.py +2 -1
- parsl/providers/cluster_provider.py +1 -3
- parsl/tests/configs/user_opts.py +2 -1
- parsl/tests/test_htex/test_drain.py +78 -0
- parsl/tests/test_monitoring/test_app_names.py +86 -0
- parsl/tests/test_monitoring/test_fuzz_zmq.py +2 -2
- parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py +82 -0
- parsl/tests/test_python_apps/test_context_manager.py +40 -0
- parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py +1 -10
- parsl/tests/test_shutdown/__init__.py +0 -0
- parsl/tests/test_shutdown/test_kill_monitoring.py +65 -0
- parsl/utils.py +2 -2
- parsl/version.py +1 -1
- {parsl-2024.3.11.data → parsl-2024.3.25.data}/scripts/process_worker_pool.py +41 -5
- {parsl-2024.3.11.dist-info → parsl-2024.3.25.dist-info}/METADATA +4 -4
- {parsl-2024.3.11.dist-info → parsl-2024.3.25.dist-info}/RECORD +43 -36
- {parsl-2024.3.11.data → parsl-2024.3.25.data}/scripts/exec_parsl_function.py +0 -0
- {parsl-2024.3.11.data → parsl-2024.3.25.data}/scripts/parsl_coprocess.py +0 -0
- {parsl-2024.3.11.dist-info → parsl-2024.3.25.dist-info}/LICENSE +0 -0
- {parsl-2024.3.11.dist-info → parsl-2024.3.25.dist-info}/WHEEL +0 -0
- {parsl-2024.3.11.dist-info → parsl-2024.3.25.dist-info}/entry_points.txt +0 -0
- {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("
|
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.
|
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.
|
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=
|
3
|
-
parsl/config.py,sha256=
|
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=
|
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=
|
11
|
-
parsl/version.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
82
|
-
parsl/executors/high_throughput/interchange.py,sha256=
|
83
|
-
parsl/executors/high_throughput/manager_record.py,sha256=
|
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=
|
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=
|
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=
|
102
|
-
parsl/executors/taskvine/manager_config.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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.
|
440
|
-
parsl-2024.3.
|
441
|
-
parsl-2024.3.
|
442
|
-
parsl-2024.3.
|
443
|
-
parsl-2024.3.
|
444
|
-
parsl-2024.3.
|
445
|
-
parsl-2024.3.
|
446
|
-
parsl-2024.3.
|
447
|
-
parsl-2024.3.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|