parsl 2025.9.15__py3-none-any.whl → 2025.9.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.

Potentially problematic release.


This version of parsl might be problematic. Click here for more details.

Files changed (36) hide show
  1. parsl/benchmark/perf.py +22 -9
  2. parsl/dataflow/dflow.py +2 -3
  3. parsl/dataflow/memoization.py +9 -19
  4. parsl/executors/execute_task.py +2 -8
  5. parsl/executors/flux/executor.py +3 -5
  6. parsl/executors/high_throughput/executor.py +12 -11
  7. parsl/executors/high_throughput/interchange.py +8 -6
  8. parsl/executors/high_throughput/mpi_executor.py +1 -2
  9. parsl/executors/high_throughput/mpi_resource_management.py +3 -10
  10. parsl/executors/high_throughput/process_worker_pool.py +15 -3
  11. parsl/executors/high_throughput/zmq_pipes.py +7 -24
  12. parsl/executors/radical/executor.py +2 -6
  13. parsl/executors/radical/rpex_worker.py +2 -2
  14. parsl/executors/taskvine/executor.py +5 -1
  15. parsl/serialize/__init__.py +6 -9
  16. parsl/serialize/facade.py +0 -32
  17. parsl/tests/configs/taskvine_ex.py +1 -1
  18. parsl/tests/test_checkpointing/test_periodic.py +15 -9
  19. parsl/tests/test_execute_task.py +2 -11
  20. parsl/tests/test_htex/test_interchange_exit_bad_registration.py +0 -1
  21. parsl/tests/test_htex/test_priority_queue.py +7 -2
  22. parsl/tests/test_mpi_apps/test_mpi_scheduler.py +18 -43
  23. parsl/tests/test_regression/test_3874.py +47 -0
  24. parsl/version.py +1 -1
  25. {parsl-2025.9.15.data → parsl-2025.9.29.data}/scripts/interchange.py +8 -6
  26. {parsl-2025.9.15.data → parsl-2025.9.29.data}/scripts/process_worker_pool.py +15 -3
  27. {parsl-2025.9.15.dist-info → parsl-2025.9.29.dist-info}/METADATA +3 -4
  28. {parsl-2025.9.15.dist-info → parsl-2025.9.29.dist-info}/RECORD +34 -35
  29. parsl/tests/configs/local_threads_checkpoint_periodic.py +0 -11
  30. parsl/tests/test_serialization/test_pack_resource_spec.py +0 -23
  31. {parsl-2025.9.15.data → parsl-2025.9.29.data}/scripts/exec_parsl_function.py +0 -0
  32. {parsl-2025.9.15.data → parsl-2025.9.29.data}/scripts/parsl_coprocess.py +0 -0
  33. {parsl-2025.9.15.dist-info → parsl-2025.9.29.dist-info}/LICENSE +0 -0
  34. {parsl-2025.9.15.dist-info → parsl-2025.9.29.dist-info}/WHEEL +0 -0
  35. {parsl-2025.9.15.dist-info → parsl-2025.9.29.dist-info}/entry_points.txt +0 -0
  36. {parsl-2025.9.15.dist-info → parsl-2025.9.29.dist-info}/top_level.txt +0 -0
@@ -2,11 +2,17 @@ import pytest
2
2
 
3
3
  import parsl
4
4
  from parsl.app.app import python_app
5
- from parsl.tests.configs.local_threads_checkpoint_periodic import fresh_config
5
+ from parsl.config import Config
6
+ from parsl.executors.threads import ThreadPoolExecutor
6
7
 
7
8
 
8
- def local_setup():
9
- parsl.load(fresh_config())
9
+ def fresh_config():
10
+ tpe = ThreadPoolExecutor(label='local_threads_checkpoint_periodic', max_threads=1)
11
+ return Config(
12
+ executors=[tpe],
13
+ checkpoint_mode='periodic',
14
+ checkpoint_period='00:00:02'
15
+ )
10
16
 
11
17
 
12
18
  @python_app(cache=True)
@@ -25,12 +31,12 @@ def tstamp_to_seconds(line):
25
31
  def test_periodic():
26
32
  """Test checkpointing with task_periodic behavior
27
33
  """
28
- h, m, s = map(int, parsl.dfk().config.checkpoint_period.split(":"))
29
- assert h == 0, "Verify test setup"
30
- assert m == 0, "Verify test setup"
31
- assert s > 0, "Verify test setup"
32
- sleep_for = s + 1
33
- with parsl.dfk():
34
+ with parsl.load(fresh_config()):
35
+ h, m, s = map(int, parsl.dfk().config.checkpoint_period.split(":"))
36
+ assert h == 0, "Verify test setup"
37
+ assert m == 0, "Verify test setup"
38
+ assert s > 0, "Verify test setup"
39
+ sleep_for = s + 1
34
40
  futs = [slow_double(sleep_for) for _ in range(4)]
35
41
  [f.result() for f in futs]
36
42
  run_dir = parsl.dfk().run_dir
@@ -3,7 +3,7 @@ import os
3
3
  import pytest
4
4
 
5
5
  from parsl.executors.execute_task import execute_task
6
- from parsl.serialize.facade import pack_res_spec_apply_message
6
+ from parsl.serialize.facade import pack_apply_message
7
7
 
8
8
 
9
9
  def addemup(*args: int, name: str = "apples"):
@@ -15,15 +15,6 @@ def addemup(*args: int, name: str = "apples"):
15
15
  def test_execute_task():
16
16
  args = (1, 2, 3)
17
17
  kwargs = {"name": "boots"}
18
- buff = pack_res_spec_apply_message(addemup, args, kwargs, {})
18
+ buff = pack_apply_message(addemup, args, kwargs)
19
19
  res = execute_task(buff)
20
20
  assert res == addemup(*args, **kwargs)
21
-
22
-
23
- @pytest.mark.local
24
- def test_execute_task_resource_spec():
25
- resource_spec = {"num_nodes": 2, "ranks_per_node": 2, "num_ranks": 4}
26
- buff = pack_res_spec_apply_message(addemup, (1, 2), {}, resource_spec)
27
- execute_task(buff)
28
- for key, val in resource_spec.items():
29
- assert os.environ[f"PARSL_{key.upper()}"] == str(val)
@@ -1,4 +1,3 @@
1
- import json
2
1
  import logging
3
2
  import os
4
3
  import pickle
@@ -1,3 +1,5 @@
1
+ from random import randint
2
+
1
3
  import pytest
2
4
 
3
5
  import parsl
@@ -40,8 +42,11 @@ def test_priority_queue():
40
42
  futures = {}
41
43
 
42
44
  # Submit tasks with mixed priorities
