parsl 2025.2.17__py3-none-any.whl → 2025.3.3__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.
@@ -1,4 +1,5 @@
1
1
  import logging
2
+ import os
2
3
 
3
4
  from parsl.executors.taskvine.errors import TaskVineFactoryFailure
4
5
  from parsl.process_loggers import wrap_with_logs
@@ -43,6 +44,9 @@ def _taskvine_factory(should_stop, factory_config):
43
44
  factory.max_workers = factory_config.max_workers
44
45
  factory.workers_per_cycle = factory_config.workers_per_cycle
45
46
 
47
+ # create scratch dir if factory process gets ahead of the manager.
48
+ os.makedirs(factory.scratch_dir, exist_ok=True)
49
+
46
50
  if factory_config.worker_options:
47
51
  factory.extra_options = factory_config.worker_options
48
52
  factory.timeout = factory_config.worker_timeout
@@ -333,7 +333,7 @@ class WorkQueueExecutor(BlockProviderExecutor, putils.RepresentationMixin):
333
333
 
334
334
  logger.debug("Starting WorkQueueExecutor")
335
335
 
336
- self._port_mailbox = multiprocessing.Queue()
336
+ port_mailbox = multiprocessing.Queue()
337
337
 
338
338
  # Create a Process to perform WorkQueue submissions
339
339
  submit_process_kwargs = {"task_queue": self.task_queue,
@@ -351,7 +351,7 @@ class WorkQueueExecutor(BlockProviderExecutor, putils.RepresentationMixin):
351
351
  "wq_log_dir": self.wq_log_dir,
352
352
  "project_password_file": self.project_password_file,
353
353
  "project_name": self.project_name,
354
- "port_mailbox": self._port_mailbox,
354
+ "port_mailbox": port_mailbox,
355
355
  "coprocess": self.coprocess
356
356
  }
357
357
  self.submit_process = multiprocessing.Process(target=_work_queue_submit_wait,
@@ -366,7 +366,7 @@ class WorkQueueExecutor(BlockProviderExecutor, putils.RepresentationMixin):
366
366
  self.submit_process.start()
367
367
  self.collector_thread.start()
368
368
 
369
- self._chosen_port = self._port_mailbox.get(timeout=60)
369
+ self._chosen_port = port_mailbox.get(timeout=60)
370
370
 
371
371
  logger.debug(f"Chosen listening port is {self._chosen_port}")
372
372
 
@@ -61,6 +61,10 @@ class KubernetesProvider(ExecutionProvider, RepresentationMixin):
61
61
  Memory limits of the blocks (pods), in Mi or Gi.
62
62
  This is the memory "requests" option for resource specification on kubernetes.
63
63
  Check kubernetes docs for more details. Default is 250Mi.
64
+ extra_requests: Dict[str, str]
65
+ Extra resource requests of the blocks (pods). Check kubernetes docs for more details.
66
+ extra_limits: Dict[str, str]
67
+ Extra resource limits of the blocks (pods). Check kubernetes docs for more details.
64
68
  parallelism : float
65
69
  Ratio of provisioned task slots to active tasks. A parallelism value of 1 represents aggressive
66
70
  scaling where as many resources as possible are used; parallelism close to 0 represents
@@ -98,6 +102,8 @@ class KubernetesProvider(ExecutionProvider, RepresentationMixin):
98
102
  max_mem: str = "500Mi",
99
103
  init_cpu: float = 1,
100
104
  init_mem: str = "250Mi",
105
+ extra_requests: Optional[Dict[str, str]] = None,
106
+ extra_limits: Optional[Dict[str, str]] = None,
101
107
  parallelism: float = 1,
102
108
  worker_init: str = "",
103
109
  pod_name: Optional[str] = None,
@@ -142,6 +148,8 @@ class KubernetesProvider(ExecutionProvider, RepresentationMixin):
142
148
  self.max_mem = max_mem
143
149
  self.init_cpu = init_cpu
144
150
  self.init_mem = init_mem
151
+ self.extra_requests = extra_requests if extra_requests else {}
152
+ self.extra_limits = extra_limits if extra_limits else {}
145
153
  self.parallelism = parallelism
146
154
  self.worker_init = worker_init
147
155
  self.secret = secret
@@ -300,9 +308,9 @@ class KubernetesProvider(ExecutionProvider, RepresentationMixin):
300
308
  volume_mounts.append(client.V1VolumeMount(mount_path=volume[1],
301
309
  name=volume[0]))
302
310
  resources = client.V1ResourceRequirements(limits={'cpu': str(self.max_cpu),
303
- 'memory': self.max_mem},
311
+ 'memory': self.max_mem} | self.extra_limits,
304
312
  requests={'cpu': str(self.init_cpu),
305
- 'memory': self.init_mem}
313
+ 'memory': self.init_mem} | self.extra_requests,
306
314
  )
