torchx-nightly 2025.8.5__py3-none-any.whl → 2026.1.11__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.
Files changed (58) hide show
  1. torchx/{schedulers/ray/__init__.py → _version.py} +3 -1
  2. torchx/cli/cmd_delete.py +30 -0
  3. torchx/cli/cmd_list.py +1 -2
  4. torchx/cli/cmd_run.py +202 -28
  5. torchx/cli/cmd_tracker.py +1 -1
  6. torchx/cli/main.py +2 -0
  7. torchx/components/__init__.py +1 -8
  8. torchx/components/dist.py +9 -3
  9. torchx/components/integration_tests/component_provider.py +2 -2
  10. torchx/components/utils.py +1 -1
  11. torchx/distributed/__init__.py +1 -1
  12. torchx/runner/api.py +102 -81
  13. torchx/runner/config.py +3 -1
  14. torchx/runner/events/__init__.py +20 -10
  15. torchx/runner/events/api.py +1 -1
  16. torchx/schedulers/__init__.py +7 -10
  17. torchx/schedulers/api.py +66 -25
  18. torchx/schedulers/aws_batch_scheduler.py +47 -6
  19. torchx/schedulers/aws_sagemaker_scheduler.py +1 -1
  20. torchx/schedulers/docker_scheduler.py +4 -3
  21. torchx/schedulers/ids.py +27 -23
  22. torchx/schedulers/kubernetes_mcad_scheduler.py +1 -4
  23. torchx/schedulers/kubernetes_scheduler.py +355 -36
  24. torchx/schedulers/local_scheduler.py +2 -1
  25. torchx/schedulers/lsf_scheduler.py +1 -1
  26. torchx/schedulers/slurm_scheduler.py +102 -27
  27. torchx/specs/__init__.py +40 -9
  28. torchx/specs/api.py +222 -12
  29. torchx/specs/builders.py +109 -28
  30. torchx/specs/file_linter.py +117 -53
  31. torchx/specs/finder.py +25 -37
  32. torchx/specs/named_resources_aws.py +13 -2
  33. torchx/specs/overlays.py +106 -0
  34. torchx/tracker/__init__.py +2 -2
  35. torchx/tracker/api.py +1 -1
  36. torchx/util/entrypoints.py +1 -6
  37. torchx/util/strings.py +1 -1
  38. torchx/util/types.py +12 -1
  39. torchx/version.py +2 -2
  40. torchx/workspace/api.py +102 -5
  41. {torchx_nightly-2025.8.5.dist-info → torchx_nightly-2026.1.11.dist-info}/METADATA +35 -49
  42. {torchx_nightly-2025.8.5.dist-info → torchx_nightly-2026.1.11.dist-info}/RECORD +46 -56
  43. {torchx_nightly-2025.8.5.dist-info → torchx_nightly-2026.1.11.dist-info}/WHEEL +1 -1
  44. torchx/examples/pipelines/__init__.py +0 -0
  45. torchx/examples/pipelines/kfp/__init__.py +0 -0
  46. torchx/examples/pipelines/kfp/advanced_pipeline.py +0 -289
  47. torchx/examples/pipelines/kfp/dist_pipeline.py +0 -71
  48. torchx/examples/pipelines/kfp/intro_pipeline.py +0 -83
  49. torchx/pipelines/kfp/__init__.py +0 -30
  50. torchx/pipelines/kfp/adapter.py +0 -274
  51. torchx/pipelines/kfp/version.py +0 -19
  52. torchx/schedulers/gcp_batch_scheduler.py +0 -497
  53. torchx/schedulers/ray/ray_common.py +0 -22
  54. torchx/schedulers/ray/ray_driver.py +0 -307
  55. torchx/schedulers/ray_scheduler.py +0 -454
  56. {torchx_nightly-2025.8.5.dist-info → torchx_nightly-2026.1.11.dist-info}/entry_points.txt +0 -0
  57. {torchx_nightly-2025.8.5.dist-info → torchx_nightly-2026.1.11.dist-info/licenses}/LICENSE +0 -0
  58. {torchx_nightly-2025.8.5.dist-info → torchx_nightly-2026.1.11.dist-info}/top_level.txt +0 -0
torchx/workspace/api.py CHANGED
@@ -8,11 +8,16 @@
8
8
 
9
9
  import abc
10
10
  import fnmatch
11
+ import logging
11
12
  import posixpath
13
+ import tempfile
14
+ import warnings
12
15
  from dataclasses import dataclass
13
16
  from typing import Any, Dict, Generic, Iterable, Mapping, Tuple, TYPE_CHECKING, TypeVar
14
17
 
15
- from torchx.specs import AppDef, CfgVal, Role, runopts
18
+ from torchx.specs import AppDef, CfgVal, Role, runopts, Workspace
19
+
20
+ logger: logging.Logger = logging.getLogger(__name__)
16
21
 
17
22
  if TYPE_CHECKING:
18
23
  from fsspec import AbstractFileSystem
@@ -35,11 +40,33 @@ class PkgInfo(Generic[PackageType]):
35
40
  lazy_overrides: Dict[str, Any]
36
41
  metadata: PackageType
37
42
 
43
+ def __post_init__(self) -> None:
44
+ msg = (
45
+ f"{self.__class__.__name__} is deprecated and will be removed in the future."
46
+ " Consider forking this class if your project depends on it."
47
+ )
48
+ warnings.warn(
49
+ msg,
50
+ FutureWarning,
51
+ stacklevel=2,
52
+ )
53
+
38
54
 
39
55
  @dataclass
40
56
  class WorkspaceBuilder(Generic[PackageType, WorkspaceConfigType]):
41
57
  cfg: WorkspaceConfigType
42
58
 
59
+ def __post_init__(self) -> None:
60
+ msg = (
61
+ f"{self.__class__.__name__} is deprecated and will be removed in the future."
62
+ " Consider forking this class if your project depends on it."
63
+ )
64
+ warnings.warn(
65
+ msg,
66
+ FutureWarning,
67
+ stacklevel=2,
68
+ )
69
+
43
70
  @abc.abstractmethod
