parsl 2024.4.29__py3-none-any.whl → 2024.5.13__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/dataflow/dflow.py CHANGED
@@ -177,11 +177,9 @@ class DataFlowKernel:
177
177
 
178
178
  # this must be set before executors are added since add_executors calls
179
179
  # job_status_poller.add_executors.
180
- radio = self.monitoring.radio if self.monitoring else None
181
180
  self.job_status_poller = JobStatusPoller(strategy=self.config.strategy,
182
181
  strategy_period=self.config.strategy_period,
183
- max_idletime=self.config.max_idletime,
184
- monitoring=radio)
182
+ max_idletime=self.config.max_idletime)
185
183
 
186
184
  self.executors: Dict[str, ParslExecutor] = {}
187
185
 
@@ -1179,12 +1177,9 @@ class DataFlowKernel:
1179
1177
  self.job_status_poller.add_executors(block_executors)
1180
1178
 
1181
1179
  def atexit_cleanup(self) -> None:
1182
- if not self.cleanup_called:
1183
- logger.warning("Python is exiting with a DFK still running. "
1184
- "You should call parsl.dfk().cleanup() before "
1185
- "exiting to release any resources")
1186
- else:
1187
- logger.info("python process is exiting, but DFK has already been cleaned up")
1180
+ logger.warning("Python is exiting with a DFK still running. "
1181
+ "You should call parsl.dfk().cleanup() before "
1182
+ "exiting to release any resources")
1188
1183
 
1189
1184
  def wait_for_current_tasks(self) -> None:
1190
1185
  """Waits for all tasks in the task list to be completed, by waiting for their
@@ -1272,6 +1267,10 @@ class DataFlowKernel:
1272
1267
  self.monitoring.close()
1273
1268
  logger.info("Terminated monitoring")
1274
1269
 
1270
+ logger.info("Unregistering atexit hook")
1271
+ atexit.unregister(self.atexit_cleanup)
1272
+ logger.info("Unregistered atexit hook")
1273
+
1275
1274
  logger.info("DFK cleanup complete")
1276
1275
 
1277
1276
  def checkpoint(self, tasks: Optional[Sequence[TaskRecord]] = None) -> str:
@@ -310,6 +310,8 @@ class Interchange:
310
310
  'tasks': len(m['tasks']),
311
311
  'idle_duration': idle_duration,
312
312
  'active': m['active'],
313
+ 'parsl_version': m['parsl_version'],
314
+ 'python_version': m['python_version'],
313
315
  'draining': m['draining']}
314
316
  reply.append(resp)
315
317
 
@@ -435,6 +437,8 @@ class Interchange:
435
437
  'worker_count': 0,
436
438
  'active': True,
437
439
  'draining': False,
440
+ 'parsl_version': msg['parsl_v'],
441
+ 'python_version': msg['python_v'],
438
442
  'tasks': []}
439
443
  self.connected_block_history.append(msg['block_id'])
440
444
 
@@ -14,3 +14,5 @@ class ManagerRecord(TypedDict, total=False):
14
14
  last_heartbeat: float
15
15
  idle_since: Optional[float]
16
16
  timestamp: datetime
17
+ parsl_version: str
18
+ python_version: str
@@ -43,9 +43,6 @@ class BlockProviderExecutor(ParslExecutor):
43
43
  invoking scale_out, but it will not initialize the blocks requested by
44
44
  any init_blocks parameter. Subclasses must implement that behaviour
45
45
  themselves.
46
-
47
- BENC: TODO: block error handling: maybe I want this more user pluggable?
48
- I'm not sure of use cases for switchability at the moment beyond "yes or no"
49
46
  """