43
- # Priorities: [10, 10, 5, 5, 1, 1] to test fallback behavior
44
- for i, priority in enumerate([10, 10, 5, 5, 1, 1]):
45
+ # Test fallback behavior with a guaranteed-unsorted priorities
46
+ priorities = [randint(2, 9) for _ in range(randint(1, 10))]
47
+ priorities.insert(0, 10)
48
+ priorities.extend((1, 10, 1))
49
+ for i, priority in enumerate(priorities):
45
50
  spec = {'priority': priority}
46
51
  futures[(priority, i)] = fake_task(parsl_resource_specification=spec)
47
52
 
@@ -1,4 +1,3 @@
1
- import logging
2
1
  import os
3
2
  import pickle
4
3
  from unittest import mock
@@ -10,7 +9,9 @@ from parsl.executors.high_throughput.mpi_resource_management import (
10
9
  TaskScheduler,
11
10
  )
12
11
  from parsl.multiprocessing import SpawnContext
13
- from parsl.serialize import pack_res_spec_apply_message, unpack_res_spec_apply_message
12
+ from parsl.serialize import pack_apply_message
13
+
14
+ mock_task_buffer = pack_apply_message("func", "args", "kwargs")
14
15
 
15
16
 
16
17
  @pytest.fixture(autouse=True)
@@ -42,12 +43,8 @@ def test_MPISched_put_task():
42
43
  assert len(scheduler.available_nodes) == 8
43
44
  assert scheduler._free_node_counter.value == 8
44
45
 
45
- mock_task_buffer = pack_res_spec_apply_message("func",
46
- "args",
47
- "kwargs",
48
- resource_specification={"num_nodes": 2,
49
- "ranks_per_node": 2})
50
- task_package = {"task_id": 1, "buffer": mock_task_buffer}
46
+ ctxt = {"resource_spec": {"num_nodes": 2, "ranks_per_node": 2}}
47
+ task_package = {"task_id": 1, "buffer": mock_task_buffer, "context": ctxt}
51
48
  scheduler.put_task(task_package)
52
49
 
53
50
  assert scheduler._free_node_counter.value == 6
@@ -82,21 +79,17 @@ def test_MPISched_roundtrip():
82
79
  assert scheduler.available_nodes
83
80
  assert len(scheduler.available_nodes) == 8
84
81
 
85
- for round in range(1, 9):
82
+ for trip in range(1, 9):
86
83
  assert scheduler._free_node_counter.value == 8
87
84
 
88
- mock_task_buffer = pack_res_spec_apply_message("func",
89
- "args",
90
- "kwargs",
91
- resource_specification={"num_nodes": round,
92
- "ranks_per_node": 2})
93
- task_package = {"task_id": round, "buffer": mock_task_buffer}
85
+ ctxt = {"resource_spec": {"num_nodes": trip, "ranks_per_node": 2}}
86
+ task_package = {"task_id": trip, "buffer": mock_task_buffer, "context": ctxt}
94
87
  scheduler.put_task(task_package)
95
88
 
96
- assert scheduler._free_node_counter.value == 8 - round
89
+ assert scheduler._free_node_counter.value == 8 - trip
97
90
 
98
91
  # Pop in a mock result
99
- result_pkl = pickle.dumps({"task_id": round, "type": "result", "buffer": "RESULT BUF"})
92
+ result_pkl = pickle.dumps({"task_id": trip, "type": "result", "buffer": "RESULT BUF"})
100
93
  result_q.put(result_pkl)
101
94
 
102
95
  got_result = scheduler.get_result(True, 1)
@@ -114,27 +107,15 @@ def test_MPISched_contention():
114
107
 
115
108
  assert scheduler._free_node_counter.value == 8
116
109
 
117
- mock_task_buffer = pack_res_spec_apply_message("func",
118
- "args",
119
- "kwargs",
120
- resource_specification={
121
- "num_nodes": 8,
122
- "ranks_per_node": 2
123
- })
124
- task_package = {"task_id": 1, "buffer": mock_task_buffer}
110
+ ctxt_1 = {"resource_spec": {"num_nodes": 8, "ranks_per_node": 2}}
111
+ task_package = {"task_id": 1, "buffer": mock_task_buffer, "context": ctxt_1}
125
112
  scheduler.put_task(task_package)
126
113
 
127
114
  assert scheduler._free_node_counter.value == 0
128
115
  assert scheduler._backlog_queue.empty()
129
116
 
130
- mock_task_buffer = pack_res_spec_apply_message("func",
131
- "args",
132
- "kwargs",
133
- resource_specification={
134
- "num_nodes": 8,
135
- "ranks_per_node": 2
136
- })
137
- task_package = {"task_id": 2, "buffer": mock_task_buffer}
117
+ ctxt_2 = {"resource_spec": {"num_nodes": 8, "ranks_per_node": 2}}
118
+ task_package = {"task_id": 2, "buffer": mock_task_buffer, "context": ctxt_2}
138
119
  scheduler.put_task(task_package)
139
120
 
140
121
  # Second task should now be in the backlog_queue
@@ -143,8 +124,7 @@ def test_MPISched_contention():
143
124
  # Confirm that the first task is available and has all 8 nodes provisioned
144
125
  task_on_worker_side = task_q.get()
145
126
  assert task_on_worker_side['task_id'] == 1
146
- _, _, _, resource_spec = unpack_res_spec_apply_message(task_on_worker_side['buffer'])
147
- assert len(resource_spec['MPI_NODELIST'].split(',')) == 8
127
+ assert len(ctxt_1["resource_spec"]["MPI_NODELIST"].split(",")) == 8
148
128
  assert task_q.empty() # Confirm that task 2 is not yet scheduled
149
129
 
150
130
  # Simulate worker returning result and the scheduler picking up result
@@ -159,8 +139,7 @@ def test_MPISched_contention():
159
139
  # Pop in a mock result
160
140
  task_on_worker_side = task_q.get()
161
141
  assert task_on_worker_side['task_id'] == 2
162
- _, _, _, resource_spec = unpack_res_spec_apply_message(task_on_worker_side['buffer'])
163
- assert len(resource_spec['MPI_NODELIST'].split(',')) == 8
142
+ assert len(ctxt_2["resource_spec"]["MPI_NODELIST"].split(",")) == 8
164
143
 
165
144
 
166
145
  @pytest.mark.local
@@ -178,11 +157,7 @@ def test_hashable_backlog_queue():
178
157
  assert scheduler._free_node_counter.value == 8
179
158
 
180
159
  for i in range(3):
