polyaxon 2.2.0rc0__py3-none-any.whl → 2.3.0rc0__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 (37) hide show
  1. polyaxon/_cli/artifacts.py +16 -12
  2. polyaxon/_cli/components.py +16 -12
  3. polyaxon/_cli/config.py +31 -0
  4. polyaxon/_cli/dashboard.py +15 -2
  5. polyaxon/_cli/init.py +1 -1
  6. polyaxon/_cli/models.py +16 -12
  7. polyaxon/_cli/operations.py +53 -32
  8. polyaxon/_cli/project_versions.py +26 -5
  9. polyaxon/_cli/projects.py +23 -9
  10. polyaxon/_cli/run.py +29 -9
  11. polyaxon/_client/mixin.py +39 -0
  12. polyaxon/_client/project.py +22 -22
  13. polyaxon/_client/run.py +44 -25
  14. polyaxon/_compiler/contexts/ray_job.py +4 -2
  15. polyaxon/_env_vars/getters/owner_entity.py +4 -2
  16. polyaxon/_env_vars/getters/project.py +4 -2
  17. polyaxon/_env_vars/getters/run.py +2 -2
  18. polyaxon/_k8s/converter/base/base.py +2 -1
  19. polyaxon/_k8s/converter/common/accelerators.py +3 -0
  20. polyaxon/_k8s/converter/converters/ray_job.py +4 -2
  21. polyaxon/_k8s/custom_resources/dask_job.py +3 -0
  22. polyaxon/_k8s/custom_resources/kubeflow/common.py +3 -0
  23. polyaxon/_k8s/custom_resources/ray_job.py +3 -0
  24. polyaxon/_k8s/custom_resources/setter.py +1 -1
  25. polyaxon/_pql/manager.py +1 -1
  26. polyaxon/_sdk/api/runs_v1_api.py +30 -30
  27. polyaxon/_sdk/schemas/v1_settings_catalog.py +1 -0
  28. polyaxon/_sdk/schemas/v1_team.py +1 -0
  29. polyaxon/_sdk/schemas/v1_user.py +1 -2
  30. polyaxon/_utils/fqn_utils.py +25 -2
  31. polyaxon/pkg.py +1 -1
  32. {polyaxon-2.2.0rc0.dist-info → polyaxon-2.3.0rc0.dist-info}/METADATA +8 -8
  33. {polyaxon-2.2.0rc0.dist-info → polyaxon-2.3.0rc0.dist-info}/RECORD +37 -36
  34. {polyaxon-2.2.0rc0.dist-info → polyaxon-2.3.0rc0.dist-info}/LICENSE +0 -0
  35. {polyaxon-2.2.0rc0.dist-info → polyaxon-2.3.0rc0.dist-info}/WHEEL +0 -0
  36. {polyaxon-2.2.0rc0.dist-info → polyaxon-2.3.0rc0.dist-info}/entry_points.txt +0 -0
  37. {polyaxon-2.2.0rc0.dist-info → polyaxon-2.3.0rc0.dist-info}/top_level.txt +0 -0
@@ -12,6 +12,7 @@ from clipped.utils.validation import validate_tags
12
12
 
13
13
  from polyaxon._client.client import PolyaxonClient
14
14
  from polyaxon._client.decorators import client_handler, get_global_or_inline_config
15
+ from polyaxon._client.mixin import ClientMixin
15
16
  from polyaxon._constants.globals import DEFAULT
16
17
  from polyaxon._contexts import paths as ctx_paths
17
18
  from polyaxon._env_vars.getters.user import get_local_owner
@@ -21,13 +22,17 @@ from polyaxon._sdk.schemas.v1_list_project_versions_response import (
21
22
  )
22
23
  from polyaxon._sdk.schemas.v1_project import V1Project
23
24
  from polyaxon._sdk.schemas.v1_project_version import V1ProjectVersion
24
- from polyaxon._utils.fqn_utils import get_entity_full_name, get_entity_info
25
+ from polyaxon._utils.fqn_utils import (
26
+ get_entity_full_name,
27
+ get_entity_info,
28
+ split_owner_team_space,
29
+ )
25
30
  from polyaxon.exceptions import ApiException, PolyaxonClientException
26
31
  from polyaxon.logger import logger
27
32
  from traceml.artifacts import V1RunArtifact
28
33
 
29
34
 
