parsl 2024.4.15__py3-none-any.whl → 2024.4.29__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 +2 -2
- parsl/app/bash.py +10 -2
- parsl/app/errors.py +3 -5
- parsl/config.py +10 -1
- parsl/data_provider/zip.py +32 -0
- parsl/dataflow/dflow.py +102 -62
- parsl/dataflow/futures.py +26 -5
- parsl/executors/base.py +16 -0
- parsl/executors/high_throughput/executor.py +7 -1
- parsl/executors/taskvine/executor.py +6 -0
- parsl/executors/workqueue/executor.py +6 -0
- parsl/monitoring/monitoring.py +15 -0
- parsl/providers/kubernetes/kube.py +20 -1
- parsl/tests/configs/local_threads_checkpoint_periodic.py +8 -10
- parsl/tests/conftest.py +12 -1
- parsl/tests/test_bash_apps/test_basic.py +2 -0
- parsl/tests/test_bash_apps/test_std_uri.py +128 -0
- parsl/tests/test_checkpointing/test_periodic.py +20 -33
- parsl/tests/test_checkpointing/test_task_exit.py +1 -1
- parsl/tests/test_htex/test_basic.py +2 -2
- parsl/tests/test_htex/test_missing_worker.py +0 -4
- parsl/tests/test_htex/test_zmq_binding.py +1 -0
- parsl/tests/test_monitoring/test_stdouterr.py +137 -0
- parsl/tests/test_mpi_apps/test_resource_spec.py +2 -8
- parsl/tests/test_python_apps/test_context_manager.py +3 -3
- parsl/tests/test_scaling/test_regression_1621.py +11 -11
- parsl/tests/test_staging/test_staging_stdout.py +61 -0
- parsl/tests/test_staging/test_zip_in.py +42 -0
- parsl/tests/test_staging/test_zip_to_zip.py +44 -0
- parsl/tests/unit/__init__.py +0 -0
- parsl/tests/unit/test_file.py +99 -0
- parsl/usage_tracking/api.py +66 -0
- parsl/usage_tracking/usage.py +39 -26
- parsl/utils.py +11 -2
- parsl/version.py +1 -1
- {parsl-2024.4.15.dist-info → parsl-2024.4.29.dist-info}/METADATA +4 -4
- {parsl-2024.4.15.dist-info → parsl-2024.4.29.dist-info}/RECORD +44 -36
- {parsl-2024.4.15.data → parsl-2024.4.29.data}/scripts/exec_parsl_function.py +0 -0
- {parsl-2024.4.15.data → parsl-2024.4.29.data}/scripts/parsl_coprocess.py +0 -0
- {parsl-2024.4.15.data → parsl-2024.4.29.data}/scripts/process_worker_pool.py +0 -0
- {parsl-2024.4.15.dist-info → parsl-2024.4.29.dist-info}/LICENSE +0 -0
- {parsl-2024.4.15.dist-info → parsl-2024.4.29.dist-info}/WHEEL +0 -0
- {parsl-2024.4.15.dist-info → parsl-2024.4.29.dist-info}/entry_points.txt +0 -0
- {parsl-2024.4.15.dist-info → parsl-2024.4.29.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,99 @@
|
|
1
|
+
import os
|
2
|
+
from unittest import mock
|
3
|
+
|
4
|
+
import pytest
|
5
|
+
|
6
|
+
from parsl import File
|
7
|
+
|
8
|
+
_MOCK_BASE = "parsl.data_provider.files."
|
9
|
+
|
10
|
+
|
11
|
+
@pytest.mark.local
|
12
|
+
@pytest.mark.parametrize("scheme", ("http", "https", "ftp", "ftps", "asdfasdf"))
|
13
|
+
def test_file_init_scheme(scheme):
|
14
|
+
basename = "some_base_name"
|
15
|
+
path = f"/some/path/1/2/3/{basename}"
|
16
|
+
fqdn = "some.fqdn.example.com"
|
17
|
+
exp_url = f"{scheme}://{fqdn}{path}"
|
18
|
+
f = File(exp_url)
|
19
|
+
assert f.url == exp_url, "Expected given url to be stored"
|
20
|
+
assert f.scheme == scheme
|
21
|
+
assert f.netloc == fqdn
|
22
|
+
assert f.path == path
|
23
|
+
assert f.filename == basename
|
24
|
+
assert f.local_path is None, "Expect only set by API consumer, not constructor"
|
25
|
+
|
26
|
+
|
27
|
+
@pytest.mark.local
|
28
|
+
@pytest.mark.parametrize("url", ("some weird :// url", "", "a"))
|
29
|
+
def test_file_init_file_url_fallback(url):
|
30
|
+
exp_url = "some weird :// url"
|
31
|
+
f = File(exp_url)
|
32
|
+
assert f.url == exp_url
|
33
|
+
assert not f.netloc, "invalid host, should be no netloc"
|
34
|
+
assert f.path == exp_url, "Should fail to fully parse, so path is whole url"
|
35
|
+
assert f.filename == exp_url.rsplit("/", 1)[-1]
|
36
|
+
|
37
|
+
assert f.scheme == "file"
|
38
|
+
|
39
|
+
|
40
|
+
@pytest.mark.local
|
41
|
+
def test_file_proxies_for_filepath(randomstring):
|
42
|
+
# verify (current) expected internal hookup
|
43
|
+
exp_filepath = randomstring()
|
44
|
+
with mock.patch(
|
45
|
+
f"{_MOCK_BASE}File.filepath", new_callable=mock.PropertyMock
|
46
|
+
) as mock_fpath:
|
47
|
+
mock_fpath.return_value = exp_filepath
|
48
|
+
f = File("")
|
49
|
+
assert str(f) == exp_filepath
|
50
|
+
assert os.fspath(f) == exp_filepath
|
51
|
+
|
52
|
+
|
53
|
+
@pytest.mark.local
|
54
|
+
@pytest.mark.parametrize("scheme", ("file://", ""))
|
55
|
+
def test_file_filepath_local_path_is_priority(scheme, randomstring):
|
56
|
+
exp_path = "/some/local/path"
|
57
|
+
url = f"{scheme}{exp_path}"
|
58
|
+
f = File(url)
|
59
|
+
|
60
|
+
f.local_path = randomstring()
|
61
|
+
assert f.filepath == f.local_path
|
62
|
+
|
63
|
+
f.local_path = None
|
64
|
+
assert f.filepath == exp_path
|
65
|
+
|
66
|
+
|
67
|
+
@pytest.mark.local
|
68
|
+
def test_file_filepath_requires_local_accessible_path():
|
69
|
+
with pytest.raises(ValueError) as pyt_exc:
|
70
|
+
_ = File("http://").filepath
|
71
|
+
|
72
|
+
assert "No local_path" in str(pyt_exc.value), "Expected reason in exception"
|
73
|
+
|
74
|
+
|
75
|
+
@pytest.mark.local
|
76
|
+
@pytest.mark.parametrize("scheme", ("https", "ftps", "", "file", "asdfasdf"))
|
77
|
+
def test_file_repr(scheme):
|
78
|
+
netloc = "some.netloc"
|
79
|
+
filename = "some_file_name"
|
80
|
+
path = f"/some/path/{filename}"
|
81
|
+
if scheme:
|
82
|
+
url = f"{scheme}://{netloc}{path}"
|
83
|
+
else:
|
84
|
+
scheme = "file"
|
85
|
+
url = path
|
86
|
+
|
87
|
+
f = File(url)
|
88
|
+
r = repr(f)
|
89
|
+
assert r.startswith("<")
|
90
|
+
assert r.endswith(">")
|
91
|
+
assert f"<{type(f).__name__} " in r
|
92
|
+
assert f" at 0x{id(f):x}" in r
|
93
|
+
assert f" url={url}" in r
|
94
|
+
assert f" scheme={scheme}" in r
|
95
|
+
assert f" path={path}" in r
|
96
|
+
assert f" filename={filename}" in r
|
97
|
+
|
98
|
+
if scheme != "file":
|
99
|
+
assert f" netloc={netloc}" in r
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import inspect
|
2
|
+
|
3
|
+
from parsl.utils import RepresentationMixin
|
4
|
+
|
5
|
+
from abc import abstractmethod
|
6
|
+
from functools import singledispatch
|
7
|
+
from typing import Any, List, Sequence
|
8
|
+
|
9
|
+
|
10
|
+
# Traverse the configuration hierarchy, returning a JSON component
|
11
|
+
# for each one. Configuration components which implement
|
12
|
+
# RepresentationMixin will be in the right form for inspecting
|
13
|
+
# object attributes. Configuration components which are lists or tuples
|
14
|
+
# are traversed in sequence. Other types default to reporting no
|
15
|
+
# usage information.
|
16
|
+
|
17
|
+
@singledispatch
|
18
|
+
def get_parsl_usage(obj) -> List[Any]:
|
19
|
+
return []
|
20
|
+
|
21
|
+
|
22
|
+
@get_parsl_usage.register
|
23
|
+
def get_parsl_usage_representation_mixin(obj: RepresentationMixin) -> List[Any]:
|
24
|
+
t = type(obj)
|
25
|
+
qualified_name = t.__module__ + "." + t.__name__
|
26
|
+
|
27
|
+
# me can contain anything that can be rendered as JSON
|
28
|
+
me: List[Any] = []
|
29
|
+
|
30
|
+
if isinstance(obj, UsageInformation):
|
31
|
+
# report rich usage information for this component
|
32
|
+
attrs = {'c': qualified_name}
|
33
|
+
attrs.update(obj.get_usage_information())
|
34
|
+
me = [attrs]
|
35
|
+
else:
|
36
|
+
# report the class name of this component
|
37
|
+
me = [qualified_name]
|
38
|
+
|
39
|
+
# unwrap typeguard-style unwrapping
|
40
|
+
init: Any = type(obj).__init__
|
41
|
+
if hasattr(init, '__wrapped__'):
|
42
|
+
init = init.__wrapped__
|
43
|
+
|
44
|
+
argspec = inspect.getfullargspec(init)
|
45
|
+
|
46
|
+
for arg in argspec.args[1:]: # skip first arg, self
|
47
|
+
arg_value = getattr(obj, arg)
|
48
|
+
d = get_parsl_usage(arg_value)
|
49
|
+
me += d
|
50
|
+
|
51
|
+
return me
|
52
|
+
|
53
|
+
|
54
|
+
@get_parsl_usage.register(list)
|
55
|
+
@get_parsl_usage.register(tuple)
|
56
|
+
def get_parsl_usage_sequence(obj: Sequence) -> List[Any]:
|
57
|
+
result = []
|
58
|
+
for v in obj:
|
59
|
+
result += get_parsl_usage(v)
|
60
|
+
return result
|
61
|
+
|
62
|
+
|
63
|
+
class UsageInformation:
|
64
|
+
@abstractmethod
|
65
|
+
def get_usage_information(self) -> dict:
|
66
|
+
pass
|
parsl/usage_tracking/usage.py
CHANGED
@@ -7,6 +7,7 @@ import socket
|
|
7
7
|
import sys
|
8
8
|
import platform
|
9
9
|
|
10
|
+
from parsl.usage_tracking.api import get_parsl_usage
|
10
11
|
from parsl.utils import setproctitle
|
11
12
|
from parsl.multiprocessing import ForkProcess
|
12
13
|
from parsl.dataflow.states import States
|
@@ -17,6 +18,13 @@ logger = logging.getLogger(__name__)
|
|
17
18
|
from typing import Callable
|
18
19
|
from typing_extensions import ParamSpec
|
19
20
|
|
21
|
+
# protocol version byte: when (for example) compression parameters are changed
|
22
|
+
# that cannot be inferred from the compressed message itself, this version
|
23
|
+
# ID needs to imply those parameters.
|
24
|
+
|
25
|
+
# Earlier protocol versions: b'{' - the original pure-JSON protocol pre-March 2024
|
26
|
+
PROTOCOL_VERSION = b'1'
|
27
|
+
|
20
28
|
P = ParamSpec("P")
|
21
29
|
|
22
30
|
|
@@ -32,7 +40,7 @@ def async_process(fn: Callable[P, None]) -> Callable[P, None]:
|
|
32
40
|
|
33
41
|
|
34
42
|
@async_process
|
35
|
-
def udp_messenger(domain_name: str, UDP_PORT: int, sock_timeout: int, message:
|
43
|
+
def udp_messenger(domain_name: str, UDP_PORT: int, sock_timeout: int, message: bytes) -> None:
|
36
44
|
"""Send UDP messages to usage tracker asynchronously
|
37
45
|
|
38
46
|
This multiprocessing based messenger was written to overcome the limitations
|
@@ -46,16 +54,11 @@ def udp_messenger(domain_name: str, UDP_PORT: int, sock_timeout: int, message: s
|
|
46
54
|
setproctitle("parsl: Usage tracking")
|
47
55
|
|
48
56
|
try:
|
49
|
-
encoded_message = bytes(message, "utf-8")
|
50
|
-
|
51
57
|
UDP_IP = socket.gethostbyname(domain_name)
|
52
58
|
|
53
|
-
if UDP_PORT is None:
|
54
|
-
raise Exception("UDP_PORT is None")
|
55
|
-
|
56
59
|
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
|
57
60
|
sock.settimeout(sock_timeout)
|
58
|
-
sock.sendto(
|
61
|
+
sock.sendto(message, (UDP_IP, UDP_PORT))
|
59
62
|
sock.close()
|
60
63
|
|
61
64
|
except socket.timeout:
|
@@ -102,7 +105,7 @@ class UsageTracker:
|
|
102
105
|
self.procs = []
|
103
106
|
self.dfk = dfk
|
104
107
|
self.config = self.dfk.config
|
105
|
-
self.
|
108
|
+
self.correlator_uuid = str(uuid.uuid4())
|
106
109
|
self.parsl_version = PARSL_VERSION
|
107
110
|
self.python_version = "{}.{}.{}".format(sys.version_info.major,
|
108
111
|
sys.version_info.minor,
|
@@ -130,22 +133,23 @@ class UsageTracker:
|
|
130
133
|
|
131
134
|
return track
|
132
135
|
|
133
|
-
def construct_start_message(self) ->
|
136
|
+
def construct_start_message(self) -> bytes:
|
134
137
|
"""Collect preliminary run info at the start of the DFK.
|
135
138
|
|
136
139
|
Returns :
|
137
140
|
- Message dict dumped as json string, ready for UDP
|
138
141
|
"""
|
139
|
-
message = {'
|
142
|
+
message = {'correlator': self.correlator_uuid,
|
140
143
|
'parsl_v': self.parsl_version,
|
141
144
|
'python_v': self.python_version,
|
142
|
-
'
|
143
|
-
'
|
144
|
-
'
|
145
|
+
'platform.system': platform.system(),
|
146
|
+
'start': int(time.time()),
|
147
|
+
'components': get_parsl_usage(self.dfk._config)}
|
148
|
+
logger.debug(f"Usage tracking start message: {message}")
|
145
149
|
|
146
|
-
return
|
150
|
+
return self.encode_message(message)
|
147
151
|
|
148
|
-
def construct_end_message(self) ->
|
152
|
+
def construct_end_message(self) -> bytes:
|
149
153
|
"""Collect the final run information at the time of DFK cleanup.
|
150
154
|
|
151
155
|
Returns:
|
@@ -153,20 +157,26 @@ class UsageTracker:
|
|
153
157
|
"""
|
154
158
|
app_count = self.dfk.task_count
|
155
159
|
|
156
|
-
site_count = len(self.dfk.config.executors)
|
157
|
-
|
158
160
|
app_fails = self.dfk.task_state_counts[States.failed] + self.dfk.task_state_counts[States.dep_fail]
|
159
161
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
162
|
+
# the DFK is tangled into this code as a god-object, so it is
|
163
|
+
# handled separately from the usual traversal code, but presenting
|
164
|
+
# the same protocol-level report.
|
165
|
+
dfk_component = {'c': type(self.dfk).__module__ + "." + type(self.dfk).__name__,
|
166
|
+
'app_count': app_count,
|
167
|
+
'app_fails': app_fails}
|
168
|
+
|
169
|
+
message = {'correlator': self.correlator_uuid,
|
170
|
+
'end': int(time.time()),
|
171
|
+
'components': [dfk_component] + get_parsl_usage(self.dfk._config)}
|
172
|
+
logger.debug(f"Usage tracking end message (unencoded): {message}")
|
166
173
|
|
167
|
-
return
|
174
|
+
return self.encode_message(message)
|
168
175
|
|
169
|
-
def
|
176
|
+
def encode_message(self, obj):
|
177
|
+
return PROTOCOL_VERSION + json.dumps(obj).encode()
|
178
|
+
|
179
|
+
def send_UDP_message(self, message: bytes) -> None:
|
170
180
|
"""Send UDP message."""
|
171
181
|
if self.tracking_enabled:
|
172
182
|
try:
|
@@ -191,7 +201,10 @@ class UsageTracker:
|
|
191
201
|
or won't respond to SIGTERM.
|
192
202
|
"""
|
193
203
|
for proc in self.procs:
|
204
|
+
logger.debug("Joining usage tracking process %s", proc)
|
194
205
|
proc.join(timeout=timeout)
|
195
206
|
if proc.is_alive():
|
196
|
-
logger.
|
207
|
+
logger.warning("Usage tracking process did not end itself; sending SIGKILL")
|
197
208
|
proc.kill()
|
209
|
+
|
210
|
+
proc.close()
|
parsl/utils.py
CHANGED
@@ -13,6 +13,7 @@ import typeguard
|
|
13
13
|
from typing_extensions import Type
|
14
14
|
|
15
15
|
import parsl
|
16
|
+
from parsl.app.errors import BadStdStreamFile
|
16
17
|
from parsl.version import VERSION
|
17
18
|
|
18
19
|
|
@@ -121,9 +122,17 @@ def get_std_fname_mode(
|
|
121
122
|
if len(stdfspec) != 2:
|
122
123
|
msg = (f"std descriptor {fdname} has incorrect tuple length "
|
123
124
|
f"{len(stdfspec)}")
|
124
|
-
raise pe.BadStdStreamFile(msg
|
125
|
+
raise pe.BadStdStreamFile(msg)
|
125
126
|
fname, mode = stdfspec
|
126
|
-
|
127
|
+
|
128
|
+
path = os.fspath(fname)
|
129
|
+
|
130
|
+
if isinstance(path, str):
|
131
|
+
return path, mode
|
132
|
+
elif isinstance(path, bytes):
|
133
|
+
return path.decode(), mode
|
134
|
+
else:
|
135
|
+
raise BadStdStreamFile(f"fname has invalid type {type(path)}")
|
127
136
|
|
128
137
|
|
129
138
|
@contextmanager
|
parsl/version.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: parsl
|
3
|
-
Version: 2024.4.
|
3
|
+
Version: 2024.4.29
|
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.04.
|
6
|
+
Download-URL: https://github.com/Parsl/parsl/archive/2024.04.29.tar.gz
|
7
7
|
Author: The Parsl Team
|
8
8
|
Author-email: parsl@googlegroups.com
|
9
9
|
License: Apache 2.0
|
@@ -55,7 +55,7 @@ Requires-Dist: pyyaml ; extra == 'all'
|
|
55
55
|
Requires-Dist: cffi ; extra == 'all'
|
56
56
|
Requires-Dist: jsonschema ; extra == 'all'
|
57
57
|
Requires-Dist: proxystore ; extra == 'all'
|
58
|
-
Requires-Dist: radical.pilot ==1.
|
58
|
+
Requires-Dist: radical.pilot ==1.52.1 ; extra == 'all'
|
59
59
|
Provides-Extra: aws
|
60
60
|
Requires-Dist: boto3 ; extra == 'aws'
|
61
61
|
Provides-Extra: azure
|
@@ -84,7 +84,7 @@ Requires-Dist: oauth-ssh >=0.9 ; extra == 'oauth_ssh'
|
|
84
84
|
Provides-Extra: proxystore
|
85
85
|
Requires-Dist: proxystore ; extra == 'proxystore'
|
86
86
|
Provides-Extra: radical-pilot
|
87
|
-
Requires-Dist: radical.pilot ==1.
|
87
|
+
Requires-Dist: radical.pilot ==1.52.1 ; extra == 'radical-pilot'
|
88
88
|
Provides-Extra: visualization
|
89
89
|
Requires-Dist: pydot ; extra == 'visualization'
|
90
90
|
Requires-Dist: networkx <2.6,>=2.5 ; extra == 'visualization'
|
@@ -1,18 +1,18 @@
|
|
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=0wPo-4HjW0l4ndqCKLmSdbbSWE_3WK7pxRvqBEp-3Lk,4821
|
3
|
+
parsl/config.py,sha256=nT_XBE2ToRpp6jHCO1tFagGBxF4ShJEpxLx1BNvKHVw,7594
|
4
4
|
parsl/curvezmq.py,sha256=FtZEYP1IWDry39cH-tOKUm9TnaR1U7krOmvVYpATcOk,6939
|
5
5
|
parsl/errors.py,sha256=SzINzQFZDBDbj9l-DPQznD0TbGkNhHIRAPkcBCogf_A,1019
|
6
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=DUPrl9ZdzwJzz2rmlRws77OMs43iQo_CT-Kr3uJs-fo,11202
|
11
|
+
parsl/version.py,sha256=ZkQP1dxgTC3ws9wp7Qeu8XyvkriqFeJIGzAfXff0J3M,131
|
12
12
|
parsl/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
13
|
parsl/app/app.py,sha256=wAHchJetgnicT1pn0NJKDeDX0lV3vDFlG8cQd_Ciax4,8522
|
14
|
-
parsl/app/bash.py,sha256=
|
15
|
-
parsl/app/errors.py,sha256=
|
14
|
+
parsl/app/bash.py,sha256=VufxGROrlJB3dP03syNutU0x8rLzfI-gooWwBZ4FFQ8,5676
|
15
|
+
parsl/app/errors.py,sha256=H0n-5kNMwl71cPJ7bkeHwBegCg639Z6be6ROvY0USg0,3915
|
16
16
|
parsl/app/futures.py,sha256=42UucIjKLJyRkg59BH-Pg_Q9Iue2Y-LSDi6g8q_cKzo,2910
|
17
17
|
parsl/app/python.py,sha256=qzVq7aXu3ZQGsMdQGDDYov_AP7ChvUT00peqIM93XXA,2330
|
18
18
|
parsl/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -59,17 +59,17 @@ parsl/data_provider/globus.py,sha256=ss7R8XD64mR3p-y9lxNAb11rymiOlxI1hQzkPEW51ZI
|
|
59
59
|
parsl/data_provider/http.py,sha256=nDHTW7XmJqAukWJjPRQjyhUXt8r6GsQ36mX9mv_wOig,2986
|
60
60
|
parsl/data_provider/rsync.py,sha256=2-ZxqrT-hBj39x082NusJaBqsGW4Jd2qCW6JkVPpEl0,4254
|
61
61
|
parsl/data_provider/staging.py,sha256=l-mAXFburs3BWPjkSmiQKuAgJpsxCG62yATPDbrafYI,4523
|
62
|
-
parsl/data_provider/zip.py,sha256=
|
62
|
+
parsl/data_provider/zip.py,sha256=50xvXms3UoEFc4v_w6joLAcCrcdKuOjIPoPLgUz1Jio,4498
|
63
63
|
parsl/dataflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
64
|
-
parsl/dataflow/dflow.py,sha256=
|
64
|
+
parsl/dataflow/dflow.py,sha256=oKlzZlhftcHN2l1Pgh6EhZx1kWTmD8WnfPTGlk1decI,66037
|
65
65
|
parsl/dataflow/errors.py,sha256=w2vOt_ymzG2dOqJUO4IDcmTlrCIHlMZL8nBVyVq0O_8,2176
|
66
|
-
parsl/dataflow/futures.py,sha256=
|
66
|
+
parsl/dataflow/futures.py,sha256=XGgaoaT3N2U3vvZ7DEoLkGBrZscq_VzffZ9goLB87ko,6081
|
67
67
|
parsl/dataflow/memoization.py,sha256=AsJO6c6cRp2ac6H8uGn2USlEi78_nX3QWvpxYt4XdYE,9583
|
68
68
|
parsl/dataflow/rundirs.py,sha256=XKmBZpBEIsGACBhYOkbbs2e5edC0pQegJcSlk4FWeag,1154
|
69
69
|
parsl/dataflow/states.py,sha256=hV6mfv-y4A6xrujeQglcomnfEs7y3Xm2g6JFwC6dvgQ,2612
|
70
70
|
parsl/dataflow/taskrecord.py,sha256=bzIBmlDTsRrELtB9PUQwxTWcwrCd8aMsUAzvijle1eo,3114
|
71
71
|
parsl/executors/__init__.py,sha256=J50N97Nm9YRjz6K0oNXDxUYIsDjL43_tp3LVb2w7n-M,381
|
72
|
-
parsl/executors/base.py,sha256=
|
72
|
+
parsl/executors/base.py,sha256=Kvui8yDPzz7yQpm9qSkMdhQS4eu0tQTkVZ99j6HGgA4,5087
|
73
73
|
parsl/executors/errors.py,sha256=xVswxgi7vmJcUMCeYDAPK8sQT2kHFFROVoOr0dnmcWE,2098
|
74
74
|
parsl/executors/status_handling.py,sha256=3kJAbgXSZbbj8uN72Gu08PSUnxMrT5np1I-ihLyM6E8,13631
|
75
75
|
parsl/executors/threads.py,sha256=bMU3JFghm17Lpcua13pr3NgQhkUDDc2mqvF2yJBrVNQ,3353
|
@@ -79,7 +79,7 @@ parsl/executors/flux/executor.py,sha256=0omXRPvykdW5VZb8mwgBJjxVk4H6G8xoL5D_R9pu
|
|
79
79
|
parsl/executors/flux/flux_instance_manager.py,sha256=tTEOATClm9SwdgLeBRWPC6D55iNDuh0YxqJOw3c3eQ4,2036
|
80
80
|
parsl/executors/high_throughput/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
81
81
|
parsl/executors/high_throughput/errors.py,sha256=vl69wLuVOplbKxHI9WphEGBExHWkTn5n8T9QhBXuNH0,380
|
82
|
-
parsl/executors/high_throughput/executor.py,sha256=
|
82
|
+
parsl/executors/high_throughput/executor.py,sha256=Er0QUG-HNatDPVBsLYZbbEStyNJsu4oE9UQ7LtQYH7w,37318
|
83
83
|
parsl/executors/high_throughput/interchange.py,sha256=Rt6HyFvQYFuqUJ1ytXmUFTDIK9wOBm4l96IHoL6OFRc,31491
|
84
84
|
parsl/executors/high_throughput/manager_record.py,sha256=w5EwzVqPtsLOyOW8jP44U3uaogt8H--tkwp7FNyKN_o,385
|
85
85
|
parsl/executors/high_throughput/monitoring_info.py,sha256=3gQpwQjjNDEBz0cQqJZB6hRiwLiWwXs83zkQDmbOwxY,297
|
@@ -96,7 +96,7 @@ parsl/executors/radical/rpex_worker.py,sha256=1M1df-hzFdmZMWbRZlUzIX7uAWMKJ_SkxL
|
|
96
96
|
parsl/executors/taskvine/__init__.py,sha256=sWIJdvSLgQKul9dlSjIkNat7yBDgU3SrBF3X2yhT86E,293
|
97
97
|
parsl/executors/taskvine/errors.py,sha256=MNS_NjpvHjwevQXOjqjSEBFroqEWi-LT1ZEVZ2C5Dx0,652
|
98
98
|
parsl/executors/taskvine/exec_parsl_function.py,sha256=oUAKbPWwpbzWwQ47bZQlVDxS8txhnhPsonMf3AOEMGQ,7085
|
99
|
-
parsl/executors/taskvine/executor.py,sha256=
|
99
|
+
parsl/executors/taskvine/executor.py,sha256=M-2Uf34lYwa5lzoMIwqR__QXcE1anvGgUJWggEzT2pQ,33024
|
100
100
|
parsl/executors/taskvine/factory.py,sha256=sHhfGv7xRFrWkQclzRXuFEAHuSXhsZu2lR5LJ81aucA,2638
|
101
101
|
parsl/executors/taskvine/factory_config.py,sha256=AbE2fN2snrF5ITYrrS4DnGn2XkJHUFr_17DYHDHIwq0,3693
|
102
102
|
parsl/executors/taskvine/manager.py,sha256=VxVN2L5zFVPNfSAJrGgq87MRJKpcxf-BHdO5QWxB4TU,25822
|
@@ -105,7 +105,7 @@ parsl/executors/taskvine/utils.py,sha256=iSrIogeiauL3UNy_9tiZp1cBSNn6fIJkMYQRVi1
|
|
105
105
|
parsl/executors/workqueue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
106
106
|
parsl/executors/workqueue/errors.py,sha256=ghB93Ptb_QbOAvgLe7siV_snRRkU_T-cFHv3AR6Ziwo,541
|
107
107
|
parsl/executors/workqueue/exec_parsl_function.py,sha256=NtWNeBvRqksej38eRPw8zPBJ1CeW6vgaitve0tfz_qc,7801
|
108
|
-
parsl/executors/workqueue/executor.py,sha256=
|
108
|
+
parsl/executors/workqueue/executor.py,sha256=rSjQ4VWQyX9wvuwQ70ALvRYhz_d9La731eZGqgPR3uU,50523
|
109
109
|
parsl/executors/workqueue/parsl_coprocess.py,sha256=kEFGC-A97c_gweUPvrc9EEGume7vUpkJLJlyAb87xtQ,5737
|
110
110
|
parsl/executors/workqueue/parsl_coprocess_stub.py,sha256=_bJmpPIgL42qM6bVzeEKt1Mn1trSP41rtJguXxPGfHI,735
|
111
111
|
parsl/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -121,7 +121,7 @@ parsl/launchers/launchers.py,sha256=VB--fiVv_IQne3DydTMSdGUY0o0g69puAs-Hd3mJ2vo,
|
|
121
121
|
parsl/monitoring/__init__.py,sha256=0ywNz6i0lM1xo_7_BIxhETDGeVd2C_0wwD7qgeaMR4c,83
|
122
122
|
parsl/monitoring/db_manager.py,sha256=hdmmXSTXp8Wwhr7vLpQalD_ahRl3SNxKYVsplnThRk8,37021
|
123
123
|
parsl/monitoring/message_type.py,sha256=Khn88afNxcOIciKiCK4GLnn90I5BlRTiOL3zK-P07yQ,401
|
124
|
-
parsl/monitoring/monitoring.py,sha256=
|
124
|
+
parsl/monitoring/monitoring.py,sha256=DWPhuxw698pHePUbT_UJdjICoAAST-Y6t9rT8H01dqA,13462
|
125
125
|
parsl/monitoring/radios.py,sha256=F1IML-IvFJxL93rvWBqwTisRprTs1zW1lFVWMog-LRE,5858
|
126
126
|
parsl/monitoring/remote.py,sha256=0wqANMcuvq3dpja3agdbOzD72n5oUYp7PcNKyLCC35E,13923
|
127
127
|
parsl/monitoring/router.py,sha256=92krSS8xIWDQuxJMxQ3D_gbLcqgKymxr3HVJwAImdrw,9557
|
@@ -173,7 +173,7 @@ parsl/providers/grid_engine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
|
|
173
173
|
parsl/providers/grid_engine/grid_engine.py,sha256=xzh5clmo2xKQYm56ONkszfrx7aE_n2dfubEd5mLGexg,8565
|
174
174
|
parsl/providers/grid_engine/template.py,sha256=a7iViKr8LXcFTPmsf_qQeVK5o_RekOAIlUOF0X1q-2M,273
|
175
175
|
parsl/providers/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
176
|
-
parsl/providers/kubernetes/kube.py,sha256=
|
176
|
+
parsl/providers/kubernetes/kube.py,sha256=nhaGoOFHxfkNSpKMFd9UuctjcroTQrPYNRbxUxd05rQ,13810
|
177
177
|
parsl/providers/kubernetes/template.py,sha256=VsRz6cmNaII-y4OdMT6sCwzQy95SJX6NMB0hmmFBhX4,50
|
178
178
|
parsl/providers/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
179
179
|
parsl/providers/local/local.py,sha256=7OYug8UaRr1QW2g3z-SYmdo1InSSZRP0tQOySvrkwbI,11372
|
@@ -197,7 +197,7 @@ parsl/serialize/facade.py,sha256=SpKGSpI8PQb3hhxuKRJUYoQoq284t5np9ouTpogKmtU,679
|
|
197
197
|
parsl/serialize/proxystore.py,sha256=Yo-38odKlSKSuQfXU4cB5YM9sYV_302uPn1z_en19SU,1623
|
198
198
|
parsl/tests/__init__.py,sha256=s_zoz7Ipgykh-QTQvctdpxENrMnmpXY8oe1bJbUmpqY,204
|
199
199
|
parsl/tests/callables_helper.py,sha256=ceP1YYsNtrZgKT6MAIvpgdccEjQ_CpFEOnZBGHKGOx0,30
|
200
|
-
parsl/tests/conftest.py,sha256=
|
200
|
+
parsl/tests/conftest.py,sha256=9AFrtThVnHasfyujoPw6iudxTvLlmqKQytbarzi3sWY,14579
|
201
201
|
parsl/tests/test_aalst_patterns.py,sha256=fi6JHKidV7vMJLv2nnu_-Q0ngGLc89mRm8rFrGIwiUM,9615
|
202
202
|
parsl/tests/test_callables.py,sha256=_QsdS8v2nGgOj4_X69NFHZOGUnqbOrOMCA9pCJColZw,1974
|
203
203
|
parsl/tests/test_curvezmq.py,sha256=yyhlS4vmaZdMitiySoy4l_ih9H1bsPiN-tMdwIh3H20,12431
|
@@ -227,7 +227,7 @@ parsl/tests/configs/local_radical_mpi.py,sha256=K6V2HbARujaow5DBAUYSIWt1RaYbt898
|
|
227
227
|
parsl/tests/configs/local_threads.py,sha256=oEnQSlom_JMLFX9_Ln49JAfOP3nSMbw8gTaDJo_NYfo,202
|
228
228
|
parsl/tests/configs/local_threads_checkpoint.py,sha256=Ex7CI1Eo6wVRsem9uXTtbVJrkKc_vOYlVvCNa2RLpIo,286
|
229
229
|
parsl/tests/configs/local_threads_checkpoint_dfk_exit.py,sha256=ECL1n0uBsXDuW3sLCmjiwe8s3Xd7EFIj5wt446w6bh4,254
|
230
|
-
parsl/tests/configs/local_threads_checkpoint_periodic.py,sha256=
|
230
|
+
parsl/tests/configs/local_threads_checkpoint_periodic.py,sha256=F2MVlwJZk-hkCgCrsAm_rKsv4mtLgsf5cyPsRoHm0ig,319
|
231
231
|
parsl/tests/configs/local_threads_checkpoint_task_exit.py,sha256=zHKN68T-xhAVQwQp3fSWPIEcWOx-F7NBGZTOhF07iL8,256
|
232
232
|
parsl/tests/configs/local_threads_ftp_in_task.py,sha256=c9odRbxgj1bM_ttpkWTh2Ch_MV7f5cmn-68BOjLeJ70,444
|
233
233
|
parsl/tests/configs/local_threads_globus.py,sha256=NhY27cD4vcqLh762Ye0BINZnt63EmTyHXg7FQMffOBw,1097
|
@@ -293,7 +293,7 @@ parsl/tests/sites/test_worker_info.py,sha256=oqCJLiZth1yo4KXS83vn7Va0TI0D78GSDlC
|
|
293
293
|
parsl/tests/sites/test_mpi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
294
294
|
parsl/tests/test_bash_apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
295
295
|
parsl/tests/test_bash_apps/test_apptimeout.py,sha256=fZP7LMSuRtiP1dp1viAWbH5cTfA5otPLsW-KksBAQaU,570
|
296
|
-
parsl/tests/test_bash_apps/test_basic.py,sha256=
|
296
|
+
parsl/tests/test_bash_apps/test_basic.py,sha256=HGzJKtETnUxHQwPaTDuZTPMtIX3lSqtidqLxPn2IV8U,2460
|
297
297
|
parsl/tests/test_bash_apps/test_error_codes.py,sha256=mPvLWADdVb5hbKgpKUy06sKMWG3LYu4FVhbmrgo7Lps,3964
|
298
298
|
parsl/tests/test_bash_apps/test_keyword_overlaps.py,sha256=8bfN2qw4uXJsYquppR1lZQrYW834AZc3zjYIIHTfDoE,209
|
299
299
|
parsl/tests/test_bash_apps/test_kwarg_storage.py,sha256=OMMD3sKSngBSjVCHK9wju0hHzszOqbYuWtscyMuh5_8,720
|
@@ -302,18 +302,19 @@ parsl/tests/test_bash_apps/test_memoize_ignore_args.py,sha256=zBB4zNMZe4VZExwKZH
|
|
302
302
|
parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py,sha256=zQDQktIA9bYdqciZ17bCCGZw7XCQf3XmGqDsZ4SU_e0,1362
|
303
303
|
parsl/tests/test_bash_apps/test_multiline.py,sha256=stpMEv2eopGG-ietxjUtD5gYMOVpwPdLauDizjUfTdA,1082
|
304
304
|
parsl/tests/test_bash_apps/test_pipeline.py,sha256=439Ml2bMn5NgiQiNcg4DPeWhsXK8WQaatvZy2PleQzQ,2444
|
305
|
+
parsl/tests/test_bash_apps/test_std_uri.py,sha256=cIQVc8tCN0jM32oXwEKzxkhZT20l259AriM_jmtHdI0,3808
|
305
306
|
parsl/tests/test_bash_apps/test_stdout.py,sha256=3jVDVjUfoQMDzp-f1Ifr7B6ivMq7U5ZzxXU3ZyUKogU,2787
|
306
307
|
parsl/tests/test_channels/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
307
308
|
parsl/tests/test_channels/test_large_output.py,sha256=PGeNSW_sN5mR7KF1hVL2CPfktydYxo4oNz1wVQ-ENN0,595
|
308
309
|
parsl/tests/test_checkpointing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
309
|
-
parsl/tests/test_checkpointing/test_periodic.py,sha256=
|
310
|
+
parsl/tests/test_checkpointing/test_periodic.py,sha256=8R9Plxdm-dUvaptJsw-pEKLOjO5q74lHnaB2kxbF5-M,1613
|
310
311
|
parsl/tests/test_checkpointing/test_python_checkpoint_1.py,sha256=7p_q5aFYYoRQpYmkFekuLOsPgTaILbj5-MMVCDP3Bsg,745
|
311
312
|
parsl/tests/test_checkpointing/test_python_checkpoint_2.py,sha256=f1s-qRzIzaCFJauEGU08fhFw6od3yGrMelk792WQuYI,1106
|
312
313
|
parsl/tests/test_checkpointing/test_python_checkpoint_3.py,sha256=8Np2OpDeQ8sE1Hmd5rYZo1qgt2xOuR4t-d-41JyLCHI,823
|
313
314
|
parsl/tests/test_checkpointing/test_regression_232.py,sha256=AsI6AJ0DcFaefAbEY9qWa41ER0VX-4yLuIdlgvBw360,2637
|
314
315
|
parsl/tests/test_checkpointing/test_regression_233.py,sha256=jii7BKuygK6KMIGtg4IeBjix7Z28cYhv57rE9ixoXMU,1774
|
315
316
|
parsl/tests/test_checkpointing/test_regression_239.py,sha256=P5kmf1LOo_qHtArkBLMhdvNbSPtURDU5u2tI8SXZTb0,2441
|
316
|
-
parsl/tests/test_checkpointing/test_task_exit.py,sha256
|
317
|
+
parsl/tests/test_checkpointing/test_task_exit.py,sha256=-caWS118ArPzOBfq_QumIjKcWsttXHnlSQg3Un50aR4,1723
|
317
318
|
parsl/tests/test_docs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
318
319
|
parsl/tests/test_docs/test_from_slides.py,sha256=0qJHAsSN3eqn4LAFTyCAq1rIUOotBzyQg7d_rJfBoes,653
|
319
320
|
parsl/tests/test_docs/test_kwargs.py,sha256=-rMtAtarg2FOdxMuDLsZY5Crn_jmSwtelMwRNEtTlVk,925
|
@@ -333,17 +334,17 @@ parsl/tests/test_error_handling/test_serialization_fail.py,sha256=jIJBKK-ItVe8B1
|
|
333
334
|
parsl/tests/test_error_handling/test_wrap_with_logs.py,sha256=AHQZj7wae759FOcAUeHZX47mx1MKOfDv2YBLnaDVW7Q,741
|
334
335
|
parsl/tests/test_flowcontrol/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
335
336
|
parsl/tests/test_htex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
336
|
-
parsl/tests/test_htex/test_basic.py,sha256=
|
337
|
+
parsl/tests/test_htex/test_basic.py,sha256=CTOXEkzrVW_kSp_scz3BGYwc1c6KYopTooXICiAsMso,469
|
337
338
|
parsl/tests/test_htex/test_connected_blocks.py,sha256=0628oJ_0_aVsda5xuFwG3_3q8ZiEAM-sfIOINkUHQrk,1639
|
338
339
|
parsl/tests/test_htex/test_cpu_affinity_explicit.py,sha256=tv12ojw4DdymlVBjVNnrFX7_mhwix2jnBLkRbKOQRao,1422
|
339
340
|
parsl/tests/test_htex/test_disconnected_blocks.py,sha256=iga7wmhGACwUN6gkEFPw1dLodj6SzNZpevgSHNYSyjI,1856
|
340
341
|
parsl/tests/test_htex/test_drain.py,sha256=BvPQIo0xx-z191eVR2rG51x22yzqD-6dLSH7bCAUhOg,2288
|
341
342
|
parsl/tests/test_htex/test_htex.py,sha256=4dXtcthZQvgEDtMc00g6Pw7FnqNWB_0j8fuJqHKO-IE,3896
|
342
343
|
parsl/tests/test_htex/test_manager_failure.py,sha256=gemQopZoDEoZLOvep5JZkY6tQlZoko8Z0Kmpj1-Gbws,1161
|
343
|
-
parsl/tests/test_htex/test_missing_worker.py,sha256=
|
344
|
+
parsl/tests/test_htex/test_missing_worker.py,sha256=R8FaUNnpmXY9E_ZCC797La4jWsJvp136xBhLY9yIgyU,818
|
344
345
|
parsl/tests/test_htex/test_multiple_disconnected_blocks.py,sha256=L4vw_Mo-upp2p9-TyPDfluNJJQ2BxHHNXgS3xhhuE28,1993
|
345
346
|
parsl/tests/test_htex/test_worker_failure.py,sha256=Uz-RHI-LK78FMjXUvrUFmo4iYfmpDVBUcBxxRb3UG9M,603
|
346
|
-
parsl/tests/test_htex/test_zmq_binding.py,sha256=
|
347
|
+
parsl/tests/test_htex/test_zmq_binding.py,sha256=2-y8HZPzNLrumVqyqG9yZl-lqefSIpez2jr5Ghrtd80,3013
|
347
348
|
parsl/tests/test_monitoring/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
348
349
|
parsl/tests/test_monitoring/test_app_names.py,sha256=4Ziggxv0JLP0UGAd5jjXdivUdZQLlMvVVMfiTStjxRk,2191
|
349
350
|
parsl/tests/test_monitoring/test_basic.py,sha256=8LHlS5VM1isVhOZuWCXHMUlV10AGMFNq-8n5ZX9HdLA,3768
|
@@ -352,6 +353,7 @@ parsl/tests/test_monitoring/test_fuzz_zmq.py,sha256=20Y2TCpOOQpWPLEppi-9InCHPb8H
|
|
352
353
|
parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py,sha256=Lfa6ENZWrExRsZcISMdF_G4VjswzSb0wlRSQFoZXkyQ,2765
|
353
354
|
parsl/tests/test_monitoring/test_incomplete_futures.py,sha256=9lJhkWlVB8gCCTkFjObzoh1uCL1pRmU6gFgEzLCztnY,2021
|
354
355
|
parsl/tests/test_monitoring/test_memoization_representation.py,sha256=tErT7zseSMaQ5eNmK3hH90J6OZKuAaFQG50OXK6Jy9s,2660
|
356
|
+
parsl/tests/test_monitoring/test_stdouterr.py,sha256=bx2BKZ_iIuS8FZlxdt7n1QsUwTnWaXnORdrlJCTw5aU,4517
|
355
357
|
parsl/tests/test_monitoring/test_viz_colouring.py,sha256=k8SiELxPtnGYZ4r02VQt46RC61fGDVC4nmY768snX1U,591
|
356
358
|
parsl/tests/test_mpi_apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
357
359
|
parsl/tests/test_mpi_apps/test_bad_mpi_config.py,sha256=mB-ASx0S-wh1iP6MYZ-CdOwMye3xgteQK-jqufzWNO8,1317
|
@@ -359,7 +361,7 @@ parsl/tests/test_mpi_apps/test_mpi_mode_disabled.py,sha256=bMO66LHEvdVsV8sMFxESF
|
|
359
361
|
parsl/tests/test_mpi_apps/test_mpi_mode_enabled.py,sha256=V8dccWWVSCfKkWPJUaL1nHc7YeFL8KZhMB-xwIIKF4A,5034
|
360
362
|
parsl/tests/test_mpi_apps/test_mpi_prefix.py,sha256=OJ95-95t7DmDF86uYCtT2iRcY2gn9LFH45OWyjjL2h8,1950
|
361
363
|
parsl/tests/test_mpi_apps/test_mpi_scheduler.py,sha256=dZ8_mzLMx5Us7mra2nPfxaeWZnhZyqNJ8vPWkWHaEB8,6317
|
362
|
-
parsl/tests/test_mpi_apps/test_resource_spec.py,sha256=
|
364
|
+
parsl/tests/test_mpi_apps/test_resource_spec.py,sha256=8AKIXWFq9Tat8Mj0IRp-epNGVGFTqcxqZgF7jiLjE4Q,3607
|
363
365
|
parsl/tests/test_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
364
366
|
parsl/tests/test_providers/test_cobalt_deprecation_warning.py,sha256=Fy5XXDkVs3KIX3tHyRjyReXEr35X1LWyEXcVXmWccDs,389
|
365
367
|
parsl/tests/test_providers/test_local_provider.py,sha256=G6Fuko22SvAtD7xhfQv8k_8HtJuFhZ8aHYcWQt073Pg,6968
|
@@ -370,7 +372,7 @@ parsl/tests/test_providers/test_submiterror_deprecation.py,sha256=ZutVj_0VJ7M-5U
|
|
370
372
|
parsl/tests/test_python_apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
371
373
|
parsl/tests/test_python_apps/test_arg_input_types.py,sha256=JXpfHiu8lr9BN6u1OzqFvGwBhxzsGTPMewHx6Wdo-HI,670
|
372
374
|
parsl/tests/test_python_apps/test_basic.py,sha256=lFqh4ugePbp_FRiHGUXxzV34iS7l8C5UkxTHuLcpnYs,855
|
373
|
-
parsl/tests/test_python_apps/test_context_manager.py,sha256=
|
375
|
+
parsl/tests/test_python_apps/test_context_manager.py,sha256=LzJ3WtR1LYiQF_lbmrd5h4mlC7_h_GvzoeUPQZ5vPsw,928
|
374
376
|
parsl/tests/test_python_apps/test_dep_standard_futures.py,sha256=BloeaYBci0jS5al2d8Eqe3OfZ1tvolA5ZflOBQPR9Wo,859
|
375
377
|
parsl/tests/test_python_apps/test_dependencies.py,sha256=IRiTI_lPoWBSFSFnaBlE6Bv08PKEaf-qj5dfqO2RjT0,272
|
376
378
|
parsl/tests/test_python_apps/test_depfail_propagation.py,sha256=3q3HlVWrOixFtXWBvR_ypKtbdAHAJcKndXQ5drwrBQU,1488
|
@@ -410,7 +412,7 @@ parsl/tests/test_regression/test_97_parallelism_0.py,sha256=PwHxwQirqLJUeBhsNSzU
|
|
410
412
|
parsl/tests/test_regression/test_98.py,sha256=ZNTA-USpmH85Mt0nu3KFQ1qqmXsyHtYMZWZY0grzuYA,453
|
411
413
|
parsl/tests/test_scaling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
412
414
|
parsl/tests/test_scaling/test_block_error_handler.py,sha256=VFKs_jq7yd7bpdfYva3Sa_TBS8VcjGUS6YJ9Y34RbyI,6050
|
413
|
-
parsl/tests/test_scaling/test_regression_1621.py,sha256=
|
415
|
+
parsl/tests/test_scaling/test_regression_1621.py,sha256=Z7nLhn2dxTVApo2XA55vzLziW6_QBQcZHoMsRQ066b0,1963
|
414
416
|
parsl/tests/test_scaling/test_scale_down.py,sha256=T8NVmoIebdpSjrNJCdgDHumpz9eKLkJrpeW7Kwi8cBg,2821
|
415
417
|
parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py,sha256=1vP2a8qygnxuUji7B3kJOUgwjmmIC1fDPhDdqzs5YFA,4597
|
416
418
|
parsl/tests/test_scaling/test_scale_down_htex_unregistered.py,sha256=lGl7m9PRPs4MxAEK7QpSXAxGgCSbabxxYN-ExZUYAUs,2030
|
@@ -438,20 +440,26 @@ parsl/tests/test_staging/test_staging_ftp.py,sha256=EkRoTcQ00FZGh8lDVYBdKb-pQ-yb
|
|
438
440
|
parsl/tests/test_staging/test_staging_ftp_in_task.py,sha256=kR2XrGvbvVFDpHg53NnjO04kqEksTJjQAMQwYqBdb2M,884
|
439
441
|
parsl/tests/test_staging/test_staging_globus.py,sha256=ds8nDH5dNbI10FV_GxMHyVaY6GPnuPPzkX9IiqROLF0,2339
|
440
442
|
parsl/tests/test_staging/test_staging_https.py,sha256=ESNuvdc_P5JoPaMjBM3ofi1mNJM0U6vahi9JgbCsrPw,3307
|
443
|
+
parsl/tests/test_staging/test_staging_stdout.py,sha256=i4ksb9ehu-bKPgALxm6ADB12EQVTM_xusyFGmSwByLs,2025
|
444
|
+
parsl/tests/test_staging/test_zip_in.py,sha256=xLTXXAHgMyg5XAMTB_oq3oEhrNfq8JGMnuRu2vu5tdo,1143
|
441
445
|
parsl/tests/test_staging/test_zip_out.py,sha256=qR_iK8wqKOxisMBD5MqKr2RoyoTUmRejAj_O3jgJA2A,3512
|
446
|
+
parsl/tests/test_staging/test_zip_to_zip.py,sha256=Hz3fYvj-ePpfV4Hh6Fs1vM8iZ14iRxPkJhaI0spr8dE,1168
|
442
447
|
parsl/tests/test_threads/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
443
448
|
parsl/tests/test_threads/test_configs.py,sha256=QA9YjIMAtZ2jmkfOWqBzEfzQQcFVCDizH7Qwiy2HIMQ,909
|
444
449
|
parsl/tests/test_threads/test_lazy_errors.py,sha256=nGhYfCMHFZYSy6YJ4gnAmiLl9SfYs0WVnuvj8DXQ9bw,560
|
445
450
|
parsl/tests/test_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
446
451
|
parsl/tests/test_utils/test_representation_mixin.py,sha256=kUZeIDwA2rlbJ3-beGzLLwf3dOplTMCrWJN87etHcyY,1633
|
452
|
+
parsl/tests/unit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
453
|
+
parsl/tests/unit/test_file.py,sha256=vLycnYcv3bvSzL-FV8WdoibqTyb41BrH1LUYBavobsg,2850
|
447
454
|
parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
448
|
-
parsl/usage_tracking/
|
449
|
-
parsl
|
450
|
-
parsl-2024.4.
|
451
|
-
parsl-2024.4.
|
452
|
-
parsl-2024.4.
|
453
|
-
parsl-2024.4.
|
454
|
-
parsl-2024.4.
|
455
|
-
parsl-2024.4.
|
456
|
-
parsl-2024.4.
|
457
|
-
parsl-2024.4.
|
455
|
+
parsl/usage_tracking/api.py,sha256=V_IMgpxUloP--MtlZGY5Uf6SfHVQSPP8poa3PedOs_I,1822
|
456
|
+
parsl/usage_tracking/usage.py,sha256=IGNPVEo3YJ3SI48WGESrip7PiCqEAheQ0Kgu8dRgQag,7616
|
457
|
+
parsl-2024.4.29.data/scripts/exec_parsl_function.py,sha256=NtWNeBvRqksej38eRPw8zPBJ1CeW6vgaitve0tfz_qc,7801
|
458
|
+
parsl-2024.4.29.data/scripts/parsl_coprocess.py,sha256=Y7Tc-h9WGui-YDe3w_h91w2Sm1JNL1gJ9kAV4PE_gw8,5722
|
459
|
+
parsl-2024.4.29.data/scripts/process_worker_pool.py,sha256=31tyTtU7hrrsatGReuCbLM-3GWkaYK1bvlFE1MhKYQg,41253
|
460
|
+
parsl-2024.4.29.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
461
|
+
parsl-2024.4.29.dist-info/METADATA,sha256=77gJi-9dKlrSb6gATxE7Rhq8lVIdziv7RbmtMtHPnCA,4012
|
462
|
+
parsl-2024.4.29.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
463
|
+
parsl-2024.4.29.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
|
464
|
+
parsl-2024.4.29.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
|
465
|
+
parsl-2024.4.29.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|