polyaxon 2.0.0rc49__py3-none-any.whl → 2.4.0rc1__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 (177) hide show
  1. polyaxon/_auxiliaries/cleaner.py +8 -3
  2. polyaxon/_auxiliaries/init.py +7 -2
  3. polyaxon/_auxiliaries/notifier.py +8 -2
  4. polyaxon/_auxiliaries/sidecar.py +30 -2
  5. polyaxon/_cli/artifacts.py +96 -11
  6. polyaxon/_cli/components.py +96 -11
  7. polyaxon/_cli/config.py +118 -22
  8. polyaxon/_cli/dashboard.py +15 -2
  9. polyaxon/_cli/init.py +1 -1
  10. polyaxon/_cli/models.py +96 -11
  11. polyaxon/_cli/operations.py +267 -90
  12. polyaxon/_cli/project_versions.py +139 -6
  13. polyaxon/_cli/projects.py +23 -9
  14. polyaxon/_cli/run.py +37 -9
  15. polyaxon/_cli/services/agent.py +2 -2
  16. polyaxon/_cli/services/clean_artifacts.py +1 -1
  17. polyaxon/_cli/services/sidecar.py +8 -1
  18. polyaxon/_client/client.py +17 -0
  19. polyaxon/_client/mixin.py +39 -0
  20. polyaxon/_client/project.py +218 -23
  21. polyaxon/_client/run.py +131 -33
  22. polyaxon/_compiler/contexts/contexts.py +2 -2
  23. polyaxon/_compiler/contexts/ray_job.py +4 -2
  24. polyaxon/_compiler/resolver/agent.py +12 -2
  25. polyaxon/_compiler/resolver/runtime.py +2 -2
  26. polyaxon/_contexts/paths.py +4 -7
  27. polyaxon/_deploy/operators/compose.py +1 -27
  28. polyaxon/_deploy/schemas/deployment.py +4 -1
  29. polyaxon/_deploy/schemas/intervals.py +0 -7
  30. polyaxon/_deploy/schemas/proxy.py +1 -0
  31. polyaxon/_deploy/schemas/service.py +11 -1
  32. polyaxon/_docker/converter/base/base.py +8 -0
  33. polyaxon/_docker/executor.py +10 -4
  34. polyaxon/_env_vars/getters/owner_entity.py +4 -2
  35. polyaxon/_env_vars/getters/project.py +4 -2
  36. polyaxon/_env_vars/getters/run.py +5 -2
  37. polyaxon/_env_vars/keys.py +7 -1
  38. polyaxon/_flow/__init__.py +2 -0
  39. polyaxon/_flow/builds/__init__.py +19 -6
  40. polyaxon/_flow/component/base.py +1 -0
  41. polyaxon/_flow/component/component.py +14 -0
  42. polyaxon/_flow/environment/__init__.py +8 -8
  43. polyaxon/_flow/hooks/__init__.py +19 -6
  44. polyaxon/_flow/init/__init__.py +6 -6
  45. polyaxon/_flow/matrix/iterative.py +0 -1
  46. polyaxon/_flow/matrix/tuner.py +18 -6
  47. polyaxon/_flow/operations/operation.py +44 -17
  48. polyaxon/_flow/plugins/__init__.py +6 -0
  49. polyaxon/_flow/run/__init__.py +2 -2
  50. polyaxon/_flow/run/dag.py +2 -2
  51. polyaxon/_flow/run/dask/dask.py +0 -1
  52. polyaxon/_flow/run/dask/replica.py +3 -3
  53. polyaxon/_flow/run/enums.py +5 -0
  54. polyaxon/_flow/run/job.py +4 -4
  55. polyaxon/_flow/run/kubeflow/mpi_job.py +1 -2
  56. polyaxon/_flow/run/kubeflow/mx_job.py +1 -2
  57. polyaxon/_flow/run/kubeflow/paddle_job.py +35 -4
  58. polyaxon/_flow/run/kubeflow/pytorch_job.py +51 -5
  59. polyaxon/_flow/run/kubeflow/replica.py +4 -4
  60. polyaxon/_flow/run/kubeflow/scheduling_policy.py +12 -0
  61. polyaxon/_flow/run/kubeflow/tf_job.py +3 -3
  62. polyaxon/_flow/run/kubeflow/xgboost_job.py +1 -2
  63. polyaxon/_flow/run/ray/ray.py +2 -3
  64. polyaxon/_flow/run/ray/replica.py +3 -3
  65. polyaxon/_flow/run/service.py +4 -4
  66. polyaxon/_fs/fs.py +7 -2
  67. polyaxon/_fs/utils.py +3 -2
  68. polyaxon/_k8s/converter/base/base.py +2 -1
  69. polyaxon/_k8s/converter/base/main.py +1 -0
  70. polyaxon/_k8s/converter/base/sidecar.py +16 -1
  71. polyaxon/_k8s/converter/common/accelerators.py +7 -4
  72. polyaxon/_k8s/converter/converters/job.py +1 -1
  73. polyaxon/_k8s/converter/converters/kubeflow/paddle_job.py +1 -0
  74. polyaxon/_k8s/converter/converters/kubeflow/pytroch_job.py +2 -0
  75. polyaxon/_k8s/converter/converters/kubeflow/tf_job.py +1 -0
  76. polyaxon/_k8s/converter/converters/ray_job.py +4 -2
  77. polyaxon/_k8s/custom_resources/dask_job.py +3 -0
  78. polyaxon/_k8s/custom_resources/kubeflow/common.py +4 -1
  79. polyaxon/_k8s/custom_resources/kubeflow/paddle_job.py +10 -1
  80. polyaxon/_k8s/custom_resources/kubeflow/pytorch_job.py +14 -1
  81. polyaxon/_k8s/custom_resources/kubeflow/tf_job.py +4 -0
  82. polyaxon/_k8s/custom_resources/ray_job.py +3 -0
  83. polyaxon/_k8s/custom_resources/setter.py +1 -1
  84. polyaxon/_k8s/executor/async_executor.py +2 -0
  85. polyaxon/_k8s/executor/base.py +23 -6
  86. polyaxon/_k8s/logging/async_monitor.py +150 -5
  87. polyaxon/_k8s/manager/async_manager.py +96 -23
  88. polyaxon/_k8s/manager/base.py +4 -0
  89. polyaxon/_k8s/manager/manager.py +282 -134
  90. polyaxon/_local_process/__init__.py +0 -0
  91. polyaxon/_local_process/agent.py +6 -0
  92. polyaxon/_local_process/converter/__init__.py +1 -0
  93. polyaxon/_local_process/converter/base/__init__.py +1 -0
  94. polyaxon/_local_process/converter/base/base.py +140 -0
  95. polyaxon/_local_process/converter/base/containers.py +69 -0
  96. polyaxon/_local_process/converter/base/env_vars.py +253 -0
  97. polyaxon/_local_process/converter/base/init.py +414 -0
  98. polyaxon/_local_process/converter/base/main.py +74 -0
  99. polyaxon/_local_process/converter/base/mounts.py +82 -0
  100. polyaxon/_local_process/converter/converters/__init__.py +8 -0
  101. polyaxon/_local_process/converter/converters/job.py +40 -0
  102. polyaxon/_local_process/converter/converters/service.py +41 -0
  103. polyaxon/_local_process/converter/mixins.py +38 -0
  104. polyaxon/_local_process/executor.py +132 -0
  105. polyaxon/_local_process/process_types.py +39 -0
  106. polyaxon/_managers/agent.py +2 -0
  107. polyaxon/_managers/home.py +2 -1
  108. polyaxon/_operations/tuner.py +1 -0
  109. polyaxon/_polyaxonfile/check.py +2 -0
  110. polyaxon/_polyaxonfile/manager/operations.py +3 -0
  111. polyaxon/_polyaxonfile/manager/workflows.py +2 -0
  112. polyaxon/_polyaxonfile/specs/compiled_operation.py +1 -0
  113. polyaxon/_polyaxonfile/specs/operation.py +1 -0
  114. polyaxon/_polyaxonfile/specs/sections.py +3 -0
  115. polyaxon/_pql/manager.py +1 -1
  116. polyaxon/_runner/agent/async_agent.py +97 -21
  117. polyaxon/_runner/agent/base_agent.py +27 -9
  118. polyaxon/_runner/agent/client.py +15 -1
  119. polyaxon/_runner/agent/sync_agent.py +85 -20
  120. polyaxon/_runner/converter/converter.py +6 -2
  121. polyaxon/_runner/executor.py +13 -7
  122. polyaxon/_schemas/agent.py +27 -1
  123. polyaxon/_schemas/client.py +30 -3
  124. polyaxon/_schemas/installation.py +4 -3
  125. polyaxon/_schemas/lifecycle.py +10 -5
  126. polyaxon/_schemas/log_handler.py +2 -3
  127. polyaxon/_schemas/types/artifacts.py +3 -3
  128. polyaxon/_schemas/types/dockerfile.py +3 -3
  129. polyaxon/_schemas/types/file.py +3 -3
  130. polyaxon/_schemas/types/git.py +3 -3
  131. polyaxon/_schemas/types/tensorboard.py +3 -3
  132. polyaxon/_sdk/api/agents_v1_api.py +1076 -73
  133. polyaxon/_sdk/api/organizations_v1_api.py +371 -10
  134. polyaxon/_sdk/api/project_dashboards_v1_api.py +12 -12
  135. polyaxon/_sdk/api/project_searches_v1_api.py +12 -12
  136. polyaxon/_sdk/api/projects_v1_api.py +221 -44
  137. polyaxon/_sdk/api/runs_v1_api.py +917 -445
  138. polyaxon/_sdk/api/service_accounts_v1_api.py +16 -16
  139. polyaxon/_sdk/api/teams_v1_api.py +2827 -375
  140. polyaxon/_sdk/api/users_v1_api.py +231 -55
  141. polyaxon/_sdk/async_client/api_client.py +4 -0
  142. polyaxon/_sdk/schemas/__init__.py +10 -2
  143. polyaxon/_sdk/schemas/v1_agent.py +2 -1
  144. polyaxon/_sdk/schemas/v1_agent_reconcile_body_request.py +14 -0
  145. polyaxon/_sdk/schemas/v1_artifact_tree.py +1 -1
  146. polyaxon/_sdk/schemas/v1_dashboard_spec.py +4 -0
  147. polyaxon/_sdk/schemas/v1_events_response.py +4 -0
  148. polyaxon/_sdk/schemas/v1_organization.py +1 -0
  149. polyaxon/_sdk/schemas/v1_preset.py +8 -0
  150. polyaxon/_sdk/schemas/v1_project.py +1 -0
  151. polyaxon/_sdk/schemas/v1_project_settings.py +4 -2
  152. polyaxon/_sdk/schemas/v1_run.py +2 -2
  153. polyaxon/_sdk/schemas/v1_run_edge_lineage.py +14 -0
  154. polyaxon/_sdk/schemas/v1_run_edges_graph.py +9 -0
  155. polyaxon/_sdk/schemas/v1_section_spec.py +7 -2
  156. polyaxon/_sdk/schemas/v1_settings_catalog.py +1 -0
  157. polyaxon/_sdk/schemas/v1_team.py +3 -0
  158. polyaxon/_sdk/schemas/v1_user.py +1 -2
  159. polyaxon/_sdk/schemas/v1_user_access.py +17 -0
  160. polyaxon/_services/values.py +1 -0
  161. polyaxon/_sidecar/container/__init__.py +39 -18
  162. polyaxon/_sidecar/container/monitors/__init__.py +1 -0
  163. polyaxon/_sidecar/container/monitors/logs.py +10 -13
  164. polyaxon/_sidecar/container/monitors/spec.py +24 -0
  165. polyaxon/_sidecar/ignore.py +0 -1
  166. polyaxon/_utils/fqn_utils.py +25 -2
  167. polyaxon/client.py +1 -1
  168. polyaxon/pkg.py +1 -1
  169. polyaxon/schemas.py +8 -1
  170. polyaxon/settings.py +6 -0
  171. {polyaxon-2.0.0rc49.dist-info → polyaxon-2.4.0rc1.dist-info}/METADATA +43 -43
  172. {polyaxon-2.0.0rc49.dist-info → polyaxon-2.4.0rc1.dist-info}/RECORD +176 -155
  173. {polyaxon-2.0.0rc49.dist-info → polyaxon-2.4.0rc1.dist-info}/WHEEL +1 -1
  174. polyaxon/_sdk/schemas/v1_project_user_access.py +0 -10
  175. {polyaxon-2.0.0rc49.dist-info → polyaxon-2.4.0rc1.dist-info}/LICENSE +0 -0
  176. {polyaxon-2.0.0rc49.dist-info → polyaxon-2.4.0rc1.dist-info}/entry_points.txt +0 -0
  177. {polyaxon-2.0.0rc49.dist-info → polyaxon-2.4.0rc1.dist-info}/top_level.txt +0 -0