50
47
  def __init__(self, *,
51
48
  provider: Optional[ExecutionProvider],
@@ -4,7 +4,6 @@ high-throughput system for delegating Parsl tasks to thousands of remote machine
4
4
  """
5
5
 
6
6
  # Import Python built-in libraries
7
- import atexit
8
7
  import threading
9
8
  import multiprocessing
10
9
  import logging
@@ -180,24 +179,6 @@ class TaskVineExecutor(BlockProviderExecutor, putils.RepresentationMixin):
180
179
  else:
181
180
  self._poncho_available = True
182
181
 
183
- # Register atexit handler to cleanup when Python shuts down
184
- atexit.register(self.atexit_cleanup)
185
-
186
- # Attribute indicating whether this executor was started to shut it down properly.
187
- # This safeguards cases where an object of this executor is created but
188
- # the executor never starts, so it shouldn't be shutdowned.
189
- self._is_started = False
190
-
191
- # Attribute indicating whether this executor was shutdown before.
192
- # This safeguards cases where this object is automatically shut down (e.g.,
193
- # via atexit) and the user also explicitly calls shut down. While this is
194
- # permitted, the effect of an executor shutdown should happen only once.
195
- self._is_shutdown = False
196
-
197
- def atexit_cleanup(self):
198
- # Calls this executor's shutdown method upon Python exiting the process.
199
- self.shutdown()
200
-
201
182
  def _get_launch_command(self, block_id):
202
183
  # Implements BlockProviderExecutor's abstract method.
203
184
  # This executor uses different terminology for worker/launch
@@ -257,9 +238,6 @@ class TaskVineExecutor(BlockProviderExecutor, putils.RepresentationMixin):
257
238
  retrieve Parsl tasks within the TaskVine system.
258
239
  """
259
240
 
260
- # Mark this executor object as started
261
- self._is_started = True
262
-
263
241
  # Synchronize connection and communication settings between the manager and factory
264
242
  self.__synchronize_manager_factory_comm_settings()
265
243
 
@@ -618,14 +596,6 @@ class TaskVineExecutor(BlockProviderExecutor, putils.RepresentationMixin):
618
596
  """Shutdown the executor. Sets flag to cancel the submit process and
619
597
  collector thread, which shuts down the TaskVine system submission.
620
598
  """
621
- if not self._is_started:
622
- # Don't shutdown if the executor never starts.
623
- return
624
-
625
- if self._is_shutdown:
626
- # Don't shutdown this executor again.
627
- return
628
-
629
599
  logger.debug("TaskVine shutdown started")
630
600
  self._should_stop.set()
631
601
 
@@ -650,7 +620,6 @@ class TaskVineExecutor(BlockProviderExecutor, putils.RepresentationMixin):
650
620
  self._finished_task_queue.close()
651
621
  self._finished_task_queue.join_thread()
652
622
 
653
- self._is_shutdown = True
654
623
  logger.debug("TaskVine shutdown completed")
655
624
 
656
625
  @wrap_with_logs
@@ -3,7 +3,6 @@ Cooperative Computing Lab (CCL) at Notre Dame to provide a fault-tolerant,
3
3
  high-throughput system for delegating Parsl tasks to thousands of remote machines
4
4
  """
5
5
 
6
- import atexit
7
6
  import threading
8
7
  import multiprocessing
9
8
  import logging
@@ -298,24 +297,6 @@ class WorkQueueExecutor(BlockProviderExecutor, putils.RepresentationMixin):
298
297
  if self.init_command != "":
299
298
  self.launch_cmd = self.init_command + "; " + self.launch_cmd
300
299
 
301
- # register atexit handler to cleanup when Python shuts down
302
- atexit.register(self.atexit_cleanup)
303
-
304
- # Attribute indicating whether this executor was started to shut it down properly.
305
- # This safeguards cases where an object of this executor is created but
306
- # the executor never starts, so it shouldn't be shutdowned.
307
- self.is_started = False
308
-
309
- # Attribute indicating whether this executor was shutdown before.
310
- # This safeguards cases where this object is automatically shut down (e.g.,
311
- # via atexit) and the user also explicitly calls shut down. While this is
312
- # permitted, the effect of an executor shutdown should happen only once.
313
- self.is_shutdown = False
314
-
315
- def atexit_cleanup(self):
316
- # Calls this executor's shutdown method upon Python exiting the process.
317
- self.shutdown()
318
-
319
300
  def _get_launch_command(self, block_id):
320
301
  # this executor uses different terminology for worker/launch
321
302
  # commands than in htex
@@ -325,8 +306,6 @@ class WorkQueueExecutor(BlockProviderExecutor, putils.RepresentationMixin):
325
306
  """Create submit process and collector thread to create, send, and
326
307
  retrieve Parsl tasks within the Work Queue system.
327
308
  """
328
- # Mark this executor object as started
329
- self.is_started = True
330
309
  self.tasks_lock = threading.Lock()
331
310
 
332
311
  # Create directories for data and results
@@ -713,14 +692,6 @@ class WorkQueueExecutor(BlockProviderExecutor, putils.RepresentationMixin):
713
692
  """Shutdown the executor. Sets flag to cancel the submit process and
714
693
  collector thread, which shuts down the Work Queue system submission.
715
694
  """
716
- if not self.is_started:
717
- # Don't shutdown if the executor never starts.
718
- return
719
-
720
- if self.is_shutdown:
721
- # Don't shutdown this executor again.
722
- return
723
-
724
695
  logger.debug("Work Queue shutdown started")
725
696
  self.should_stop.value = True
726
697
 
@@ -741,7 +712,6 @@ class WorkQueueExecutor(BlockProviderExecutor, putils.RepresentationMixin):
741
712
  self.collector_queue.close()
742
713
  self.collector_queue.join_thread()
743
714
 
744
- self.is_shutdown = True
745
715
  logger.debug("Work Queue shutdown completed")
746
716
 
747
717
  @wrap_with_logs
@@ -1,5 +1,4 @@
1
1
  import logging
2
- import parsl
3
2
  from typing import List, Sequence, Optional, Union
4
3
 
5
4
  from parsl.jobs.strategy import Strategy
@@ -14,8 +13,7 @@ logger = logging.getLogger(__name__)
14
13
 
15
14
  class JobStatusPoller(Timer):
16
15
  def __init__(self, *, strategy: Optional[str], max_idletime: float,
17
- strategy_period: Union[float, int],
18
- monitoring: Optional["parsl.monitoring.radios.MonitoringRadio"] = None) -> None:
16
+ strategy_period: Union[float, int]) -> None:
19
17
  self._executors = [] # type: List[BlockProviderExecutor]
20
18
  self._strategy = Strategy(strategy=strategy,
21
19
  max_idletime=max_idletime)
@@ -244,6 +244,7 @@ class MonitoringHub(RepresentationMixin):
244
244
  self.router_exit_event.set()
245
245
  logger.info("Waiting for router to terminate")
246
246
  self.router_proc.join()
247
+ self.router_proc.close()
247
248
  logger.debug("Finished waiting for router termination")
248
249
  if len(exception_msgs) == 0:
249
250
  logger.debug("Sending STOP to DBM")
@@ -252,6 +253,7 @@ class MonitoringHub(RepresentationMixin):
252
253
  logger.debug("Not sending STOP to DBM, because there were DBM exceptions")
253
254
  logger.debug("Waiting for DB termination")
254
255
  self.dbm_proc.join()
256
+ self.dbm_proc.close()
255
257
  logger.debug("Finished waiting for DBM termination")
256
258
 
257
259
  # should this be message based? it probably doesn't need to be if
@@ -259,6 +261,7 @@ class MonitoringHub(RepresentationMixin):
259
261
  logger.info("Terminating filesystem radio receiver process")
260
262
  self.filesystem_proc.terminate()
261
263
  self.filesystem_proc.join()
264
+ self.filesystem_proc.close()
262
265
 
263
266
  logger.info("Closing monitoring multiprocessing queues")
264
267
  self.exception_q.close()
@@ -177,7 +177,7 @@ class UDPRadio(MonitoringRadio):
177
177
 
178
178
 
179
179
  class MultiprocessingQueueRadio(MonitoringRadio):
180
- """A monitoring radio intended which connects over a multiprocessing Queue.
180
+ """A monitoring radio which connects over a multiprocessing Queue.
181
181
  This radio is intended to be used on the submit side, where components
182
182
  in the submit process, or processes launched by multiprocessing, will have
183
183
  access to a Queue shared with the monitoring database code (bypassing the
@@ -7,9 +7,7 @@ from parsl.channels import LocalChannel
7
7
  from parsl.jobs.states import JobState, JobStatus
8
8
  from parsl.launchers import SingleNodeLauncher
9
9
  from parsl.providers.pbspro.template import template_string
10
- from parsl.providers import TorqueProvider
11
-
12
- from parsl.providers.torque.torque import translate_table
10
+ from parsl.providers.torque.torque import TorqueProvider, translate_table
13
11
 
14
12
  logger = logging.getLogger(__name__)
15
13
 
@@ -0,0 +1,40 @@
1
+ import pytest
2
+ import logging
3
+
4
+ import sys
5
+ import parsl
6
+ from parsl.app.app import python_app
7
+ from parsl.tests.configs.htex_local import fresh_config
8
+
9
+
10
+ def local_setup():
11
+ config = fresh_config()
12
+ config.executors[0].poll_period = 1
13
+ config.executors[0].max_workers_per_node = 1
14
+ parsl.load(config)
15
+
16
+
17
+ def local_teardown():
18
+ parsl.dfk().cleanup()
19
+ parsl.clear()
20
+
21
+
22
+ @python_app
23
+ def dummy():
24
+ pass
25
+
26
+
27
+ @pytest.mark.local
28
+ def test_connected_managers():
29
+
30
+ # Run dummy function to ensure a manager is online
31
+ x = dummy()
32
+ assert x.result() is None
33
+ executor = parsl.dfk().executors['htex_local']
34
+ manager_info_list = executor.connected_managers()
35
+ assert len(manager_info_list) == 1
36
+ manager_info = manager_info_list[0]
37
+ assert 'python_version' in manager_info
38
+ assert 'parsl_version' in manager_info
39
+ assert manager_info['parsl_version'] == parsl.__version__
40
+ assert manager_info['python_version'] == f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}"
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 = '2024.04.29'
6
+ VERSION = '2024.05.13'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsl
3
- Version: 2024.4.29
3
+ Version: 2024.5.13
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.29.tar.gz
6
+ Download-URL: https://github.com/Parsl/parsl/archive/2024.05.13.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=hakfdg-sgxEjwloZeDrt6EhzwdzecvjJhkPHHxh8lII,1938
8
8
  parsl/process_loggers.py,sha256=1G3Rfrh5wuZNo2X03grG4kTYPGOxz7hHCyG6L_A3b0A,1137
9
9
  parsl/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  parsl/utils.py,sha256=DUPrl9ZdzwJzz2rmlRws77OMs43iQo_CT-Kr3uJs-fo,11202
11
- parsl/version.py,sha256=ZkQP1dxgTC3ws9wp7Qeu8XyvkriqFeJIGzAfXff0J3M,131
11
+ parsl/version.py,sha256=GPg3uad5Hzzr8oht4bIZGZh6q3lGRIOc-tORHF3ATgs,131
12
12
  parsl/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  parsl/app/app.py,sha256=wAHchJetgnicT1pn0NJKDeDX0lV3vDFlG8cQd_Ciax4,8522
14
14
  parsl/app/bash.py,sha256=VufxGROrlJB3dP03syNutU0x8rLzfI-gooWwBZ4FFQ8,5676
@@ -61,7 +61,7 @@ parsl/data_provider/rsync.py,sha256=2-ZxqrT-hBj39x082NusJaBqsGW4Jd2qCW6JkVPpEl0,
61
61
  parsl/data_provider/staging.py,sha256=l-mAXFburs3BWPjkSmiQKuAgJpsxCG62yATPDbrafYI,4523
62
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=oKlzZlhftcHN2l1Pgh6EhZx1kWTmD8WnfPTGlk1decI,66037
64
+ parsl/dataflow/dflow.py,sha256=lyZLOzlAOWYt8OvINM9Vv4Id3KpqM_zkNz6R9ZynjiA,65896
65
65
  parsl/dataflow/errors.py,sha256=w2vOt_ymzG2dOqJUO4IDcmTlrCIHlMZL8nBVyVq0O_8,2176
66
66
  parsl/dataflow/futures.py,sha256=XGgaoaT3N2U3vvZ7DEoLkGBrZscq_VzffZ9goLB87ko,6081
67
67
  parsl/dataflow/memoization.py,sha256=AsJO6c6cRp2ac6H8uGn2USlEi78_nX3QWvpxYt4XdYE,9583
@@ -71,7 +71,7 @@ parsl/dataflow/taskrecord.py,sha256=bzIBmlDTsRrELtB9PUQwxTWcwrCd8aMsUAzvijle1eo,
71
71
  parsl/executors/__init__.py,sha256=J50N97Nm9YRjz6K0oNXDxUYIsDjL43_tp3LVb2w7n-M,381
72
72
  parsl/executors/base.py,sha256=Kvui8yDPzz7yQpm9qSkMdhQS4eu0tQTkVZ99j6HGgA4,5087
73
73
  parsl/executors/errors.py,sha256=xVswxgi7vmJcUMCeYDAPK8sQT2kHFFROVoOr0dnmcWE,2098
74
- parsl/executors/status_handling.py,sha256=3kJAbgXSZbbj8uN72Gu08PSUnxMrT5np1I-ihLyM6E8,13631
74
+ parsl/executors/status_handling.py,sha256=QNFfa2aGkbVYvdkF7KvB00uM7psNf0lRExFmHmvqbYk,13472
75
75
  parsl/executors/threads.py,sha256=bMU3JFghm17Lpcua13pr3NgQhkUDDc2mqvF2yJBrVNQ,3353
76
76
  parsl/executors/flux/__init__.py,sha256=P9grTTeRPXfqXurFhlSS7XhmE6tTbnCnyQ1f9b-oYHE,136
77
77
  parsl/executors/flux/execute_parsl_task.py,sha256=yUG_WjZLcX8LrgPl26mpEBWZhQMlVNbRLGu08yIjdf4,1553
@@ -80,8 +80,8 @@ parsl/executors/flux/flux_instance_manager.py,sha256=tTEOATClm9SwdgLeBRWPC6D55iN
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
82
  parsl/executors/high_throughput/executor.py,sha256=Er0QUG-HNatDPVBsLYZbbEStyNJsu4oE9UQ7LtQYH7w,37318
83
- parsl/executors/high_throughput/interchange.py,sha256=Rt6HyFvQYFuqUJ1ytXmUFTDIK9wOBm4l96IHoL6OFRc,31491
84
- parsl/executors/high_throughput/manager_record.py,sha256=w5EwzVqPtsLOyOW8jP44U3uaogt8H--tkwp7FNyKN_o,385
83
+ parsl/executors/high_throughput/interchange.py,sha256=ovs_boredW4X0R7oNCGnf8scgtA0ow6fmdCKliWOyBk,31803
84
+ parsl/executors/high_throughput/manager_record.py,sha256=W1K_rxU1c76qX-uxw62uGzgsDuxnZwdpYTTH5VwKRFg,432
85
85
  parsl/executors/high_throughput/monitoring_info.py,sha256=3gQpwQjjNDEBz0cQqJZB6hRiwLiWwXs83zkQDmbOwxY,297
86
86
  parsl/executors/high_throughput/mpi_prefix_composer.py,sha256=GPSejuNL407gvzw9f7dTWArTLn6heTi-erJjgcM-_8Y,4273
87
87
  parsl/executors/high_throughput/mpi_resource_management.py,sha256=geLYmp2teKYgTnzATAR_JPtjAa0ysu6pHpXs90vwkds,7975
@@ -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=M-2Uf34lYwa5lzoMIwqR__QXcE1anvGgUJWggEzT2pQ,33024
99
+ parsl/executors/taskvine/executor.py,sha256=L1TszrOcKuKl9ewjD1M85MG268fxlVz1D08mlQgPNwc,31806
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,13 +105,13 @@ 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=rSjQ4VWQyX9wvuwQ70ALvRYhz_d9La731eZGqgPR3uU,50523
108
+ parsl/executors/workqueue/executor.py,sha256=uN1y-Zo_Slhg005Z9Z8RXKEf3rSwuv-za6S1xdATQ-U,49312
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
112
112
  parsl/jobs/error_handlers.py,sha256=WcWZUA7KyE1ocX5zrMf_EwqOob8Jb7uHMjD3nlb_BUo,2319
113
113
  parsl/jobs/errors.py,sha256=cpSQXCrlKtuHsQf7usjF-lX8XsDkFnE5kWpmFjiN6OU,178
114
- parsl/jobs/job_status_poller.py,sha256=RbVnHF-574ETiMKAD07FJdtNe8I5Uw9knhNlBgKx66k,2297
114
+ parsl/jobs/job_status_poller.py,sha256=0bnl3fUG-Cs5nEImxQ_iiTslNUkZ_9788t9UxvQO4wg,2195
115
115
  parsl/jobs/states.py,sha256=rPBoAEEudKngWFijlwvXXhAagDs_9DCXvQP9rwzVgCM,4855
116
116
  parsl/jobs/strategy.py,sha256=U5wDSqerRf94l16g2sDkf1jj1hsMmMYOZ6p0l0bqEO0,13799
117
117
  parsl/launchers/__init__.py,sha256=k8zAB3IBP-brfqXUptKwGkvsIRaXjAJZNBJa2XVtY1A,546
@@ -121,8 +121,8 @@ 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=DWPhuxw698pHePUbT_UJdjICoAAST-Y6t9rT8H01dqA,13462
125
- parsl/monitoring/radios.py,sha256=F1IML-IvFJxL93rvWBqwTisRprTs1zW1lFVWMog-LRE,5858
124
+ parsl/monitoring/monitoring.py,sha256=unr0rYjgkmdqApAyXfu0aeBAcUGGjVz8YBfRZ2LyXgo,13574
125
+ parsl/monitoring/radios.py,sha256=fQ1zpxSLPmDcf9WOXZk3eTeFUWWS2rmSesena7jjmko,5849
126
126
  parsl/monitoring/remote.py,sha256=0wqANMcuvq3dpja3agdbOzD72n5oUYp7PcNKyLCC35E,13923
127
127
  parsl/monitoring/router.py,sha256=92krSS8xIWDQuxJMxQ3D_gbLcqgKymxr3HVJwAImdrw,9557
128
128
  parsl/monitoring/types.py,sha256=SO6Fjjbb83sv_MtbutoxGssiWh6oXKkEEsD4EvwOnZ4,629
@@ -181,7 +181,7 @@ parsl/providers/lsf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
181
181
  parsl/providers/lsf/lsf.py,sha256=AECVpjl_CTreE-APFQSjMVVIb3HheG6zculJn-zYtdM,11502
182
182
  parsl/providers/lsf/template.py,sha256=leQ_TpXv7ePMzbHfLaWvqMR0VORxlp-hjX5JxtkcwwU,269
183
183
  parsl/providers/pbspro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
184
- parsl/providers/pbspro/pbspro.py,sha256=Uo6XvXZ3HwotfvrzFtaE1Wf4pta1LoqM4GgkQUTXv4A,8822
184
+ parsl/providers/pbspro/pbspro.py,sha256=lTRCUXGBpZHbEDLTvJRS6MKDkmQII9wXYAEif6rNirc,8794
185
185
  parsl/providers/pbspro/template.py,sha256=y-Dher--t5Eury-c7cAuSZs9FEUXWiruFUI07v81558,315
186
186
  parsl/providers/slurm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
187
187
  parsl/providers/slurm/slurm.py,sha256=HnDZk2owmNz_r6Spwlu233HbQLo9dWePy3KD4CXXRRs,13916
@@ -341,6 +341,7 @@ parsl/tests/test_htex/test_disconnected_blocks.py,sha256=iga7wmhGACwUN6gkEFPw1dL
341
341
  parsl/tests/test_htex/test_drain.py,sha256=BvPQIo0xx-z191eVR2rG51x22yzqD-6dLSH7bCAUhOg,2288
342
342
  parsl/tests/test_htex/test_htex.py,sha256=4dXtcthZQvgEDtMc00g6Pw7FnqNWB_0j8fuJqHKO-IE,3896
343
343
  parsl/tests/test_htex/test_manager_failure.py,sha256=gemQopZoDEoZLOvep5JZkY6tQlZoko8Z0Kmpj1-Gbws,1161
344
+ parsl/tests/test_htex/test_managers_command.py,sha256=aOXRaOXna9cnFmFinujv7ohSYDbX6esk1JtHfsUkAlk,1022
344
345
  parsl/tests/test_htex/test_missing_worker.py,sha256=R8FaUNnpmXY9E_ZCC797La4jWsJvp136xBhLY9yIgyU,818
345
346
  parsl/tests/test_htex/test_multiple_disconnected_blocks.py,sha256=L4vw_Mo-upp2p9-TyPDfluNJJQ2BxHHNXgS3xhhuE28,1993
346
347
  parsl/tests/test_htex/test_worker_failure.py,sha256=Uz-RHI-LK78FMjXUvrUFmo4iYfmpDVBUcBxxRb3UG9M,603
@@ -454,12 +455,12 @@ parsl/tests/unit/test_file.py,sha256=vLycnYcv3bvSzL-FV8WdoibqTyb41BrH1LUYBavobsg
454
455
  parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
455
456
  parsl/usage_tracking/api.py,sha256=V_IMgpxUloP--MtlZGY5Uf6SfHVQSPP8poa3PedOs_I,1822
456
457
  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,,
458
+ parsl-2024.5.13.data/scripts/exec_parsl_function.py,sha256=NtWNeBvRqksej38eRPw8zPBJ1CeW6vgaitve0tfz_qc,7801
459
+ parsl-2024.5.13.data/scripts/parsl_coprocess.py,sha256=Y7Tc-h9WGui-YDe3w_h91w2Sm1JNL1gJ9kAV4PE_gw8,5722
460
+ parsl-2024.5.13.data/scripts/process_worker_pool.py,sha256=31tyTtU7hrrsatGReuCbLM-3GWkaYK1bvlFE1MhKYQg,41253
461
+ parsl-2024.5.13.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
462
+ parsl-2024.5.13.dist-info/METADATA,sha256=NGWrcVMikzUIXBsaxN1mKa8ItjN_LdgNE3bfu_eKN8g,4012
463
+ parsl-2024.5.13.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
464
+ parsl-2024.5.13.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
465
+ parsl-2024.5.13.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
466
+ parsl-2024.5.13.dist-info/RECORD,,