parsl 2024.6.24__py3-none-any.whl → 2024.7.1__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/executors/high_throughput/errors.py +33 -0
- parsl/executors/high_throughput/executor.py +1 -0
- parsl/executors/high_throughput/interchange.py +1 -26
- parsl/tests/test_bash_apps/test_memoize_ignore_args.py +7 -15
- parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py +6 -11
- parsl/tests/test_error_handling/test_retries.py +4 -15
- parsl/tests/test_serialization/test_3495_deserialize_managerlost.py +47 -0
- parsl/tests/test_staging/test_file.py +6 -6
- parsl/version.py +1 -1
- {parsl-2024.6.24.data → parsl-2024.7.1.data}/scripts/interchange.py +1 -26
- {parsl-2024.6.24.dist-info → parsl-2024.7.1.dist-info}/METADATA +2 -2
- {parsl-2024.6.24.dist-info → parsl-2024.7.1.dist-info}/RECORD +19 -18
- {parsl-2024.6.24.data → parsl-2024.7.1.data}/scripts/exec_parsl_function.py +0 -0
- {parsl-2024.6.24.data → parsl-2024.7.1.data}/scripts/parsl_coprocess.py +0 -0
- {parsl-2024.6.24.data → parsl-2024.7.1.data}/scripts/process_worker_pool.py +0 -0
- {parsl-2024.6.24.dist-info → parsl-2024.7.1.dist-info}/LICENSE +0 -0
- {parsl-2024.6.24.dist-info → parsl-2024.7.1.dist-info}/WHEEL +0 -0
- {parsl-2024.6.24.dist-info → parsl-2024.7.1.dist-info}/entry_points.txt +0 -0
- {parsl-2024.6.24.dist-info → parsl-2024.7.1.dist-info}/top_level.txt +0 -0
@@ -1,3 +1,36 @@
|
|
1
|
+
import time
|
2
|
+
|
3
|
+
|
4
|
+
class ManagerLost(Exception):
|
5
|
+
"""
|
6
|
+
Task lost due to manager loss. Manager is considered lost when multiple heartbeats
|
7
|
+
have been missed.
|
8
|
+
"""
|
9
|
+
def __init__(self, manager_id: bytes, hostname: str) -> None:
|
10
|
+
self.manager_id = manager_id
|
11
|
+
self.tstamp = time.time()
|
12
|
+
self.hostname = hostname
|
13
|
+
|
14
|
+
def __str__(self) -> str:
|
15
|
+
return (
|
16
|
+
f"Task failure due to loss of manager {self.manager_id.decode()} on"
|
17
|
+
f" host {self.hostname}"
|
18
|
+
)
|
19
|
+
|
20
|
+
|
21
|
+
class VersionMismatch(Exception):
|
22
|
+
"""Manager and Interchange versions do not match"""
|
23
|
+
def __init__(self, interchange_version: str, manager_version: str):
|
24
|
+
self.interchange_version = interchange_version
|
25
|
+
self.manager_version = manager_version
|
26
|
+
|
27
|
+
def __str__(self) -> str:
|
28
|
+
return (
|
29
|
+
f"Manager version info {self.manager_version} does not match interchange"
|
30
|
+
f" version info {self.interchange_version}, causing a critical failure"
|
31
|
+
)
|
32
|
+
|
33
|
+
|
1
34
|
class WorkerLost(Exception):
|
2
35
|
"""Exception raised when a worker is lost
|
3
36
|
"""
|
@@ -551,6 +551,7 @@ class HighThroughputExecutor(BlockProviderExecutor, RepresentationMixin, UsageIn
|
|
551
551
|
logger.debug("Popened interchange process. Writing config object")
|
552
552
|
stdin.write(config_pickle)
|
553
553
|
stdin.flush()
|
554
|
+
stdin.close()
|
554
555
|
logger.debug("Sent config object. Requesting worker ports")
|
555
556
|
try:
|
556
557
|
(self.worker_task_port, self.worker_result_port) = self.command_client.run("WORKER_PORTS", timeout_s=120)
|
@@ -17,6 +17,7 @@ import zmq
|
|
17
17
|
|
18
18
|
from parsl import curvezmq
|
19
19
|
from parsl.app.errors import RemoteExceptionWrapper
|
20
|
+
from parsl.executors.high_throughput.errors import ManagerLost, VersionMismatch
|
20
21
|
from parsl.executors.high_throughput.manager_record import ManagerRecord
|
21
22
|
from parsl.monitoring.message_type import MessageType
|
22
23
|
from parsl.process_loggers import wrap_with_logs
|
@@ -31,32 +32,6 @@ LOGGER_NAME = "interchange"
|
|
31
32
|
logger = logging.getLogger(LOGGER_NAME)
|
32
33
|
|
33
34
|
|
34
|
-
class ManagerLost(Exception):
|
35
|
-
''' Task lost due to manager loss. Manager is considered lost when multiple heartbeats
|
36
|
-
have been missed.
|
37
|
-
'''
|
38
|
-
def __init__(self, manager_id: bytes, hostname: str) -> None:
|
39
|
-
self.manager_id = manager_id
|
40
|
-
self.tstamp = time.time()
|
41
|
-
self.hostname = hostname
|
42
|
-
|
43
|
-
def __str__(self) -> str:
|
44
|
-
return "Task failure due to loss of manager {} on host {}".format(self.manager_id.decode(), self.hostname)
|
45
|
-
|
46
|
-
|
47
|
-
class VersionMismatch(Exception):
|
48
|
-
''' Manager and Interchange versions do not match
|
49
|
-
'''
|
50
|
-
def __init__(self, interchange_version: str, manager_version: str):
|
51
|
-
self.interchange_version = interchange_version
|
52
|
-
self.manager_version = manager_version
|
53
|
-
|
54
|
-
def __str__(self) -> str:
|
55
|
-
return "Manager version info {} does not match interchange version info {}, causing a critical failure".format(
|
56
|
-
self.manager_version,
|
57
|
-
self.interchange_version)
|
58
|
-
|
59
|
-
|
60
35
|
class Interchange:
|
61
36
|
""" Interchange is a task orchestrator for distributed systems.
|
62
37
|
|
@@ -1,7 +1,5 @@
|
|
1
1
|
import os
|
2
2
|
|
3
|
-
import pytest
|
4
|
-
|
5
3
|
import parsl
|
6
4
|
from parsl.app.app import bash_app
|
7
5
|
|
@@ -23,24 +21,18 @@ def no_checkpoint_stdout_app_ignore_args(stdout=None):
|
|
23
21
|
return "echo X"
|
24
22
|
|
25
23
|
|
26
|
-
def test_memo_stdout():
|
24
|
+
def test_memo_stdout(tmpd_cwd):
|
25
|
+
path_x = tmpd_cwd / "test.memo.stdout.x"
|
27
26
|
|
28
27
|
# this should run and create a file named after path_x
|
29
|
-
path_x
|
30
|
-
|
31
|
-
os.remove(path_x)
|
32
|
-
|
33
|
-
no_checkpoint_stdout_app_ignore_args(stdout=path_x).result()
|
34
|
-
assert os.path.exists(path_x)
|
35
|
-
|
36
|
-
# this should be memoized, so not create benc.test.y
|
37
|
-
path_y = "test.memo.stdout.y"
|
28
|
+
no_checkpoint_stdout_app_ignore_args(stdout=str(path_x)).result()
|
29
|
+
assert path_x.exists()
|
38
30
|
|
39
|
-
|
40
|
-
|
31
|
+
# this should be memoized, so should not get created
|
32
|
+
path_y = tmpd_cwd / "test.memo.stdout.y"
|
41
33
|
|
42
34
|
no_checkpoint_stdout_app_ignore_args(stdout=path_y).result()
|
43
|
-
assert not
|
35
|
+
assert not path_y.exists(), "For memoization, expected NO file written"
|
44
36
|
|
45
37
|
# this should also be memoized, so not create an arbitrary name
|
46
38
|
z_fut = no_checkpoint_stdout_app_ignore_args(stdout=parsl.AUTO_LOGNAME)
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import copy
|
2
|
-
import os
|
3
2
|
from typing import List
|
4
3
|
|
5
4
|
import pytest
|
@@ -30,21 +29,17 @@ def no_checkpoint_stdout_app(stdout=None):
|
|
30
29
|
return "echo X"
|
31
30
|
|
32
31
|
|
33
|
-
def test_memo_stdout():
|
34
|
-
|
32
|
+
def test_memo_stdout(tmpd_cwd):
|
35
33
|
assert const_list_x == const_list_x_arg
|
36
34
|
|
37
|
-
path_x = "test.memo.stdout.x"
|
38
|
-
if os.path.exists(path_x):
|
39
|
-
os.remove(path_x)
|
35
|
+
path_x = tmpd_cwd / "test.memo.stdout.x"
|
40
36
|
|
41
37
|
# this should run and create a file named after path_x
|
42
|
-
no_checkpoint_stdout_app(stdout=path_x).result()
|
43
|
-
|
38
|
+
no_checkpoint_stdout_app(stdout=str(path_x)).result()
|
39
|
+
path_x.unlink(missing_ok=False)
|
44
40
|
|
45
|
-
|
46
|
-
|
47
|
-
assert not os.path.exists(path_x)
|
41
|
+
no_checkpoint_stdout_app(stdout=str(path_x)).result()
|
42
|
+
assert not path_x.exists(), "For memoization, expected NO file written"
|
48
43
|
|
49
44
|
# this should also be memoized, so not create an arbitrary name
|
50
45
|
z_fut = no_checkpoint_stdout_app(stdout=parsl.AUTO_LOGNAME)
|
@@ -1,9 +1,7 @@
|
|
1
|
-
import argparse
|
2
1
|
import os
|
3
2
|
|
4
3
|
import pytest
|
5
4
|
|
6
|
-
import parsl
|
7
5
|
from parsl import bash_app, python_app
|
8
6
|
from parsl.tests.configs.local_threads import fresh_config
|
9
7
|
|
@@ -68,8 +66,6 @@ def test_fail_nowait(numtasks=10):
|
|
68
66
|
assert isinstance(
|
69
67
|
e, TypeError), "Expected a TypeError, got {}".format(e)
|
70
68
|
|
71
|
-
print("Done")
|
72
|
-
|
73
69
|
|
74
70
|
@pytest.mark.local
|
75
71
|
def test_fail_delayed(numtasks=10):
|
@@ -94,19 +90,12 @@ def test_fail_delayed(numtasks=10):
|
|
94
90
|
assert isinstance(
|
95
91
|
e, TypeError), "Expected a TypeError, got {}".format(e)
|
96
92
|
|
97
|
-
print("Done")
|
98
|
-
|
99
93
|
|
100
94
|
@pytest.mark.local
|
101
|
-
def test_retry():
|
95
|
+
def test_retry(tmpd_cwd):
|
102
96
|
"""Test retries via app that succeeds on the Nth retry.
|
103
97
|
"""
|
104
98
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
except OSError:
|
109
|
-
pass
|
110
|
-
fu = succeed_on_retry(fname)
|
111
|
-
|
112
|
-
fu.result()
|
99
|
+
fpath = tmpd_cwd / "retry.out"
|
100
|
+
sout = str(tmpd_cwd / "stdout")
|
101
|
+
succeed_on_retry(str(fpath), stdout=sout).result()
|
@@ -0,0 +1,47 @@
|
|
1
|
+
import os
|
2
|
+
import signal
|
3
|
+
|
4
|
+
import pytest
|
5
|
+
|
6
|
+
import parsl
|
7
|
+
from parsl import Config, HighThroughputExecutor
|
8
|
+
from parsl.executors.high_throughput.errors import ManagerLost
|
9
|
+
|
10
|
+
|
11
|
+
@parsl.python_app
|
12
|
+
def get_manager_pgid():
|
13
|
+
import os
|
14
|
+
return os.getpgid(os.getpid())
|
15
|
+
|
16
|
+
|
17
|
+
@parsl.python_app
|
18
|
+
def lose_manager():
|
19
|
+
import os
|
20
|
+
import signal
|
21
|
+
|
22
|
+
manager_pid = os.getppid()
|
23
|
+
os.kill(manager_pid, signal.SIGSTOP)
|
24
|
+
|
25
|
+
|
26
|
+
@pytest.mark.local
|
27
|
+
def test_manager_lost_system_failure(tmpd_cwd):
|
28
|
+
hte = HighThroughputExecutor(
|
29
|
+
label="htex_local",
|
30
|
+
address="127.0.0.1",
|
31
|
+
max_workers_per_node=2,
|
32
|
+
cores_per_worker=1,
|
33
|
+
worker_logdir_root=str(tmpd_cwd),
|
34
|
+
heartbeat_period=1,
|
35
|
+
heartbeat_threshold=1,
|
36
|
+
)
|
37
|
+
c = Config(executors=[hte], strategy='simple', strategy_period=0.1)
|
38
|
+
|
39
|
+
with parsl.load(c):
|
40
|
+
manager_pgid = get_manager_pgid().result()
|
41
|
+
try:
|
42
|
+
with pytest.raises(ManagerLost):
|
43
|
+
lose_manager().result()
|
44
|
+
finally:
|
45
|
+
# Allow process to clean itself up
|
46
|
+
os.killpg(manager_pgid, signal.SIGCONT)
|
47
|
+
os.killpg(manager_pgid, signal.SIGTERM)
|
@@ -22,11 +22,11 @@ def test_files():
|
|
22
22
|
|
23
23
|
|
24
24
|
@pytest.mark.local
|
25
|
-
def test_open():
|
26
|
-
|
27
|
-
|
25
|
+
def test_open(tmpd_cwd):
|
26
|
+
fpath = tmpd_cwd / 'test-open.txt'
|
27
|
+
fpath.write_text('Hello')
|
28
28
|
|
29
|
-
pfile = File(
|
29
|
+
pfile = File(fpath)
|
30
30
|
|
31
|
-
with open(
|
32
|
-
assert (opfile.
|
31
|
+
with open(pfile) as opfile:
|
32
|
+
assert (opfile.read() == 'Hello')
|
parsl/version.py
CHANGED
@@ -17,6 +17,7 @@ import zmq
|
|
17
17
|
|
18
18
|
from parsl import curvezmq
|
19
19
|
from parsl.app.errors import RemoteExceptionWrapper
|
20
|
+
from parsl.executors.high_throughput.errors import ManagerLost, VersionMismatch
|
20
21
|
from parsl.executors.high_throughput.manager_record import ManagerRecord
|
21
22
|
from parsl.monitoring.message_type import MessageType
|
22
23
|
from parsl.process_loggers import wrap_with_logs
|
@@ -31,32 +32,6 @@ LOGGER_NAME = "interchange"
|
|
31
32
|
logger = logging.getLogger(LOGGER_NAME)
|
32
33
|
|
33
34
|
|
34
|
-
class ManagerLost(Exception):
|
35
|
-
''' Task lost due to manager loss. Manager is considered lost when multiple heartbeats
|
36
|
-
have been missed.
|
37
|
-
'''
|
38
|
-
def __init__(self, manager_id: bytes, hostname: str) -> None:
|
39
|
-
self.manager_id = manager_id
|
40
|
-
self.tstamp = time.time()
|
41
|
-
self.hostname = hostname
|
42
|
-
|
43
|
-
def __str__(self) -> str:
|
44
|
-
return "Task failure due to loss of manager {} on host {}".format(self.manager_id.decode(), self.hostname)
|
45
|
-
|
46
|
-
|
47
|
-
class VersionMismatch(Exception):
|
48
|
-
''' Manager and Interchange versions do not match
|
49
|
-
'''
|
50
|
-
def __init__(self, interchange_version: str, manager_version: str):
|
51
|
-
self.interchange_version = interchange_version
|
52
|
-
self.manager_version = manager_version
|
53
|
-
|
54
|
-
def __str__(self) -> str:
|
55
|
-
return "Manager version info {} does not match interchange version info {}, causing a critical failure".format(
|
56
|
-
self.manager_version,
|
57
|
-
self.interchange_version)
|
58
|
-
|
59
|
-
|
60
35
|
class Interchange:
|
61
36
|
""" Interchange is a task orchestrator for distributed systems.
|
62
37
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: parsl
|
3
|
-
Version: 2024.
|
3
|
+
Version: 2024.7.1
|
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.
|
6
|
+
Download-URL: https://github.com/Parsl/parsl/archive/2024.07.01.tar.gz
|
7
7
|
Author: The Parsl Team
|
8
8
|
Author-email: parsl@googlegroups.com
|
9
9
|
License: Apache 2.0
|
@@ -8,7 +8,7 @@ parsl/multiprocessing.py,sha256=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=rymKA_7RPC0NJoPK5DYnRc2K1WmH8LD0xsv3iQyTwDA,131
|
12
12
|
parsl/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
13
|
parsl/app/app.py,sha256=D5Ok_gt99mlclM_QfZbquHUBkibyG4tYdUN9ijRwUnQ,8345
|
14
14
|
parsl/app/bash.py,sha256=jm2AvePlCT9DZR7H_4ANDWxatp5dN_22FUlT_gWhZ-g,5528
|
@@ -79,9 +79,9 @@ parsl/executors/flux/execute_parsl_task.py,sha256=gRN7F4HhdrKQ-bvn4wXrquBzFOp_9W
|
|
79
79
|
parsl/executors/flux/executor.py,sha256=gPq49CQwtSZYZggLZ0dCXdpUlllKHJbvR8WRKeGh9xE,16977
|
80
80
|
parsl/executors/flux/flux_instance_manager.py,sha256=2KVcphlybF-ALYD_3_YjMUi0f5LkjdoJOT_783CW4H0,2036
|
81
81
|
parsl/executors/high_throughput/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
|
-
parsl/executors/high_throughput/errors.py,sha256=
|
83
|
-
parsl/executors/high_throughput/executor.py,sha256=
|
84
|
-
parsl/executors/high_throughput/interchange.py,sha256=
|
82
|
+
parsl/executors/high_throughput/errors.py,sha256=Sak8e8UpiEcXefUjMHbhyXc4Rn7kJtOoh7L8wreBQdk,1638
|
83
|
+
parsl/executors/high_throughput/executor.py,sha256=XO0QkRdQIXYUOdabTTIJ6HIlMai0Tvu78bYHMFT-tNc,37061
|
84
|
+
parsl/executors/high_throughput/interchange.py,sha256=IRuiaBmks_R4cU-Sx0Q_Fjv4PdFtzU05GiPdeJstOoA,30578
|
85
85
|
parsl/executors/high_throughput/manager_record.py,sha256=9XppKjDW0DJ7SMkPNxsiDs-HvXGPLrTg6Ceyh4b6gNs,433
|
86
86
|
parsl/executors/high_throughput/monitoring_info.py,sha256=HC0drp6nlXQpAop5PTUKNjdXMgtZVvrBL0JzZJebPP4,298
|
87
87
|
parsl/executors/high_throughput/mpi_executor.py,sha256=B2CR1pHaGQzIwTrQ-_i08NZG-NwS6yr8y7nxPaa_rkA,3760
|
@@ -301,8 +301,8 @@ parsl/tests/test_bash_apps/test_error_codes.py,sha256=jJ3BwhFpvTGKElKyuiCMWFeBaV
|
|
301
301
|
parsl/tests/test_bash_apps/test_keyword_overlaps.py,sha256=8bfN2qw4uXJsYquppR1lZQrYW834AZc3zjYIIHTfDoE,209
|
302
302
|
parsl/tests/test_bash_apps/test_kwarg_storage.py,sha256=OMMD3sKSngBSjVCHK9wju0hHzszOqbYuWtscyMuh5_8,720
|
303
303
|
parsl/tests/test_bash_apps/test_memoize.py,sha256=gFhDNFxdRv8DNtErbwtdEvAph6SDFPaWY0tABZGS4I4,1383
|
304
|
-
parsl/tests/test_bash_apps/test_memoize_ignore_args.py,sha256=
|
305
|
-
parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py,sha256=
|
304
|
+
parsl/tests/test_bash_apps/test_memoize_ignore_args.py,sha256=dCDvf_iVuU5aq5gLlOUwcCZTbWtNJ4Uj0Zjx1ZbBOhQ,1257
|
305
|
+
parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py,sha256=3cMYYNhSncDshWfbbyMld5z1ZrJHPpxz_0u8DMBgRdA,1341
|
306
306
|
parsl/tests/test_bash_apps/test_multiline.py,sha256=stpMEv2eopGG-ietxjUtD5gYMOVpwPdLauDizjUfTdA,1082
|
307
307
|
parsl/tests/test_bash_apps/test_pipeline.py,sha256=1kQDD8-Dh5H9SKFcKHzN_mSrdxAV_VYzk8ZnDyna3l8,2444
|
308
308
|
parsl/tests/test_bash_apps/test_std_uri.py,sha256=CvAt8BUhNl2pA5chq9YyhkD6eo2IUH6PjWfe3SQ-YRU,3752
|
@@ -330,7 +330,7 @@ parsl/tests/test_error_handling/test_fail.py,sha256=xx4TGWfL7le4cQ9nvnUkrlmKQJks
|
|
330
330
|
parsl/tests/test_error_handling/test_python_walltime.py,sha256=rdmGZHIkuann2Njt3i62odKJ0FaODGr7-L96rOXNVYg,950
|
331
331
|
parsl/tests/test_error_handling/test_rand_fail.py,sha256=crFg4GmwdDpvx49_7w5Xt2P7H2R_V9f6i1Ar-QkASuU,3864
|
332
332
|
parsl/tests/test_error_handling/test_resource_spec.py,sha256=bk0h2KRZ1lKga_dfhkqq4-tvUJimPtO6gJikUzXJJrU,1565
|
333
|
-
parsl/tests/test_error_handling/test_retries.py,sha256=
|
333
|
+
parsl/tests/test_error_handling/test_retries.py,sha256=zJ9D2hrvXQURnK2OIf5LfQFcSDVZ8rhdpp6peGccY7s,2372
|
334
334
|
parsl/tests/test_error_handling/test_retry_handler.py,sha256=8fMHffMBLhRyNreIqkrwamx9TYRZ498uVYNlkcbAoLU,1407
|
335
335
|
parsl/tests/test_error_handling/test_retry_handler_failure.py,sha256=GaGtZZCB9Wb7ieShqTrxUFEUSKy07ZZWytCY4Qixk9Y,552
|
336
336
|
parsl/tests/test_error_handling/test_serialization_fail.py,sha256=5nnGyaOH0Quyjo3eTKkDfAvYcNYxL8OfMi1KccyncaM,647
|
@@ -427,6 +427,7 @@ parsl/tests/test_scaling/test_scale_down_htex_unregistered.py,sha256=4DYZB9BMDzy
|
|
427
427
|
parsl/tests/test_scaling/test_shutdown_scalein.py,sha256=Jzi0OH7UE6qvQ4ZpsfHu8lySpkMDgorn2elAzMNE6wI,2397
|
428
428
|
parsl/tests/test_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
429
429
|
parsl/tests/test_serialization/test_2555_caching_deserializer.py,sha256=jEXJvbriaLVI7frV5t-iJRKYyeQ7a9_-t3X9lhhBWQo,767
|
430
|
+
parsl/tests/test_serialization/test_3495_deserialize_managerlost.py,sha256=23phMEstEWWQUHxlyZh4Ta1DC94by8f_-OYCcykyNu8,1144
|
430
431
|
parsl/tests/test_serialization/test_basic.py,sha256=4_1Rkq5tNl9EC0nfneF8kHTws7I0E6ovE_0DE97BEfU,544
|
431
432
|
parsl/tests/test_serialization/test_htex_code_cache.py,sha256=dd0XwlNDn6Lgj6-nHHjYWzl1FnhFLY_8Buxj77dyZ28,1840
|
432
433
|
parsl/tests/test_serialization/test_pack_resource_spec.py,sha256=-Vtyh8KyezZw8e7M2Z4m3LawY1Au4U-H3KRmVKXSut0,641
|
@@ -440,7 +441,7 @@ parsl/tests/test_staging/test_1316.py,sha256=eS0e2BDM2vmPNF60aDr35wcuGgDPfXjTjRV
|
|
440
441
|
parsl/tests/test_staging/test_docs_1.py,sha256=HxFoBYRNkoJoCDIok9QEIDJLICmaF3RCklSWYtG8BEQ,628
|
441
442
|
parsl/tests/test_staging/test_docs_2.py,sha256=DrxoUVowwzdQebewfyQ6v-IHVFJfs5qGzWVQ4UVSbkA,464
|
442
443
|
parsl/tests/test_staging/test_elaborate_noop_file.py,sha256=8FHXraFrXDBB2wsKx15AQ6vOgpWwtDL6O6PejOkfdOM,2448
|
443
|
-
parsl/tests/test_staging/test_file.py,sha256=
|
444
|
+
parsl/tests/test_staging/test_file.py,sha256=Jsmn-4jaIuMz6ocmACMJmylx-thKky7QGWISkl4Mxjs,924
|
444
445
|
parsl/tests/test_staging/test_file_apps.py,sha256=zTwLAf4R-lFLoqeyz9ZfFeVTs9PL9dmpKjeZEVG7C2s,1540
|
445
446
|
parsl/tests/test_staging/test_file_staging.py,sha256=PTBZhTQJsNtUi38uUZOdIb8yw18-qxMoY9GFodzPYuE,674
|
446
447
|
parsl/tests/test_staging/test_output_chain_filenames.py,sha256=9Mxfl9oU_x1ZSP8JSxT_t4WFCfDTprLjSeFNMm4vVxA,894
|
@@ -464,13 +465,13 @@ parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
464
465
|
parsl/usage_tracking/api.py,sha256=iaCY58Dc5J4UM7_dJzEEs871P1p1HdxBMtNGyVdzc9g,1821
|
465
466
|
parsl/usage_tracking/levels.py,sha256=xbfzYEsd55KiZJ-mzNgPebvOH4rRHum04hROzEf41tU,291
|
466
467
|
parsl/usage_tracking/usage.py,sha256=qNEJ7nPimqd3Y7OWFLdYmNwJ6XDKlyfV_fTzasxsQw8,8690
|
467
|
-
parsl-2024.
|
468
|
-
parsl-2024.
|
469
|
-
parsl-2024.
|
470
|
-
parsl-2024.
|
471
|
-
parsl-2024.
|
472
|
-
parsl-2024.
|
473
|
-
parsl-2024.
|
474
|
-
parsl-2024.
|
475
|
-
parsl-2024.
|
476
|
-
parsl-2024.
|
468
|
+
parsl-2024.7.1.data/scripts/exec_parsl_function.py,sha256=RUkJ4JSJAjr7YyRZ58zhMdg8cR5dVV9odUl3AuzNf3k,7802
|
469
|
+
parsl-2024.7.1.data/scripts/interchange.py,sha256=n0aOHLX64DEWx-OA4vWrYRVZfmaz8Rc8haNtafbgh4k,30565
|
470
|
+
parsl-2024.7.1.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
|
471
|
+
parsl-2024.7.1.data/scripts/process_worker_pool.py,sha256=weug6_LAMbqEKQhiI6ZMg8r3e-XBDw1-L5_COEt7caM,41879
|
472
|
+
parsl-2024.7.1.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
473
|
+
parsl-2024.7.1.dist-info/METADATA,sha256=TQ_3YOcktX94s5XnASKWQNt2X2bp6pQHIG3ocx71qTY,4123
|
474
|
+
parsl-2024.7.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
475
|
+
parsl-2024.7.1.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
|
476
|
+
parsl-2024.7.1.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
|
477
|
+
parsl-2024.7.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|