@@ -3,6 +3,7 @@ import os
3
3
  from typing import List, Optional
4
4
 
5
5
  from clipped.utils.enums import get_enum_value
6
+ from clipped.utils.versions import clean_version_post_suffix
6
7
 
7
8
  from polyaxon import pkg
8
9
  from polyaxon._connections import V1Connection
@@ -158,7 +159,11 @@ class V1PolyaxonCleaner(BaseServiceConfig):
158
159
 
159
160
  def get_image(self) -> str:
160
161
  image = self.image or "polyaxon/polyaxon-init"
161
- image_tag = self.image_tag if self.image_tag is not None else pkg.VERSION
162
+ image_tag = (
163
+ self.image_tag
164
+ if self.image_tag is not None
165
+ else clean_version_post_suffix(pkg.VERSION)
166
+ )
162
167
  return "{}:{}".format(image, image_tag) if image_tag else image
163
168
 
164
169
  def get_resources(self) -> k8s_schemas.V1ResourceRequirements:
@@ -180,7 +185,7 @@ def get_default_cleaner_container(
180
185
  run_uuid, get_enum_value(run_kind)
181
186
  )
182
187
  image = "polyaxon/polyaxon-init"
183
- image_tag = pkg.VERSION
188
+ image_tag = clean_version_post_suffix(pkg.VERSION)
184
189
  image_pull_policy = PullPolicy.IF_NOT_PRESENT.value