30
- class ProjectClient:
35
+ class ProjectClient(ClientMixin):
31
36
  """ProjectClient is a client to communicate with Polyaxon projects endpoints.
32
37
 
33
38
  If no values are passed to this class,
@@ -94,26 +99,13 @@ class ProjectClient:
94
99
  if not owner:
95
100
  raise PolyaxonClientException("Please provide a valid owner.")
96
101
 
102
+ owner, team = split_owner_team_space(owner)
97
103
  self._client = client
98
104
  self._owner = owner or DEFAULT
105
+ self._team = team
99
106
  self._project = project
100
107
  self._project_data = V1Project.construct()
101
108
 
102
- @property
103
- def client(self):
104
- if self._client:
105
- return self._client
106
- self._client = PolyaxonClient()
107
- return self._client
108
-
109
- @property
110
- def owner(self):
111
- return self._owner
112
-
113
- @property
114
- def project(self):
115
- return self._project
116
-
117
109
  @property
118
110
  def project_data(self):
119
111
  return self._project_data
@@ -139,11 +131,19 @@ class ProjectClient:
139
131
  Returns:
140
132
  V1Project, project instance from the response.
141
133
  """
142
- self._project_data = self.client.projects_v1.create_project(
143
- self.owner,
144
- data,
145
- async_req=False,
146
- )
134
+ if self.team:
135
+ self._project_data = self.client.projects_v1.create_team_project(
136
+ self.owner,
137
+ self.team,
138
+ data,
139
+ async_req=False,
140
+ )
141
+ else:
142
+ self._project_data = self.client.projects_v1.create_project(
143
+ self.owner,
144
+ data,
145
+ async_req=False,
146
+ )
147
147
  self._project_data.owner = self.owner
148
148
  self._project = self._project_data.name
149
149
  return self._project_data
polyaxon/_client/run.py CHANGED
@@ -35,6 +35,7 @@ from polyaxon import settings
35
35
  from polyaxon._cli.errors import handle_cli_error
36
36
  from polyaxon._client.client import PolyaxonClient
37
37
  from polyaxon._client.decorators import client_handler, get_global_or_inline_config
38
+ from polyaxon._client.mixin import ClientMixin
38
39
  from polyaxon._client.store import PolyaxonStore
39
40
  from polyaxon._constants.metadata import META_COPY_ARTIFACTS, META_RECOMPILE
40
41
  from polyaxon._containers.names import MAIN_CONTAINER_NAMES
@@ -63,7 +64,11 @@ from polyaxon._sdk.schemas.v1_operation_body import V1OperationBody
63
64
  from polyaxon._sdk.schemas.v1_project_version import V1ProjectVersion
64
65
  from polyaxon._sdk.schemas.v1_run import V1Run
65
66
  from polyaxon._sdk.schemas.v1_run_settings import V1RunSettings
66
- from polyaxon._utils.fqn_utils import get_entity_full_name, to_fqn_name
67
+ from polyaxon._utils.fqn_utils import (
68
+ get_entity_full_name,
69
+ split_owner_team_space,
70
+ to_fqn_name,
71
+ )
67
72
  from polyaxon._utils.urls_utils import get_proxy_run_url
68
73
  from polyaxon.api import K8S_V1_LOCATION, STREAMS_V1_LOCATION
69
74
  from polyaxon.exceptions import ApiException, PolyaxonClientException
@@ -80,7 +85,7 @@ if TYPE_CHECKING:
80
85
  from traceml.tracking.run import Run
81
86
 
82
87
 