307
315
  # Configure Pod template container
308
316
  container = client.V1Container(
parsl/utils.py CHANGED
@@ -340,6 +340,8 @@ class Timer:
340
340
  self._thread.start()
341
341
 
342
342
  def _wake_up_timer(self) -> None:
343
+ self.make_callback()
344
+
343
345
  while not self._kill_event.wait(self.interval):
344
346
  self.make_callback()
345
347
 
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.02.17'
6
+ VERSION = '2025.03.03'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsl
3
- Version: 2025.2.17
3
+ Version: 2025.3.3
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.02.17.tar.gz
6
+ Download-URL: https://github.com/Parsl/parsl/archive/2025.03.03.tar.gz
7
7
  Author: The Parsl Team
8
8
  Author-email: parsl@googlegroups.com
9
9
  License: Apache 2.0
@@ -7,8 +7,8 @@ parsl/log_utils.py,sha256=u14Fkl5eDfS4HMpl0JjseNNPdbvPaugWPRQj1_af_Zo,3273
7
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
- parsl/utils.py,sha256=5FvHIMao3Ik0Rm2p2ieL1KQcQcYXc5K83Jrx5csi-B4,14301
11
- parsl/version.py,sha256=ga-OEsTCAWOjmbEAjsT67sZCaKhabQ29GqIslKQwVyk,131
10
+ parsl/utils.py,sha256=codTX6_KLhgeTwNkRzc1lo4bgc1M93eJ-lkqOO98fvk,14331
11
+ parsl/version.py,sha256=JZR2YCezBq1F5cw4-KEsJxZK4DKSK_Po-wBKZDC4T7o,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
@@ -92,7 +92,7 @@ parsl/executors/taskvine/__init__.py,sha256=9rwp3M8B0YyEhZMLO0RHaNw7u1nc01WHbXLq
92
92
  parsl/executors/taskvine/errors.py,sha256=euIYkSslrNSI85kyi2s0xzOaO9ik4c1fYHstMIeiBJk,652
93
93
  parsl/executors/taskvine/exec_parsl_function.py,sha256=ftGdJU78lKPPkphSHlEi4rj164mhuMHJjghVqfgeXKk,7085
94
94
  parsl/executors/taskvine/executor.py,sha256=4c0mt83G-F4ZFMxhdJByvYjG05QdLrLYYHsmpPXY6YE,30906
95
- parsl/executors/taskvine/factory.py,sha256=rWpEoFphLzqO3HEYyDEbQa14iyvgkdZg7hLZuaY39gQ,2638
95
+ parsl/executors/taskvine/factory.py,sha256=GU5JryEAKJuYKwrSc162BN-lhcKhapvBZHT820pxwic,2772
96
96
  parsl/executors/taskvine/factory_config.py,sha256=ZQC5vyDe8cM0nuv7fbBCV2xnWGAZ87iLlT2UqmFFI1U,3695
97
97
  parsl/executors/taskvine/manager.py,sha256=SUi5mqqMm_rnkBLrZtTQe7RiHqWDn1oOejQscYzfwAU,25797
98
98
  parsl/executors/taskvine/manager_config.py,sha256=96G1LMBvgg74sHX4UcOzkCXhEdtVXry4ZzMDEYLWBTQ,7669
@@ -100,7 +100,7 @@ parsl/executors/taskvine/utils.py,sha256=iSrIogeiauL3UNy_9tiZp1cBSNn6fIJkMYQRVi1
100
100
  parsl/executors/workqueue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
101
  parsl/executors/workqueue/errors.py,sha256=XO2naYhAsHHyiOBH6hpObg3mPNDmvMoFqErsj0-v7jc,541
102
102
  parsl/executors/workqueue/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
103
- parsl/executors/workqueue/executor.py,sha256=EYKnqRcMF1OYPCUSMiPDgi7p-Tlpm3YLKxg_lpoRDDU,49711
103
+ parsl/executors/workqueue/executor.py,sha256=QYJ02jt0AG-83XN0-mUa9LSUezroYSbh1OkOGzGLIqo,49693
104
104
  parsl/executors/workqueue/parsl_coprocess.py,sha256=cF1UmTgVLoey6QzBcbYgEiEsRidSaFfuO54f1HFw_EM,5737
105
105
  parsl/executors/workqueue/parsl_coprocess_stub.py,sha256=_bJmpPIgL42qM6bVzeEKt1Mn1trSP41rtJguXxPGfHI,735
106
106
  parsl/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -170,7 +170,7 @@ parsl/providers/grid_engine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
170
170
  parsl/providers/grid_engine/grid_engine.py,sha256=1W553Hf03BjhV-tjAYG1y4-g7LynloJXmdgAguuEcIY,8072
171
171
  parsl/providers/grid_engine/template.py,sha256=a7iViKr8LXcFTPmsf_qQeVK5o_RekOAIlUOF0X1q-2M,273
172
172
  parsl/providers/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
173
- parsl/providers/kubernetes/kube.py,sha256=ghOKM1gY1UjzMzWAheKsG15u8oUzRkXUyjtpqjkquIo,14952
173
+ parsl/providers/kubernetes/kube.py,sha256=WFCsIVWwXMxjOvfjZIm40YTEAYT11dj8KHICVcXZuaI,15515
174
174
  parsl/providers/kubernetes/template.py,sha256=VsRz6cmNaII-y4OdMT6sCwzQy95SJX6NMB0hmmFBhX4,50
175
175
  parsl/providers/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
176
176
  parsl/providers/local/local.py,sha256=s8Qx3ONJNoCrC-fYTDrZ_RHwmgmCsFpe9y9Y5hYvSYA,10472
@@ -455,13 +455,13 @@ parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
455
455
  parsl/usage_tracking/api.py,sha256=iaCY58Dc5J4UM7_dJzEEs871P1p1HdxBMtNGyVdzc9g,1821
456
456
  parsl/usage_tracking/levels.py,sha256=xbfzYEsd55KiZJ-mzNgPebvOH4rRHum04hROzEf41tU,291
457
457
  parsl/usage_tracking/usage.py,sha256=f9k6QcpbQxkGyP5WTC9PVyv0CA05s9NDpRe5wwRdBTM,9163
458
- parsl-2025.2.17.data/scripts/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
459
- parsl-2025.2.17.data/scripts/interchange.py,sha256=17MrOc7-FXxKBWTwkzIbUoa8fvvDfPelfjByd3ZD2Wk,29446
460
- parsl-2025.2.17.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
461
- parsl-2025.2.17.data/scripts/process_worker_pool.py,sha256=BbVJ1PS7ZW2grz0iAPPV0BgJyRMyQ7bbXSzLzWCBkyU,41070
462
- parsl-2025.2.17.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
463
- parsl-2025.2.17.dist-info/METADATA,sha256=OsBeBV5Q576R6MXBPkoarln6w44pgQM8Jj6hxnNZ33A,4027
464
- parsl-2025.2.17.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
465
- parsl-2025.2.17.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
466
- parsl-2025.2.17.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
467
- parsl-2025.2.17.dist-info/RECORD,,
458
+ parsl-2025.3.3.data/scripts/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
459
+ parsl-2025.3.3.data/scripts/interchange.py,sha256=17MrOc7-FXxKBWTwkzIbUoa8fvvDfPelfjByd3ZD2Wk,29446
460
+ parsl-2025.3.3.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
461
+ parsl-2025.3.3.data/scripts/process_worker_pool.py,sha256=BbVJ1PS7ZW2grz0iAPPV0BgJyRMyQ7bbXSzLzWCBkyU,41070
462
+ parsl-2025.3.3.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
463
+ parsl-2025.3.3.dist-info/METADATA,sha256=FiDSNMMf3JHayeZGotfxx9jG2XcVNwbF50cPkEtLBc8,4026
464
+ parsl-2025.3.3.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
465
+ parsl-2025.3.3.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
466
+ parsl-2025.3.3.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
467
+ parsl-2025.3.3.dist-info/RECORD,,