185
190
  resources = get_cleaner_resources()
186
191
  if cleaner:
@@ -210,7 +215,7 @@ def get_batch_cleaner_container(
210
215
  store.kind.replace("_", "-"), store.name, subpaths
211
216
  )
212
217
  image = "polyaxon/polyaxon-init"
213
- image_tag = pkg.VERSION
218
+ image_tag = clean_version_post_suffix(pkg.VERSION)
214
219
  image_pull_policy = PullPolicy.IF_NOT_PRESENT.value
215
220
  resources = get_cleaner_resources()
216
221
  if cleaner:
@@ -1,6 +1,7 @@
1
1
  from typing import Dict, Optional, Union
2
2
 
3
3
  from clipped.compact.pydantic import Field, StrictStr, validator
4
+ from clipped.utils.versions import clean_version_post_suffix
4
5
 
5
6
  from polyaxon import pkg
6
7
  from polyaxon._containers.pull_policy import PullPolicy
@@ -103,7 +104,11 @@ class V1PolyaxonInitContainer(BaseSchemaModel):
103
104
 
104
105
  def get_image(self) -> str:
105
106
  image = self.image or "polyaxon/polyaxon-init"
106
- image_tag = self.image_tag if self.image_tag is not None else pkg.VERSION
107
+ image_tag = (
108
+ self.image_tag
109
+ if self.image_tag is not None
110
+ else clean_version_post_suffix(pkg.VERSION)
111
+ )
107
112
  return "{}:{}".format(image, image_tag) if image_tag else image