44
71
  def build_workspace(self, sync: bool = True) -> PkgInfo[PackageType]:
45
72
  """
@@ -77,11 +104,82 @@ class WorkspaceMixin(abc.ABC, Generic[T]):
77
104
  """
78
105
  return runopts()
79
106
 
80
- @abc.abstractmethod
107
+ def build_workspaces(self, roles: list[Role], cfg: Mapping[str, CfgVal]) -> None:
108
+ """
109
+ NOTE: this method MUTATES the passed roles!
110
+
111
+ Builds the workspaces (if any) for each role and updates the role to reflect the built workspace.
112
+ Typically ``role.image`` is updated with the newly built image that reflects the local workspace.
113
+ Some workspace implementations may add extra environment variables to make it easier for other
114
+ parts of the program to access the workspace. For example a ``WORKSPACE_DIR`` env var may be added
115
+ to ``role.env`` that scripts can use to refert to the workspace directory in the container.
116
+ """
117
+
118
+ build_cache: dict[object, object] = {}
119
+
120
+ for i, role in enumerate(roles):
121
+ if role.workspace:
122
+ old_img = role.image
123
+ self.caching_build_workspace_and_update_role(role, cfg, build_cache)
124
+
125
+ if old_img != role.image:
126
+ logger.info(
127
+ "role[%d]=%s updated with new image to include workspace changes",
128
+ i,
129
+ role.name,
130
+ )
131
+
132
+ def caching_build_workspace_and_update_role(
133
+ self,
134
+ role: Role,
135
+ cfg: Mapping[str, CfgVal],
136
+ build_cache: dict[object, object],
137
+ ) -> None:
138
+ """
139
+ Same as :py:meth:`build_workspace_and_update_role` but takes
140
+ a ``build_cache`` that can be used to cache pointers to build artifacts
141
+ between building workspace for each role.
142
+
143
+ This is useful when an appdef has multiple roles where the image and workspace
144
+ of the roles are the same but other attributes such as entrypoint or args are different.
145
+
146
+ NOTE: ``build_cache``'s lifetime is within :py:meth:`build_workspace_and_update_roles`
147
+ NOTE: the workspace implementation decides what to cache
148
+
149
+ Workspace subclasses should prefer implementing this method over
150
+ :py:meth:`build_workspace_and_update_role`.
151
+
152
+ The default implementation of this method simply calls the (deprecated) non-caching
153
+ :py:meth:`build_workspace_and_update_role` and deals with multi-dir workspaces by
154
+ merging them into a single tmpdir before passing it down.
155
+
156
+ """
157
+
158
+ workspace = role.workspace
159
+
160
+ if not workspace:
161
+ return
162
+
163
+ if workspace.is_unmapped_single_project():
164
+ # single-dir workspace with no target map; no need to copy to a tmp dir
165
+ self.build_workspace_and_update_role(role, str(workspace), cfg)
166
+ else:
167
+ # multi-dirs or single-dir with a target map;
168
+ # copy all dirs to a tmp dir and treat the tmp dir as a single-dir workspace
169
+ with tempfile.TemporaryDirectory(suffix="torchx_workspace_") as outdir:
170
+ workspace.merge_into(outdir)
171
+ self.build_workspace_and_update_role(role, outdir, cfg)
172
+
81
173
  def build_workspace_and_update_role(
82
- self, role: Role, workspace: str, cfg: Mapping[str, CfgVal]
174
+ self,
175
+ role: Role,
176
+ workspace: str,
177
+ cfg: Mapping[str, CfgVal],
83
178
  ) -> None:
84
179
  """
180
+ .. note:: DEPRECATED: Workspace subclasses should implement
181
+ :py:meth:`caching_build_workspace_and_update_role` over this method.
182
+
85
183
  Builds the specified ``workspace`` with respect to ``img``
86
184
  and updates the ``role`` to reflect the built workspace artifacts.
87
185
  In the simplest case, this method builds a new image and updates
@@ -90,7 +188,7 @@ class WorkspaceMixin(abc.ABC, Generic[T]):
90
188
 
91
189
  Note: this method mutates the passed ``role``.
92
190
  """
93
- ...
191
+ raise NotImplementedError("implement `caching_build_workspace_and_update_role`")
94
192
 
95
193
  def dryrun_push_images(self, app: AppDef, cfg: Mapping[str, CfgVal]) -> T:
96
194
  """
@@ -133,7 +231,6 @@ def walk_workspace(
133
231
  walk_workspace walks the filesystem path and applies the ignore rules
134
232
  specified via ``ignore_name``.
135
233
  This follows the rules for ``.dockerignore``.
136
- https://docs.docker.com/engine/reference/builder/#dockerignore-file
137
234
  """
138
235
  ignore_patterns = []
139
236
  ignore_path = posixpath.join(path, ignore_name)
@@ -1,8 +1,8 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: torchx-nightly
3
- Version: 2025.8.5
3
+ Version: 2026.1.11
4
4
  Summary: TorchX SDK and Components
5
- Home-page: https://github.com/pytorch/torchx
5
+ Home-page: https://github.com/meta-pytorch/torchx
6
6
  Author: TorchX Devs
7
7
  Author-email: torchx@fb.com
8
8
  License: BSD-3
@@ -22,10 +22,11 @@ Requires-Dist: pyyaml
22
22
  Requires-Dist: docker
23
23
  Requires-Dist: filelock
24
24
  Requires-Dist: fsspec>=2023.10.0
25
- Requires-Dist: urllib3<1.27,>=1.21.1
26
25
  Requires-Dist: tabulate
27
- Provides-Extra: aws_batch
26
+ Provides-Extra: aws-batch
28
27
  Requires-Dist: boto3; extra == "aws-batch"
