parsl 2024.7.29__py3-none-any.whl → 2024.8.12__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/channels/__init__.py +1 -4
- parsl/channels/oauth_ssh/oauth_ssh.py +2 -2
- parsl/channels/ssh/ssh.py +1 -1
- parsl/channels/ssh_il/ssh_il.py +2 -2
- parsl/dataflow/dflow.py +2 -2
- parsl/executors/base.py +7 -7
- parsl/executors/high_throughput/executor.py +15 -7
- parsl/executors/high_throughput/interchange.py +40 -37
- parsl/executors/high_throughput/manager_selector.py +25 -0
- parsl/executors/status_handling.py +38 -24
- parsl/executors/taskvine/executor.py +2 -0
- parsl/executors/workqueue/executor.py +2 -0
- parsl/monitoring/db_manager.py +10 -10
- parsl/monitoring/errors.py +6 -0
- parsl/monitoring/monitoring.py +3 -3
- parsl/monitoring/radios.py +16 -0
- parsl/monitoring/remote.py +4 -4
- parsl/monitoring/router.py +71 -35
- parsl/providers/__init__.py +0 -4
- parsl/providers/ad_hoc/ad_hoc.py +6 -2
- parsl/tests/configs/local_adhoc.py +2 -2
- parsl/tests/test_htex/test_disconnected_blocks_failing_provider.py +71 -0
- parsl/tests/test_htex/test_htex.py +28 -19
- parsl/tests/test_htex/test_zmq_binding.py +4 -1
- parsl/tests/test_monitoring/test_basic.py +14 -1
- parsl/tests/test_mpi_apps/test_mpiex.py +1 -1
- parsl/tests/test_providers/test_local_provider.py +6 -5
- parsl/version.py +1 -1
- {parsl-2024.7.29.data → parsl-2024.8.12.data}/scripts/interchange.py +40 -37
- parsl-2024.8.12.dist-info/METADATA +101 -0
- {parsl-2024.7.29.dist-info → parsl-2024.8.12.dist-info}/RECORD +38 -46
- {parsl-2024.7.29.dist-info → parsl-2024.8.12.dist-info}/WHEEL +1 -1
- parsl/configs/ad_hoc.py +0 -38
- parsl/tests/configs/ad_hoc_cluster_htex.py +0 -35
- parsl/tests/configs/htex_ad_hoc_cluster.py +0 -26
- parsl/tests/configs/swan_htex.py +0 -43
- parsl/tests/integration/test_channels/test_scp_1.py +0 -45
- parsl/tests/integration/test_channels/test_ssh_1.py +0 -40
- parsl/tests/integration/test_channels/test_ssh_errors.py +0 -46
- parsl/tests/integration/test_channels/test_ssh_file_transport.py +0 -41
- parsl/tests/integration/test_channels/test_ssh_interactive.py +0 -24
- parsl/tests/manual_tests/test_ad_hoc_htex.py +0 -49
- parsl/tests/manual_tests/test_oauth_ssh.py +0 -13
- parsl-2024.7.29.dist-info/METADATA +0 -101
- {parsl-2024.7.29.data → parsl-2024.8.12.data}/scripts/exec_parsl_function.py +0 -0
- {parsl-2024.7.29.data → parsl-2024.8.12.data}/scripts/parsl_coprocess.py +0 -0
- {parsl-2024.7.29.data → parsl-2024.8.12.data}/scripts/process_worker_pool.py +0 -0
- {parsl-2024.7.29.dist-info → parsl-2024.8.12.dist-info}/LICENSE +0 -0
- {parsl-2024.7.29.dist-info → parsl-2024.8.12.dist-info}/entry_points.txt +0 -0
- {parsl-2024.7.29.dist-info → parsl-2024.8.12.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,6 @@ import os
|
|
6
6
|
import pickle
|
7
7
|
import platform
|
8
8
|
import queue
|
9
|
-
import random
|
10
9
|
import signal
|
11
10
|
import sys
|
12
11
|
import threading
|
@@ -19,7 +18,9 @@ from parsl import curvezmq
|
|
19
18
|
from parsl.app.errors import RemoteExceptionWrapper
|
20
19
|
from parsl.executors.high_throughput.errors import ManagerLost, VersionMismatch
|
21
20
|
from parsl.executors.high_throughput.manager_record import ManagerRecord
|
21
|
+
from parsl.executors.high_throughput.manager_selector import ManagerSelector
|
22
22
|
from parsl.monitoring.message_type import MessageType
|
23
|
+
from parsl.monitoring.radios import MonitoringRadioSender, ZMQRadioSender
|
23
24
|
from parsl.process_loggers import wrap_with_logs
|
24
25
|
from parsl.serialize import serialize as serialize_object
|
25
26
|
from parsl.utils import setproctitle
|
@@ -53,6 +54,8 @@ class Interchange:
|
|
53
54
|
logging_level: int,
|
54
55
|
poll_period: int,
|
55
56
|
cert_dir: Optional[str],
|
57
|
+
manager_selector: ManagerSelector,
|
58
|
+
run_id: str,
|
56
59
|
) -> None:
|
57
60
|
"""
|
58
61
|
Parameters
|
@@ -123,6 +126,8 @@ class Interchange:
|
|
123
126
|
self.command_channel.connect("tcp://{}:{}".format(client_address, client_ports[2]))
|
124
127
|
logger.info("Connected to client")
|
125
128
|
|
129
|
+
self.run_id = run_id
|
130
|
+
|
126
131
|
self.hub_address = hub_address
|
127
132
|
self.hub_zmq_port = hub_zmq_port
|
128
133
|
|
@@ -160,6 +165,8 @@ class Interchange:
|
|
160
165
|
|
161
166
|
self.heartbeat_threshold = heartbeat_threshold
|
162
167
|
|
168
|
+
self.manager_selector = manager_selector
|
169
|
+
|
163
170
|
self.current_platform = {'parsl_v': PARSL_VERSION,
|
164
171
|
'python_v': "{}.{}.{}".format(sys.version_info.major,
|
165
172
|
sys.version_info.minor,
|
@@ -216,27 +223,16 @@ class Interchange:
|
|
216
223
|
task_counter += 1
|
217
224
|
logger.debug(f"Fetched {task_counter} tasks so far")
|
218
225
|
|
219
|
-
def
|
220
|
-
if
|
221
|
-
logger.info("Connecting to MonitoringHub")
|
222
|
-
# This is a one-off because monitoring is unencrypted
|
223
|
-
hub_channel = zmq.Context().socket(zmq.DEALER)
|
224
|
-
hub_channel.set_hwm(0)
|
225
|
-
hub_channel.connect("tcp://{}:{}".format(self.hub_address, self.hub_zmq_port))
|
226
|
-
logger.info("Connected to MonitoringHub")
|
227
|
-
return hub_channel
|
228
|
-
else:
|
229
|
-
return None
|
230
|
-
|
231
|
-
def _send_monitoring_info(self, hub_channel: Optional[zmq.Socket], manager: ManagerRecord) -> None:
|
232
|
-
if hub_channel:
|
226
|
+
def _send_monitoring_info(self, monitoring_radio: Optional[MonitoringRadioSender], manager: ManagerRecord) -> None:
|
227
|
+
if monitoring_radio:
|
233
228
|
logger.info("Sending message {} to MonitoringHub".format(manager))
|
234
229
|
|
235
230
|
d: Dict = cast(Dict, manager.copy())
|
236
231
|
d['timestamp'] = datetime.datetime.now()
|
237
232
|
d['last_heartbeat'] = datetime.datetime.fromtimestamp(d['last_heartbeat'])
|
233
|
+
d['run_id'] = self.run_id
|
238
234
|
|
239
|
-
|
235
|
+
monitoring_radio.send((MessageType.NODE_INFO, d))
|
240
236
|
|
241
237
|
@wrap_with_logs(target="interchange")
|
242
238
|
def _command_server(self) -> NoReturn:
|
@@ -244,8 +240,11 @@ class Interchange:
|
|
244
240
|
"""
|
245
241
|
logger.debug("Command Server Starting")
|
246
242
|
|
247
|
-
|
248
|
-
|
243
|
+
if self.hub_address is not None and self.hub_zmq_port is not None:
|
244
|
+
logger.debug("Creating monitoring radio to %s:%s", self.hub_address, self.hub_zmq_port)
|
245
|
+
monitoring_radio = ZMQRadioSender(self.hub_address, self.hub_zmq_port)
|
246
|
+
else:
|
247
|
+
monitoring_radio = None
|
249
248
|
|
250
249
|
reply: Any # the type of reply depends on the command_req received (aka this needs dependent types...)
|
251
250
|
|
@@ -295,7 +294,7 @@ class Interchange:
|
|
295
294
|
if manager_id in self._ready_managers:
|
296
295
|
m = self._ready_managers[manager_id]
|
297
296
|
m['active'] = False
|
298
|
-
self._send_monitoring_info(
|
297
|
+
self._send_monitoring_info(monitoring_radio, m)
|
299
298
|
else:
|
300
299
|
logger.warning("Worker to hold was not in ready managers list")
|
301
300
|
|
@@ -330,9 +329,14 @@ class Interchange:
|
|
330
329
|
# parent-process-inheritance problems.
|
331
330
|
signal.signal(signal.SIGTERM, signal.SIG_DFL)
|
332
331
|
|
333
|
-
logger.info("
|
332
|
+
logger.info("Starting main interchange method")
|
334
333
|
|
335
|
-
|
334
|
+
if self.hub_address is not None and self.hub_zmq_port is not None:
|
335
|
+
logger.debug("Creating monitoring radio to %s:%s", self.hub_address, self.hub_zmq_port)
|
336
|
+
monitoring_radio = ZMQRadioSender(self.hub_address, self.hub_zmq_port)
|
337
|
+
logger.debug("Created monitoring radio")
|
338
|
+
else:
|
339
|
+
monitoring_radio = None
|
336
340
|
|
337
341
|
poll_period = self.poll_period
|
338
342
|
|
@@ -363,10 +367,10 @@ class Interchange:
|
|
363
367
|
while not kill_event.is_set():
|
364
368
|
self.socks = dict(poller.poll(timeout=poll_period))
|
365
369
|
|
366
|
-
self.process_task_outgoing_incoming(interesting_managers,
|
367
|
-
self.process_results_incoming(interesting_managers,
|
368
|
-
self.expire_bad_managers(interesting_managers,
|
369
|
-
self.expire_drained_managers(interesting_managers,
|
370
|
+
self.process_task_outgoing_incoming(interesting_managers, monitoring_radio, kill_event)
|
371
|
+
self.process_results_incoming(interesting_managers, monitoring_radio)
|
372
|
+
self.expire_bad_managers(interesting_managers, monitoring_radio)
|
373
|
+
self.expire_drained_managers(interesting_managers, monitoring_radio)
|
370
374
|
self.process_tasks_to_send(interesting_managers)
|
371
375
|
|
372
376
|
self.zmq_context.destroy()
|
@@ -377,7 +381,7 @@ class Interchange:
|
|
377
381
|
def process_task_outgoing_incoming(
|
378
382
|
self,
|
379
383
|
interesting_managers: Set[bytes],
|
380
|
-
|
384
|
+
monitoring_radio: Optional[MonitoringRadioSender],
|
381
385
|
kill_event: threading.Event
|
382
386
|
) -> None:
|
383
387
|
"""Process one message from manager on the task_outgoing channel.
|
@@ -431,7 +435,7 @@ class Interchange:
|
|
431
435
|
m.update(msg) # type: ignore[typeddict-item]
|
432
436
|
|
433
437
|
logger.info("Registration info for manager {!r}: {}".format(manager_id, msg))
|
434
|
-
self._send_monitoring_info(
|
438
|
+
self._send_monitoring_info(monitoring_radio, m)
|
435
439
|
|
436
440
|
if (msg['python_v'].rsplit(".", 1)[0] != self.current_platform['python_v'].rsplit(".", 1)[0] or
|
437
441
|
msg['parsl_v'] != self.current_platform['parsl_v']):
|
@@ -462,7 +466,7 @@ class Interchange:
|
|
462
466
|
logger.error(f"Unexpected message type received from manager: {msg['type']}")
|
463
467
|
logger.debug("leaving task_outgoing section")
|
464
468
|
|
465
|
-
def expire_drained_managers(self, interesting_managers: Set[bytes],
|
469
|
+
def expire_drained_managers(self, interesting_managers: Set[bytes], monitoring_radio: Optional[MonitoringRadioSender]) -> None:
|
466
470
|
|
467
471
|
for manager_id in list(interesting_managers):
|
468
472
|
# is it always true that a draining manager will be in interesting managers?
|
@@ -475,7 +479,7 @@ class Interchange:
|
|
475
479
|
self._ready_managers.pop(manager_id)
|
476
480
|
|
477
481
|
m['active'] = False
|
478
|
-
self._send_monitoring_info(
|
482
|
+
self._send_monitoring_info(monitoring_radio, m)
|
479
483
|
|
480
484
|
def process_tasks_to_send(self, interesting_managers: Set[bytes]) -> None:
|
481
485
|
# Check if there are tasks that could be sent to managers
|
@@ -485,8 +489,7 @@ class Interchange:
|
|
485
489
|
interesting=len(interesting_managers)))
|
486
490
|
|
487
491
|
if interesting_managers and not self.pending_task_queue.empty():
|
488
|
-
shuffled_managers =
|
489
|
-
random.shuffle(shuffled_managers)
|
492
|
+
shuffled_managers = self.manager_selector.sort_managers(self._ready_managers, interesting_managers)
|
490
493
|
|
491
494
|
while shuffled_managers and not self.pending_task_queue.empty(): # cf. the if statement above...
|
492
495
|
manager_id = shuffled_managers.pop()
|
@@ -519,7 +522,7 @@ class Interchange:
|
|
519
522
|
else:
|
520
523
|
logger.debug("either no interesting managers or no tasks, so skipping manager pass")
|
521
524
|
|
522
|
-
def process_results_incoming(self, interesting_managers: Set[bytes],
|
525
|
+
def process_results_incoming(self, interesting_managers: Set[bytes], monitoring_radio: Optional[MonitoringRadioSender]) -> None:
|
523
526
|
# Receive any results and forward to client
|
524
527
|
if self.results_incoming in self.socks and self.socks[self.results_incoming] == zmq.POLLIN:
|
525
528
|
logger.debug("entering results_incoming section")
|
@@ -539,11 +542,11 @@ class Interchange:
|
|
539
542
|
elif r['type'] == 'monitoring':
|
540
543
|
# the monitoring code makes the assumption that no
|
541
544
|
# monitoring messages will be received if monitoring
|
542
|
-
# is not configured, and that
|
545
|
+
# is not configured, and that monitoring_radio will only
|
543
546
|
# be None when monitoring is not configurated.
|
544
|
-
assert
|
547
|
+
assert monitoring_radio is not None
|
545
548
|
|
546
|
-
|
549
|
+
monitoring_radio.send(r['payload'])
|
547
550
|
elif r['type'] == 'heartbeat':
|
548
551
|
logger.debug(f"Manager {manager_id!r} sent heartbeat via results connection")
|
549
552
|
b_messages.append((p_message, r))
|
@@ -587,7 +590,7 @@ class Interchange:
|
|
587
590
|
interesting_managers.add(manager_id)
|
588
591
|
logger.debug("leaving results_incoming section")
|
589
592
|
|
590
|
-
def expire_bad_managers(self, interesting_managers: Set[bytes],
|
593
|
+
def expire_bad_managers(self, interesting_managers: Set[bytes], monitoring_radio: Optional[MonitoringRadioSender]) -> None:
|
591
594
|
bad_managers = [(manager_id, m) for (manager_id, m) in self._ready_managers.items() if
|
592
595
|
time.time() - m['last_heartbeat'] > self.heartbeat_threshold]
|
593
596
|
for (manager_id, m) in bad_managers:
|
@@ -595,7 +598,7 @@ class Interchange:
|
|
595
598
|
logger.warning(f"Too many heartbeats missed for manager {manager_id!r} - removing manager")
|
596
599
|
if m['active']:
|
597
600
|
m['active'] = False
|
598
|
-
self._send_monitoring_info(
|
601
|
+
self._send_monitoring_info(monitoring_radio, m)
|
599
602
|
|
600
603
|
logger.warning(f"Cancelling htex tasks {m['tasks']} on removed manager")
|
601
604
|
for tid in m['tasks']:
|
@@ -0,0 +1,101 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: parsl
|
3
|
+
Version: 2024.8.12
|
4
|
+
Summary: Simple data dependent workflows in Python
|
5
|
+
Home-page: https://github.com/Parsl/parsl
|
6
|
+
Download-URL: https://github.com/Parsl/parsl/archive/2024.08.12.tar.gz
|
7
|
+
Author: The Parsl Team
|
8
|
+
Author-email: parsl@googlegroups.com
|
9
|
+
License: Apache 2.0
|
10
|
+
Keywords: Workflows,Scientific computing
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
12
|
+
Classifier: Intended Audience :: Developers
|
13
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
14
|
+
Classifier: Programming Language :: Python :: 3.8
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
19
|
+
Requires-Python: >=3.8.0
|
20
|
+
License-File: LICENSE
|
21
|
+
Requires-Dist: pyzmq>=17.1.2
|
22
|
+
Requires-Dist: typeguard!=3.*,<5,>=2.10
|
23
|
+
Requires-Dist: typing-extensions<5,>=4.6
|
24
|
+
Requires-Dist: globus-sdk
|
25
|
+
Requires-Dist: dill
|
26
|
+
Requires-Dist: tblib
|
27
|
+
Requires-Dist: requests
|
28
|
+
Requires-Dist: paramiko
|
29
|
+
Requires-Dist: psutil>=5.5.1
|
30
|
+
Requires-Dist: setproctitle
|
31
|
+
Requires-Dist: filelock<4,>=3.13
|
32
|
+
Provides-Extra: all
|
33
|
+
Requires-Dist: sqlalchemy<2,>=1.4; extra == "all"
|
34
|
+
Requires-Dist: pydot; extra == "all"
|
35
|
+
Requires-Dist: networkx<2.6,>=2.5; extra == "all"
|
36
|
+
Requires-Dist: Flask>=1.0.2; extra == "all"
|
37
|
+
Requires-Dist: flask-sqlalchemy; extra == "all"
|
38
|
+
Requires-Dist: pandas<2.2; extra == "all"
|
39
|
+
Requires-Dist: plotly; extra == "all"
|
40
|
+
Requires-Dist: python-daemon; extra == "all"
|
41
|
+
Requires-Dist: boto3; extra == "all"
|
42
|
+
Requires-Dist: kubernetes; extra == "all"
|
43
|
+
Requires-Dist: oauth-ssh>=0.9; extra == "all"
|
44
|
+
Requires-Dist: ipython<=8.6.0; extra == "all"
|
45
|
+
Requires-Dist: nbsphinx; extra == "all"
|
46
|
+
Requires-Dist: sphinx<7.2,>=7.1; extra == "all"
|
47
|
+
Requires-Dist: sphinx-rtd-theme; extra == "all"
|
48
|
+
Requires-Dist: google-auth; extra == "all"
|
49
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
50
|
+
Requires-Dist: python-gssapi; extra == "all"
|
51
|
+
Requires-Dist: azure<=4; extra == "all"
|
52
|
+
Requires-Dist: msrestazure; extra == "all"
|
53
|
+
Requires-Dist: work-queue; extra == "all"
|
54
|
+
Requires-Dist: pyyaml; extra == "all"
|
55
|
+
Requires-Dist: cffi; extra == "all"
|
56
|
+
Requires-Dist: jsonschema; extra == "all"
|
57
|
+
Requires-Dist: proxystore; extra == "all"
|
58
|
+
Requires-Dist: radical.pilot==1.60; extra == "all"
|
59
|
+
Requires-Dist: radical.utils==1.60; extra == "all"
|
60
|
+
Provides-Extra: aws
|
61
|
+
Requires-Dist: boto3; extra == "aws"
|
62
|
+
Provides-Extra: azure
|
63
|
+
Requires-Dist: azure<=4; extra == "azure"
|
64
|
+
Requires-Dist: msrestazure; extra == "azure"
|
65
|
+
Provides-Extra: docs
|
66
|
+
Requires-Dist: ipython<=8.6.0; extra == "docs"
|
67
|
+
Requires-Dist: nbsphinx; extra == "docs"
|
68
|
+
Requires-Dist: sphinx<7.2,>=7.1; extra == "docs"
|
69
|
+
Requires-Dist: sphinx-rtd-theme; extra == "docs"
|
70
|
+
Provides-Extra: flux
|
71
|
+
Requires-Dist: pyyaml; extra == "flux"
|
72
|
+
Requires-Dist: cffi; extra == "flux"
|
73
|
+
Requires-Dist: jsonschema; extra == "flux"
|
74
|
+
Provides-Extra: google_cloud
|
75
|
+
Requires-Dist: google-auth; extra == "google-cloud"
|
76
|
+
Requires-Dist: google-api-python-client; extra == "google-cloud"
|
77
|
+
Provides-Extra: gssapi
|
78
|
+
Requires-Dist: python-gssapi; extra == "gssapi"
|
79
|
+
Provides-Extra: kubernetes
|
80
|
+
Requires-Dist: kubernetes; extra == "kubernetes"
|
81
|
+
Provides-Extra: monitoring
|
82
|
+
Requires-Dist: sqlalchemy<2,>=1.4; extra == "monitoring"
|
83
|
+
Provides-Extra: oauth_ssh
|
84
|
+
Requires-Dist: oauth-ssh>=0.9; extra == "oauth-ssh"
|
85
|
+
Provides-Extra: proxystore
|
86
|
+
Requires-Dist: proxystore; extra == "proxystore"
|
87
|
+
Provides-Extra: radical-pilot
|
88
|
+
Requires-Dist: radical.pilot==1.60; extra == "radical-pilot"
|
89
|
+
Requires-Dist: radical.utils==1.60; extra == "radical-pilot"
|
90
|
+
Provides-Extra: visualization
|
91
|
+
Requires-Dist: pydot; extra == "visualization"
|
92
|
+
Requires-Dist: networkx<2.6,>=2.5; extra == "visualization"
|
93
|
+
Requires-Dist: Flask>=1.0.2; extra == "visualization"
|
94
|
+
Requires-Dist: flask-sqlalchemy; extra == "visualization"
|
95
|
+
Requires-Dist: pandas<2.2; extra == "visualization"
|
96
|
+
Requires-Dist: plotly; extra == "visualization"
|
97
|
+
Requires-Dist: python-daemon; extra == "visualization"
|
98
|
+
Provides-Extra: workqueue
|
99
|
+
Requires-Dist: work-queue; extra == "workqueue"
|
100
|
+
|
101
|
+
Simple parallel workflows system for Python
|
@@ -8,7 +8,7 @@ parsl/multiprocessing.py,sha256=MyaEcEq-Qf860u7V98u-PZrPNdtzOZL_NW6EhIJnmfQ,1937
|
|
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=91FjQiTUY383ueAjkBAgE21My9nba6SP2a2SrbB1r1Q,11250
|
11
|
-
parsl/version.py,sha256=
|
11
|
+
parsl/version.py,sha256=zmI7FIN8AXv3b0Vpa7LbYgVzdHVLVu3NkfVqBNTu6aU,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
|
@@ -17,22 +17,21 @@ parsl/app/futures.py,sha256=XU1NwkoNVsxy3KF5y0Ihsla5hPbhhuSikZInfS7h7Uo,2910
|
|
17
17
|
parsl/app/python.py,sha256=0hrz2BppVOwwNfh5hnoP70Yv56gSRkIoT-fP9XNb4v4,2331
|
18
18
|
parsl/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
19
|
parsl/benchmark/perf.py,sha256=kKXefDozWXSJKSNA7qdfUgEoacA2-R9kSZcI2YvZ5uE,3096
|
20
|
-
parsl/channels/__init__.py,sha256=
|
20
|
+
parsl/channels/__init__.py,sha256=OEZcuNBOxUwmzrHMZOuPvkw4kUxrbJDA99crDk61O90,131
|
21
21
|
parsl/channels/base.py,sha256=bS43-Qv4VSxa83V6fJ54lNBL_eHCu-Ce7-aoy1C9vCc,4193
|
22
22
|
parsl/channels/errors.py,sha256=Dp0FhtHpygn0IjX8nGurx-WrTJm9aw-Jjz3SSUT-jCc,3283
|
23
23
|
parsl/channels/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
24
|
parsl/channels/local/local.py,sha256=xqH4HnipUN95NgvyB1r33SiqgQKkARgRKmg0_HnumUk,5311
|
25
25
|
parsl/channels/oauth_ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
|
-
parsl/channels/oauth_ssh/oauth_ssh.py,sha256=
|
26
|
+
parsl/channels/oauth_ssh/oauth_ssh.py,sha256=2Hd5wEBVBhDQ9UHvO_iV4QhT6Na8GScy9O4HTM9Y5kA,3539
|
27
27
|
parsl/channels/ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
|
-
parsl/channels/ssh/ssh.py,sha256=
|
28
|
+
parsl/channels/ssh/ssh.py,sha256=TOxEDVCO0hbr1oru_KVGo0vrVEh_bgbqcXXx6EZHehw,10135
|
29
29
|
parsl/channels/ssh_il/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
|
-
parsl/channels/ssh_il/ssh_il.py,sha256=
|
30
|
+
parsl/channels/ssh_il/ssh_il.py,sha256=cAEAPfEoMfq_lkeBYfJAhrITci61IW_fkmffhUcIwqA,2440
|
31
31
|
parsl/concurrent/__init__.py,sha256=TvIVceJYaJAsxedNBF3Vdo9lEQNHH_j3uxJv0zUjP7w,3288
|
32
32
|
parsl/configs/ASPIRE1.py,sha256=eKnmz0QD3V522emtXMjS6Ppeooe5lzcBgCE6cxunbYY,1718
|
33
33
|
parsl/configs/Azure.py,sha256=CJms3xWmdb-S3CksbHrPF2TfMxJC5I0faqUKCOzVg0k,1268
|
34
34
|
parsl/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
35
|
-
parsl/configs/ad_hoc.py,sha256=Gwnehd5_K6IzUSPECHnNBljyO-LQ9fyaBClHiT_myp8,1352
|
36
35
|
parsl/configs/bridges.py,sha256=NsTvCiHZHbJj-BsOXOpgS4hCblCHW_lnMa_VMb3SIww,1523
|
37
36
|
parsl/configs/cc_in2p3.py,sha256=T9PjUt2OFFv3w2uXFeKfIDmE7j_nllD3jVouvCmPrCc,785
|
38
37
|
parsl/configs/ec2.py,sha256=5xtlZI4Fc558sYXdM4nQQvQDBNPdzhRRCO14F-8H7Y4,944
|
@@ -62,7 +61,7 @@ parsl/data_provider/staging.py,sha256=ZDZuuFg38pjUStegKPcvPsfGp3iMeReMzfU6DSwtJj
|
|
62
61
|
parsl/data_provider/zip.py,sha256=S4kVuH9lxAegRURYbvIUR7EYYBOccyslaqyCrVWUBhw,4497
|
63
62
|
parsl/dataflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
64
63
|
parsl/dataflow/dependency_resolvers.py,sha256=Om8Dgh7a0ZwgXAc6TlhxLSzvxXHDlNNV1aBNiD3JTNY,3325
|
65
|
-
parsl/dataflow/dflow.py,sha256=
|
64
|
+
parsl/dataflow/dflow.py,sha256=2RV4MmQ3y6iwOT7aJaeWMsVPJ6tFT03V0YAcUbxogpk,68250
|
66
65
|
parsl/dataflow/errors.py,sha256=9SxVhIJY_53FQx8x4OU8UA8nd7lvUbDllH7KfMXpYaY,2177
|
67
66
|
parsl/dataflow/futures.py,sha256=08LuP-HFiHBIZmeKCjlsazw_WpQ5fwevrU2_WbidkYw,6080
|
68
67
|
parsl/dataflow/memoization.py,sha256=l9uw1Bu50GucBF70M5relpGKFkE4dIM9T3R1KrxW0v0,9583
|
@@ -70,9 +69,9 @@ parsl/dataflow/rundirs.py,sha256=7aUg1cb0LLTocQxOdBzwtn7a8bIgpdMD5rjZV55UwaQ,115
|
|
70
69
|
parsl/dataflow/states.py,sha256=hV6mfv-y4A6xrujeQglcomnfEs7y3Xm2g6JFwC6dvgQ,2612
|
71
70
|
parsl/dataflow/taskrecord.py,sha256=-FuujdZQ1y5GSc-PJ91QKGT-Kp0lrg70MFDoxpbWI1Q,3113
|
72
71
|
parsl/executors/__init__.py,sha256=Cg8e-F2NUaBD8A9crDAXKCSdoBEwQVIdgm4FlXd-wvk,476
|
73
|
-
parsl/executors/base.py,sha256=
|
72
|
+
parsl/executors/base.py,sha256=5A59mCXPjYNCep9JgfvIjBdZvGV-1mNVHklr-ZIEojg,5200
|
74
73
|
parsl/executors/errors.py,sha256=xVswxgi7vmJcUMCeYDAPK8sQT2kHFFROVoOr0dnmcWE,2098
|
75
|
-
parsl/executors/status_handling.py,sha256=
|
74
|
+
parsl/executors/status_handling.py,sha256=XtFVifRwnLU2Lq1E4XsyPwUzMXZCOMecWL-jRCqpDyk,15269
|
76
75
|
parsl/executors/threads.py,sha256=hJt1LzxphqX4fe_9R9Cf1MU0lepWTU_eJe8O665B0Xo,3352
|
77
76
|
parsl/executors/flux/__init__.py,sha256=P9grTTeRPXfqXurFhlSS7XhmE6tTbnCnyQ1f9b-oYHE,136
|
78
77
|
parsl/executors/flux/execute_parsl_task.py,sha256=gRN7F4HhdrKQ-bvn4wXrquBzFOp_9WF88hMIeUaRg5I,1553
|
@@ -80,9 +79,10 @@ parsl/executors/flux/executor.py,sha256=8_xakLUu5zNJAHL0LbeTCFEWqWzRK1eE-3ep4GII
|
|
80
79
|
parsl/executors/flux/flux_instance_manager.py,sha256=5T3Rp7ZM-mlT0Pf0Gxgs5_YmnaPrSF9ec7zvRfLfYJw,2129
|
81
80
|
parsl/executors/high_throughput/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
81
|
parsl/executors/high_throughput/errors.py,sha256=Sak8e8UpiEcXefUjMHbhyXc4Rn7kJtOoh7L8wreBQdk,1638
|
83
|
-
parsl/executors/high_throughput/executor.py,sha256=
|
84
|
-
parsl/executors/high_throughput/interchange.py,sha256=
|
82
|
+
parsl/executors/high_throughput/executor.py,sha256=rMYu1PP-nXS8Oh9wu8Z-diNbI8J2fmuNqb3wvoyuMIc,38221
|
83
|
+
parsl/executors/high_throughput/interchange.py,sha256=upaJht6YnqvJqVF1Ub7GEyRFDtw1v19d0JmCWNXsi6k,31094
|
85
84
|
parsl/executors/high_throughput/manager_record.py,sha256=yn3L8TUJFkgm2lX1x0SeS9mkvJowC0s2VIMCFiU7ThM,455
|
85
|
+
parsl/executors/high_throughput/manager_selector.py,sha256=uRaEtcbDO2vXf8vjEcm7bfZVdeUlSPTRc3G4oFRO29M,820
|
86
86
|
parsl/executors/high_throughput/monitoring_info.py,sha256=HC0drp6nlXQpAop5PTUKNjdXMgtZVvrBL0JzZJebPP4,298
|
87
87
|
parsl/executors/high_throughput/mpi_executor.py,sha256=V07t1GOzFhcwdlZGuYUPqc1NarSr-vUbsNzbK4Cj0m8,3882
|
88
88
|
parsl/executors/high_throughput/mpi_prefix_composer.py,sha256=hah_IznfFqk-rzuHWmg6aiF_saiDRrpW-aSo4kH9Nso,4854
|
@@ -97,7 +97,7 @@ parsl/executors/radical/rpex_worker.py,sha256=qli6i6ejKubTSv3lAE3YiW8RlkHrfl4Jhr
|
|
97
97
|
parsl/executors/taskvine/__init__.py,sha256=9rwp3M8B0YyEhZMLO0RHaNw7u1nc01WHbXLqnBTanu0,293
|
98
98
|
parsl/executors/taskvine/errors.py,sha256=euIYkSslrNSI85kyi2s0xzOaO9ik4c1fYHstMIeiBJk,652
|
99
99
|
parsl/executors/taskvine/exec_parsl_function.py,sha256=ftGdJU78lKPPkphSHlEi4rj164mhuMHJjghVqfgeXKk,7085
|
100
|
-
parsl/executors/taskvine/executor.py,sha256=
|
100
|
+
parsl/executors/taskvine/executor.py,sha256=yODov_9LNyuxJga2Ki-fp1WEHwDcwNsLIBaqP8bAvfw,31056
|
101
101
|
parsl/executors/taskvine/factory.py,sha256=rWpEoFphLzqO3HEYyDEbQa14iyvgkdZg7hLZuaY39gQ,2638
|
102
102
|
parsl/executors/taskvine/factory_config.py,sha256=AbE2fN2snrF5ITYrrS4DnGn2XkJHUFr_17DYHDHIwq0,3693
|
103
103
|
parsl/executors/taskvine/manager.py,sha256=fwRSgYWpbsnr5jXlzvX0sQjOqryqn_77K_svJJ1HJ2U,25631
|
@@ -106,7 +106,7 @@ parsl/executors/taskvine/utils.py,sha256=iSrIogeiauL3UNy_9tiZp1cBSNn6fIJkMYQRVi1
|
|
106
106
|
parsl/executors/workqueue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
107
107
|
parsl/executors/workqueue/errors.py,sha256=XO2naYhAsHHyiOBH6hpObg3mPNDmvMoFqErsj0-v7jc,541
|
108
108
|
parsl/executors/workqueue/exec_parsl_function.py,sha256=RUkJ4JSJAjr7YyRZ58zhMdg8cR5dVV9odUl3AuzNf3k,7802
|
109
|
-
parsl/executors/workqueue/executor.py,sha256=
|
109
|
+
parsl/executors/workqueue/executor.py,sha256=aS864cpAvWQeW6hDqOtX_aUa1YnXsPcemuiVMq51pys,49840
|
110
110
|
parsl/executors/workqueue/parsl_coprocess.py,sha256=cF1UmTgVLoey6QzBcbYgEiEsRidSaFfuO54f1HFw_EM,5737
|
111
111
|
parsl/executors/workqueue/parsl_coprocess_stub.py,sha256=_bJmpPIgL42qM6bVzeEKt1Mn1trSP41rtJguXxPGfHI,735
|
112
112
|
parsl/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -120,12 +120,13 @@ parsl/launchers/base.py,sha256=CblcvPTJiu-MNLWaRtFe29SZQ0BpTOlaY8CGcHdlHIE,538
|
|
120
120
|
parsl/launchers/errors.py,sha256=8YMV_CHpBNVa4eXkGE4x5DaFQlZkDCRCHmBktYcY6TA,467
|
121
121
|
parsl/launchers/launchers.py,sha256=VB--fiVv_IQne3DydTMSdGUY0o0g69puAs-Hd3mJ2vo,15464
|
122
122
|
parsl/monitoring/__init__.py,sha256=0ywNz6i0lM1xo_7_BIxhETDGeVd2C_0wwD7qgeaMR4c,83
|
123
|
-
parsl/monitoring/db_manager.py,sha256=
|
123
|
+
parsl/monitoring/db_manager.py,sha256=XAhnxX56ZupYL0HfHuQDiwmGsahXVRc-A4VV8tfwths,36931
|
124
|
+
parsl/monitoring/errors.py,sha256=D6jpYzEzp0d6FmVKGqhvjAxr4ztZfJX2s-aXemH9bBU,148
|
124
125
|
parsl/monitoring/message_type.py,sha256=Khn88afNxcOIciKiCK4GLnn90I5BlRTiOL3zK-P07yQ,401
|
125
|
-
parsl/monitoring/monitoring.py,sha256=
|
126
|
-
parsl/monitoring/radios.py,sha256=
|
127
|
-
parsl/monitoring/remote.py,sha256=
|
128
|
-
parsl/monitoring/router.py,sha256=
|
126
|
+
parsl/monitoring/monitoring.py,sha256=FhZ4qC74mTvH0n4z9jNHhomIASf0V8DqnRuZQEJGGP8,13524
|
127
|
+
parsl/monitoring/radios.py,sha256=cHdpBOW1ITYvFnOgYjziuZOauq8p7mlSBOvcbIP78mg,6437
|
128
|
+
parsl/monitoring/remote.py,sha256=avIWMvejN0LeIXpt_RCXJxGLbsXhapUab2rS5Tmjca4,13739
|
129
|
+
parsl/monitoring/router.py,sha256=ezuE5tTBa-Ry0hSHtUiWacxnP37VkLUC1vuZaIBRNBA,11224
|
129
130
|
parsl/monitoring/types.py,sha256=_WGizCTgQVOkJ2dvNfsvHpYBj21Ky3bJsmyIskIx10I,631
|
130
131
|
parsl/monitoring/queries/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
131
132
|
parsl/monitoring/queries/pandas.py,sha256=0Z2r0rjTKCemf0eaDkF1irvVHn5g7KC5SYETvQPRxwU,2232
|
@@ -150,12 +151,12 @@ parsl/monitoring/visualization/templates/resource_usage.html,sha256=__QEaAPdO8kz
|
|
150
151
|
parsl/monitoring/visualization/templates/task.html,sha256=omDwp7zFXHVtuGsUCXcB7xLAsAW0Vrjd1b-wFZj9y70,2803
|
151
152
|
parsl/monitoring/visualization/templates/workflow.html,sha256=QCSHAPHK_2C3gNcZ3NmChLFG6xuchZEjT_iLQ3wwXmk,1871
|
152
153
|
parsl/monitoring/visualization/templates/workflows_summary.html,sha256=7brKKNsxcT4z-l10BKJlgTxQtGL033ZS5jEDdSmsPEE,891
|
153
|
-
parsl/providers/__init__.py,sha256=
|
154
|
+
parsl/providers/__init__.py,sha256=fvmVlu4aHw796K-fuUqxCHdK8KhrQviMARSmUQl1XXs,1077
|
154
155
|
parsl/providers/base.py,sha256=u8oGlAaDfh15EgOJNJF1aZUy0Ou-UW6UY0b7ZI7Ecjo,5702
|
155
156
|
parsl/providers/cluster_provider.py,sha256=o75wJHHyZkecjEBhGGBCMUQ1JlsecAhAKxX_Qd2pyg8,4668
|
156
157
|
parsl/providers/errors.py,sha256=_CbCmpguzcA81SC5dPLkDZs1AShzacGKttNhuzNBeiQ,2270
|
157
158
|
parsl/providers/ad_hoc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
158
|
-
parsl/providers/ad_hoc/ad_hoc.py,sha256=
|
159
|
+
parsl/providers/ad_hoc/ad_hoc.py,sha256=NPZRJnVYT7IB2TCLThofcB7g0WZqgT_N0hDs3K86zhE,8466
|
159
160
|
parsl/providers/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
160
161
|
parsl/providers/aws/aws.py,sha256=nS899gamCAhiIY-4zwaEToa7Om73PrAz4dvX5YSEkUQ,28985
|
161
162
|
parsl/providers/aws/template.py,sha256=N7OEpp7YP6CK5RUtLOwFnks7AE2UG5hHXddh8FF0BFs,347
|
@@ -207,7 +208,6 @@ parsl/tests/test_summary.py,sha256=x1RfWCFLzHjBw2ukwoRZPW1LFCKiwDmxx86ES-6yGRA,5
|
|
207
208
|
parsl/tests/test_thread_parallelism.py,sha256=TVNeQ1NkUhaf3YbbzUSH-ozFFdX_GbX-5ygommjVxvc,1653
|
208
209
|
parsl/tests/utils.py,sha256=YqUlBTj2UoAFVKVdLKh-1Y6MQM_ZSHPJOQ4GfQvFXyk,110
|
209
210
|
parsl/tests/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
210
|
-
parsl/tests/configs/ad_hoc_cluster_htex.py,sha256=twCY2ppy1M7EpPkwVC-8oboaiSwqNBrQV0noFBWPMJ0,1301
|
211
211
|
parsl/tests/configs/azure_single_node.py,sha256=iX99_MCPkInOzByB5QRYYBSbWDhFaTcA7CkJk9DreuU,1729
|
212
212
|
parsl/tests/configs/bluewaters.py,sha256=SyCQ99Iih6sYjJVLj5C-AzUqff8vowP113ZC8JHDc24,1370
|
213
213
|
parsl/tests/configs/bridges.py,sha256=WqMa340ZEXRmwgY7oe6QjJnUMO3Y3vAfKngg0XNyVRI,1602
|
@@ -218,12 +218,11 @@ parsl/tests/configs/ec2_single_node.py,sha256=rK9AfMf4C84CXMhS5nhgHA_dNG2An7Yiq2
|
|
218
218
|
parsl/tests/configs/ec2_spot.py,sha256=NKDCKgKxYNOHGVLBl2DFfiUwkR6xQnyhNb_E04TBs28,1253
|
219
219
|
parsl/tests/configs/flux_local.py,sha256=xliKQfB5FFpfNHWYEHoA8FKOTVHFCXVhWNuKQ5VJNTk,182
|
220
220
|
parsl/tests/configs/frontera.py,sha256=VXaRcvsi9ZjqJHi71BbKXSJBuQXdhCzPxXKW7H3LRBI,1567
|
221
|
-
parsl/tests/configs/htex_ad_hoc_cluster.py,sha256=Nr5ZVs4kVvX2UbRk8j9VW6xYGf9SR43SvodkU8RVWEQ,944
|
222
221
|
parsl/tests/configs/htex_local.py,sha256=o7Lxz1nErHpLNcH7vEEy9KyCNiEf6r3gpCrBmdQbh94,719
|
223
222
|
parsl/tests/configs/htex_local_alternate.py,sha256=CnEfKbt1nnGYwKVICA2tmyqDNH0GP9pFLao2bNXGRHI,2510
|
224
223
|
parsl/tests/configs/htex_local_intask_staging.py,sha256=E7uZD_AIAbxavkw4VrVXlGG7k42YJZv2qluAO-W0VvI,886
|
225
224
|
parsl/tests/configs/htex_local_rsync_staging.py,sha256=cqTRcHLjqYnOL07Lb8ecTzQuzP-dWDpWdKhgtTwo-fU,940
|
226
|
-
parsl/tests/configs/local_adhoc.py,sha256=
|
225
|
+
parsl/tests/configs/local_adhoc.py,sha256=jlyDwwIm0uVuyDgKZCb3wa3k0IaqcYT0ErMhu_0N26s,509
|
227
226
|
parsl/tests/configs/local_radical.py,sha256=C70I6ssfaaHEY1MMCC77izpp6sdANALH-P2mDR2msN0,417
|
228
227
|
parsl/tests/configs/local_radical_mpi.py,sha256=5OabeXXJPE0fyiA1AlGcQYoPRjQRk-HNA-xPLTFyAr4,532
|
229
228
|
parsl/tests/configs/local_threads.py,sha256=oEnQSlom_JMLFX9_Ln49JAfOP3nSMbw8gTaDJo_NYfo,202
|
@@ -241,7 +240,6 @@ parsl/tests/configs/nscc_singapore.py,sha256=ECENZcBuCjkY6OWZstEMhfMrmjRmjCc7ELd
|
|
241
240
|
parsl/tests/configs/osg_htex.py,sha256=x-C_r7Kpwvqroc4Ay1Yaya9K6_j7IU1ywqPegBU7HKI,1371
|
242
241
|
parsl/tests/configs/petrelkube.py,sha256=uUxrZrD_cF-_t6ytlRA_MUtw8RQbpW0CmNRbw3mWs1o,1699
|
243
242
|
parsl/tests/configs/summit.py,sha256=0LbuTVmc8nl2eGiqAayhV0RCx0pg5kUpYhz9LvTFhDo,1378
|
244
|
-
parsl/tests/configs/swan_htex.py,sha256=WEICoOrYWJKlium7R52TRHJ6Env_KVhKE2kbgu2ZJD8,1501
|
245
243
|
parsl/tests/configs/taskvine_ex.py,sha256=Nsovxtb59q6ta2opGrl7ufWcavYQtzSPrscLmaLYkUU,472
|
246
244
|
parsl/tests/configs/theta.py,sha256=bkwcFcZYSkJOfLdcPHiAN2BRRGz3nLTaPylvdm3dcJ8,1298
|
247
245
|
parsl/tests/configs/user_opts.py,sha256=fNO1OxISFPP7IyJ_iwf8dQ6EagVr2StXtOWmGnA9MeI,6265
|
@@ -253,22 +251,15 @@ parsl/tests/integration/test_apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
|
|
253
251
|
parsl/tests/integration/test_channels/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
254
252
|
parsl/tests/integration/test_channels/test_channels.py,sha256=Nv_1ljrJ5Miqe4U5q9XPBqc0YZbJC90TIsH0p3203Gs,323
|
255
253
|
parsl/tests/integration/test_channels/test_local_channel.py,sha256=_j9z4LqdfawEQRlae6EHpMtrhMPMapbIlJwoHEibAuE,1009
|
256
|
-
parsl/tests/integration/test_channels/test_scp_1.py,sha256=K7KWTeiZULBBydbvfmBzvRm7KM7nlkZn_O2-v5D5yY4,1014
|
257
|
-
parsl/tests/integration/test_channels/test_ssh_1.py,sha256=5HQehVteKCPXFt4V3W2YXgGvDm0sKP2MmJC0TCnJUbs,933
|
258
|
-
parsl/tests/integration/test_channels/test_ssh_errors.py,sha256=VKaNZAbXr7uv8EhG7FIVm8Veq2WnMJ2Jel7A3t5v_dQ,1279
|
259
|
-
parsl/tests/integration/test_channels/test_ssh_file_transport.py,sha256=9cBi7CPzM-4NxsCW3VfmRWgOvOb-mk8hpH187clScvc,904
|
260
|
-
parsl/tests/integration/test_channels/test_ssh_interactive.py,sha256=voUAR21RZD0c9fPDfAN9PZiiZw58qk_hxC92LL10VSA,568
|
261
254
|
parsl/tests/integration/test_stress/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
262
255
|
parsl/tests/integration/test_stress/test_python_simple.py,sha256=QZMhi6E0OmMsKi3QkHJZdNpALSrWshrLcKsstLANUWE,1007
|
263
256
|
parsl/tests/integration/test_stress/test_python_threads.py,sha256=-4dW-g69cu6uhSvk5HiH0fI6ceckQNqUXZGvNK6QGq4,897
|
264
257
|
parsl/tests/manual_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
265
258
|
parsl/tests/manual_tests/htex_local.py,sha256=6bbnCPy7t_sJUrvDXiLB97joP8UWGjAdEs4aRP6PkFQ,820
|
266
|
-
parsl/tests/manual_tests/test_ad_hoc_htex.py,sha256=CPBzPd21GwKlz5jbHCipPepc3v0ZFiTdQCR8pAwlxkQ,1255
|
267
259
|
parsl/tests/manual_tests/test_basic.py,sha256=3uCS9BqaZmKTNtNfJSsJIg2exlTAdC0Sdc1w9hY9Tvc,4023
|
268
260
|
parsl/tests/manual_tests/test_fan_in_out_htex_remote.py,sha256=j9GkGwV7sP8ytIz4L7usuVacvBfFyIm-lq9F74KO85o,2422
|
269
261
|
parsl/tests/manual_tests/test_log_filter.py,sha256=jwKclAVuESdlGK_giBuHDkY6ryX6rZB7q01lXT5K0XU,1872
|
270
262
|
parsl/tests/manual_tests/test_memory_limits.py,sha256=XGV_YmIeiGMt1HWYS0Zxo-XkVoKsvHhl11_U3MTg1KI,2677
|
271
|
-
parsl/tests/manual_tests/test_oauth_ssh.py,sha256=v7msnSS5ywrWl7oqB_gR72oU2owrpzxaQ4vBt9C8pxI,337
|
272
263
|
parsl/tests/manual_tests/test_regression_220.py,sha256=Jo2puWt1W0r1rJfaJFgd2ZPgR3i6uOXzrLRcfYDZWDo,931
|
273
264
|
parsl/tests/manual_tests/test_udp_simple.py,sha256=VyEbE3G5pcRjzbdUbQlL0BHiilfOsNsbbLOJghU7n84,1037
|
274
265
|
parsl/tests/manual_tests/test_worker_count.py,sha256=Cv8nAWMXAREiiGEBUr_8JyI87ffp8JGAyDqVXzcjX_0,2072
|
@@ -343,17 +334,18 @@ parsl/tests/test_htex/test_command_client_timeout.py,sha256=5tBViUhPT1ejnDDztTcE
|
|
343
334
|
parsl/tests/test_htex/test_connected_blocks.py,sha256=gaXZSr__pIaLvKY6rF-4r1p_4dO5V28gtxHLT-psEFg,1640
|
344
335
|
parsl/tests/test_htex/test_cpu_affinity_explicit.py,sha256=DVHrRCskDbJIrfB5YSi3ZSbfR4WzijA46aZfZzjNcrU,1382
|
345
336
|
parsl/tests/test_htex/test_disconnected_blocks.py,sha256=3V1Ol9gMS6knjLTgIjB5GrunRSp4ANsJ_2vAvpyMR6c,1858
|
337
|
+
parsl/tests/test_htex/test_disconnected_blocks_failing_provider.py,sha256=eOdipRpKMOkWAXB3UtY1UjqTiwfNs_csNLve8vllG_M,2040
|
346
338
|
parsl/tests/test_htex/test_drain.py,sha256=Z2Z5-3NfLL9tMgJh4JkVKLZZDl3Z2gDAbEFHDSGdItw,2288
|
347
|
-
parsl/tests/test_htex/test_htex.py,sha256=
|
339
|
+
parsl/tests/test_htex/test_htex.py,sha256=5ylQvWgmSLP3lOdoHxqK9wkvAgfgeJx6gihKPkN8XfU,5320
|
348
340
|
parsl/tests/test_htex/test_manager_failure.py,sha256=N-obuSZ8f7XA_XcddoN2LWKSVtpKUZvTHb7BFelS3iQ,1143
|
349
341
|
parsl/tests/test_htex/test_managers_command.py,sha256=Y-eUjtBzwW9erCYdph9bOesbkUvX8QUPqXt27DCgVS8,951
|
350
342
|
parsl/tests/test_htex/test_missing_worker.py,sha256=gyp5i7_t-JHyJGtz_eXZKKBY5w8oqLOIxO6cJgGJMtQ,745
|
351
343
|
parsl/tests/test_htex/test_multiple_disconnected_blocks.py,sha256=Axn8us43dA722O4PWdqxCJM5f_vinZqjFT1WAEvC_ZM,1995
|
352
344
|
parsl/tests/test_htex/test_worker_failure.py,sha256=Uz-RHI-LK78FMjXUvrUFmo4iYfmpDVBUcBxxRb3UG9M,603
|
353
|
-
parsl/tests/test_htex/test_zmq_binding.py,sha256=
|
345
|
+
parsl/tests/test_htex/test_zmq_binding.py,sha256=Bq1HHuMxBE_AcaP1VZ-RqE4euCHO__Du05b2UZ5H1RA,3950
|
354
346
|
parsl/tests/test_monitoring/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
355
347
|
parsl/tests/test_monitoring/test_app_names.py,sha256=ayyxySGWpKSe9dDw2UeJo1dicxjpALRuLsJfprZV4Eg,2174
|
356
|
-
parsl/tests/test_monitoring/test_basic.py,sha256=
|
348
|
+
parsl/tests/test_monitoring/test_basic.py,sha256=nQERwVH56CjrKc_YSsMxH5UziJDqN2357Vhyd0brbRU,4177
|
357
349
|
parsl/tests/test_monitoring/test_db_locks.py,sha256=3s3c1xhKo230ZZIJ3f1Ca4U7LcEdXnanOGVXQyNlk2U,2895
|
358
350
|
parsl/tests/test_monitoring/test_fuzz_zmq.py,sha256=--3-pQUvXXbkr8v_BEJoPvVvNly1oXvrD2nJh6yl_0M,3436
|
359
351
|
parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py,sha256=_WjymTgxWvZZwQpJQ3L2gmEt5VUkTss0hOT153AssdQ,2746
|
@@ -367,11 +359,11 @@ parsl/tests/test_mpi_apps/test_mpi_mode_disabled.py,sha256=Wg3TZE1eF5U3XVGtsCCtt
|
|
367
359
|
parsl/tests/test_mpi_apps/test_mpi_mode_enabled.py,sha256=pV-htWmPNyY7XKN4Qo-twLmH-qreCgFlYwokgZbTS_g,5304
|
368
360
|
parsl/tests/test_mpi_apps/test_mpi_prefix.py,sha256=yJslZvYK3JeL9UgxMwF9DDPR9QD4zJLGVjubD0F-utc,1950
|
369
361
|
parsl/tests/test_mpi_apps/test_mpi_scheduler.py,sha256=YdV8A-m67DHk9wxgNpj69wwGEKrFGL20KAC1TzLke3c,6332
|
370
|
-
parsl/tests/test_mpi_apps/test_mpiex.py,sha256=
|
362
|
+
parsl/tests/test_mpi_apps/test_mpiex.py,sha256=U4Djvzsf_oKgtxL6HXBxxEzrHiYVw2dQBpDgbGlMffU,2052
|
371
363
|
parsl/tests/test_mpi_apps/test_resource_spec.py,sha256=A7NwNT4LalCSOiHws1ALrrWy8Mn1IItpv9olhnRVjs0,3987
|
372
364
|
parsl/tests/test_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
373
365
|
parsl/tests/test_providers/test_cobalt_deprecation_warning.py,sha256=UN2W6xJxuLx2euPqArORKFEU2VXez9_PYqq-0rZHanQ,391
|
374
|
-
parsl/tests/test_providers/test_local_provider.py,sha256=
|
366
|
+
parsl/tests/test_providers/test_local_provider.py,sha256=R96E1eWgHVkvOQ1Au9wj-gfdWKAqGc-qlygFuxpGFQ8,7160
|
375
367
|
parsl/tests/test_providers/test_pbspro_template.py,sha256=-bi1vags9yyNfpBxtjTqFjzMIg1VVPyf2M958UcXWmA,855
|
376
368
|
parsl/tests/test_providers/test_slurm_instantiate.py,sha256=eW3pEZRIzZO1-eKFrBc7N5uoN5otwghgbqut74Kyqoc,500
|
377
369
|
parsl/tests/test_providers/test_slurm_template.py,sha256=pBEeimO-vGbMmC1QT7BP7s5BH6fFeqaWnI4f6tWPFEo,901
|
@@ -467,13 +459,13 @@ parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
467
459
|
parsl/usage_tracking/api.py,sha256=iaCY58Dc5J4UM7_dJzEEs871P1p1HdxBMtNGyVdzc9g,1821
|
468
460
|
parsl/usage_tracking/levels.py,sha256=xbfzYEsd55KiZJ-mzNgPebvOH4rRHum04hROzEf41tU,291
|
469
461
|
parsl/usage_tracking/usage.py,sha256=qNEJ7nPimqd3Y7OWFLdYmNwJ6XDKlyfV_fTzasxsQw8,8690
|
470
|
-
parsl-2024.
|
471
|
-
parsl-2024.
|
472
|
-
parsl-2024.
|
473
|
-
parsl-2024.
|
474
|
-
parsl-2024.
|
475
|
-
parsl-2024.
|
476
|
-
parsl-2024.
|
477
|
-
parsl-2024.
|
478
|
-
parsl-2024.
|
479
|
-
parsl-2024.
|
462
|
+
parsl-2024.8.12.data/scripts/exec_parsl_function.py,sha256=RUkJ4JSJAjr7YyRZ58zhMdg8cR5dVV9odUl3AuzNf3k,7802
|
463
|
+
parsl-2024.8.12.data/scripts/interchange.py,sha256=Gl9h3_MN4Ux2FJZxd2ObfTSZ5T1INYQDhU_bYFezbkE,31081
|
464
|
+
parsl-2024.8.12.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
|
465
|
+
parsl-2024.8.12.data/scripts/process_worker_pool.py,sha256=78QKnV5KbY_vcteC6k60gpDE4wEk6hsciet_qzs9QoU,43061
|
466
|
+
parsl-2024.8.12.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
467
|
+
parsl-2024.8.12.dist-info/METADATA,sha256=7Jds7wt0Rauv9RhkD1Qqdp3G7xI0YRSK4QHDpooLdjQ,4045
|
468
|
+
parsl-2024.8.12.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
469
|
+
parsl-2024.8.12.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
|
470
|
+
parsl-2024.8.12.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
|
471
|
+
parsl-2024.8.12.dist-info/RECORD,,
|
parsl/configs/ad_hoc.py
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
from typing import Any, Dict
|
2
|
-
|
3
|
-
from parsl.channels import SSHChannel
|
4
|
-
from parsl.config import Config
|
5
|
-
from parsl.executors import HighThroughputExecutor
|
6
|
-
from parsl.providers import AdHocProvider
|
7
|
-
from parsl.usage_tracking.levels import LEVEL_1
|
8
|
-
|
9
|
-
user_opts: Dict[str, Dict[str, Any]]
|
10
|
-
user_opts = {'adhoc':
|
11
|
-
{'username': 'YOUR_USERNAME',
|
12
|
-
'script_dir': 'YOUR_SCRIPT_DIR',
|
13
|
-
'remote_hostnames': ['REMOTE_HOST_URL_1', 'REMOTE_HOST_URL_2']
|
14
|
-
}
|
15
|
-
}
|
16
|
-
|
17
|
-
|
18
|
-
config = Config(
|
19
|
-
executors=[
|
20
|
-
HighThroughputExecutor(
|
21
|
-
label='remote_htex',
|
22
|
-
max_workers_per_node=2,
|
23
|
-
worker_logdir_root=user_opts['adhoc']['script_dir'],
|
24
|
-
provider=AdHocProvider(
|
25
|
-
# Command to be run before starting a worker, such as:
|
26
|
-
# 'module load Anaconda; source activate parsl_env'.
|
27
|
-
worker_init='',
|
28
|
-
channels=[SSHChannel(hostname=m,
|
29
|
-
username=user_opts['adhoc']['username'],
|
30
|
-
script_dir=user_opts['adhoc']['script_dir'],
|
31
|
-
) for m in user_opts['adhoc']['remote_hostnames']]
|
32
|
-
)
|
33
|
-
)
|
34
|
-
],
|
35
|
-
# AdHoc Clusters should not be setup with scaling strategy.
|
36
|
-
strategy='none',
|
37
|
-
usage_tracking=LEVEL_1,
|
38
|
-
)
|
@@ -1,35 +0,0 @@
|
|
1
|
-
from typing import Any, Dict
|
2
|
-
|
3
|
-
from parsl.channels import SSHChannel
|
4
|
-
from parsl.config import Config
|
5
|
-
from parsl.executors import HighThroughputExecutor
|
6
|
-
from parsl.providers import AdHocProvider
|
7
|
-
|
8
|
-
user_opts = {'adhoc':
|
9
|
-
{'username': 'YOUR_USERNAME',
|
10
|
-
'script_dir': 'YOUR_SCRIPT_DIR',
|
11
|
-
'remote_hostnames': ['REMOTE_HOST_URL_1', 'REMOTE_HOST_URL_2']
|
12
|
-
}
|
13
|
-
} # type: Dict[str, Dict[str, Any]]
|
14
|
-
|
15
|
-
config = Config(
|
16
|
-
executors=[
|
17
|
-
HighThroughputExecutor(
|
18
|
-
label='remote_htex',
|
19
|
-
max_workers_per_node=2,
|
20
|
-
worker_logdir_root=user_opts['adhoc']['script_dir'],
|
21
|
-
encrypted=True,
|
22
|
-
provider=AdHocProvider(
|
23
|
-
# Command to be run before starting a worker, such as:
|
24
|
-
# 'module load Anaconda; source activate parsl_env'.
|
25
|
-
worker_init='',
|
26
|
-
channels=[SSHChannel(hostname=m,
|
27
|
-
username=user_opts['adhoc']['username'],
|
28
|
-
script_dir=user_opts['adhoc']['script_dir'],
|
29
|
-
) for m in user_opts['adhoc']['remote_hostnames']]
|
30
|
-
)
|
31
|
-
)
|
32
|
-
],
|
33
|
-
# AdHoc Clusters should not be setup with scaling strategy.
|
34
|
-
strategy='none',
|
35
|
-
)
|