108
113
 
109
114
  def get_resources(self) -> k8s_schemas.V1ResourceRequirements:
@@ -115,7 +120,7 @@ def get_default_init_container(
115
120
  ) -> Union[Dict, V1PolyaxonInitContainer]:
116
121
  default = {
117
122
  "image": "polyaxon/polyaxon-init",
118
- "imageTag": pkg.VERSION,
123
+ "imageTag": clean_version_post_suffix(pkg.VERSION),
119
124
  "imagePullPolicy": PullPolicy.IF_NOT_PRESENT.value,
120
125
  "resources": {
121
126
  "limits": {"cpu": "1", "memory": "500Mi"},
@@ -1,5 +1,7 @@
1
1
  from typing import Optional
2
2
 
3
+ from clipped.utils.versions import clean_version_post_suffix
4
+
3
5
  from polyaxon import pkg
4
6
  from polyaxon._containers.names import MAIN_JOB_CONTAINER
5
7
  from polyaxon._containers.pull_policy import PullPolicy
@@ -154,7 +156,11 @@ class V1PolyaxonNotifier(BaseServiceConfig):
154
156
 
155
157
  def get_image(self) -> str:
156
158
  image = self.image or "polyaxon/polyaxon-events-handlers"
157
- image_tag = self.image_tag if self.image_tag is not None else pkg.VERSION
159
+ image_tag = (
160
+ self.image_tag
161
+ if self.image_tag is not None
162
+ else clean_version_post_suffix(pkg.VERSION)
163
+ )
158
164
  return "{}:{}".format(image, image_tag) if image_tag else image
159
165
 
160
166
  def get_resources(self) -> k8s_schemas.V1ResourceRequirements:
@@ -165,7 +171,7 @@ def get_default_notification_container(
165
171
  notifier: Optional[V1PolyaxonNotifier] = None,
166
172
  ) -> k8s_schemas.V1Container:
167
173
  image = "polyaxon/polyaxon-events-handlers"
168
- image_tag = pkg.VERSION
174
+ image_tag = clean_version_post_suffix(pkg.VERSION)
169
175
  image_pull_policy = PullPolicy.IF_NOT_PRESENT.value
170
176
  resources = get_notifier_resources()
171
177
  if notifier:
@@ -2,6 +2,7 @@ from typing import Any, Dict, Optional, Union
2
2
 
3
3
  from clipped.compact.pydantic import Field, StrictStr
4
4
  from clipped.types.ref_or_obj import BoolOrRef, IntOrRef, RefField
5
+ from clipped.utils.versions import clean_version_post_suffix
5
6
 
6
7
  from polyaxon import pkg
7
8
  from polyaxon._containers.pull_policy import PullPolicy
@@ -31,6 +32,8 @@ class V1PolyaxonSidecarContainer(BaseSchemaModel):
31
32
  resources: V1ResourceRequirements, optional.
32
33
  sleep_interval: int, optional.
33
34
  sync_interval: int, optional.
35
+ monitor_logs: bool, optional.
36
+ monitor_spec: bool, optional.
34
37
 
35
38
  ## YAML usage
36
39
 
@@ -45,6 +48,8 @@ class V1PolyaxonSidecarContainer(BaseSchemaModel):
45
48
  >>> cpu: "50m"
46
49
  >>> sleepInterval: 5
47
50
  >>> syncInterval: 60
51
+ >>> monitorLogs: true
52
+ >>> monitorSpec: true
48
53
  ```
49
54
 
50
55
  ## Fields
@@ -120,6 +125,24 @@ class V1PolyaxonSidecarContainer(BaseSchemaModel):
120
125
  >>> sidecar:
121
126
  >>> syncInterval: 5
122
127
  ```
128
+
129
+ ### monitorLogs
130
+
131
+ Whether or not to monitor the logs, default `true`.
132
+
133
+ ```yaml
134
+ >>> sidecar:
135
+ >>> monitorLogs: true
136
+ ```
137
+
138
+ ### monitorSpec
139
+
140
+ Whether or not to monitor the spec, default `true`.
141
+
142
+ ```yaml
143
+ >>> sidecar:
144
+ >>> monitorSpec: true
145
+ ```
123
146
  """
124
147
 
125
148
  _IDENTIFIER = "polyaxon_sidecar"
@@ -130,11 +153,16 @@ class V1PolyaxonSidecarContainer(BaseSchemaModel):
130
153
  sleep_interval: Optional[IntOrRef] = Field(alias="sleepInterval")
131
154
  sync_interval: Optional[IntOrRef] = Field(alias="syncInterval")
132
155
  monitor_logs: Optional[BoolOrRef] = Field(alias="monitorLogs")
156
+ monitor_spec: Optional[BoolOrRef] = Field(alias="monitorSpec")
133
157
  resources: Optional[Union[Dict[str, Any], RefField]]
134
158
 
135
159
  def get_image(self):
136
160
  image = self.image or "polyaxon/polyaxon-sidecar"
137
- image_tag = self.image_tag if self.image_tag is not None else pkg.VERSION
161
+ image_tag = (
162
+ self.image_tag
163
+ if self.image_tag is not None
164
+ else clean_version_post_suffix(pkg.VERSION)
165
+ )
138
166
  return "{}:{}".format(image, image_tag) if image_tag else image
139
167
 
140
168
  def get_resources(self):
@@ -146,7 +174,7 @@ def get_default_sidecar_container(
146
174
  ) -> Union[Dict, V1PolyaxonSidecarContainer]:
147
175
  default = {
148
176
  "image": "polyaxon/polyaxon-sidecar",
149
- "imageTag": pkg.VERSION,
177
+ "imageTag": clean_version_post_suffix(pkg.VERSION),
150
178
  "imagePullPolicy": PullPolicy.IF_NOT_PRESENT.value,
151
179
  "resources": {
152
180
  "limits": {"cpu": "1", "memory": "500Mi"},
@@ -15,6 +15,7 @@ from polyaxon._cli.project_versions import (
15
15
  list_project_versions,
16
16
  open_project_version_dashboard,
17
17
  pull_one_or_many_project_versions,
18
+ push_one_or_many_project_versions,
18
19
  register_project_version,
19
20
  stage_project_version,
20
21
  transfer_project_version,
@@ -72,7 +73,7 @@ def ls(ctx, project, query, sort, limit, offset):
72
73
  \b
73
74
  $ polyaxon artifacts ls --project=acme/data-versioning
74
75
  """
75
- owner, project_name = get_project_or_local(
76
+ owner, _, project_name = get_project_or_local(
76
77
  project or ctx.obj.get("project"), is_cli=True
77
78
  )
78
79
  list_project_versions(
@@ -145,11 +146,12 @@ def register(
145
146
  $ polyaxon artifacts register -p owner/name -ver v1 --tags="tag1,tag2"
146
147
  """
147
148
  version = version or ctx.obj.get("version")
148
- owner, project_name = get_project_or_local(
149
+ owner, team, project_name = get_project_or_local(
149
150
  project or ctx.obj.get("project"), is_cli=True
150
151
  )
151
152
  register_project_version(
152
153
  owner=owner,
154
+ team=team,
153
155
  project_name=project_name,
154
156
  version=version,
155
157
  kind=V1ProjectVersionKind.ARTIFACT,
@@ -227,11 +229,12 @@ def copy(
227
229
  $ polyaxon artifacts copy -p owner/name -ver v1 --tags="tag1,tag2" --name new-v1
228
230
  """
229
231
  version = version or ctx.obj.get("version")
230
- owner, project_name = get_project_or_local(
232
+ owner, team, project_name = get_project_or_local(
231
233
  project or ctx.obj.get("project"), is_cli=True
232
234
  )
233
235
  copy_project_version(
234
236
  owner=owner,
237
+ team=team,
235
238
  project_name=project_name,
236
239
  version=version,
237
240
  kind=V1ProjectVersionKind.ARTIFACT,
@@ -265,11 +268,12 @@ def get(ctx, project, version):
265
268
  $ polyaxon artifacts get -p owner/data-versioning -ver rc1
266
269
  """
267
270
  version = version or ctx.obj.get("version") or "latest"
268
- owner, project_name = get_project_or_local(
271
+ owner, team, project_name = get_project_or_local(
269
272
  project or ctx.obj.get("project"), is_cli=True
270
273
  )
271
274
  get_project_version(
272
275
  owner=owner,
276
+ team=team,
273
277
  project_name=project_name,
274
278
  kind=V1ProjectVersionKind.ARTIFACT,
275
279
  version=version,
@@ -296,7 +300,7 @@ def stages(ctx, project, version):
296
300
  $ polyaxon artifacts stages -p owner/my-project -ver rc12
297
301
  """
298
302
  version = version or ctx.obj.get("version") or "latest"
299
- owner, project_name = get_project_or_local(
303
+ owner, _, project_name = get_project_or_local(
300
304
  project or ctx.obj.get("project"), is_cli=True
301
305
  )
302
306
  get_project_version_stages(
@@ -332,7 +336,7 @@ def delete(ctx, project, version, yes):
332
336
  $ polyaxon artifacts get -p owner/my-project -ver rc12
333
337
  """
334
338
  version = version or ctx.obj.get("version") or "latest"
335
- owner, project_name = get_project_or_local(
339
+ owner, _, project_name = get_project_or_local(
336
340
  project or ctx.obj.get("project"), is_cli=True
337
341
  )
338
342
  delete_project_version(
@@ -375,7 +379,7 @@ def update(ctx, project, version, name, description, tags):
375
379
  $ polyaxon artifacts update --tags="foo, bar"
376
380
  """
377
381
  version = version or ctx.obj.get("version") or "latest"
378
- owner, project_name = get_project_or_local(
382
+ owner, _, project_name = get_project_or_local(
379
383
  project or ctx.obj.get("project"), is_cli=True
380
384
  )
381
385
  update_project_version(
@@ -423,7 +427,7 @@ def stage(ctx, project, version, to, reason, message):
423
427
  $ polyaxon artifacts stage -p acme/foobar -ver rc12 --to=staging --reason GithubAction --message="Use carefully!"
424
428
  """
425
429
  version = version or ctx.obj.get("version") or "latest"
426
- owner, project_name = get_project_or_local(
430
+ owner, _, project_name = get_project_or_local(
427
431
  project or ctx.obj.get("project"), is_cli=True
428
432
  )
429
433
  stage_project_version(
@@ -461,7 +465,7 @@ def transfer(ctx, project, version, to_project):
461
465
  $ polyaxon artifacts transfer -p acme/foobar -ver rc12 --to-project=dest-project
462
466
  """
463
467
  version = version or ctx.obj.get("version") or "latest"
464
- owner, project_name = get_project_or_local(
468
+ owner, _, project_name = get_project_or_local(
465
469
  project or ctx.obj.get("project"), is_cli=True
466
470
  )
467
471
  transfer_project_version(
@@ -530,7 +534,7 @@ def pull(
530
534
  \b
531
535
  $ polyaxon artifacts pull -p acme/foobar -a --path /tmp/versions
532
536
  """
533
- owner, project_name = get_project_or_local(
537
+ owner, _, project_name = get_project_or_local(
534
538
  project or ctx.obj.get("project"), is_cli=True
535
539
  )
536
540
  pull_one_or_many_project_versions(
@@ -547,6 +551,86 @@ def pull(
547
551
  )
548
552
 
549
553
 
554
+ @artifacts.command()
555
+ @click.option(*OPTIONS_PROJECT["args"], **OPTIONS_PROJECT["kwargs"])
556
+ @click.option(*OPTIONS_ARTIFACT_VERSION["args"], **OPTIONS_ARTIFACT_VERSION["kwargs"])
557
+ @click.option(
558
+ "--all-versions",
559
+ "-a",
560
+ is_flag=True,
561
+ default=False,
562
+ help="To push all versions.",
563
+ )
564
+ @click.option(
565
+ "--clean",
566
+ "-c",
567
+ is_flag=True,
568
+ default=False,
569
+ help="To clean the version(s) local data after syncing.",
570
+ )
571
+ @click.option(
572
+ "--path",
573
+ "--path-from",
574
+ type=click.Path(exists=False),
575
+ help="Optional path where the artifact versions are persisted, "
576
+ "default value is taken from the env var: `POLYAXON_OFFLINE_ROOT`.",
577
+ )
578
+ @click.option(
579
+ "--reset-project",
580
+ is_flag=True,
581
+ default=False,
582
+ help="Optional, to ignore the owner/project of the local "
583
+ "version and use the owner/project provided or resolved from the current project.",
584
+ )
585
+ @click.option(
586
+ "--force",
587
+ is_flag=True,
588
+ default=False,
589
+ help="Flag to force register if the version already exists.",
590
+ )
591
+ @click.pass_context
592
+ @clean_outputs
593
+ def push(
594
+ ctx,
595
+ project,
596
+ version,
597
+ all_versions,
598
+ clean,
599
+ path,
600
+ reset_project,
601
+ force,
602
+ ):
603
+ """Push local packaged artifact version or multiple artifact versions to a remove server.
604
+
605
+ Uses /docs/core/cli/#caching
606
+
607
+ Examples:
608
+
609
+ \b
610
+ $ polyaxon artifacts push -ver rc12
611
+
612
+ \b
613
+ $ polyaxon artifacts push -p acme/foobar --path /tmp/versions
614
+
615
+ \b
616
+ $ polyaxon artifacts pull -p acme/foobar -a --path /tmp/versions
617
+ """
618
+ owner, _, project_name = get_project_or_local(
619
+ project or ctx.obj.get("project"), is_cli=True
620
+ )
621
+ push_one_or_many_project_versions(
622
+ owner=owner,
623
+ project_name=project_name,
624
+ kind=V1ProjectVersionKind.ARTIFACT,
625
+ version=version,
626
+ all_versions=all_versions,
627
+ path=path,
628
+ clean=clean,
629
+ force=force,
630
+ reset_project=reset_project,
631
+ )
632
+
633
+
550
634
  @artifacts.command()
551
635
  @click.option(*OPTIONS_PROJECT["args"], **OPTIONS_PROJECT["kwargs"])
552
636
  @click.option(*OPTIONS_ARTIFACT_VERSION["args"], **OPTIONS_ARTIFACT_VERSION["kwargs"])
@@ -569,11 +653,12 @@ def pull(
569
653
  def dashboard(ctx, project, version, yes, url):
570
654
  """Open this artifact version's dashboard details in browser."""
571
655
  version = version or ctx.obj.get("version") or "latest"
572
- owner, project_name = get_project_or_local(
656
+ owner, team, project_name = get_project_or_local(
573
657
  project or ctx.obj.get("project"), is_cli=True
574
658
  )
575
659
  open_project_version_dashboard(
576
660
  owner=owner,
661
+ team=team,
577
662
  project_name=project_name,
578
663
  kind=V1ProjectVersionKind.ARTIFACT,
579
664
  version=version,
@@ -21,6 +21,7 @@ from polyaxon._cli.project_versions import (
21
21
  list_project_versions,
22
22
  open_project_version_dashboard,
23
23
  pull_one_or_many_project_versions,
24
+ push_one_or_many_project_versions,
24
25
  register_project_version,
25
26
  stage_project_version,
26
27
  transfer_project_version,
@@ -113,7 +114,7 @@ def ls(ctx, project, query, sort, limit, offset):
113
114
  \b
114
115
  $ polyaxon components ls -p=acme/kaniko
115
116
  """
116
- owner, project_name = get_project_or_local(
117
+ owner, _, project_name = get_project_or_local(
117
118
  project or ctx.obj.get("project"), is_cli=True
118
119
  )
119
120
  polyaxon_client = get_current_or_public_client()
@@ -169,7 +170,7 @@ def register(ctx, polyaxonfile, project, version, description, tags, force):
169
170
  $ polyaxon components register -f polyaxonfile.yaml -p owner/name -ver v1 --tags="tag1,tag2"
170
171
  """
171
172
  version = version or ctx.obj.get("version")
172
- owner, project_name = get_project_or_local(
173
+ owner, team, project_name = get_project_or_local(
173
174
  project or ctx.obj.get("project"), is_cli=True
174
175
  )
175
176
 
@@ -187,6 +188,7 @@ def register(ctx, polyaxonfile, project, version, description, tags, force):
187
188
 
188
189
  register_project_version(
189
190
  owner=owner,
191
+ team=team,
190
192
  project_name=project_name,
191
193
  version=version,
192
194
  kind=V1ProjectVersionKind.COMPONENT,
@@ -255,11 +257,12 @@ def copy(
255
257
  $ polyaxon components copy -p owner/name -ver v1 --tags="tag1,tag2" --name new-v1
256
258
  """
257
259
  version = version or ctx.obj.get("version")
258
- owner, project_name = get_project_or_local(
260
+ owner, team, project_name = get_project_or_local(
259
261
  project or ctx.obj.get("project"), is_cli=True
260
262
  )
261
263
  copy_project_version(
262
264
  owner=owner,
265
+ team=team,
263
266
  project_name=project_name,
264
267
  version=version,
265
268
  kind=V1ProjectVersionKind.COMPONENT,
@@ -291,13 +294,14 @@ def get(ctx, project, version):
291
294
  $ polyaxon components get -p owner/my-project -ver rc12
292
295
  """
293
296
  version = version or ctx.obj.get("version") or "latest"
294
- owner, project_name = get_project_or_local(
297
+ owner, team, project_name = get_project_or_local(
295
298
  project or ctx.obj.get("project"), is_cli=True
296
299
  )
297
300
  polyaxon_client = get_current_or_public_client()
298
301
 
299
302
  get_project_version(
300
303
  owner=owner,
304
+ team=team,
301
305
  project_name=project_name,
302
306
  kind=V1ProjectVersionKind.COMPONENT,
303
307
  version=version,
@@ -326,7 +330,7 @@ def stages(ctx, project, version):
326
330
  $ polyaxon components stages -p owner/my-project -ver rc12
327
331
  """
328
332
  version = version or ctx.obj.get("version") or "latest"
329
- owner, project_name = get_project_or_local(
333
+ owner, _, project_name = get_project_or_local(
330
334
  project or ctx.obj.get("project"), is_cli=True
331
335
  )
332
336
  polyaxon_client = get_current_or_public_client()
@@ -368,7 +372,7 @@ def delete(ctx, project, version, yes):
368
372
  $ polyaxon components get -p owner/my-project -ver rc12
369
373
  """
370
374
  version = version or ctx.obj.get("version") or "latest"
371
- owner, project_name = get_project_or_local(
375
+ owner, _, project_name = get_project_or_local(
372
376
  project or ctx.obj.get("project"), is_cli=True
373
377
  )
374
378
  delete_project_version(
@@ -411,7 +415,7 @@ def update(ctx, project, version, name, description, tags):
411
415
  $ polyaxon components update --tags="foo, bar"
412
416
  """
413
417
  version = version or ctx.obj.get("version") or "latest"
414
- owner, project_name = get_project_or_local(
418
+ owner, _, project_name = get_project_or_local(
415
419
  project or ctx.obj.get("project"), is_cli=True
416
420
  )
417
421
  update_project_version(
@@ -460,7 +464,7 @@ def stage(ctx, project, version, to, reason, message):
460
464
  $ polyaxon components stage -p acme/foobar -ver rc12 --to=staging --reason GithubAction --message="Use carefully!"
461
465
  """
462
466
  version = version or ctx.obj.get("version") or "latest"
463
- owner, project_name = get_project_or_local(
467
+ owner, _, project_name = get_project_or_local(
464
468
  project or ctx.obj.get("project"), is_cli=True
465
469
  )
466
470
  stage_project_version(
@@ -498,7 +502,7 @@ def transfer(ctx, project, version, to_project):
498
502
  $ polyaxon components transfer -p acme/foobar -ver rc12 --to-project=dest-project
499
503
  """
500
504
  version = version or ctx.obj.get("version") or "latest"
501
- owner, project_name = get_project_or_local(
505
+ owner, _, project_name = get_project_or_local(
502
506
  project or ctx.obj.get("project"), is_cli=True
503
507
  )
504
508
  transfer_project_version(
@@ -559,7 +563,7 @@ def pull(
559
563
  \b
560
564
  $ polyaxon components pull -p acme/foobar -a --path /tmp/versions
561
565
  """
562
- owner, project_name = get_project_or_local(
566
+ owner, _, project_name = get_project_or_local(
563
567
  project or ctx.obj.get("project"), is_cli=True
564
568
  )
565
569
  pull_one_or_many_project_versions(
@@ -576,6 +580,86 @@ def pull(
576
580
  )
577
581
 
578
582
 
583
+ @components.command()
584
+ @click.option(*OPTIONS_PROJECT["args"], **OPTIONS_PROJECT["kwargs"])
585
+ @click.option(*OPTIONS_COMPONENT_VERSION["args"], **OPTIONS_COMPONENT_VERSION["kwargs"])
586
+ @click.option(
587
+ "--all-versions",
588
+ "-a",
589
+ is_flag=True,
590
+ default=False,
591
+ help="To push all versions.",
592
+ )
593
+ @click.option(
594
+ "--clean",
595
+ "-c",
596
+ is_flag=True,
597
+ default=False,
598
+ help="To clean the version(s) local data after syncing.",
599
+ )
600
+ @click.option(
601
+ "--path",
602
+ "--path-from",
603
+ type=click.Path(exists=False),
604
+ help="Optional path where the component versions are persisted, "
605
+ "default value is taken from the env var: `POLYAXON_OFFLINE_ROOT`.",
606
+ )
607
+ @click.option(
608
+ "--reset-project",
609
+ is_flag=True,
610
+ default=False,
611
+ help="Optional, to ignore the owner/project of the local "
612
+ "version and use the owner/project provided or resolved from the current project.",
613
+ )
614
+ @click.option(
615
+ "--force",
616
+ is_flag=True,
617
+ default=False,
618
+ help="Flag to force register if the version already exists.",
619
+ )
620
+ @click.pass_context
621
+ @clean_outputs
622
+ def push(
623
+ ctx,
624
+ project,
625
+ version,
626
+ all_versions,
627
+ clean,
628
+ path,
629
+ reset_project,
630
+ force,
631
+ ):
632
+ """Push local packaged component version or multiple component versions to a remove server.
633
+
634
+ Uses /docs/core/cli/#caching
635
+
636
+ Examples:
637
+
638
+ \b
639
+ $ polyaxon components push -ver rc12
640
+
641
+ \b
642
+ $ polyaxon components push -p acme/foobar --path /tmp/versions
643
+
644
+ \b
645
+ $ polyaxon components pull -p acme/foobar -a --path /tmp/versions
646
+ """
647
+ owner, _, project_name = get_project_or_local(
648
+ project or ctx.obj.get("project"), is_cli=True
649
+ )
650
+ push_one_or_many_project_versions(
651
+ owner=owner,
652
+ project_name=project_name,
653
+ kind=V1ProjectVersionKind.COMPONENT,
654
+ version=version,
655
+ all_versions=all_versions,
656
+ path=path,
657
+ clean=clean,
658
+ force=force,
659
+ reset_project=reset_project,
660
+ )
661
+
662
+
579
663
  @components.command()
580
664
  @click.option(*OPTIONS_PROJECT["args"], **OPTIONS_PROJECT["kwargs"])
581
665
  @click.option(*OPTIONS_COMPONENT_VERSION["args"], **OPTIONS_COMPONENT_VERSION["kwargs"])
@@ -598,11 +682,12 @@ def pull(
598
682
  def dashboard(ctx, project, version, yes, url):
599
683
  """Open this component version's dashboard details in browser."""
600
684
  version = version or ctx.obj.get("version") or "latest"
601
- owner, project_name = get_project_or_local(
685
+ owner, team, project_name = get_project_or_local(
602
686
  project or ctx.obj.get("project"), is_cli=True
603
687
  )
604
688
  open_project_version_dashboard(
605
689
  owner=owner,
690
+ team=team,
606
691
  project_name=project_name,
607
692
  kind=V1ProjectVersionKind.COMPONENT,
608
693
  version=version,