torchx-nightly 2024.6.17__py3-none-any.whl → 2024.6.20__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 torchx-nightly might be problematic. Click here for more details.

torchx/specs/api.py CHANGED
@@ -10,6 +10,7 @@
10
10
  import copy
11
11
  import json
12
12
  import re
13
+ import typing
13
14
  from dataclasses import asdict, dataclass, field
14
15
  from datetime import datetime
15
16
  from enum import Enum
@@ -189,8 +190,25 @@ class macros:
189
190
  role = copy.deepcopy(role)
190
191
  role.args = [self.substitute(arg) for arg in role.args]
191
192
  role.env = {key: self.substitute(arg) for key, arg in role.env.items()}
193
+ role.metadata = self._apply_nested(role.metadata)
194
+
192
195
  return role
193
196
 
197
+ def _apply_nested(self, d: typing.Dict[str, Any]) -> typing.Dict[str, Any]:
198
+ stack = [d]
199
+ while stack:
200
+ current_dict = stack.pop()
201
+ for k, v in current_dict.items():
202
+ if isinstance(v, dict):
203
+ stack.append(v)
204
+ elif isinstance(v, str):
205
+ current_dict[k] = self.substitute(v)
206
+ elif isinstance(v, list):
207
+ for i in range(len(v)):
208
+ if isinstance(v[i], str):
209
+ v[i] = self.substitute(v[i])
210
+ return d
211
+
194
212
  def substitute(self, arg: str) -> str:
195
213
  """
196
214
  substitute applies the values to the template arg.
@@ -219,11 +237,15 @@ class RetryPolicy(str, Enum):
219
237
  application to deal with failed replica departures and
220
238
  replacement replica admittance.
221
239
  2. APPLICATION: Restarts the entire application.
222
-
240
+ 3. HOT_SPARE: Restarts the replicas for a role as long as quorum (min_replicas)
241
+ is not violated using extra hosts as spares. It does not really support
242
+ elasticity and just uses the delta between num_replicas and min_replicas
243
+ as spares (EXPERIMENTAL).
223
244
  """
224
245
 
225
246
  REPLICA = "REPLICA"
226
247
  APPLICATION = "APPLICATION"
248
+ HOT_SPARE = "HOT_SPARE"
227
249
 
228
250
 
229
251
  class MountType(str, Enum):
@@ -322,6 +344,8 @@ class Role:
322
344
  and num_replicas depending on the cluster resources and
323
345
  policies. If the scheduler doesn't support auto scaling this
324
346
  field is ignored and the job size will be num_replicas.
347
+ EXPERIMENTAL: For HOT_SPARE restart policy this field is used to
348
+ indicate the quorum required for the job to run.
325
349
  max_retries: max number of retries before giving up
326
350
  retry_policy: retry behavior upon replica failures
327
351
  resource: Resource requirement for the role. The role should be scheduled
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: torchx-nightly
3
- Version: 2024.6.17
3
+ Version: 2024.6.20
4
4
  Summary: TorchX SDK and Components
5
5
  Home-page: https://github.com/pytorch/torchx
6
6
  Author: TorchX Devs
@@ -83,7 +83,7 @@ torchx/schedulers/ray/__init__.py,sha256=fE0IHi1JJpxsNVBNzWNee2thrNXFFRhY94c80Rx
83
83
  torchx/schedulers/ray/ray_common.py,sha256=pyNYFvTKVwdjDAeCBNbPwAWwVNmlLOJWExfn90XY8u8,610
84
84
  torchx/schedulers/ray/ray_driver.py,sha256=Wl-1jldL8veVKzmYDEeR2va3JSlAjZpFE1h8HWE9YVE,12286
85
85
  torchx/specs/__init__.py,sha256=vF-WUu_4NZP30lCtNYg0YVenY6wRQ8k7K36fOxqbOKc,5477
86
- torchx/specs/api.py,sha256=73jJOYQ-H-jX3Yvbc9hJjolavNQdF8bW9Q0oQnWzLL0,34885
86
+ torchx/specs/api.py,sha256=Y5uT7a-qZ4pP4kSfS6yYP1jUzQWLPI4qLQeyuBv5uDQ,36085
87
87
  torchx/specs/builders.py,sha256=QDcQrnCO4bdSaiP0216XbCgTsnLutO_1_FW5jDiEIWI,9939
88
88
  torchx/specs/file_linter.py,sha256=IeiomB1BgHUlT-ZsvGxar3llY63NOupfLBrOrD_---A,11860
89
89
  torchx/specs/finder.py,sha256=MnwxG_UC4a-3X2wQ37ANEQR6D1TvriCLyuVYBh_-wuI,16249
@@ -113,9 +113,9 @@ torchx/workspace/__init__.py,sha256=FqN8AN4VhR1C_SBY10MggQvNZmyanbbuPuE-JCjkyUY,
113
113
  torchx/workspace/api.py,sha256=1heBmPgB-W5Zf9gwViM7NrqvHpZlVYeMN7jpY8Qkytc,5479
114
114
  torchx/workspace/dir_workspace.py,sha256=npNW_IjUZm_yS5r-8hrRkH46ndDd9a_eApT64m1S1T4,2268
115
115
  torchx/workspace/docker_workspace.py,sha256=PFu2KQNVC-0p2aKJ-W_BKA9ZOmXdCY2ABEkCExp3udQ,10269
116
- torchx_nightly-2024.6.17.dist-info/LICENSE,sha256=WVHfXhFC0Ia8LTKt_nJVYobdqTJVg_4J3Crrfm2A8KQ,1721
117
- torchx_nightly-2024.6.17.dist-info/METADATA,sha256=EwU_RjFfOJFS4IlszEZ1cDndcgmG44C7bNdTMe3mBqM,6184
118
- torchx_nightly-2024.6.17.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
119
- torchx_nightly-2024.6.17.dist-info/entry_points.txt,sha256=3JYZFlX9aWzR-Gs_qsx1zq7mlqbFz6Mi9rQUULW8caI,170
120
- torchx_nightly-2024.6.17.dist-info/top_level.txt,sha256=pxew3bc2gsiViS0zADs0jb6kC5v8o_Yy_85fhHj_J1A,7
121
- torchx_nightly-2024.6.17.dist-info/RECORD,,
116
+ torchx_nightly-2024.6.20.dist-info/LICENSE,sha256=WVHfXhFC0Ia8LTKt_nJVYobdqTJVg_4J3Crrfm2A8KQ,1721
117
+ torchx_nightly-2024.6.20.dist-info/METADATA,sha256=KkAPJrmZf_3EXXqqfBmrIyZEVK3Alrl2xN02o5QTVYs,6184
118
+ torchx_nightly-2024.6.20.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
119
+ torchx_nightly-2024.6.20.dist-info/entry_points.txt,sha256=3JYZFlX9aWzR-Gs_qsx1zq7mlqbFz6Mi9rQUULW8caI,170
120
+ torchx_nightly-2024.6.20.dist-info/top_level.txt,sha256=pxew3bc2gsiViS0zADs0jb6kC5v8o_Yy_85fhHj_J1A,7
121
+ torchx_nightly-2024.6.20.dist-info/RECORD,,