83
- class RunClient:
88
+ class RunClient(ClientMixin):
84
89
  """RunClient is a client to communicate with Polyaxon runs endpoints.
85
90
 
86
91
  If no values are passed to this class,
@@ -146,7 +151,7 @@ class RunClient:
146
151
  return
147
152
 
148
153
  try:
149
- owner, project = get_project_or_local(
154
+ owner, _, project = get_project_or_local(
150
155
  get_entity_full_name(owner=owner, entity=project)
151
156
  )
152
157
  except PolyaxonClientException:
@@ -166,8 +171,10 @@ class RunClient:
166
171
  if error_message and not self._is_offline:
167
172
  raise PolyaxonClientException(error_message)
168
173
 
174
+ owner, team = split_owner_team_space(owner)
169
175
  self._client = client
170
176
  self._owner = owner
177
+ self._team = team
171
178
  self._project = project
172
179
  self._run_uuid = (
173
180
  get_run_or_local(run_uuid)
@@ -218,12 +225,11 @@ class RunClient:
218
225
  return client.config.no_op
219
226
  return settings.CLIENT_CONFIG.no_op
220
227
 
221
- @property
222
- def client(self):
223
- if self._client:
224
- return self._client
225
- self._client = PolyaxonClient()
226
- return self._client
228
+ def _use_agent_host(self):
229
+ if self.settings.agent and self.settings.agent.url:
230
+ self.reset_client(
231
+ host=self.settings.agent.url, POLYAXON_HOST=self.settings.agent.url
232
+ )
227
233
 
228
234
  @property
229
235
  def store(self):
@@ -256,20 +262,6 @@ class RunClient:
256
262
  return self.settings.artifacts_store.name
257
263
  return None
258
264
 
259
- @property
260
- def owner(self) -> str:
261
- return self._owner or ""
262
-
263
- def set_owner(self, owner: str):
264
- self._owner = owner
265
-
266
- @property
267
- def project(self) -> str:
268
- return self._project or ""
269
-
270
- def set_project(self, project: str):
271
- self._project = project
272
-
273
265
  @property
274
266
  def run_uuid(self) -> str:
275
267
  return self._run_uuid
@@ -898,6 +890,7 @@ class RunClient:
898
890
  """
899
891
  if not self.settings:
900
892
  self.refresh_data()
893
+ self._use_agent_host()
901
894
  params = get_logs_params(
902
895
  last_file=last_file, last_time=last_time, connection=self.artifacts_store
903
896
  )
@@ -921,6 +914,7 @@ class RunClient:
921
914
  def inspect(self):
922
915
  if not self.settings:
923
916
  self.refresh_data()
917
+ self._use_agent_host()
924
918
  params = get_streams_params(connection=self.artifacts_store, status=self.status)