28
+ Provides-Extra: kubernetes
29
+ Requires-Dist: kubernetes>=11; extra == "kubernetes"
29
30
  Provides-Extra: dev
30
31
  Requires-Dist: aiobotocore==2.20.0; extra == "dev"
31
32
  Requires-Dist: ax-platform[mysql]==0.2.3; extra == "dev"
@@ -36,13 +37,8 @@ Requires-Dist: kubernetes==25.3.0; extra == "dev"
36
37
  Requires-Dist: flake8==3.9.0; extra == "dev"
37
38
  Requires-Dist: fsspec==2024.3.1; extra == "dev"
38
39
  Requires-Dist: s3fs==2024.3.1; extra == "dev"
39
- Requires-Dist: google-cloud-batch==0.17.14; extra == "dev"
40
- Requires-Dist: google-cloud-logging==3.10.0; extra == "dev"
41
- Requires-Dist: google-cloud-runtimeconfig==0.34.0; extra == "dev"
42
40
  Requires-Dist: hydra-core; extra == "dev"
43
41
  Requires-Dist: ipython; extra == "dev"
44
- Requires-Dist: kfp==1.8.22; extra == "dev"
45
- Requires-Dist: protobuf==3.20.3; extra == "dev"
46
42
  Requires-Dist: mlflow-skinny; extra == "dev"
47
43
  Requires-Dist: moto~=5.0.8; extra == "dev"
48
44
  Requires-Dist: pyre-extensions; extra == "dev"
@@ -51,38 +47,36 @@ Requires-Dist: pytest; extra == "dev"
51
47
  Requires-Dist: pytest-cov; extra == "dev"
52
48
  Requires-Dist: pytorch-lightning==2.5.0; extra == "dev"
53
49
  Requires-Dist: tensorboard==2.14.0; extra == "dev"
54
- Requires-Dist: sagemaker==2.230.0; extra == "dev"
50
+ Requires-Dist: sagemaker==2.237.3; extra == "dev"
55
51
  Requires-Dist: torch-model-archiver>=0.4.2; extra == "dev"
56
- Requires-Dist: torch>=2.7.0; extra == "dev"
52
+ Requires-Dist: torch; extra == "dev"
57
53
  Requires-Dist: torchmetrics==1.6.3; extra == "dev"
58
54
  Requires-Dist: torchserve>=0.10.0; extra == "dev"
59
- Requires-Dist: torchtext==0.18.0; extra == "dev"
60
- Requires-Dist: torchvision==0.22.0; extra == "dev"
55
+ Requires-Dist: torchtext; extra == "dev"
56
+ Requires-Dist: torchvision; extra == "dev"
61
57
  Requires-Dist: typing-extensions; extra == "dev"
62
58
  Requires-Dist: ts==0.5.1; extra == "dev"
63
- Requires-Dist: ray[default]; extra == "dev"
64
59
  Requires-Dist: wheel; extra == "dev"
65
60
  Requires-Dist: lintrunner; extra == "dev"
66
61
  Requires-Dist: lintrunner-adapters; extra == "dev"
67
- Requires-Dist: grpcio==1.62.1; extra == "dev"
68
- Requires-Dist: grpcio-status==1.48.1; extra == "dev"
69
- Requires-Dist: googleapis-common-protos==1.63.0; extra == "dev"
70
- Requires-Dist: google-api-core==2.18.0; extra == "dev"
71
- Provides-Extra: gcp_batch
72
- Requires-Dist: google-cloud-batch>=0.5.0; extra == "gcp-batch"
73
- Requires-Dist: google-cloud-logging>=3.0.0; extra == "gcp-batch"
74
- Requires-Dist: google-cloud-runtimeconfig>=0.33.2; extra == "gcp-batch"
75
- Provides-Extra: kfp
76
- Requires-Dist: kfp==1.6.2; extra == "kfp"
77
- Provides-Extra: kubernetes
78
- Requires-Dist: kubernetes>=11; extra == "kubernetes"
79
- Provides-Extra: ray
80
- Requires-Dist: ray>=1.12.1; extra == "ray"
62
+ Dynamic: author
63
+ Dynamic: author-email
64
+ Dynamic: classifier
65
+ Dynamic: description
66
+ Dynamic: description-content-type
67
+ Dynamic: home-page
68
+ Dynamic: keywords
69
+ Dynamic: license
70
+ Dynamic: license-file
71
+ Dynamic: provides-extra
72
+ Dynamic: requires-dist
73
+ Dynamic: requires-python
74
+ Dynamic: summary
81
75
 
