parsl 2024.9.2__py3-none-any.whl → 2024.9.9__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.
@@ -199,9 +199,6 @@ class HighThroughputExecutor(BlockProviderExecutor, RepresentationMixin, UsageIn
199
199
  will check the available memory at startup and limit the number of workers such that
200
200
  the there's sufficient memory for each worker. Default: None
201
201
 
202
- max_workers : int
203
- Deprecated. Please use max_workers_per_node instead.
204
-
205
202
  max_workers_per_node : int
206
203
  Caps the number of workers launched per node. Default: None
207
204
 
@@ -239,7 +236,6 @@ class HighThroughputExecutor(BlockProviderExecutor, RepresentationMixin, UsageIn
239
236
  worker_debug: bool = False,
240
237
  cores_per_worker: float = 1.0,
241
238
  mem_per_worker: Optional[float] = None,
242
- max_workers: Optional[Union[int, float]] = None,
243
239
  max_workers_per_node: Optional[Union[int, float]] = None,
244
240
  cpu_affinity: str = 'none',
245
241
  available_accelerators: Union[int, Sequence[str]] = (),
@@ -272,9 +268,7 @@ class HighThroughputExecutor(BlockProviderExecutor, RepresentationMixin, UsageIn
272
268
  else:
273
269
  self.all_addresses = ','.join(get_all_addresses())
274
270
 
275
- if max_workers:
276
- self._warn_deprecated("max_workers", "max_workers_per_node")
277
- self.max_workers_per_node = max_workers_per_node or max_workers or float("inf")
271
+ self.max_workers_per_node = max_workers_per_node or float("inf")
278
272
 
279
273
  mem_slots = self.max_workers_per_node
280
274
  cpu_slots = self.max_workers_per_node
@@ -335,16 +329,6 @@ class HighThroughputExecutor(BlockProviderExecutor, RepresentationMixin, UsageIn
335
329
  stacklevel=2
336
330
  )
337
331
 
338
- @property
339
- def max_workers(self):
340
- self._warn_deprecated("max_workers", "max_workers_per_node")
341
- return self.max_workers_per_node
342
-
343
- @max_workers.setter
344
- def max_workers(self, val: Union[int, float]):
345
- self._warn_deprecated("max_workers", "max_workers_per_node")
346
- self.max_workers_per_node = val
347
-
348
332
  @property
349
333
  def logdir(self):
350
334
  return "{}/{}".format(self.run_dir, self.label)
@@ -3,6 +3,7 @@ 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 getpass
6
7
  import hashlib
7
8
  import inspect
8
9
  import itertools
@@ -18,6 +19,7 @@ import tempfile
18
19
  import threading
19
20
  import uuid
20
21
  from concurrent.futures import Future
22
+ from datetime import datetime
21
23
  from typing import List, Literal, Optional, Union
22
24
 
23
25
  # Import other libraries
@@ -215,9 +217,9 @@ class TaskVineExecutor(BlockProviderExecutor, putils.RepresentationMixin):
215
217
 
216
218
  # Create directories for data and results
217
219
  log_dir = os.path.join(run_dir, self.label)
218
- self._function_data_dir = os.path.join(run_dir, self.label, "function_data")
219
220
  os.makedirs(log_dir)
220
- os.makedirs(self._function_data_dir)
221
+ tmp_prefix = f'{self.label}-{getpass.getuser()}-{datetime.now().strftime("%Y%m%d%H%M%S%f")}-'
222
+ self._function_data_dir = tempfile.TemporaryDirectory(prefix=tmp_prefix)
221
223
 
222
224
  # put TaskVine logs outside of a Parsl run as TaskVine caches between runs while
223
225
  # Parsl does not.
@@ -227,7 +229,7 @@ class TaskVineExecutor(BlockProviderExecutor, putils.RepresentationMixin):
227
229
 
228
230
  # factory logs go with manager logs regardless
229
231
  self.factory_config.scratch_dir = self.manager_config.vine_log_dir
230
- logger.debug(f"Function data directory: {self._function_data_dir}, log directory: {log_dir}")
232
+ logger.debug(f"Function data directory: {self._function_data_dir.name}, log directory: {log_dir}")
231
233
  logger.debug(
232
234
  f"TaskVine manager log directory: {self.manager_config.vine_log_dir}, "
233
235
  f"factory log directory: {self.factory_config.scratch_dir}")
@@ -293,7 +295,7 @@ class TaskVineExecutor(BlockProviderExecutor, putils.RepresentationMixin):
293
295
  'map': Pickled file with a dict between local parsl names, and remote taskvine names.
294
296
  """
295
297
  task_dir = "{:04d}".format(executor_task_id)
296
- return os.path.join(self._function_data_dir, task_dir, *path_components)
298
+ return os.path.join(self._function_data_dir.name, task_dir, *path_components)
297
299
 
298
300
  def submit(self, func, resource_specification, *args, **kwargs):
299
301
  """Processes the Parsl app by its arguments and submits the function
@@ -0,0 +1,26 @@
1
+ from parsl.channels import LocalChannel
2
+ from parsl.config import Config
3
+ from parsl.executors import HighThroughputExecutor
4
+ from parsl.launchers import SrunLauncher
5
+ from parsl.providers import SlurmProvider
6
+
7
+
8
+ def fresh_config():
9
+ return Config(
10
+ executors=[
11
+ HighThroughputExecutor(
12
+ label="docker_slurm",
13
+ encrypted=True,
14
+ provider=SlurmProvider(
15
+ cmd_timeout=60, # Add extra time for slow scheduler responses
16
+ channel=LocalChannel(),
17
+ nodes_per_block=1,
18
+ init_blocks=1,
19
+ min_blocks=1,
20
+ max_blocks=1,
21
+ walltime='00:10:00',
22
+ launcher=SrunLauncher(),
23
+ ),
24
+ )
25
+ ],
26
+ )
@@ -126,18 +126,6 @@ def test_htex_shutdown(
126
126
  assert "HighThroughputExecutor has not started" in caplog.text
127
127
 
128
128
 
129
- @pytest.mark.local
130
- def test_max_workers_per_node():
131
- with pytest.warns(DeprecationWarning) as record:
132
- htex = HighThroughputExecutor(max_workers_per_node=1, max_workers=2)
133
-
134
- warning_msg = "max_workers is deprecated"
135
- assert any(warning_msg in str(warning.message) for warning in record)
136
-
137
- # Ensure max_workers_per_node takes precedence
138
- assert htex.max_workers_per_node == htex.max_workers == 1
139
-
140
-
141
129
  @pytest.mark.local
142
130
  @pytest.mark.parametrize("cmd", (None, "custom-launch-cmd"))
143
131
  def test_htex_worker_pool_launch_cmd(cmd: Optional[str]):
@@ -43,7 +43,7 @@ def test_init():
43
43
 
44
44
  new_kwargs = {'max_workers_per_block', 'mpi_launcher'}
45
45
  excluded_kwargs = {'available_accelerators', 'cores_per_worker', 'max_workers_per_node',
46
- 'mem_per_worker', 'cpu_affinity', 'max_workers', 'manager_selector'}
46
+ 'mem_per_worker', 'cpu_affinity', 'manager_selector'}
47
47
 
48
48
  # Get the kwargs from both HTEx and MPIEx
49
49
  htex_kwargs = set(signature(HighThroughputExecutor.__init__).parameters)
@@ -23,7 +23,7 @@ def local_config():
23
23
  poll_period=100,
24
24
  label="htex_local",
25
25
  address="127.0.0.1",
26
- max_workers=1,
26
+ max_workers_per_node=1,
27
27
  encrypted=True,
28
28
  provider=LocalProvider(
29
29
  channel=LocalChannel(),
@@ -27,7 +27,7 @@ def local_config():
27
27
  poll_period=100,
28
28
  label="htex_local",
29
29
  address="127.0.0.1",
30
- max_workers=1,
30
+ max_workers_per_node=1,
31
31
  encrypted=True,
32
32
  launch_cmd="sleep inf",
33
33
  provider=LocalProvider(
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.09.02'
6
+ VERSION = '2024.09.09'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsl
3
- Version: 2024.9.2
3
+ Version: 2024.9.9
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.09.02.tar.gz
6
+ Download-URL: https://github.com/Parsl/parsl/archive/2024.09.09.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=-CxPczDJTqi5fdaWV26l0UO4NHlIPdBwBCFIx6tfkMQ,131
11
+ parsl/version.py,sha256=ANbI0EcghYu4YwcssLEJd6Az-dJPT0ZPg_qnJCLIyKY,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
@@ -80,7 +80,7 @@ parsl/executors/flux/executor.py,sha256=8_xakLUu5zNJAHL0LbeTCFEWqWzRK1eE-3ep4GII
80
80
  parsl/executors/flux/flux_instance_manager.py,sha256=5T3Rp7ZM-mlT0Pf0Gxgs5_YmnaPrSF9ec7zvRfLfYJw,2129
81
81
  parsl/executors/high_throughput/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
82
  parsl/executors/high_throughput/errors.py,sha256=Sak8e8UpiEcXefUjMHbhyXc4Rn7kJtOoh7L8wreBQdk,1638
83
- parsl/executors/high_throughput/executor.py,sha256=x6DGXdriDIPpfDK6yms7XTUrkwxNCHNfz6X9kJRvt2w,37904
83
+ parsl/executors/high_throughput/executor.py,sha256=aXgfIgjIR9XLSaX_Oiov2a9PISuUbQNfVw0-Xhwqq3w,37305
84
84
  parsl/executors/high_throughput/interchange.py,sha256=WP9zseYYb0B8522j8wt3yhO12bzmFIxdCIepEU-4oWA,30877
85
85
  parsl/executors/high_throughput/manager_record.py,sha256=yn3L8TUJFkgm2lX1x0SeS9mkvJowC0s2VIMCFiU7ThM,455
86
86
  parsl/executors/high_throughput/manager_selector.py,sha256=uRaEtcbDO2vXf8vjEcm7bfZVdeUlSPTRc3G4oFRO29M,820
@@ -98,7 +98,7 @@ parsl/executors/radical/rpex_worker.py,sha256=qli6i6ejKubTSv3lAE3YiW8RlkHrfl4Jhr
98
98
  parsl/executors/taskvine/__init__.py,sha256=9rwp3M8B0YyEhZMLO0RHaNw7u1nc01WHbXLqnBTanu0,293
99
99
  parsl/executors/taskvine/errors.py,sha256=euIYkSslrNSI85kyi2s0xzOaO9ik4c1fYHstMIeiBJk,652
100
100
  parsl/executors/taskvine/exec_parsl_function.py,sha256=ftGdJU78lKPPkphSHlEi4rj164mhuMHJjghVqfgeXKk,7085
101
- parsl/executors/taskvine/executor.py,sha256=yODov_9LNyuxJga2Ki-fp1WEHwDcwNsLIBaqP8bAvfw,31056
101
+ parsl/executors/taskvine/executor.py,sha256=y1x44p_GRlaOqLr0J92ungU3CuDeull6MW-lEedzu2M,31164
102
102
  parsl/executors/taskvine/factory.py,sha256=rWpEoFphLzqO3HEYyDEbQa14iyvgkdZg7hLZuaY39gQ,2638
103
103
  parsl/executors/taskvine/factory_config.py,sha256=AbE2fN2snrF5ITYrrS4DnGn2XkJHUFr_17DYHDHIwq0,3693
104
104
  parsl/executors/taskvine/manager.py,sha256=fwRSgYWpbsnr5jXlzvX0sQjOqryqn_77K_svJJ1HJ2U,25631
@@ -240,6 +240,7 @@ parsl/tests/configs/midway.py,sha256=ZLdAUDR5paPA8gheRNLI0q9Vj5HcnCYuIttu-C-TlJs
240
240
  parsl/tests/configs/nscc_singapore.py,sha256=ECENZcBuCjkY6OWZstEMhfMrmjRmjCc7ELdfGEp7ly4,1481
241
241
  parsl/tests/configs/osg_htex.py,sha256=x-C_r7Kpwvqroc4Ay1Yaya9K6_j7IU1ywqPegBU7HKI,1371
242
242
  parsl/tests/configs/petrelkube.py,sha256=uUxrZrD_cF-_t6ytlRA_MUtw8RQbpW0CmNRbw3mWs1o,1699
243
+ parsl/tests/configs/slurm_local.py,sha256=jvrNIgNUtjp0OE4HONxa7xSpDa9LQNWtav4BXpF_PY4,821
243
244
  parsl/tests/configs/summit.py,sha256=0LbuTVmc8nl2eGiqAayhV0RCx0pg5kUpYhz9LvTFhDo,1378
244
245
  parsl/tests/configs/taskvine_ex.py,sha256=Nsovxtb59q6ta2opGrl7ufWcavYQtzSPrscLmaLYkUU,472
245
246
  parsl/tests/configs/theta.py,sha256=bkwcFcZYSkJOfLdcPHiAN2BRRGz3nLTaPylvdm3dcJ8,1298
@@ -337,7 +338,7 @@ parsl/tests/test_htex/test_cpu_affinity_explicit.py,sha256=DVHrRCskDbJIrfB5YSi3Z
337
338
  parsl/tests/test_htex/test_disconnected_blocks.py,sha256=3V1Ol9gMS6knjLTgIjB5GrunRSp4ANsJ_2vAvpyMR6c,1858
338
339
  parsl/tests/test_htex/test_disconnected_blocks_failing_provider.py,sha256=eOdipRpKMOkWAXB3UtY1UjqTiwfNs_csNLve8vllG_M,2040
339
340
  parsl/tests/test_htex/test_drain.py,sha256=Z2Z5-3NfLL9tMgJh4JkVKLZZDl3Z2gDAbEFHDSGdItw,2288
340
- parsl/tests/test_htex/test_htex.py,sha256=5ylQvWgmSLP3lOdoHxqK9wkvAgfgeJx6gihKPkN8XfU,5320
341
+ parsl/tests/test_htex/test_htex.py,sha256=J1uEGezic8ziPPZsQwfK9iNiTJ53NqXMhIg9CUunjZw,4901
341
342
  parsl/tests/test_htex/test_manager_failure.py,sha256=N-obuSZ8f7XA_XcddoN2LWKSVtpKUZvTHb7BFelS3iQ,1143
342
343
  parsl/tests/test_htex/test_managers_command.py,sha256=Y-eUjtBzwW9erCYdph9bOesbkUvX8QUPqXt27DCgVS8,951
343
344
  parsl/tests/test_htex/test_missing_worker.py,sha256=gyp5i7_t-JHyJGtz_eXZKKBY5w8oqLOIxO6cJgGJMtQ,745
@@ -360,7 +361,7 @@ parsl/tests/test_mpi_apps/test_bad_mpi_config.py,sha256=QKvEUSrHIBrvqu2fRj1MAqxs
360
361
  parsl/tests/test_mpi_apps/test_mpi_mode_enabled.py,sha256=9RaRgfweywYvcrTvteJXJwt_RSiyWSjBgii5LCnisJg,5461
361
362
  parsl/tests/test_mpi_apps/test_mpi_prefix.py,sha256=yJslZvYK3JeL9UgxMwF9DDPR9QD4zJLGVjubD0F-utc,1950
362
363
  parsl/tests/test_mpi_apps/test_mpi_scheduler.py,sha256=YdV8A-m67DHk9wxgNpj69wwGEKrFGL20KAC1TzLke3c,6332
363
- parsl/tests/test_mpi_apps/test_mpiex.py,sha256=N44sOaTOMchmZ3bI_w5h2mjOnS0sGFq8IqzIOpF0MMI,2036
364
+ parsl/tests/test_mpi_apps/test_mpiex.py,sha256=mlFdHK3A1B6NsEhxTQQX8lhs9qVza36FMG99vNrBRW4,2021
364
365
  parsl/tests/test_mpi_apps/test_resource_spec.py,sha256=aJo_1Nr0t-5pzw_rpDWEVp41RcICWG9sAeFUFXXJoW8,3828
365
366
  parsl/tests/test_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
366
367
  parsl/tests/test_providers/test_cobalt_deprecation_warning.py,sha256=UN2W6xJxuLx2euPqArORKFEU2VXez9_PYqq-0rZHanQ,391
@@ -418,8 +419,8 @@ parsl/tests/test_scaling/test_block_error_handler.py,sha256=OS1IyiK8gjRFI1VzpmOv
418
419
  parsl/tests/test_scaling/test_regression_1621.py,sha256=cAPjJ0p_VLZm9Z6EK7QuOgeO5KpcUXQ0ar698T6uMy4,1944
419
420
  parsl/tests/test_scaling/test_regression_3568_scaledown_vs_MISSING.py,sha256=uL4dmaxqix9K6P-5vDTFqPye1BIeyynJjiYZBx5XI3E,2982
420
421
  parsl/tests/test_scaling/test_scale_down.py,sha256=u8TbbVM2PXgy4Zg7bAkh0C-KQuF1kD_WEsO79R0Y-UE,2820
421
- parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py,sha256=A-aDudFnWvOr5Z4m3Z0WW7-MJZ6ZveEneogZEzSom1k,4596
422
- parsl/tests/test_scaling/test_scale_down_htex_unregistered.py,sha256=4DYZB9BMDzyC659bf-gmU3ltnRvCgXVrfnnehb7cL5c,2029
422
+ parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py,sha256=PKfH18sA11oNhf2Ub8BJjxbxdIfzEeL1Lk2E0VhLJrs,4605
423
+ parsl/tests/test_scaling/test_scale_down_htex_unregistered.py,sha256=buNGB2wKG9omLf4d1R07zaxl1slVPuWtH8e1z4Hj70I,2038
423
424
  parsl/tests/test_scaling/test_shutdown_scalein.py,sha256=Jzi0OH7UE6qvQ4ZpsfHu8lySpkMDgorn2elAzMNE6wI,2397
424
425
  parsl/tests/test_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
425
426
  parsl/tests/test_serialization/test_2555_caching_deserializer.py,sha256=jEXJvbriaLVI7frV5t-iJRKYyeQ7a9_-t3X9lhhBWQo,767
@@ -461,13 +462,13 @@ parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
461
462
  parsl/usage_tracking/api.py,sha256=iaCY58Dc5J4UM7_dJzEEs871P1p1HdxBMtNGyVdzc9g,1821
462
463
  parsl/usage_tracking/levels.py,sha256=xbfzYEsd55KiZJ-mzNgPebvOH4rRHum04hROzEf41tU,291
463
464
  parsl/usage_tracking/usage.py,sha256=qNEJ7nPimqd3Y7OWFLdYmNwJ6XDKlyfV_fTzasxsQw8,8690
464
- parsl-2024.9.2.data/scripts/exec_parsl_function.py,sha256=RUkJ4JSJAjr7YyRZ58zhMdg8cR5dVV9odUl3AuzNf3k,7802
465
- parsl-2024.9.2.data/scripts/interchange.py,sha256=2tsbwd055SEnSpWLNNoqMW6o6ohRJFNSgvgN_umsqN8,30864
466
- parsl-2024.9.2.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
467
- parsl-2024.9.2.data/scripts/process_worker_pool.py,sha256=78QKnV5KbY_vcteC6k60gpDE4wEk6hsciet_qzs9QoU,43061
468
- parsl-2024.9.2.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
469
- parsl-2024.9.2.dist-info/METADATA,sha256=RHRyaL2xjgp_GVytcH5CI5Q9uKAfxJ54ZJzfKC-rFNY,4120
470
- parsl-2024.9.2.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
471
- parsl-2024.9.2.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
472
- parsl-2024.9.2.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
473
- parsl-2024.9.2.dist-info/RECORD,,
465
+ parsl-2024.9.9.data/scripts/exec_parsl_function.py,sha256=RUkJ4JSJAjr7YyRZ58zhMdg8cR5dVV9odUl3AuzNf3k,7802
466
+ parsl-2024.9.9.data/scripts/interchange.py,sha256=2tsbwd055SEnSpWLNNoqMW6o6ohRJFNSgvgN_umsqN8,30864
467
+ parsl-2024.9.9.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
468
+ parsl-2024.9.9.data/scripts/process_worker_pool.py,sha256=78QKnV5KbY_vcteC6k60gpDE4wEk6hsciet_qzs9QoU,43061
469
+ parsl-2024.9.9.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
470
+ parsl-2024.9.9.dist-info/METADATA,sha256=yC5ZAo_3_gtWTms3TJN4qqbm3mSAf4pNcmCTmL2iBTE,4120
471
+ parsl-2024.9.9.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
472
+ parsl-2024.9.9.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
473
+ parsl-2024.9.9.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
474
+ parsl-2024.9.9.dist-info/RECORD,,