181
- mock_task_buffer = pack_res_spec_apply_message("func", "args", "kwargs",
182
- resource_specification={
183
- "num_nodes": 8,
184
- "ranks_per_node": 2
185
- })
186
- task_package = {"task_id": i, "buffer": mock_task_buffer}
160
+ ctxt = {"resource_spec": {"num_nodes": 8, "ranks_per_node": 2}}
161
+ task_package = {"task_id": i, "buffer": mock_task_buffer, "context": ctxt}
187
162
  scheduler.put_task(task_package)
188
163
  assert scheduler._backlog_queue.qsize() == 2, "Expected 2 backlogged tasks"
@@ -0,0 +1,47 @@
1
+ import shutil
2
+
3
+ import pytest
4
+
5
+ import parsl
6
+ from parsl.app.app import python_app
7
+ from parsl.config import Config
8
+ from parsl.executors import HighThroughputExecutor
9
+
10
+
11
+ @python_app
12
+ def noop():
13
+ pass
14
+
15
+
16
+ @pytest.mark.local
17
+ def test_regression_3874(tmpd_cwd_session):
18
+ # HTEX run 1
19
+
20
+ rundir_1 = str(tmpd_cwd_session / "1")
21
+
22
+ config = Config(executors=[HighThroughputExecutor()], strategy_period=0.5)
23
+ config.run_dir = rundir_1
24
+
25
+ with parsl.load(config):
26
+ noop().result()
27
+
28
+ # It is necessary to delete this rundir to exercise the bug. Otherwise,
29
+ # the next run will be able to continue looking at this directory - the
30
+ # bug manifests when it cannot.
31
+
32
+ shutil.rmtree(rundir_1)
33
+
34
+ # HTEX run 2
35
+ # In the case of issue 3874, this run hangs (rather than failing) as the
36
+ # JobStatusPoller fails to collect status of all of its managed tasks
37
+ # every iteration, without converging towards failure.
38
+
39
+ rundir_2 = str(tmpd_cwd_session / "2")
40
+
41
+ config = Config(executors=[HighThroughputExecutor()], strategy_period=0.5)
42
+ config.run_dir = rundir_2
43
+
44
+ with parsl.load(config):
45
+ noop().result()
46
+
47
+ shutil.rmtree(rundir_2)
parsl/version.py CHANGED
@@ -3,4 +3,4 @@
3
3
  Year.Month.Day[alpha/beta/..]
4
4
  Alphas will be numbered like this -> 2024.12.10a0
5
5
  """
6
- VERSION = '2025.09.15'
6
+ VERSION = '2025.09.29'
@@ -23,7 +23,6 @@ from parsl.monitoring.radios.base import MonitoringRadioSender
23
23
  from parsl.monitoring.radios.zmq import ZMQRadioSender
24
24
  from parsl.process_loggers import wrap_with_logs
25
25
  from parsl.serialize import serialize as serialize_object
26
- from parsl.utils import setproctitle
27
26
  from parsl.version import VERSION as PARSL_VERSION
28
27
 
29
28
  PKL_HEARTBEAT_CODE = pickle.dumps((2 ** 32) - 1)
@@ -220,7 +219,7 @@ class Interchange:
220
219
 
221
220
  reply: Any # the type of reply depends on the command_req received (aka this needs dependent types...)
222
221
 
223
- if self.command_channel in self.socks and self.socks[self.command_channel] == zmq.POLLIN:
222
+ if self.socks.get(self.command_channel) == zmq.POLLIN:
224
223
  logger.debug("entering command_server section")
225
224
 
226
225
  command_req = self.command_channel.recv_pyobj()
@@ -328,12 +327,12 @@ class Interchange:
328
327
  """Process incoming task message(s).