925
919
  return self.client.runs_v1.inspect_run(
926
920
  self.namespace, self.owner, self.project, self.run_uuid, **params
@@ -994,6 +988,10 @@ class RunClient:
994
988
  if not container:
995
989
  container = pod_containers[0]
996
990
 
991
+ if not self.settings:
992
+ self.refresh_data()
993
+ self._use_agent_host()
994
+
997
995
  url = get_proxy_run_url(
998
996
  service=K8S_V1_LOCATION,
999
997
  namespace=self.namespace,
@@ -1039,6 +1037,8 @@ class RunClient:
1039
1037
  """
1040
1038
  if not self.settings:
1041
1039
  self.refresh_data()
1040
+ self._use_agent_host()
1041
+
1042
1042
  params = get_streams_params(self.artifacts_store)
1043
1043
  return self.client.runs_v1.get_run_events(
1044
1044
  self.namespace,
@@ -1074,6 +1074,8 @@ class RunClient:
1074
1074
  """
1075
1075
  if not self.settings:
1076
1076
  self.refresh_data()
1077
+ self._use_agent_host()
1078
+
1077
1079
  params = get_streams_params(self.artifacts_store)
1078
1080
  return self.client.runs_v1.get_multi_run_events(
1079
1081
  self.namespace,
@@ -1310,6 +1312,7 @@ class RunClient:
1310
1312
  """
1311
1313
  if not self.settings:
1312
1314
  self.refresh_data()
1315
+ self._use_agent_host()
1313
1316
  params = get_streams_params(self.artifacts_store)
1314
1317
  return self.client.runs_v1.get_run_artifact(
1315
1318
  namespace=self.namespace,
@@ -1343,6 +1346,10 @@ class RunClient:
1343
1346
  if not self.run_uuid:
1344
1347
  return
1345
1348
 
1349
+ if not self.settings:
1350
+ self.refresh_data()
1351
+ self._use_agent_host()
1352
+
1346
1353
  lineage_path = lineage.path or ""
1347
1354
  summary = lineage.summary or {}
1348
1355
  is_event = summary.get("is_event")
@@ -1421,6 +1428,8 @@ class RunClient:
1421
1428
  """
1422
1429
  if not self.settings:
1423
1430
  self.refresh_data()
1431
+ self._use_agent_host()
1432
+
1424
1433
  url = get_proxy_run_url(
1425
1434
  service=STREAMS_V1_LOCATION,
1426
1435
  namespace=self.namespace,
@@ -1460,6 +1469,8 @@ class RunClient:
1460
1469
  """
1461
1470
  if not self.settings:
1462
1471
  self.refresh_data()
1472
+ self._use_agent_host()
1473
+
1463
1474
  url = get_proxy_run_url(
1464
1475
  service=STREAMS_V1_LOCATION,
1465
1476
  namespace=self.namespace,
@@ -1507,6 +1518,7 @@ class RunClient:
1507
1518
  """
1508
1519
  if not self.settings:
1509
1520
  self.refresh_data()
1521
+ self._use_agent_host()
1510
1522
 
1511
1523
  params = get_streams_params(connection=self.artifacts_store)
1512
1524
  url = get_proxy_run_url(
@@ -1596,6 +1608,7 @@ class RunClient:
1596
1608
 
1597
1609
  if not self.settings:
1598
1610
  self.refresh_data()
1611
+ self._use_agent_host()
1599
1612
 
1600
1613
  params = get_streams_params(connection=self.artifacts_store)
1601
1614
  url = get_proxy_run_url(
@@ -1626,6 +1639,8 @@ class RunClient:
1626
1639
  """
1627
1640
  if not self.settings:
1628
1641
  self.refresh_data()
1642
+ self._use_agent_host()
1643
+
1629
1644
  params = get_streams_params(connection=self.artifacts_store)
1630
1645
  self.client.runs_v1.delete_run_artifact(
1631
1646
  namespace=self.namespace,
@@ -1645,6 +1660,8 @@ class RunClient:
1645
1660
  """
1646
1661
  if not self.settings:
1647
1662
  self.refresh_data()
1663
+ self._use_agent_host()
1664
+
1648
1665
  params = get_streams_params(connection=self.artifacts_store)
1649
1666
  return self.client.runs_v1.delete_run_artifacts(
1650
1667
  namespace=self.namespace,
@@ -1667,6 +1684,8 @@ class RunClient:
1667
1684
  """
1668
1685
  if not self.settings:
1669
1686
  self.refresh_data()
1687
+ self._use_agent_host()
1688
+
1670
1689
  params = get_streams_params(connection=self.artifacts_store)
1671
1690
  return self.client.runs_v1.get_run_artifacts_tree(
1672
1691
  namespace=self.namespace,
@@ -2117,9 +2136,9 @@ class RunClient:
2117
2136
  abspath = filepath if is_abs() else os.path.abspath(filepath)
2118
2137
 
2119
2138
  for_patterns = []
2120
- if getattr(self, "_artifacts_path"):
2139
+ if getattr(self, "_artifacts_path", None):
2121
2140
  for_patterns.append(getattr(self, "_artifacts_path"))
2122
- if getattr(self, "_store_path"):
2141
+ if getattr(self, "_store_path", None):
2123
2142
  for_patterns.append(getattr(self, "_store_path"))
2124
2143
  context_root = (
2125
2144
  ctx_paths.CONTEXT_OFFLINE_ROOT
@@ -33,7 +33,9 @@ class RayJobContextsManager(BaseContextsManager):
33
33
  connection_by_names=connection_by_names,
34
34
  )
35
35
 
36
- return {
36
+ data = {
37
37
  "head": _get_replica(job.head),
38
- "workers": {wn: _get_replica(job.workers[wn]) for wn in job.workers},
39
38
  }
39
+ if job.workers:
40
+ data["workers"] = {wn: _get_replica(job.workers[wn]) for wn in job.workers}
41
+ return data
@@ -5,7 +5,7 @@ from clipped.utils.strings import validate_slug
5
5
 
6
6
  from polyaxon._constants.globals import DEFAULT
7
7
  from polyaxon._env_vars.getters.user import get_local_owner
8
- from polyaxon._utils.fqn_utils import get_entity_info
8
+ from polyaxon._utils.fqn_utils import get_entity_info, split_owner_team_space
9
9
  from polyaxon.exceptions import PolyaxonClientException, PolyaxonSchemaError
10
10
 
11
11
 
@@ -31,6 +31,8 @@ def resolve_entity_info(entity: str, entity_name: str, is_cli: bool = False):
31
31
  if not owner:
32
32
  owner = settings.AUTH_CONFIG.username if settings.AUTH_CONFIG else None
33
33
 
34
+ owner, team = split_owner_team_space(owner)
35
+
34
36
  if not all([owner, entity_value]):
35
37
  message = "Please provide a valid {}.".format(entity_name)
36
38
  if is_cli:
@@ -49,4 +51,4 @@ def resolve_entity_info(entity: str, entity_name: str, is_cli: bool = False):
49
51
  entity_name, entity_value
50
52
  )
51
53
  )
52
- return owner, entity_value
54
+ return owner, team, entity_value
@@ -7,7 +7,7 @@ from polyaxon._constants.globals import DEFAULT
7
7
  from polyaxon._env_vars.getters.user import get_local_owner
8
8
  from polyaxon._managers.project import ProjectConfigManager
9
9
  from polyaxon._utils.cache import get_local_project
10
- from polyaxon._utils.fqn_utils import get_entity_info
10
+ from polyaxon._utils.fqn_utils import get_entity_info, split_owner_team_space
11
11
  from polyaxon.exceptions import PolyaxonClientException, PolyaxonSchemaError
12
12
 
13
13
 
@@ -52,6 +52,8 @@ def get_project_or_local(project=None, is_cli: bool = False):
52
52
  if not owner and (not settings.CLI_CONFIG or settings.CLI_CONFIG.is_community):
53
53
  owner = DEFAULT
54
54
 
55
+ owner, team = split_owner_team_space(owner)
56
+
55
57
  if not all([owner, project_name]):
56
58
  error_message = get_project_error_message(owner, project_name)
57
59
  if is_cli:
@@ -79,4 +81,4 @@ def get_project_or_local(project=None, is_cli: bool = False):
79
81
  sys.exit(1)
80
82
  else:
81
83
  raise PolyaxonSchemaError(error_message)
82
- return owner, project_name
84
+ return owner, team, project_name
@@ -37,9 +37,9 @@ def get_run_or_local(run_uuid=None, is_cli: bool = False):
37
37
 
38
38
 
39
39
  def get_project_run_or_local(project=None, run_uuid=None, is_cli: bool = True):
40
- user, project_name = get_project_or_local(project, is_cli=is_cli)
40
+ owner, team, project_name = get_project_or_local(project, is_cli=is_cli)
41
41
  run_uuid = get_run_or_local(run_uuid, is_cli=is_cli)
42
- return user, project_name, run_uuid
42
+ return owner, team, project_name, run_uuid
43
43
 
44
44
 
45
45
  def get_collect_artifacts(arg: Optional[bool] = None, default: Optional[bool] = None):
@@ -2,6 +2,7 @@ import copy
2
2
 
3
3
  from typing import Dict, Iterable, List, Optional
4
4
 
5
+ from clipped.utils.enums import get_enum_value
5
6
  from clipped.utils.sanitizers import sanitize_string_dict
6
7
  from clipped.utils.strings import slugify
7
8
 
@@ -85,7 +86,7 @@ class BaseConverter(
85
86
  "operation.polyaxon.com/name": self.run_name,
86
87
  "operation.polyaxon.com/owner": self.owner_name,
87
88
  "operation.polyaxon.com/project": self.project_name,
88
- "operation.polyaxon.com/kind": self.K8S_ANNOTATIONS_KIND,
89
+ "operation.polyaxon.com/kind": get_enum_value(self.K8S_ANNOTATIONS_KIND),
89
90
  }
90
91
 
91
92
  def get_annotations(
@@ -37,6 +37,9 @@ def requests_gpu(resources: k8s_schemas.V1ResourceRequirements) -> bool:
37
37
  if not resources:
38
38
  return False
39
39
 
40
+ if not isinstance(resources, k8s_schemas.V1ResourceRequirements):
41
+ resources = k8s_schemas.V1ResourceRequirements(**resources)
42
+
40
43
  if resources.requests:
41
44
  for key, val in resources.requests.items():
42
45
  if "gpu" in key and val is not None and val > 0:
@@ -58,7 +58,9 @@ class RayJobConverter(RayJobMixin, BaseConverter):
58
58
  config=compiled_operation.plugins, auth=default_auth
59
59
  )
60
60
  head = _get_replica(job.head)
61
- workers = {n: _get_replica(w) for n, w in job.workers.items()}
61
+ workers = None
62
+ if job.workers:
63
+ workers = {n: _get_replica(w) for n, w in job.workers.items()}
62
64
  labels = self.get_labels(version=pkg.VERSION, labels={})
63
65
 
64
66
  return get_ray_job_custom_resource(
@@ -68,7 +70,7 @@ class RayJobConverter(RayJobMixin, BaseConverter):
68
70
  workers=workers,
69
71
  entrypoint=job.entrypoint,
70
72
  metadata=job.metadata,
71
- runtime_env=encode(orjson_dumps(job.runtime_env)),
73
+ runtime_env=orjson_dumps(job.runtime_env),
72
74
  ray_version=job.ray_version,
73
75
  termination=compiled_operation.termination,
74
76
  collect_logs=plugins.collect_logs,
@@ -46,6 +46,9 @@ def get_dask_replicas_template(
46
46
  if liveness_probe and replica.main_container.liveness_probe is None:
47
47
  replica.main_container.liveness_probe = liveness_probe
48
48
 
49
+ labels = {**labels, **replica.labels}
50
+ annotations = {**annotations, **replica.annotations}
51
+
49
52
  metadata, pod_spec = get_pod_spec(
50
53
  namespace=namespace,
51
54
  main_container=replica.main_container,
@@ -16,6 +16,9 @@ def get_kf_replicas_template(
16
16
  if not replica:
17
17
  return
18
18
 
19
+ labels = {**labels, **replica.labels}
20
+ annotations = {**annotations, **replica.annotations}
21
+
19
22
  metadata, pod_spec = get_pod_spec(
20
23
  namespace=namespace,
21
24
  main_container=replica.main_container,
@@ -26,6 +26,9 @@ def _get_ray_replicas_template(
26
26
  if not replica:
27
27
  return
28
28
 
29
+ labels = {**labels, **replica.labels}
30
+ annotations = {**annotations, **replica.annotations}
31
+
29
32
  metadata, pod_spec = get_pod_spec(
30
33
  namespace=namespace,
31
34
  main_container=replica.main_container,
@@ -46,7 +46,7 @@ def set_notify(custom_object: Dict, notifications: List[V1Notification]) -> Dict
46
46
  def set_clean_pod_policy(template_spec: Dict, clean_pod_policy: str) -> Dict:
47
47
  if not clean_pod_policy:
48
48
  # Sets default clean pod policy
49
- clean_pod_policy = "All"
49
+ clean_pod_policy = "None"
50
50
 
51
51
  template_spec["cleanPodPolicy"] = clean_pod_policy.capitalize()
52
52
  return template_spec
polyaxon/_pql/manager.py CHANGED
@@ -13,7 +13,7 @@ class PQLManager:
13
13
  FIELDS_PROXY = {}
14
14
  FIELDS_TRANS = {}
15
15
  FIELDS_ORDERING = None
16
- FIELDS_ORDERING_PROXY = None
16
+ FIELDS_ORDERING_PROXY = None # Do not set a field on both field and proxy
17
17
  FIELDS_DEFAULT_ORDERING = None
18
18
  FIELDS_DISTINCT = None
19
19
  CHECK_ALIVE = True
@@ -3014,8 +3014,8 @@ class RunsV1Api(BaseApi):
3014
3014
  self,
3015
3015
  namespace: Annotated[StrictStr, Field(..., description="namespace")],
3016
3016
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
3017
- project: Annotated[
3018
- StrictStr, Field(..., description="Project where the run will be assigned")
3017
+ entity: Annotated[
3018
+ StrictStr, Field(..., description="Entity where the run will be assigned")
3019
3019
  ],
3020
3020
  kind: Annotated[str, Field(..., description="The artifact kind")],
3021
3021
  names: Annotated[
@@ -3046,15 +3046,15 @@ class RunsV1Api(BaseApi):
3046
3046
  This method makes a synchronous HTTP request by default. To make an
3047
3047
  asynchronous HTTP request, please pass async_req=True
3048
3048
 
3049
- >>> thread = api.get_multi_run_events(namespace, owner, project, kind, names, runs, orient, force, sample, connection, status, async_req=True)
3049
+ >>> thread = api.get_multi_run_events(namespace, owner, entity, kind, names, runs, orient, force, sample, connection, status, async_req=True)
3050
3050
  >>> result = thread.get()
3051
3051
 
3052
3052
  :param namespace: namespace (required)
3053
3053
  :type namespace: str
3054
3054
  :param owner: Owner of the namespace (required)
3055
3055
  :type owner: str
3056
- :param project: Project where the run will be assigned (required)
3057
- :type project: str
3056
+ :param entity: Entity where the run will be assigned (required)
3057
+ :type entity: str
3058
3058
  :param kind: The artifact kind (required)
3059
3059
  :type kind: str
3060
3060
  :param names: Names query param.
@@ -3090,7 +3090,7 @@ class RunsV1Api(BaseApi):
3090
3090
  return self.get_multi_run_events_with_http_info(
3091
3091
  namespace,
3092
3092
  owner,
3093
- project,
3093
+ entity,
3094
3094
  kind,
3095
3095
  names,
3096
3096
  runs,
@@ -3107,8 +3107,8 @@ class RunsV1Api(BaseApi):
3107
3107
  self,
3108
3108
  namespace: Annotated[StrictStr, Field(..., description="namespace")],
3109
3109
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
3110
- project: Annotated[
3111
- StrictStr, Field(..., description="Project where the run will be assigned")
3110
+ entity: Annotated[
3111
+ StrictStr, Field(..., description="Entity where the run will be assigned")
3112
3112
  ],
3113
3113
  kind: Annotated[str, Field(..., description="The artifact kind")],
3114
3114
  names: Annotated[
@@ -3139,15 +3139,15 @@ class RunsV1Api(BaseApi):
3139
3139
  This method makes a synchronous HTTP request by default. To make an
3140
3140
  asynchronous HTTP request, please pass async_req=True
3141
3141
 
3142
- >>> thread = api.get_multi_run_events_with_http_info(namespace, owner, project, kind, names, runs, orient, force, sample, connection, status, async_req=True)
3142
+ >>> thread = api.get_multi_run_events_with_http_info(namespace, owner, entity, kind, names, runs, orient, force, sample, connection, status, async_req=True)
3143
3143
  >>> result = thread.get()
3144
3144
 
3145
3145
  :param namespace: namespace (required)
3146
3146
  :type namespace: str
3147
3147
  :param owner: Owner of the namespace (required)
3148
3148
  :type owner: str
3149
- :param project: Project where the run will be assigned (required)
3150
- :type project: str
3149
+ :param entity: Entity where the run will be assigned (required)
3150
+ :type entity: str
3151
3151
  :param kind: The artifact kind (required)
3152
3152
  :type kind: str
3153
3153
  :param names: Names query param.
@@ -3193,7 +3193,7 @@ class RunsV1Api(BaseApi):
3193
3193
  _all_params = [
3194
3194
  "namespace",
3195
3195
  "owner",
3196
- "project",
3196
+ "entity",
3197
3197
  "kind",
3198
3198
  "names",
3199
3199
  "runs",
@@ -3233,8 +3233,8 @@ class RunsV1Api(BaseApi):
3233
3233
  _path_params["namespace"] = _params["namespace"]
3234
3234
  if _params["owner"]:
3235
3235
  _path_params["owner"] = _params["owner"]
3236
- if _params["project"]:
3237
- _path_params["project"] = _params["project"]
3236
+ if _params["entity"]:
3237
+ _path_params["entity"] = _params["entity"]
3238
3238
  if _params["kind"]:
3239
3239
  _path_params["kind"] = _params["kind"]
3240
3240
 
@@ -3281,7 +3281,7 @@ class RunsV1Api(BaseApi):
3281
3281
  }
3282
3282
 
3283
3283
  return self.api_client.call_api(
3284
- "/streams/v1/{namespace}/{owner}/{project}/runs/multi/events/{kind}",
3284
+ "/streams/v1/{namespace}/{owner}/{entity}/runs/multi/events/{kind}",
3285
3285
  "GET",
3286
3286
  _path_params,
3287
3287
  _query_params,
@@ -3304,8 +3304,8 @@ class RunsV1Api(BaseApi):
3304
3304
  self,
3305
3305
  namespace: Annotated[StrictStr, Field(..., description="namespace")],
3306
3306
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
3307
- project: Annotated[
3308
- StrictStr, Field(..., description="Project where the run will be assigned")
3307
+ entity: Annotated[
3308
+ StrictStr, Field(..., description="Entity where the run will be assigned")
3309
3309
  ],
3310
3310
  body: Annotated[Dict[str, Any], Field(..., description="Params/Metrics data")],
3311
3311
  **kwargs
@@ -3315,15 +3315,15 @@ class RunsV1Api(BaseApi):
3315
3315
  This method makes a synchronous HTTP request by default. To make an
3316
3316
  asynchronous HTTP request, please pass async_req=True
3317
3317
 
3318
- >>> thread = api.get_multi_run_importance(namespace, owner, project, body, async_req=True)
3318
+ >>> thread = api.get_multi_run_importance(namespace, owner, entity, body, async_req=True)
3319
3319
  >>> result = thread.get()
3320
3320
 
3321
3321
  :param namespace: namespace (required)
3322
3322
  :type namespace: str
3323
3323
  :param owner: Owner of the namespace (required)
3324
3324
  :type owner: str
3325
- :param project: Project where the run will be assigned (required)
3326
- :type project: str
3325
+ :param entity: Entity where the run will be assigned (required)
3326
+ :type entity: str
3327
3327
  :param body: Params/Metrics data (required)
3328
3328
  :type body: object
3329
3329
  :param async_req: Whether to execute the request asynchronously.
@@ -3343,7 +3343,7 @@ class RunsV1Api(BaseApi):
3343
3343
  """
3344
3344
  kwargs["_return_http_data_only"] = True
3345
3345
  return self.get_multi_run_importance_with_http_info(
3346
- namespace, owner, project, body, **kwargs
3346
+ namespace, owner, entity, body, **kwargs
3347
3347
  ) # noqa: E501
3348
3348
 
3349
3349
  @validate_arguments
@@ -3351,8 +3351,8 @@ class RunsV1Api(BaseApi):
3351
3351
  self,
3352
3352
  namespace: Annotated[StrictStr, Field(..., description="namespace")],
3353
3353
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
3354
- project: Annotated[
3355
- StrictStr, Field(..., description="Project where the run will be assigned")
3354
+ entity: Annotated[
3355
+ StrictStr, Field(..., description="Entity where the run will be assigned")
3356
3356
  ],
3357
3357
  body: Annotated[Dict[str, Any], Field(..., description="Params/Metrics data")],
3358
3358
  **kwargs
@@ -3362,15 +3362,15 @@ class RunsV1Api(BaseApi):
3362
3362
  This method makes a synchronous HTTP request by default. To make an
3363
3363
  asynchronous HTTP request, please pass async_req=True
3364
3364
 
3365
- >>> thread = api.get_multi_run_importance_with_http_info(namespace, owner, project, body, async_req=True)
3365
+ >>> thread = api.get_multi_run_importance_with_http_info(namespace, owner, entity, body, async_req=True)
3366
3366
  >>> result = thread.get()
3367
3367
 
3368
3368
  :param namespace: namespace (required)
3369
3369
  :type namespace: str
3370
3370
  :param owner: Owner of the namespace (required)
3371
3371
  :type owner: str
3372
- :param project: Project where the run will be assigned (required)
3373
- :type project: str
3372
+ :param entity: Entity where the run will be assigned (required)
3373
+ :type entity: str
3374
3374
  :param body: Params/Metrics data (required)
3375
3375
  :type body: object
3376
3376
  :param async_req: Whether to execute the request asynchronously.
@@ -3399,7 +3399,7 @@ class RunsV1Api(BaseApi):
3399
3399
 
3400
3400
  _params = locals()
3401
3401
 
3402
- _all_params = ["namespace", "owner", "project", "body"]
3402
+ _all_params = ["namespace", "owner", "entity", "body"]
3403
3403
  _all_params.extend(
3404
3404
  [
3405
3405
  "async_req",
@@ -3432,8 +3432,8 @@ class RunsV1Api(BaseApi):
3432
3432
  if _params["owner"]:
3433
3433
  _path_params["owner"] = _params["owner"]
3434
3434
 
3435
- if _params["project"]:
3436
- _path_params["project"] = _params["project"]
3435
+ if _params["entity"]:
3436
+ _path_params["entity"] = _params["entity"]
3437
3437
 
3438
3438
  # process the query parameters
3439
3439
  _query_params = []
@@ -3471,7 +3471,7 @@ class RunsV1Api(BaseApi):
3471
3471
  }
3472
3472
 
3473
3473
  return self.api_client.call_api(
3474
- "/streams/v1/{namespace}/{owner}/{project}/runs/multi/importance",
3474
+ "/streams/v1/{namespace}/{owner}/{entity}/runs/multi/importance",
3475
3475
  "POST",
3476
3476
  _path_params,
3477
3477
  _query_params,
@@ -9,3 +9,4 @@ class V1SettingsCatalog(BaseAllowSchemaModel):
9
9
  uuid: Optional[UUIDStr]
10
10
  name: Optional[StrictStr]
11
11
  version: Optional[StrictStr]
12
+ url: Optional[StrictStr]