82
76
  [![PyPI](https://img.shields.io/pypi/v/torchx)](https://pypi.org/project/torchx/)
83
- [![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://github.com/pytorch/torchx/blob/main/LICENSE)
84
- ![Tests](https://github.com/pytorch/torchx/actions/workflows/python-unittests.yaml/badge.svg)
85
- ![Lint](https://github.com/pytorch/torchx/actions/workflows/lint.yaml/badge.svg)
77
+ [![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://github.com/meta-pytorch/torchx/blob/main/LICENSE)
78
+ ![Tests](https://github.com/meta-pytorch/torchx/actions/workflows/python-unittests.yaml/badge.svg)
79
+ ![Lint](https://github.com/meta-pytorch/torchx/actions/workflows/lint.yaml/badge.svg)
86
80
  [![codecov](https://codecov.io/gh/pytorch/torchx/branch/main/graph/badge.svg?token=ceHHIm0hXy)](https://codecov.io/gh/pytorch/torchx)
87
81
 
88
82
 
@@ -100,19 +94,17 @@ TorchX currently supports:
100
94
  * AWS Batch
101
95
  * Docker
102
96
  * Local
103
- * Ray (prototype)
104
- * GCP Batch (prototype)
105
97
 
106
- Need a scheduler not listed? [Let us know!](https://github.com/pytorch/torchx/issues?q=is%3Aopen+is%3Aissue+label%3Ascheduler-request)
98
+ Need a scheduler not listed? [Let us know!](https://github.com/meta-pytorch/torchx/issues?q=is%3Aopen+is%3Aissue+label%3Ascheduler-request)
107
99
 
108
100
  ## Quickstart
109
101
 
110
- See the [quickstart guide](https://pytorch.org/torchx/latest/quickstart.html).
102
+ See the [quickstart guide](https://meta-pytorch.org/torchx/latest/quickstart.html).
111
103
 
112
104
  ## Documentation
113
105
 
114
- * [Stable Documentation](https://pytorch.org/torchx/latest/)
115
- * [Nightly Documentation](https://pytorch.org/torchx/main/)
106
+ * [Stable Documentation](https://meta-pytorch.org/torchx/latest/)
107
+ * [Nightly Documentation](https://meta-pytorch.org/torchx/main/)
116
108
 
117
109
  ## Requirements
118
110
 
@@ -136,15 +128,9 @@ pip install torchx
136
128
  # install torchx sdk and CLI -- all dependencies
137
129
  pip install "torchx[dev]"
138
130
 
139
- # install torchx kubeflow pipelines (kfp) support
140
- pip install "torchx[kfp]"
141
-
142
131
  # install torchx Kubernetes / Volcano support
143
132
  pip install "torchx[kubernetes]"
144
133
 
145
- # install torchx Ray support
146
- pip install "torchx[ray]"
147
-
148
134
  # install torchx GCP Batch support
149
135
  pip install "torchx[gcp_batch]"
150
136
  ```
@@ -160,22 +146,22 @@ pip install torchx-nightly[dev]
160
146
 
161
147
  ```bash
162
148
  # install torchx sdk and CLI from source
163
- $ pip install -e git+https://github.com/pytorch/torchx.git#egg=torchx
149
+ $ pip install -e git+https://github.com/meta-pytorch/torchx.git#egg=torchx
164
150
 
165
151
  # install extra dependencies
166
- $ pip install -e git+https://github.com/pytorch/torchx.git#egg=torchx[dev]
152
+ $ pip install -e git+https://github.com/meta-pytorch/torchx.git#egg=torchx[dev]
167
153
  ```
168
154
 
169
155
  ### Docker
170
156
 
171
157
  TorchX provides a docker container for using as as part of a TorchX role.
172
158
 
173
- See: https://github.com/pytorch/torchx/pkgs/container/torchx
159
+ See: https://github.com/meta-pytorch/torchx/pkgs/container/torchx
174
160
 
175
161
  ## Contributing
176
162
 
177
- We welcome PRs! See the [CONTRIBUTING](https://github.com/pytorch/torchx/blob/main/CONTRIBUTING.md) file.
163
+ We welcome PRs! See the [CONTRIBUTING](https://github.com/meta-pytorch/torchx/blob/main/CONTRIBUTING.md) file.
178
164
 
179
165
  ## License
180
166
 
181
- TorchX is BSD licensed, as found in the [LICENSE](https://github.com/pytorch/torchx/blob/main/LICENSE) file.
167
+ TorchX is BSD licensed, as found in the [LICENSE](https://github.com/meta-pytorch/torchx/blob/main/LICENSE) file.
@@ -1,6 +1,7 @@
1
1
  torchx/__init__.py,sha256=QFDTdJacncWYWHL-2QyWdY5MUck3jVfSPRRGdvedcKc,355
2
+ torchx/_version.py,sha256=TzDuXIviDldFbXAhGe33redQcoP33jIsVR_hMyqSgdc,250
2
3
  torchx/notebook.py,sha256=Rc6XUMzSq7NXtsYdtVluE6T89LpEhcba-3ANxuaLCCU,1008
3
- torchx/version.py,sha256=d28ccaZP21nlF8jEmSLjJiidyquMJo02tDpeVD36inc,951
4
+ torchx/version.py,sha256=YcE66UkBxYHMQMtjVts4jF3l6Qeaj1gK_LzxU77l8Bo,975
4
5
  torchx/apps/__init__.py,sha256=fE0IHi1JJpxsNVBNzWNee2thrNXFFRhY94c80RxNSIE,231
5
6
  torchx/apps/serve/__init__.py,sha256=Md3cCHD7Ano9kV15PqGbicgUO-RMdh4aVy1yKiDt_xE,208
6
7
  torchx/apps/serve/serve.py,sha256=u_h8agld1TwIPq5GRosHL3uxhkljNfS65McLB77O0OE,4386
@@ -13,28 +14,29 @@ torchx/cli/argparse_util.py,sha256=kZb1ubEHDrBsmrxpySFRQCW7wmHuRHD8eAInuEZjlsI,3
13
14
  torchx/cli/cmd_base.py,sha256=SdqMtqi04CEqnzcgcS35DbDbsBeMxSgEhfynfpIkMGk,790
14
15
  torchx/cli/cmd_cancel.py,sha256=NKfOCu_44Lch9vliGSQ0Uv6BVqpUqj7Tob652TI-ua4,835
15
16
  torchx/cli/cmd_configure.py,sha256=1kTv0qbsbV44So74plAySwWu56pQrqjhfW_kbfdC3Rw,1722
17
+ torchx/cli/cmd_delete.py,sha256=US1f6Jvyhz4R_0Q0a8GeNTDMrhzo8WE_ECcdOf0MjKE,835
16
18
  torchx/cli/cmd_describe.py,sha256=E5disbHoKTsqYKp2s3DaFW9GDLCCOgdOc3pQoHKoyCs,1283
17
- torchx/cli/cmd_list.py,sha256=4Y1ZOq-kqJbztoBt56hAW_InJEaJuDAjpKWgMhBw4II,1507
19
+ torchx/cli/cmd_list.py,sha256=alkS9aIaDI8lX3W8uj8Vtr3IU3G2VeCuokKSd3zOFug,1409
18
20
  torchx/cli/cmd_log.py,sha256=v-EZYUDOcG95rEgTnrsmPJMUyxM9Mk8YFAJtUxtgViE,5475
19
- torchx/cli/cmd_run.py,sha256=4M1JJc7YmEa5T_2OFakCwCwiP0Ibpy-3zcLp1arrj9w,12203
21
+ torchx/cli/cmd_run.py,sha256=z8wS-M2W9hHZfLkA6DFiV6Y0LFS9KfEBc_NTwAwdviQ,18780
20
22
  torchx/cli/cmd_runopts.py,sha256=NWZiP8XpQjfTDJgays2c6MgL_8wxFoeDge6NstaZdKk,1302
21
23
  torchx/cli/cmd_status.py,sha256=22IAEmKs0qkG6kJi83u9dRX2Q-ntT7yehVx7FxtY-vQ,2114
22
- torchx/cli/cmd_tracker.py,sha256=RfLxE4Cq1wfk7k051RtZ8RPJp0pEKSCa3KmTeRs3LF8,5218
24
+ torchx/cli/cmd_tracker.py,sha256=9gmOmYi-89qQRGQfSrXCTto7ve54_JKFqs_wa7oRUA8,5223
23
25
  torchx/cli/colors.py,sha256=yLMes7e_UoLAfhxE0W6edhc58t83UHAlnCN2ANPeuXw,568
24
- torchx/cli/main.py,sha256=1Jf2cnO6Y2W69Adt88avmNPVrL6ZR4Hkff6GVB4293k,3484
25
- torchx/components/__init__.py,sha256=6Sb8RWRGObajkH7eFSKv5bHaN5bzTqJiSEmrIIo3OIc,12121
26
+ torchx/cli/main.py,sha256=1DJTmKdvPW_7hod8OUVT3Br2uwsZVEDU-2bTE0NJ0zY,3559
27
+ torchx/components/__init__.py,sha256=JaVte0j9Gqi6IrjZKudJ2Kr3gkdHsvlCdRTo-zYpSRo,11815
26
28
  torchx/components/component_test_base.py,sha256=22iNSdVa_qTW3SMM30Pw5UEWlK4DZVw0C03EqYiaLOI,4150
27
- torchx/components/dist.py,sha256=9jECk3jjQ4Yh4oWDK8vnQ7kcI0-OWCbbwj8uvBdI9FU,14588
29
+ torchx/components/dist.py,sha256=6DNPEvHVqEifmM8g1L7HVY169cQv_7tSfSlh3o6lTp4,14930
28
30
  torchx/components/interpret.py,sha256=g8gkKdDJvsBfX1ZrpVT7n2bMEtmwRV_1AqDyAnnQ_aA,697
29
31
  torchx/components/metrics.py,sha256=1gbp8BfzZWGa7PD1db5vRADlONzmae4qSBUUdCWayr0,2814
30
32
  torchx/components/serve.py,sha256=uxIC5gU2ecg0EJIPX_oEPzNNOXRAre4j2eXusrgwGAI,2156
31
33
  torchx/components/structured_arg.py,sha256=8jMcd0rtUmzCKEQKJ_JYzxSkMMK9q0fYjkwAs6wo78E,9595
32
34
  torchx/components/train.py,sha256=vtrQXRcD7bIcbb3lSeyD9BBlIe1mv1WNW6rnLK9R0Mw,1259
33
- torchx/components/utils.py,sha256=QRBxBm1OnNhOhpPs0lKdbJ8_mNhWYMklY6cl1gPIw9A,9363
35
+ torchx/components/utils.py,sha256=IMjihhgs7nO67YtTetUBjN_CRpyIyyQsaJBkp7mpHfk,9368
34
36
  torchx/components/integration_tests/__init__.py,sha256=Md3cCHD7Ano9kV15PqGbicgUO-RMdh4aVy1yKiDt_xE,208
35
- torchx/components/integration_tests/component_provider.py,sha256=cFNGqmclcZTJlOW_YGf5XEuGeWloTmcJEAh02Aob_PQ,3995
37
+ torchx/components/integration_tests/component_provider.py,sha256=g-4ig1vtd5Vzgug0VAKRAFUt6KAV3TgQrBCrwRSJ7ZY,3981
36
38
  torchx/components/integration_tests/integ_tests.py,sha256=O8jd8Jq5O0mns7xzIFsHexBDHkIIAIfELQkWCzNPzRw,5165
37
- torchx/distributed/__init__.py,sha256=lobebigfujmRTe_SJw07_a9iohBxDhq2iiPsV1YcKjw,10247
39
+ torchx/distributed/__init__.py,sha256=kh9YzDwWX7zFJJ8StR9qhMM2V3-66INs9i3ztDF-1ho,10252
38
40
  torchx/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
41
  torchx/examples/torchx_out_of_sync_training.py,sha256=sXiI1G8aGsfuvxRdBszDgM8pSplqhgfXjRnAcgRwNGM,397
40
42
  torchx/examples/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -46,78 +48,66 @@ torchx/examples/apps/lightning/interpret.py,sha256=Hd3kE5a6FyhxCmJBfTzb4Tlj518zh
46
48
  torchx/examples/apps/lightning/model.py,sha256=4CgObWfANqDN9emYSdmCpbRe_V_Lef_Hd3M-yayDbZE,4045
47
49
  torchx/examples/apps/lightning/profiler.py,sha256=SSSihnwjeUTkBoz0E3qn1b-wbkfUIowscx2ND_37zyw,1915
48
50
  torchx/examples/apps/lightning/train.py,sha256=0wvvshGHvZowePB4LfclXwn40X7i9euM0ReETWBcPSo,6253
49
- torchx/examples/pipelines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
- torchx/examples/pipelines/kfp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- torchx/examples/pipelines/kfp/advanced_pipeline.py,sha256=U5N_XmpxbuEIh-hDayjJ5Lnk2lYvmgr7oznFnsKUk5g,8431
52
- torchx/examples/pipelines/kfp/dist_pipeline.py,sha256=xFn59P1S22o2zOJ2LhlIkhjYH3le0zp2sLPNj5idTnE,2203
53
- torchx/examples/pipelines/kfp/intro_pipeline.py,sha256=oWdMHPLWf5nKRm0hS7psF0yUp8Tf7tfR-Sm3YuUCmWk,2776
54
51
  torchx/pipelines/__init__.py,sha256=2MbRVk5xwRjg-d2qPemeXpEhDsocMQumPQ53lsesZAI,606
55
- torchx/pipelines/kfp/__init__.py,sha256=8iJ8lql_fxwuk9VCYSxXnX6tPL228fB5mDZpOs-kpn4,736
56
- torchx/pipelines/kfp/adapter.py,sha256=5GeHULjb1kxG6wJtYVLpNkgdzUi4iYEaR42VFOwT6fY,9045
57
- torchx/pipelines/kfp/version.py,sha256=mYBxd6bm4MeR34D--xo-JLQ9wHeAl_ZQLwbItCf9tr0,539
58
52
  torchx/runner/__init__.py,sha256=x8Sz7s_tLxPgJgvWIhK4ju9BNZU61uBFywGwDY6CqJs,315
59
- torchx/runner/api.py,sha256=SQPwc_gar6o1qCBfjvG3XS4tQ6qcsNwUPuQTjJ6thXM,30085
60
- torchx/runner/config.py,sha256=CBuYQCBj52fs4NclxJbdx5xtDdgNnfDd7XSdHPE1IGo,18267
61
- torchx/runner/events/__init__.py,sha256=1_y0bojXl3FL0zlAj7BI4Dg5cXKXUmaa2jZbVH0EDUA,5268
62
- torchx/runner/events/api.py,sha256=pPLfowWTXtN_XcrEDNI45pE6Ijvdc_Gdxq76RduqgGE,2664
53
+ torchx/runner/api.py,sha256=Qi12Kjkr_zpQBesbLuCtgKET8JhHnQk22MV7Czi4l1A,30832
54
+ torchx/runner/config.py,sha256=SaKOB50d79WaMFPWK8CC4as6UaNFaRGhrBkfajq3KC4,18311
55
+ torchx/runner/events/__init__.py,sha256=cMiNjnr4eUNQ2Nxxtu4nsvN5lu56b-a6nJ-ct3i7DQk,5536
56
+ torchx/runner/events/api.py,sha256=bvxKBAYK8LzbrBNaNLgL1x0aivtfANmWo1EMGOrSR8k,2668
63
57
  torchx/runner/events/handlers.py,sha256=ThHCIJW21BfBgB7b6ftyjASJmD1KdizpjuTtsyqnvJs,522
64
58
  torchx/runtime/__init__.py,sha256=Wxje2BryzeQneFu5r6P9JJiEKG-_C9W1CcZ_JNrKT6g,593
65
59
  torchx/runtime/tracking/__init__.py,sha256=dYnAPnrXYREfPXkpHhdOFkcYIODWEbA13PdD-wLQYBo,3055
66
60
  torchx/runtime/tracking/api.py,sha256=SmUQyUKZqG3KlAhT7CJOGqRz1O274E4m63wQeOVq3CU,5472
67
- torchx/schedulers/__init__.py,sha256=igIBdxGhkuzH7oYVFXIA9xwjkSn3QzWZ_9dhfdl_M0I,2299
68
- torchx/schedulers/api.py,sha256=FbyG7mNnbXXj2_W1dQ_MnNO6fQe2FAd1rEz1R-BNg-c,14598
69
- torchx/schedulers/aws_batch_scheduler.py,sha256=06CpJw6Y71-g9CH6A6lul5-WLO5qxINf3UKLyyNmzS0,28105
70
- torchx/schedulers/aws_sagemaker_scheduler.py,sha256=flN8GumKE2Dz4X_foAt6Jnvt-ZVojWs6pcyrHwB0hz0,20921
61
+ torchx/schedulers/__init__.py,sha256=FQN9boQM4mwOD3sK9LZ3GBgw-gJ7Vx4MFj6z6ATQIrc,2211
62
+ torchx/schedulers/api.py,sha256=wT9H_ZTmpTHHweevDJbkV7NKXfwileHrt1bbhhCgj3c,16488
63
+ torchx/schedulers/aws_batch_scheduler.py,sha256=b6xC4BQKb7zagOGS6_z3_6fmOLsSEOxSprkGUE-yfJE,29412
64
+ torchx/schedulers/aws_sagemaker_scheduler.py,sha256=DnNF6huHGZLSUGWqKml4qGiWvmyDzX0i45tjsRfkedg,20881
71
65
  torchx/schedulers/devices.py,sha256=RjVcu22ZRl_9OKtOtmA1A3vNXgu2qD6A9ST0L0Hsg4I,1734
72
- torchx/schedulers/docker_scheduler.py,sha256=xuK00-dB6o8TV1YaZox7O5P09LHB2KeQ6t4eiNtqMYQ,16781
73
- torchx/schedulers/gcp_batch_scheduler.py,sha256=JQuaEJVL_7NSa9AeUc_0Qo74XZNJk_kp6XwgunvlUKI,16281
74
- torchx/schedulers/ids.py,sha256=3E-_vwVYC-8Tv8kjuY9-W7TbOe_-Laqd8a65uIN3hQY,1798
75
- torchx/schedulers/kubernetes_mcad_scheduler.py,sha256=1tuzq3OutCMdSPqg_dNmCHt_wyuSFKG0-ywLc3qITJo,42949
76
- torchx/schedulers/kubernetes_scheduler.py,sha256=0_loGJ7WnxEr9dhgFt3Gw-7nVLirMDVN-MAFTCq7erE,28217
77
- torchx/schedulers/local_scheduler.py,sha256=lOtVtmMIhytdju1Dlc3p99VALMY3qYRDPqjxdyTAbQQ,41877
78
- torchx/schedulers/lsf_scheduler.py,sha256=YS6Yel8tXJqLPxbcGz95lZG2nCi36AQXdNDyuBJePKg,17661
79
- torchx/schedulers/ray_scheduler.py,sha256=T-jsGSOa8O-h1kTUU7Q7Fk1RILL1Yzvuos_WFSQF8Fo,15795
80
- torchx/schedulers/slurm_scheduler.py,sha256=GlHGZBIklIyvBxxzw2CtFvCBmLQGCy_o8kf5lf411Ng,28592
66
+ torchx/schedulers/docker_scheduler.py,sha256=Kud3AIzQtMekgjlqcg1eNDb8kk29aPbGYOMAvPTZdhM,16840
67
+ torchx/schedulers/ids.py,sha256=8Qhf1Xqh845mwL-RXnWZXqIILNvml3z8udEXPFpyO7U,2247
68
+ torchx/schedulers/kubernetes_mcad_scheduler.py,sha256=FclJEdBdlgtBqKDbgd95oAk5Ya5XNTrwysfX7GS80GY,42896
69
+ torchx/schedulers/kubernetes_scheduler.py,sha256=kYO08hqVlZtNe_FZQP_e8WQk1P8-8SVkXZuY3Zm_Znk,39640
70
+ torchx/schedulers/local_scheduler.py,sha256=xGQbI02BNWGF91g00So6hCcYvR90bUAZ7fPzqnm3Ww8,41892
71
+ torchx/schedulers/lsf_scheduler.py,sha256=vUvEJb02u7WI6y7DsWJxJFXNylRucU7FqkBX7xwLTak,17638
72
+ torchx/schedulers/slurm_scheduler.py,sha256=ipDVDtgfqgL6c35NyoJgSPuQFt8-AeXVXAnXJVvmzrc,32032
81
73
  torchx/schedulers/streams.py,sha256=8_SLezgnWgfv_zXUsJCUM34-h2dtv25NmZuxEwkzmxw,2007
82
- torchx/schedulers/ray/__init__.py,sha256=fE0IHi1JJpxsNVBNzWNee2thrNXFFRhY94c80RxNSIE,231
83
- torchx/schedulers/ray/ray_common.py,sha256=pyNYFvTKVwdjDAeCBNbPwAWwVNmlLOJWExfn90XY8u8,610
84
- torchx/schedulers/ray/ray_driver.py,sha256=RdaCLfth16ky-5PDVOWRe_RuheWJu9xufWux2F9T7iw,12302
85
- torchx/specs/__init__.py,sha256=c2ALDbqHIhNBhrYxwXXURRwu1Rg5jcwukWF8emEO1Bk,6347
86
- torchx/specs/api.py,sha256=wkhHOxeWH_tFO3npKqPhNg4VX2NH5gPIFEylkPBo3AU,41315
87
- torchx/specs/builders.py,sha256=f5Yy8KoL2OgPUiqJRkZ4E6lboq5Srkh5mD17F0EBdeg,10506
88
- torchx/specs/file_linter.py,sha256=QCwob5STTBuy8RsxaevTI-Dk6R8siDJn81LyaOwazes,12333
89
- torchx/specs/finder.py,sha256=lMCS1hUR-x7j4sAjfJZnKFeS1RlkFTeJtit4EL_ErIo,18182
90
- torchx/specs/named_resources_aws.py,sha256=ISjHtifRJqB8u7PeAMiyLyO_S0WCaZiK-CFF3qe6JDU,11415
74
+ torchx/specs/__init__.py,sha256=TaC0AveTebkCMo5hmdY1wGpo09vFDqzWnsT166ionTw,7108
75
+ torchx/specs/api.py,sha256=7FdLFfadNWqXTLJ_EtP5t1uVS2Vc_4Gj5GLFoI628oE,49338
76
+ torchx/specs/builders.py,sha256=Ye3of4MupJ-da8vLaX6_-nzGo_FRw1BFpYsX6dAZCNk,13730
77
+ torchx/specs/file_linter.py,sha256=z0c4mKJv47BWiPaWCdUM0A8kHwnj4b1s7oTmESuD9Tc,14407
78
+ torchx/specs/finder.py,sha256=gWQNEFrLYqrZoI0gMMhQ70YAC4sxqS0ZFpoWAmcVi44,17438
79
+ torchx/specs/named_resources_aws.py,sha256=ZNAbw6lD8NUlMfcJ-LpX14dMSaHO7m4Yt9iHwAF44yg,11674
91
80
  torchx/specs/named_resources_generic.py,sha256=Sg4tAdqiiWDrDz2Lj_pnfsjzGIXKTou73wPseh6j55w,2646
81
+ torchx/specs/overlays.py,sha256=HmY2yzC8ejgihviNWFT4rbYmP-gTcqpxVZTP6qBiIYM,3778
92
82
  torchx/specs/test/components/__init__.py,sha256=J8qjUOysmcMAek2KFN13mViOXZxTYc5vCrF02t3VuFU,223
93
83
  torchx/specs/test/components/a/__init__.py,sha256=kdxEgnI8QBSBiuTjaB4qDD7JX84hWowyPWU4B2Cqe9A,561
94
84
  torchx/specs/test/components/a/b/__init__.py,sha256=J8qjUOysmcMAek2KFN13mViOXZxTYc5vCrF02t3VuFU,223
95
85
  torchx/specs/test/components/a/b/c.py,sha256=FhixafzNqpS5zvggtWIWLxRd6HIxsOmct-d1Hs-rDoc,554
96
86
  torchx/specs/test/components/c/__init__.py,sha256=5CBMckkpqJUdxBQBYHGSsItqq1gj2V0UiCw02Qfq6MM,246
97
87
  torchx/specs/test/components/c/d.py,sha256=2AjE-FmQXJTw3hws66O83ToQPmjOEZLDf-jDAKrrUkQ,546
98
- torchx/tracker/__init__.py,sha256=u4Fjw4pf49ZLbzQ8mTj5p3Dp_gvnJKxNIwWY7WszZ8E,4365
99
- torchx/tracker/api.py,sha256=tQk8o8naMfmQVug0BBDiiVz_9SWVRdJpgyUjwytsFYE,11257
88
+ torchx/tracker/__init__.py,sha256=qo39aOa0Dz9zt4TtFkqPeIaH7MNqdAkFlGaOFiDLXTI,4375
89
+ torchx/tracker/api.py,sha256=WZ7TYdbSVx_5h5MlX9EwQLRpxmIf0oKdiQwQ0zvkO3o,11262
100
90
  torchx/tracker/mlflow.py,sha256=poeoIXVPzr2sxgi515fMGRH83KAFNL6XFILMh0EQ2Dw,14487
101
91
  torchx/tracker/backend/__init__.py,sha256=fE0IHi1JJpxsNVBNzWNee2thrNXFFRhY94c80RxNSIE,231
102
92
  torchx/tracker/backend/fsspec.py,sha256=528xKryBE27Rm_OHD7r2R6fmVAclknBtoy1s034Ny6c,10440
103
93
  torchx/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
94
  torchx/util/cuda.py,sha256=-ZTa1WCLnY2WtSWAdWufLQqZSDCZfZsloBuiS84LIkU,1099
105
95
  torchx/util/datetime.py,sha256=hV6Sg0u5KTBe68yrmy_RGCC5su0i4Tb_mAYphWamiXI,405
106
- torchx/util/entrypoints.py,sha256=XgwCjQ5f1xchUVxABiPqODgd3--SrOtUTlgtMlAeKKc,3980
96
+ torchx/util/entrypoints.py,sha256=YUv7F-Vr4uuY4_82IBPdrz5vrch_qsx_dIr6e08kSD4,3800
107
97
  torchx/util/io.py,sha256=HNpWLcFUX0WTAP3CsdamHz--FR5A4kSdLCPfNqa2UkA,1807
108
98
  torchx/util/log_tee_helpers.py,sha256=wPyozmh9BOt_2d3Gxa0iNogwnjzwFitIIMBJOJ1arIw,6330
109
99
  torchx/util/modules.py,sha256=o4y_d07gTpJ4nIVBcoUVJ0JtXIHEsEC5kbgBM6NGpgA,2135
110
100
  torchx/util/session.py,sha256=r6M_nyzXgcbk1GgYGZ324F_ehRGCqjjdVk4YgKxMj8M,1214
111
101
  torchx/util/shlex.py,sha256=eXEKu8KC3zIcd8tEy9_s8Ds5oma8BORr-0VGWNpG2dk,463
112
- torchx/util/strings.py,sha256=GkLWCmYS89Uv6bWc5hH0XwvHy7oQmprv2U7axC4A2e8,678
113
- torchx/util/types.py,sha256=xelu9gOUQ540GvvzDqk1wYb4csB09OgYQJwlVz62O5o,8889
102
+ torchx/util/strings.py,sha256=7Ef1loz2IYMrzeJ6Lewywi5cBIc3X3g7lSPbT1Tn_z4,664
103
+ torchx/util/types.py,sha256=E9dxAWQnsJkIDuHtg-poeOJ4etucSI_xP_Z5kNJX8uI,9229
114
104
  torchx/workspace/__init__.py,sha256=FqN8AN4VhR1C_SBY10MggQvNZmyanbbuPuE-JCjkyUY,798
115
- torchx/workspace/api.py,sha256=PtDkGTC5lX03pRoYpuMz2KCmM1ZOycRP1UknqvNb97Y,6341
105
+ torchx/workspace/api.py,sha256=UESQ4qgxXjsb6Y1wP9OGv2ixaFgaTs3SqghmNuOJIZM,10235
116
106
  torchx/workspace/dir_workspace.py,sha256=npNW_IjUZm_yS5r-8hrRkH46ndDd9a_eApT64m1S1T4,2268
117
107
  torchx/workspace/docker_workspace.py,sha256=PFu2KQNVC-0p2aKJ-W_BKA9ZOmXdCY2ABEkCExp3udQ,10269
118
- torchx_nightly-2025.8.5.dist-info/LICENSE,sha256=WVHfXhFC0Ia8LTKt_nJVYobdqTJVg_4J3Crrfm2A8KQ,1721
119
- torchx_nightly-2025.8.5.dist-info/METADATA,sha256=bEA3r-CVHdMqjEKsH_XSOWVaXf2Cm48OQ20Hc0UlSLw,6103
120
- torchx_nightly-2025.8.5.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
121
- torchx_nightly-2025.8.5.dist-info/entry_points.txt,sha256=T328AMXeKI3JZnnxfkEew2ZcMN1oQDtkXjMz7lkV-P4,169
122
- torchx_nightly-2025.8.5.dist-info/top_level.txt,sha256=pxew3bc2gsiViS0zADs0jb6kC5v8o_Yy_85fhHj_J1A,7
123
- torchx_nightly-2025.8.5.dist-info/RECORD,,
108
+ torchx_nightly-2026.1.11.dist-info/licenses/LICENSE,sha256=WVHfXhFC0Ia8LTKt_nJVYobdqTJVg_4J3Crrfm2A8KQ,1721
109
+ torchx_nightly-2026.1.11.dist-info/METADATA,sha256=VzSwxPN0aaQV3U3gNuMZMvhXiVRwO3W51DLXH1jaEr0,5323
110
+ torchx_nightly-2026.1.11.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
111
+ torchx_nightly-2026.1.11.dist-info/entry_points.txt,sha256=T328AMXeKI3JZnnxfkEew2ZcMN1oQDtkXjMz7lkV-P4,169
112
+ torchx_nightly-2026.1.11.dist-info/top_level.txt,sha256=pxew3bc2gsiViS0zADs0jb6kC5v8o_Yy_85fhHj_J1A,7
113
+ torchx_nightly-2026.1.11.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.45.1)
2
+ Generator: setuptools (79.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
File without changes
File without changes