329
328
  """
330
329
 
331
- if self.task_incoming in self.socks and self.socks[self.task_incoming] == zmq.POLLIN:
330
+ if self.socks.get(self.task_incoming) == zmq.POLLIN:
332
331
  logger.debug("start task_incoming section")
333
332
  msg = self.task_incoming.recv_pyobj()
334
333
 
335
334
  # Process priority, higher number = lower priority
336
- resource_spec = msg.get('resource_spec', {})
335
+ resource_spec = msg['context'].get('resource_spec', {})
337
336
  priority = resource_spec.get('priority', float('inf'))
338
337
  queue_entry = (-priority, -self.task_counter, msg)
339
338
 
@@ -361,9 +360,10 @@ class Interchange:
361
360
  mtype = meta['type']
362
361
  except Exception as e:
363
362
  logger.warning(
364
- f'Failed to read manager message ([{type(e).__name__}] {e})'
363
+ 'Failed to read manager message; ignoring message'
364
+ f' (Exception: [{type(e).__name__}] {e})'
365
365
  )
366
- logger.debug('Message:\n %r\n', msg_parts, exc_info=e)
366
+ logger.debug('Raw message bytes:\n %r\n', msg_parts, exc_info=e)
367
367
  return
368
368
 
369
369
  logger.debug(
@@ -627,6 +627,8 @@ def start_file_logger(filename: str, level: int = logging.DEBUG, format_string:
627
627
 
628
628
 
629
629
  if __name__ == "__main__":
630
+ from parsl.utils import setproctitle
631
+
630
632
  setproctitle("parsl: HTEX interchange")
631
633
 
632
634
  config = pickle.load(sys.stdin.buffer)
@@ -373,6 +373,8 @@ class Manager:
373
373
  if socks.get(ix_sock) == zmq.POLLIN:
374
374
  pkl_msg = ix_sock.recv()
375
375
  tasks = pickle.loads(pkl_msg)
376
+ del pkl_msg
377
+
376
378
  last_interchange_contact = time.time()
377
379
 
378
380
  if tasks == HEARTBEAT_CODE:
@@ -454,6 +456,7 @@ class Manager:
454
456
  'exception': serialize(RemoteExceptionWrapper(*sys.exc_info()))}
455
457
  pkl_package = pickle.dumps(result_package)
456
458
  self.pending_result_queue.put(pkl_package)
459
+ del pkl_package
457
460
  except KeyError:
458
461
  logger.info("Worker {} was not busy when it died".format(worker_id))
459
462
 
@@ -603,6 +606,10 @@ def update_resource_spec_env_vars(mpi_launcher: str, resource_spec: Dict, node_i
603
606
 
604
607
 
605
608
  def _init_mpi_env(mpi_launcher: str, resource_spec: Dict):
609
+ for varname in resource_spec:
610
+ envname = "PARSL_" + str(varname).upper()
611
+ os.environ[envname] = str(resource_spec[varname])
612
+
606
613
  node_list = resource_spec.get("MPI_NODELIST")
607
614
  if node_list is None:
608
615
  return
@@ -753,8 +760,8 @@ def worker(
753
760
  worker_enqueued = True
754
761
 
755
762
  try:
756
- # The worker will receive {'task_id':<tid>, 'buffer':<buf>}
757
763
  req = task_queue.get(timeout=task_queue_timeout)
764
+ # req is {'task_id':<tid>, 'buffer':<buf>, 'resource_spec':<dict>}
758
765
  except queue.Empty:
759
766
  continue
760
767
 
@@ -766,7 +773,10 @@ def worker(
766
773
  ready_worker_count.value -= 1
767
774
  worker_enqueued = False
768
775
 
769
- _init_mpi_env(mpi_launcher=mpi_launcher, resource_spec=req["resource_spec"])
776
+ ctxt = req["context"]
777
+ res_spec = ctxt.get("resource_spec", {})
778
+
779
+ _init_mpi_env(mpi_launcher=mpi_launcher, resource_spec=res_spec)
770
780
 
771
781
  try:
772
782
  result = execute_task(req['buffer'])
@@ -776,7 +786,8 @@ def worker(
776
786
  result_package = {'type': 'result', 'task_id': tid, 'exception': serialize(RemoteExceptionWrapper(*sys.exc_info()))}
777
787
  else:
778
788
  result_package = {'type': 'result', 'task_id': tid, 'result': serialized_result}
779
- # logger.debug("Result: {}".format(result))
789
+ del serialized_result
790
+ del req
780
791
 
781
792
  logger.info("Completed executor task {}".format(tid))
782
793
  try:
@@ -788,6 +799,7 @@ def worker(
788
799
  })
789
800
 
790
801
  result_queue.put(pkl_package)
802
+ del pkl_package, result_package
791
803
  tasks_in_progress.pop(worker_id)
792
804
  logger.info("All processing finished for executor task {}".format(tid))
793
805
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsl
3
- Version: 2025.9.15
3
+ Version: 2025.9.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/2025.09.15.tar.gz
6
+ Download-URL: https://github.com/Parsl/parsl/archive/2025.09.29.tar.gz
7
7
  Author: The Parsl Team
8
8
  Author-email: parsl@googlegroups.com
9
9
  License: Apache 2.0
@@ -11,11 +11,10 @@ Keywords: Workflows,Scientific computing
11
11
  Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: License :: OSI Approved :: Apache Software License
14
- Classifier: Programming Language :: Python :: 3.9
15
14
  Classifier: Programming Language :: Python :: 3.10
16
15
  Classifier: Programming Language :: Python :: 3.11
17
16
  Classifier: Programming Language :: Python :: 3.12
18
- Requires-Python: >=3.9.0
17
+ Requires-Python: >=3.10.0
19
18
  License-File: LICENSE
20
19
  Requires-Dist: pyzmq>=17.1.2
21
20
  Requires-Dist: typeguard!=3.*,<5,>=2.10
@@ -8,7 +8,7 @@ parsl/multiprocessing.py,sha256=xqieTLko3DrHykCqqSHQszMwd8ORYllrgz6Qc_PsHCE,2112
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=smVYTusMoYUTD5N9OxTW5bh6o2iioh0NnfjrBAj8zYk,14452
11
- parsl/version.py,sha256=04n0OtGcsR5PaVZquDBsldk0-OzzWFiR5c7fgxx8s94,131
11
+ parsl/version.py,sha256=mjuTAq4pki_czBLWMzbgU5oYb9g5K_nnBiiBEpTePVE,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
@@ -16,7 +16,7 @@ parsl/app/errors.py,sha256=SQQ1fNp8834DZnoRnlsoZn1WMAFM3fnh2CNHRPmFcKc,3854
16
16
  parsl/app/futures.py,sha256=2tMUeKIuDzwuhLIWlsEiZuDrhkxxsUed4QUbQuQg20Y,2826
17
17
  parsl/app/python.py,sha256=0hrz2BppVOwwNfh5hnoP70Yv56gSRkIoT-fP9XNb4v4,2331
18
18
  parsl/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- parsl/benchmark/perf.py,sha256=kKXefDozWXSJKSNA7qdfUgEoacA2-R9kSZcI2YvZ5uE,3096
19
+ parsl/benchmark/perf.py,sha256=DRTNSA_-Qq01GfMl6MEWtwENEu1aReHC23SX6f0HuXk,3615
20
20
  parsl/concurrent/__init__.py,sha256=TvIVceJYaJAsxedNBF3Vdo9lEQNHH_j3uxJv0zUjP7w,3288
21
21
  parsl/configs/ASPIRE1.py,sha256=nQm6BvCPE07YXEsC94wMrHeVAyYcyfvPgWyHIysjAoA,1690
22
22
  parsl/configs/Azure.py,sha256=CJms3xWmdb-S3CksbHrPF2TfMxJC5I0faqUKCOzVg0k,1268
@@ -55,45 +55,45 @@ parsl/data_provider/staging.py,sha256=ZDZuuFg38pjUStegKPcvPsfGp3iMeReMzfU6DSwtJj
55
55
  parsl/data_provider/zip.py,sha256=S4kVuH9lxAegRURYbvIUR7EYYBOccyslaqyCrVWUBhw,4497
56
56
  parsl/dataflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
57
  parsl/dataflow/dependency_resolvers.py,sha256=Om8Dgh7a0ZwgXAc6TlhxLSzvxXHDlNNV1aBNiD3JTNY,3325
58
- parsl/dataflow/dflow.py,sha256=jn6gzrvz1XHpxX6SZYsh8Ics9ZUG6n8Mhd-bB2gOqow,62940
58
+ parsl/dataflow/dflow.py,sha256=CPhl-hYHLbH_zoE2rhRhcz2B4JWmm5pICWLUEkALPgQ,62860
59
59
  parsl/dataflow/errors.py,sha256=daVfr2BWs1zRsGD6JtosEMttWHvK1df1Npiu_MUvFKg,3998
60
60
  parsl/dataflow/futures.py,sha256=08LuP-HFiHBIZmeKCjlsazw_WpQ5fwevrU2_WbidkYw,6080
61
- parsl/dataflow/memoization.py,sha256=dJRISYd3pXDH8NQzU0HW4jDH4rCfBLSs48d2SrbX1uA,12206
61
+ parsl/dataflow/memoization.py,sha256=AyO1khMwlbuGJQQk-l_wJRj0QeOHTOnmlvzXgQdNNQk,11977
62
62
  parsl/dataflow/rundirs.py,sha256=JZdzybVGubY35jL2YiKcDo65ZmRl1WyOApc8ajYxztc,1087
63
63
  parsl/dataflow/states.py,sha256=hV6mfv-y4A6xrujeQglcomnfEs7y3Xm2g6JFwC6dvgQ,2612
64
64
  parsl/dataflow/taskrecord.py,sha256=qIW7T6hn9dYTuNPdUura3HQwwUpUJACwPP5REm5COf4,3042
65
65
  parsl/executors/__init__.py,sha256=PEuXYrnVqwlaz_nt82s9D_YNaVsX7ET29DeIZRUR8hw,577
66
66
  parsl/executors/base.py,sha256=Qlc7Qa-jbfGpQcGB29JUFXCdhcSN63bjGubEcbDk270,4948
67
67
  parsl/executors/errors.py,sha256=ZxL3nK5samPos8Xixo_jpRtPIiRJfZ5D397_qaXj2g0,2515
68
- parsl/executors/execute_task.py,sha256=PtqHxk778UQaNah1AN-TJV5emZbOcU5TGtWDxFn3_F4,1079
68
+ parsl/executors/execute_task.py,sha256=Kx6V4Qe_Y2mtiKiUYAlGFseceKgzBdoXfuVsOouk2U4,892
69
69
  parsl/executors/globus_compute.py,sha256=p59iBrv2BvYUAZ3YZSpOrm_Wpai592ueiJm3zFS7gvY,5304
70
70
  parsl/executors/status_handling.py,sha256=aRlp0zNrkoaEQEcVoSsk6YNazzHtw0mPYy0GIaEh3qw,15744
71
71
  parsl/executors/threads.py,sha256=lX9VuaMDBg_dqAObKfeaZlYCY4-ti33U-YMWOhWFGTY,4141
72
72
  parsl/executors/flux/__init__.py,sha256=P9grTTeRPXfqXurFhlSS7XhmE6tTbnCnyQ1f9b-oYHE,136
73
73
  parsl/executors/flux/execute_parsl_task.py,sha256=zHP5M7ILGiwnoalZ8WsfVVdZM7uP4iQo2ThVh4crxpM,1530
74
- parsl/executors/flux/executor.py,sha256=NLdjOli5VjrSdEfyWbfqKN_8APvFkp_qFCouS_9NeLQ,17069
74
+ parsl/executors/flux/executor.py,sha256=UhW8R_QVYIuafrX4xOIokzl1z7p4KjFBUzser3bAxOg,16981
75
75
  parsl/executors/flux/flux_instance_manager.py,sha256=5T3Rp7ZM-mlT0Pf0Gxgs5_YmnaPrSF9ec7zvRfLfYJw,2129
76
76
  parsl/executors/high_throughput/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
77
  parsl/executors/high_throughput/errors.py,sha256=k2XuvvFdUfNs2foHFnxmS-BToRMfdXpYEa4EF3ELKq4,1554
78
- parsl/executors/high_throughput/executor.py,sha256=TpossRt_No5AwpJsg5tNQrkyUSVb1FzflPqgVo7AzsI,40407
79
- parsl/executors/high_throughput/interchange.py,sha256=DYIZkgYxliW0iNwhF8P6yMv_24KQm9Vaz3OYhzRvpyw,26152
78
+ parsl/executors/high_throughput/executor.py,sha256=Q8KpXeN9Eiv3NIJHC5zsGEqW4UO0hpLHTnPVFMUIiq4,40284
79
+ parsl/executors/high_throughput/interchange.py,sha256=ODXsNNTkaEtwCGwqa5aclXyLw7x_dEtO9mANsOUTeNE,26158
80
80
  parsl/executors/high_throughput/manager_record.py,sha256=ZMsqFxvreGLRXAw3N-JnODDa9Qfizw2tMmcBhm4lco4,490
81
81
  parsl/executors/high_throughput/manager_selector.py,sha256=UKcUE6v0tO7PDMTThpKSKxVpOpOUilxDL7UbNgpZCxo,2116
82
82
  parsl/executors/high_throughput/monitoring_info.py,sha256=HC0drp6nlXQpAop5PTUKNjdXMgtZVvrBL0JzZJebPP4,298
83
- parsl/executors/high_throughput/mpi_executor.py,sha256=P8n81Y9t5cw-YuNFgkrGtc4oG75ntBJDonUIfhkp_5I,5223
83
+ parsl/executors/high_throughput/mpi_executor.py,sha256=Tumz8VD7ujxCFjuEsJq47Ez49QqO3OMZi-So3JK3vos,5180
84
84
  parsl/executors/high_throughput/mpi_prefix_composer.py,sha256=DmpKugANNa1bdYlqQBLHkrFc15fJpefPPhW9hkAlh1s,4308
85
- parsl/executors/high_throughput/mpi_resource_management.py,sha256=73bTW2ZbHRfcrPN318cyjiqDN50AM1cOCQqUGJDIlBg,8199
85
+ parsl/executors/high_throughput/mpi_resource_management.py,sha256=KEG_yulFxEl61hZapdBsf3AejetivIBmXMkq1IkGcH0,7799
86
86
  parsl/executors/high_throughput/probe.py,sha256=QlBFwSSxMmtH-Aa2JEvCzQLddsbWZluMUxq5ypLR51E,3831
87
- parsl/executors/high_throughput/process_worker_pool.py,sha256=v-YesFPRU4-Zctyf-N8Tb9YCEqmDNNUaW66YsGsQcxo,40538
88
- parsl/executors/high_throughput/zmq_pipes.py,sha256=fANpmyvBetp0_b-qsI59yqBW8ank-PDNqThuQ3JeVl4,8183
87
+ parsl/executors/high_throughput/process_worker_pool.py,sha256=hmIiqz7tV2J35UkQjYrmqAkpZiZlfCrXxuDqv2rfSaM,40863
88
+ parsl/executors/high_throughput/zmq_pipes.py,sha256=Lr3A9Y5uyyf4VdD4L0Yontg-mNlO566k9-Ag7tXKp18,7330
89
89
  parsl/executors/radical/__init__.py,sha256=CKbtV2numw5QvgIBq1htMUrt9TqDCIC2zifyf2svTNU,186
90
- parsl/executors/radical/executor.py,sha256=e3XS4mvug1uJ6wrt4UH6hBgfbDbc-mQH3xUW2ZmBsMQ,22888
90
+ parsl/executors/radical/executor.py,sha256=eb7zgakpFBvGVlQ2NgxQlfjaql_mQQrYqqJJqbFxEno,22643
91
91
  parsl/executors/radical/rpex_resources.py,sha256=Q7-0u3K447LBCe2y7mVcdw6jqWI7SdPXxCKhkr6FoRQ,5139
92
- parsl/executors/radical/rpex_worker.py,sha256=z6r82ZujKb6sdKIdHsQ_5EBMDIQieeGcrlt6kGLFo4M,1830
92
+ parsl/executors/radical/rpex_worker.py,sha256=vl807EucEH4YgKgQ-OAP1cZPDqRwKjte3WxH2CERbo8,1796
93
93
  parsl/executors/taskvine/__init__.py,sha256=9rwp3M8B0YyEhZMLO0RHaNw7u1nc01WHbXLqnBTanu0,293
94
94
  parsl/executors/taskvine/errors.py,sha256=euIYkSslrNSI85kyi2s0xzOaO9ik4c1fYHstMIeiBJk,652
95
95
  parsl/executors/taskvine/exec_parsl_function.py,sha256=ftGdJU78lKPPkphSHlEi4rj164mhuMHJjghVqfgeXKk,7085
96
- parsl/executors/taskvine/executor.py,sha256=VBQ5wNA2t4n2tWyvEAo-T_eu84F6Q2CHsIZhorS93D4,31314
96
+ parsl/executors/taskvine/executor.py,sha256=L2k8uxyagbCiYjoDkPAgeoRlsxQNXAlOWnTDChpWp28,31538
97
97
  parsl/executors/taskvine/factory.py,sha256=GU5JryEAKJuYKwrSc162BN-lhcKhapvBZHT820pxwic,2772
98
98
  parsl/executors/taskvine/factory_config.py,sha256=ZQC5vyDe8cM0nuv7fbBCV2xnWGAZ87iLlT2UqmFFI1U,3695
99
99
  parsl/executors/taskvine/manager.py,sha256=2GKpw9bnA2NQmti1AACZ6gHRVa8MN88NBk6j5VyTUIY,25935
@@ -190,18 +190,18 @@ parsl/providers/slurm/template.py,sha256=KpgBEFMc1ps-38jdrk13xUGx9TCivu-iF90jgQD
190
190
  parsl/providers/torque/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
191
  parsl/providers/torque/template.py,sha256=4qfc2gmlEhRCAD7erFDOs4prJQ43I8s4E8DSUSVQx3A,358
192
192
  parsl/providers/torque/torque.py,sha256=QMmhJtCfrF7HQW4rJWAZ6PaQ3WWFVWJS0QSkFH0wwdo,8918
193
- parsl/serialize/__init__.py,sha256=-tQNsFsHTfWxZL6iydt08S9t8QP2rk9Q6RKnXYwbkfY,406
193
+ parsl/serialize/__init__.py,sha256=mD67d2zn0VgOxyNR3xuPnq6Go8UZ_XPIsC1hu3qDfos,226
194
194
  parsl/serialize/base.py,sha256=5GyJRr3PQohp5Zv9YQUEyes61mfUK7wTctTaXITYpSQ,1082
195
195
  parsl/serialize/concretes.py,sha256=JPWmltkm-XH2S22ugXCYWYmxwukCUEXWYKzPkKXJO60,1911
196
196
  parsl/serialize/errors.py,sha256=TmTjGI4jf8p2hH454jpp_CPbhxwPXcj5MdOMEmF6so4,1066
197
- parsl/serialize/facade.py,sha256=3uOuVp0epfyLn7qDzuWqLfsy971YVGD3sqwqcAiRwh0,6687
197
+ parsl/serialize/facade.py,sha256=D33Sia7rnJ2_ZdSBPsWBa0XDWVHOwqMe0DO4_sdXsoY,5596
198
198
  parsl/serialize/proxystore.py,sha256=o-ha9QAvVhbN8y9S1itk3W0O75eyHYZw2AvB2xu5_Lg,1624
199
199
  parsl/tests/__init__.py,sha256=VTtJzOzz_x6fWNh8IOnsgFqVbdiJShi2AZH21mcmID4,204
200
200
  parsl/tests/callables_helper.py,sha256=ceP1YYsNtrZgKT6MAIvpgdccEjQ_CpFEOnZBGHKGOx0,30
201
201
  parsl/tests/conftest.py,sha256=PqXpj1AxpPQrcKXJBQ83WIF8TIzZ4-YhAjKQPahE1Tw,15618
202
202
  parsl/tests/test_callables.py,sha256=97vrIF1_hfDGd81FM1bhR6FemZMWFcALrH6pVHMTCt8,1974
203
203
  parsl/tests/test_curvezmq.py,sha256=CmLQforq2WPYFC5OsOGh5a9ujiEFKygktZi1mpOn3XU,11239
204
- parsl/tests/test_execute_task.py,sha256=lVZEcRocBTQHOQNEp8Gq858lQiYsTb6uI2jNxEUVog8,816
204
+ parsl/tests/test_execute_task.py,sha256=IzvuDLLckrRzghjvvcsUTNXFKskNsNQeKy1Bx-NWf2k,457
205
205
  parsl/tests/test_flux.py,sha256=TxkVPjksl1usdE9Y6y2FYhdOOmYFTlbEv_V9WnvF41A,5098
206
206
  parsl/tests/test_summary.py,sha256=x1RfWCFLzHjBw2ukwoRZPW1LFCKiwDmxx86ES-6yGRA,552
207
207
  parsl/tests/test_thread_parallelism.py,sha256=TVNeQ1NkUhaf3YbbzUSH-ozFFdX_GbX-5ygommjVxvc,1653
@@ -226,7 +226,6 @@ parsl/tests/configs/local_radical_mpi.py,sha256=5OabeXXJPE0fyiA1AlGcQYoPRjQRk-HN
226
226
  parsl/tests/configs/local_threads.py,sha256=oEnQSlom_JMLFX9_Ln49JAfOP3nSMbw8gTaDJo_NYfo,202
227
227
  parsl/tests/configs/local_threads_checkpoint.py,sha256=Ex7CI1Eo6wVRsem9uXTtbVJrkKc_vOYlVvCNa2RLpIo,286
228
228
  parsl/tests/configs/local_threads_checkpoint_dfk_exit.py,sha256=ECL1n0uBsXDuW3sLCmjiwe8s3Xd7EFIj5wt446w6bh4,254
229
- parsl/tests/configs/local_threads_checkpoint_periodic.py,sha256=F2MVlwJZk-hkCgCrsAm_rKsv4mtLgsf5cyPsRoHm0ig,319
230
229
  parsl/tests/configs/local_threads_checkpoint_task_exit.py,sha256=zHKN68T-xhAVQwQp3fSWPIEcWOx-F7NBGZTOhF07iL8,256
231
230
  parsl/tests/configs/local_threads_ftp_in_task.py,sha256=c9odRbxgj1bM_ttpkWTh2Ch_MV7f5cmn-68BOjLeJ70,444
232
231
  parsl/tests/configs/local_threads_globus.py,sha256=NhY27cD4vcqLh762Ye0BINZnt63EmTyHXg7FQMffOBw,1097
@@ -238,7 +237,7 @@ parsl/tests/configs/osg_htex.py,sha256=x-C_r7Kpwvqroc4Ay1Yaya9K6_j7IU1ywqPegBU7H
238
237
  parsl/tests/configs/petrelkube.py,sha256=uUxrZrD_cF-_t6ytlRA_MUtw8RQbpW0CmNRbw3mWs1o,1699
239
238
  parsl/tests/configs/slurm_local.py,sha256=8-Zlxg4F2lXQq-_usjawkf-wen9Tu5FOFOE9N6qqh6M,737
240
239
  parsl/tests/configs/summit.py,sha256=0LbuTVmc8nl2eGiqAayhV0RCx0pg5kUpYhz9LvTFhDo,1378
241
- parsl/tests/configs/taskvine_ex.py,sha256=Nsovxtb59q6ta2opGrl7ufWcavYQtzSPrscLmaLYkUU,472
240
+ parsl/tests/configs/taskvine_ex.py,sha256=karvmnW1KY-IOq6QvdBiaC5jjmzWlz_eoJDHDUlh-5o,473
242
241
  parsl/tests/configs/user_opts.py,sha256=JcEQr1emjyTdmVDddcSGbx9df__0C2m7X3vGNbdKnpo,5858
243
242
  parsl/tests/configs/workqueue_ex.py,sha256=c-vKc1MHmU9IyIyZGuxIPKfg93lKBeNnEoWBKjoIRcg,389
244
243
  parsl/tests/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -280,7 +279,7 @@ parsl/tests/test_bash_apps/test_pipeline.py,sha256=1kQDD8-Dh5H9SKFcKHzN_mSrdxAV_
280
279
  parsl/tests/test_bash_apps/test_std_uri.py,sha256=CvAt8BUhNl2pA5chq9YyhkD6eo2IUH6PjWfe3SQ-YRU,3752
281
280
  parsl/tests/test_bash_apps/test_stdout.py,sha256=lNBzCJGst0IhKaSl8CM8-mTJ5eaK7hTlZ8gY-M2TDBU,3244
282
281
  parsl/tests/test_checkpointing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
- parsl/tests/test_checkpointing/test_periodic.py,sha256=nfMgrG7sZ8rkMu6iOHS6lp_iTU4IsOyQLQ2Gur_FMmE,1509
282
+ parsl/tests/test_checkpointing/test_periodic.py,sha256=92mHbznqkA1R3RDU7q_am1QH5jyuK--Ff6lyLdy1jeU,1732
284
283
  parsl/tests/test_checkpointing/test_python_checkpoint_1.py,sha256=bi7c6fy6P7jmrMQkQP5me-LTfwVwJGq1O9BjnmdDIKc,715
285
284
  parsl/tests/test_checkpointing/test_python_checkpoint_2.py,sha256=Q_cXeAVz_dJuDDeiemUIGd-wmb7aCY3ggpqYjRRhHRc,1089
286
285
  parsl/tests/test_checkpointing/test_regression_232.py,sha256=AsI6AJ0DcFaefAbEY9qWa41ER0VX-4yLuIdlgvBw360,2637
@@ -314,13 +313,13 @@ parsl/tests/test_htex/test_disconnected_blocks.py,sha256=3V1Ol9gMS6knjLTgIjB5Gru
314
313
  parsl/tests/test_htex/test_disconnected_blocks_failing_provider.py,sha256=eOdipRpKMOkWAXB3UtY1UjqTiwfNs_csNLve8vllG_M,2040
315
314
  parsl/tests/test_htex/test_drain.py,sha256=gYA7qzbv5ozox3clVdW0rlxAzwa_f_P0kqsAez3tIfk,2370
316
315
  parsl/tests/test_htex/test_htex.py,sha256=J1uEGezic8ziPPZsQwfK9iNiTJ53NqXMhIg9CUunjZw,4901
317
- parsl/tests/test_htex/test_interchange_exit_bad_registration.py,sha256=VWe-kj7kyvQcdUiAh3b2cZn8KWwHWIpel7bVa4XwlP0,4544
316
+ parsl/tests/test_htex/test_interchange_exit_bad_registration.py,sha256=n6M-GSI4lPDPlkl6QLDxQnT2ZHIf6cu0C1EMIBGNNbs,4532
318
317
  parsl/tests/test_htex/test_manager_failure.py,sha256=N-obuSZ8f7XA_XcddoN2LWKSVtpKUZvTHb7BFelS3iQ,1143
319
318
  parsl/tests/test_htex/test_manager_selector_by_block.py,sha256=VQqSE6MDhGpDSjShGUTbj7l9Ahuj2tC9qD--o4puF44,1310
320
319
  parsl/tests/test_htex/test_managers_command.py,sha256=SCwkfyGB-Udgu5L2yDMpR5bsaT-aNjNkiXxtuRb25DI,1622
321
320
  parsl/tests/test_htex/test_missing_worker.py,sha256=gyp5i7_t-JHyJGtz_eXZKKBY5w8oqLOIxO6cJgGJMtQ,745
322
321
  parsl/tests/test_htex/test_multiple_disconnected_blocks.py,sha256=2vXZoIx4NuAWYuiNoL5Gxr85w72qZ7Kdb3JGh0FufTg,1867
323
- parsl/tests/test_htex/test_priority_queue.py,sha256=cxeM3WNO6hm2FRST3C_qCfejzXeYZMdim4ztRCwJMw8,2177
322
+ parsl/tests/test_htex/test_priority_queue.py,sha256=sAs9W4I0LsmvPpuN9Q66yRY4zoSOEo0eMFh6DXlih0I,2336
324
323
  parsl/tests/test_htex/test_resource_spec_validation.py,sha256=ZXW02jDd1rNxjBLh1jHyiz31zNoB9JzDw94aWllXFd4,1102
325
324
  parsl/tests/test_htex/test_worker_failure.py,sha256=Uz-RHI-LK78FMjXUvrUFmo4iYfmpDVBUcBxxRb3UG9M,603
326
325
  parsl/tests/test_htex/test_zmq_binding.py,sha256=SmX_63vvXKnzWISBr8HnJCrRqubx7K0blvgjq4Px2gc,4391
@@ -343,7 +342,7 @@ parsl/tests/test_mpi_apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
343
342
  parsl/tests/test_mpi_apps/test_bad_mpi_config.py,sha256=QKvEUSrHIBrvqu2fRj1MAqxsYxDfcrdQ7dzWdOZejuU,1320
344
343
  parsl/tests/test_mpi_apps/test_mpi_mode_enabled.py,sha256=_fpiaDq9yEUuBxTiuxLFsBt5r1oX9S-3S-YL5yRB13E,5423
345
344
  parsl/tests/test_mpi_apps/test_mpi_prefix.py,sha256=yJslZvYK3JeL9UgxMwF9DDPR9QD4zJLGVjubD0F-utc,1950
346
- parsl/tests/test_mpi_apps/test_mpi_scheduler.py,sha256=LPvk5wywYANQNCoQ8muwOLEznnZqwler4jJglinAT9I,7370
345
+ parsl/tests/test_mpi_apps/test_mpi_scheduler.py,sha256=ePjidjiMYhDoy-iUsqU13Qb5QPBFzLayKrMyNRkoR6I,5619
347
346
  parsl/tests/test_mpi_apps/test_mpiex.py,sha256=mlFdHK3A1B6NsEhxTQQX8lhs9qVza36FMG99vNrBRW4,2021
348
347
  parsl/tests/test_mpi_apps/test_resource_spec.py,sha256=5k6HM2jtb6sa7jetpI-Tl1nPQiN33VLaM7YT10c307E,3756
349
348
  parsl/tests/test_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -394,6 +393,7 @@ parsl/tests/test_regression/test_1653.py,sha256=eMXPfTALwQ7k2pGpar-kYed8yKtOj2U2
394
393
  parsl/tests/test_regression/test_221.py,sha256=jOS0EVu_2sbh10eg5hnivPvhNt0my_50vQ7jQYS1Bfg,520
395
394
  parsl/tests/test_regression/test_226.py,sha256=tVqGAU99RRQqz9KuMgeLVoddot2pRqG2y4daW44RrlE,1110
396
395
  parsl/tests/test_regression/test_2652.py,sha256=R_ZoX7Vgz4H2ionhjm_KWFW-vWt_MlgWV_zdTsT68M0,848
396
+ parsl/tests/test_regression/test_3874.py,sha256=8MCxwyh9CXuB7tDgaHg6goclq6Hhrh_ryaQuKLLiLgU,1171
397
397
  parsl/tests/test_regression/test_69a.py,sha256=sRkMT95b7WvFAK1hUy7eNwKnzFNqaX9qESdNmoh0rAo,1902
398
398
  parsl/tests/test_regression/test_97_parallelism_0.py,sha256=Fe58KFhQpZuU982IP9ZSpKBb_Jpftv9pJjH73f8_ec8,1592
399
399
  parsl/tests/test_regression/test_98.py,sha256=E7dituuonKN5uWocZkJYZlaE5x5rDM4MZlv2PloAKzY,452
@@ -412,7 +412,6 @@ parsl/tests/test_serialization/test_2555_caching_deserializer.py,sha256=jEXJvbri
412
412
  parsl/tests/test_serialization/test_3495_deserialize_managerlost.py,sha256=GoMtK6BmARicawzYR2eQj5jUSL9RZ_tHV3g19BdQuQ8,1144
413
413
  parsl/tests/test_serialization/test_basic.py,sha256=4_1Rkq5tNl9EC0nfneF8kHTws7I0E6ovE_0DE97BEfU,544
414
414
  parsl/tests/test_serialization/test_htex_code_cache.py,sha256=dd0XwlNDn6Lgj6-nHHjYWzl1FnhFLY_8Buxj77dyZ28,1840
415
- parsl/tests/test_serialization/test_pack_resource_spec.py,sha256=-Vtyh8KyezZw8e7M2Z4m3LawY1Au4U-H3KRmVKXSut0,641
416
415
  parsl/tests/test_serialization/test_proxystore_configured.py,sha256=lGWOSEWul16enDWhW-s7CK0d3eMDzm1324Fmj0cZMVU,2293
417
416
  parsl/tests/test_serialization/test_proxystore_impl.py,sha256=uGd45sfPm9rJhzqKV0rI3lqdSOAUddQf-diEpcJAlcY,1228
418
417
  parsl/tests/test_shutdown/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -452,13 +451,13 @@ parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
452
451
  parsl/usage_tracking/api.py,sha256=iaCY58Dc5J4UM7_dJzEEs871P1p1HdxBMtNGyVdzc9g,1821
453
452
  parsl/usage_tracking/levels.py,sha256=xbfzYEsd55KiZJ-mzNgPebvOH4rRHum04hROzEf41tU,291
454
453
  parsl/usage_tracking/usage.py,sha256=hbMo5BYgIWqMcFWqN-HYP1TbwNrTonpv-usfwnCFJKY,9212
455
- parsl-2025.9.15.data/scripts/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
456
- parsl-2025.9.15.data/scripts/interchange.py,sha256=ZAX7oUrTesSbXSu771fBN1Vm-7eAbMvfp5SjLRggt8E,26139
457
- parsl-2025.9.15.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
458
- parsl-2025.9.15.data/scripts/process_worker_pool.py,sha256=-5VLVjeab6oROulx7OwI9tdNNHd6uap45I1jltm-UDc,40524
459
- parsl-2025.9.15.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
460
- parsl-2025.9.15.dist-info/METADATA,sha256=izlhMELBLUU4kbZ6vS0RigWGAjqv--7yoDthEFkwkW4,4055
461
- parsl-2025.9.15.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
462
- parsl-2025.9.15.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
463
- parsl-2025.9.15.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
464
- parsl-2025.9.15.dist-info/RECORD,,
454
+ parsl-2025.9.29.data/scripts/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
455
+ parsl-2025.9.29.data/scripts/interchange.py,sha256=Kn0yJnpcRsc37gfhD6mGkoX9wD7vP_QgWst7qwUjj5o,26145
456
+ parsl-2025.9.29.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
457
+ parsl-2025.9.29.data/scripts/process_worker_pool.py,sha256=RXV_w5O2XSb_ySJOXacGQlrR6-HdPuNkGMcaiR93i4M,40849
458
+ parsl-2025.9.29.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
459
+ parsl-2025.9.29.dist-info/METADATA,sha256=pWkSrPV2137jfgCpUVJYaoh-o0ZOk0O0SADK2rk9ubA,4006
460
+ parsl-2025.9.29.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
461
+ parsl-2025.9.29.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
462
+ parsl-2025.9.29.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
463
+ parsl-2025.9.29.dist-info/RECORD,,
@@ -1,11 +0,0 @@
1
- from parsl.config import Config
2
- from parsl.executors.threads import ThreadPoolExecutor
3
-
4
-
5
- def fresh_config():
6
- tpe = ThreadPoolExecutor(label='local_threads_checkpoint_periodic', max_threads=1)
7
- return Config(
8
- executors=[tpe],
9
- checkpoint_mode='periodic',
10
- checkpoint_period='00:00:02'
11
- )