polyaxon 2.1.7.post1__py3-none-any.whl → 2.2.0__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 (57) 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 +100 -54
  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 +42 -23
  14. polyaxon/_compiler/contexts/ray_job.py +4 -2
  15. polyaxon/_deploy/schemas/proxy.py +1 -0
  16. polyaxon/_env_vars/getters/owner_entity.py +4 -2
  17. polyaxon/_env_vars/getters/project.py +4 -2
  18. polyaxon/_env_vars/getters/run.py +2 -2
  19. polyaxon/_env_vars/keys.py +1 -0
  20. polyaxon/_k8s/converter/base/main.py +1 -0
  21. polyaxon/_k8s/converter/common/accelerators.py +7 -4
  22. polyaxon/_k8s/converter/converters/ray_job.py +4 -2
  23. polyaxon/_k8s/custom_resources/setter.py +1 -1
  24. polyaxon/_local_process/__init__.py +0 -0
  25. polyaxon/_local_process/agent.py +6 -0
  26. polyaxon/_local_process/converter/__init__.py +1 -0
  27. polyaxon/_local_process/converter/base/__init__.py +1 -0
  28. polyaxon/_local_process/converter/base/base.py +140 -0
  29. polyaxon/_local_process/converter/base/containers.py +69 -0
  30. polyaxon/_local_process/converter/base/env_vars.py +253 -0
  31. polyaxon/_local_process/converter/base/init.py +414 -0
  32. polyaxon/_local_process/converter/base/main.py +74 -0
  33. polyaxon/_local_process/converter/base/mounts.py +82 -0
  34. polyaxon/_local_process/converter/converters/__init__.py +8 -0
  35. polyaxon/_local_process/converter/converters/job.py +40 -0
  36. polyaxon/_local_process/converter/converters/service.py +41 -0
  37. polyaxon/_local_process/converter/mixins.py +38 -0
  38. polyaxon/_local_process/executor.py +132 -0
  39. polyaxon/_local_process/process_types.py +39 -0
  40. polyaxon/_sdk/api/organizations_v1_api.py +8 -8
  41. polyaxon/_sdk/api/project_dashboards_v1_api.py +12 -12
  42. polyaxon/_sdk/api/project_searches_v1_api.py +12 -12
  43. polyaxon/_sdk/api/projects_v1_api.py +221 -44
  44. polyaxon/_sdk/api/runs_v1_api.py +156 -202
  45. polyaxon/_sdk/api/service_accounts_v1_api.py +4 -4
  46. polyaxon/_sdk/api/teams_v1_api.py +2827 -375
  47. polyaxon/_sdk/api/users_v1_api.py +231 -55
  48. polyaxon/_sdk/schemas/v1_settings_catalog.py +1 -0
  49. polyaxon/_sdk/schemas/v1_team.py +3 -0
  50. polyaxon/_utils/fqn_utils.py +25 -2
  51. polyaxon/pkg.py +1 -1
  52. {polyaxon-2.1.7.post1.dist-info → polyaxon-2.2.0.dist-info}/METADATA +2 -2
  53. {polyaxon-2.1.7.post1.dist-info → polyaxon-2.2.0.dist-info}/RECORD +57 -40
  54. {polyaxon-2.1.7.post1.dist-info → polyaxon-2.2.0.dist-info}/LICENSE +0 -0
  55. {polyaxon-2.1.7.post1.dist-info → polyaxon-2.2.0.dist-info}/WHEEL +0 -0
  56. {polyaxon-2.1.7.post1.dist-info → polyaxon-2.2.0.dist-info}/entry_points.txt +0 -0
  57. {polyaxon-2.1.7.post1.dist-info → polyaxon-2.2.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,132 @@
1
+ import os
2
+ import signal
3
+ import subprocess
4
+
5
+ from typing import Dict, List
6
+
7
+ from polyaxon._deploy.operators.cmd_operator import CmdOperator
8
+ from polyaxon._deploy.operators.conda import CondaOperator
9
+ from polyaxon._local_process import process_types
10
+ from polyaxon._local_process.converter.converters import CONVERTERS
11
+ from polyaxon._local_process.converter.mixins import MIXIN_MAPPING
12
+ from polyaxon._runner.executor import BaseExecutor
13
+ from polyaxon._runner.kinds import RunnerKind
14
+ from polyaxon._schemas.lifecycle import V1Statuses
15
+ from polyaxon.exceptions import PolyaxonAgentError
16
+ from polyaxon.logger import logger
17
+
18
+
19
+ class Executor(BaseExecutor):
20
+ MIXIN_MAPPING = MIXIN_MAPPING
21
+ CONVERTERS = CONVERTERS
22
+ RUNNER_KIND = RunnerKind.PROCESS
23
+
24
+ def __init__(self, conda_env: str = None, venv: str = None):
25
+ super().__init__()
26
+ self._ops = {}
27
+ self._conda_env = conda_env
28
+ self._venv = venv
29
+
30
+ def _get_manager(self):
31
+ if self._conda_env:
32
+ return CondaOperator()
33
+ return CmdOperator()
34
+
35
+ def _check_conda(self):
36
+ if not self.manager.check():
37
+ raise logger.error("Conda is required to run this command.")
38
+
39
+ envs = self.manager.execute(["env", "list", "--json"], is_json=True)
40
+ env_names = [os.path.basename(env) for env in envs["envs"]]
41
+ if self._conda_env not in env_names:
42
+ raise logger.error(
43
+ "Conda env `{}` is not installed.".format(self._conda_env),
44
+ sys_exit=True,
45
+ )
46
+
47
+ def _run_in_conda(self, cmd_bash, cmd_args):
48
+ cmd_args = ["source activate {}".format(self._conda_env)] + cmd_args
49
+ subprocess.Popen(cmd_bash + [" && ".join(cmd_args)], close_fds=True)
50
+
51
+ def _get_op_proc(self, run_uuid: str) -> List[subprocess.Popen]:
52
+ return self._ops.get(run_uuid)
53
+
54
+ def create(
55
+ self,
56
+ run_uuid: str,
57
+ run_kind: str,
58
+ resource: List[process_types.V1Container],
59
+ namespace: str = None,
60
+ ) -> Dict:
61
+ logger.info(f"[Executor] Starting operation {run_uuid} {run_kind}.")
62
+ self._ops[run_uuid] = []
63
+ for task in resource:
64
+ logger.info(
65
+ f"[Executor] Starting task container {task.name} {task.image} ."
66
+ )
67
+ proc = self.manager.execute(
68
+ task.get_cmd_args(), env=os.environ, output_only=False
69
+ )
70
+ self._ops[run_uuid].append(proc)
71
+ proc.wait()
72
+ task_status = self._get_task_status(proc)
73
+ message = f"Task container {task.name} {task.image} with id {proc.pid} {task_status}"
74
+ if task_status == V1Statuses.SUCCEEDED:
75
+ logger.info(f"[Executor] {message}")
76
+ else:
77
+ logger.warning(f"[Executor] {message}")
78
+ self._clean_temp_execution_path(run_uuid)
79
+ return {
80
+ "status": V1Statuses.FAILED,
81
+ "tasks": self._ops[run_uuid],
82
+ "message": message,
83
+ }
84
+ self._clean_temp_execution_path(run_uuid)
85
+ return {"status": V1Statuses.SUCCEEDED, "tasks": self._ops[run_uuid]}
86
+
87
+ def apply(
88
+ self, run_uuid: str, run_kind: str, resource: Dict, namespace: str = None
89
+ ) -> Dict:
90
+ raise PolyaxonAgentError(
91
+ "Docker executor does not support apply method.\n"
92
+ "Run: <kind: {}, uuid: {}>".format(run_kind, run_uuid)
93
+ )
94
+
95
+ def stop(self, run_uuid: str, run_kind: str, namespace: str = None):
96
+ proc = self._get_op_proc(run_uuid)
97
+ if proc.poll() is None:
98
+ # Kill the process tree rooted at the child if it's the leader of its own process
99
+ # group, otherwise just kill the child
100
+ try:
101
+ if proc.pid == os.getpgid(proc.pid):
102
+ os.killpg(proc.pid, signal.SIGTERM)
103
+ else:
104
+ proc.terminate()
105
+ except OSError:
106
+ # The child process may have exited before we attempted to terminate it, so we
107
+ # ignore OSErrors raised during child process termination
108
+ _msg = f"Failed to terminate operation {run_kind} {run_uuid} child process PID {proc.pid}"
109
+ logger.debug(_msg)
110
+ proc.wait()
111
+
112
+ def clean(self, run_uuid: str, run_kind: str, namespace: str = None):
113
+ return self.apply(
114
+ run_uuid=run_uuid,
115
+ run_kind=run_kind,
116
+ resource={"metadata": {"finalizers": None}},
117
+ )
118
+
119
+ def _get_task_status(self, proc) -> V1Statuses:
120
+ exit_code = proc.poll()
121
+ if exit_code is None:
122
+ return V1Statuses.RUNNING
123
+ if exit_code == 0:
124
+ return V1Statuses.SUCCEEDED
125
+ return V1Statuses.FAILED
126
+
127
+ def get(self, run_uuid: str, run_kind: str, namespace: str = None) -> V1Statuses:
128
+ procs = self._get_op_proc(run_uuid)
129
+ return self._get_task_status(procs[-1])
130
+
131
+ def list_ops(self, namespace: str = None):
132
+ return []
@@ -0,0 +1,39 @@
1
+ from typing import Dict, List, Optional, Tuple, Union
2
+
3
+ from clipped.compact.pydantic import Field
4
+
5
+ from polyaxon._schemas.base import BaseSchemaModel
6
+
7
+
8
+ class V1EnvVar(BaseSchemaModel):
9
+ __root__: Union[Tuple[str, str], Dict[str, str]]
10
+
11
+ def to_cmd(self):
12
+ if isinstance(self.__root__, tuple):
13
+ value = self.__root__
14
+ else:
15
+ value = self.__root__.items()
16
+ return [f"{value[0]}={value[1]}"]
17
+
18
+
19
+ class V1Container(BaseSchemaModel):
20
+ name: Optional[str]
21
+ command: Optional[List[str]]
22
+ args: Optional[List[str]]
23
+ env: Optional[List[V1EnvVar]]
24
+ working_dir: Optional[str] = Field(alias="workingDir")
25
+
26
+ def get_cmd_args(self):
27
+ cmd_args = ["run", "--rm"]
28
+ for env in self.env:
29
+ cmd_args += ["-e"] + env.to_cmd()
30
+ if self.working_dir:
31
+ cmd_args += ["-w", self.working_dir]
32
+ if self.command:
33
+ cmd_args += ["--entrypoint", self.command[0]]
34
+ cmd_args += [self.image]
35
+ if self.command:
36
+ cmd_args += self.command[1:]
37
+ if self.args:
38
+ cmd_args += self.args
39
+ return cmd_args
@@ -1270,7 +1270,7 @@ class OrganizationsV1Api(BaseApi):
1270
1270
  def delete_organization_member(
1271
1271
  self,
1272
1272
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
1273
- name: Annotated[StrictStr, Field(..., description="Component under namesapce")],
1273
+ name: Annotated[StrictStr, Field(..., description="Component under namespace")],
1274
1274
  **kwargs
1275
1275
  ) -> None: # noqa: E501
1276
1276
  """Delete organization member details # noqa: E501
@@ -1283,7 +1283,7 @@ class OrganizationsV1Api(BaseApi):
1283
1283
 
1284
1284
  :param owner: Owner of the namespace (required)
1285
1285
  :type owner: str
1286
- :param name: Component under namesapce (required)
1286
+ :param name: Component under namespace (required)
1287
1287
  :type name: str
1288
1288
  :param async_req: Whether to execute the request asynchronously.
1289
1289
  :type async_req: bool, optional
@@ -1309,7 +1309,7 @@ class OrganizationsV1Api(BaseApi):
1309
1309
  def delete_organization_member_with_http_info(
1310
1310
  self,
1311
1311
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
1312
- name: Annotated[StrictStr, Field(..., description="Component under namesapce")],
1312
+ name: Annotated[StrictStr, Field(..., description="Component under namespace")],
1313
1313
  **kwargs
1314
1314
  ): # noqa: E501
1315
1315
  """Delete organization member details # noqa: E501
@@ -1322,7 +1322,7 @@ class OrganizationsV1Api(BaseApi):
1322
1322
 
1323
1323
  :param owner: Owner of the namespace (required)
1324
1324
  :type owner: str
1325
- :param name: Component under namesapce (required)
1325
+ :param name: Component under namespace (required)
1326
1326
  :type name: str
1327
1327
  :param async_req: Whether to execute the request asynchronously.
1328
1328
  :type async_req: bool, optional
@@ -2249,7 +2249,7 @@ class OrganizationsV1Api(BaseApi):
2249
2249
  def get_organization_member(
2250
2250
  self,
2251
2251
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
2252
- name: Annotated[StrictStr, Field(..., description="Component under namesapce")],
2252
+ name: Annotated[StrictStr, Field(..., description="Component under namespace")],
2253
2253
  **kwargs
2254
2254
  ) -> V1OrganizationMember: # noqa: E501
2255
2255
  """Get organization member details # noqa: E501
@@ -2262,7 +2262,7 @@ class OrganizationsV1Api(BaseApi):
2262
2262
 
2263
2263
  :param owner: Owner of the namespace (required)
2264
2264
  :type owner: str
2265
- :param name: Component under namesapce (required)
2265
+ :param name: Component under namespace (required)
2266
2266
  :type name: str
2267
2267
  :param async_req: Whether to execute the request asynchronously.
2268
2268
  :type async_req: bool, optional
@@ -2288,7 +2288,7 @@ class OrganizationsV1Api(BaseApi):
2288
2288
  def get_organization_member_with_http_info(
2289
2289
  self,
2290
2290
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
2291
- name: Annotated[StrictStr, Field(..., description="Component under namesapce")],
2291
+ name: Annotated[StrictStr, Field(..., description="Component under namespace")],
2292
2292
  **kwargs
2293
2293
  ): # noqa: E501
2294
2294
  """Get organization member details # noqa: E501
@@ -2301,7 +2301,7 @@ class OrganizationsV1Api(BaseApi):
2301
2301
 
2302
2302
  :param owner: Owner of the namespace (required)
2303
2303
  :type owner: str
2304
- :param name: Component under namesapce (required)
2304
+ :param name: Component under namespace (required)
2305
2305
  :type name: str
2306
2306
  :param async_req: Whether to execute the request asynchronously.
2307
2307
  :type async_req: bool, optional
@@ -15,7 +15,7 @@ class ProjectDashboardsV1Api(BaseApi):
15
15
  self,
16
16
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
17
17
  project: Annotated[
18
- StrictStr, Field(..., description="Project under namesapce")
18
+ StrictStr, Field(..., description="Project under namespace")
19
19
  ],
20
20
  body: Annotated[V1Dashboard, Field(..., description="Dashboard body")],
21
21
  **kwargs
@@ -30,7 +30,7 @@ class ProjectDashboardsV1Api(BaseApi):
30
30
 
31
31
  :param owner: Owner of the namespace (required)
32
32
  :type owner: str
33
- :param project: Project under namesapce (required)
33
+ :param project: Project under namespace (required)
34
34
  :type project: str
35
35
  :param body: Dashboard body (required)
36
36
  :type body: V1Dashboard
@@ -59,7 +59,7 @@ class ProjectDashboardsV1Api(BaseApi):
59
59
  self,
60
60
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
61
61
  project: Annotated[
62
- StrictStr, Field(..., description="Project under namesapce")
62
+ StrictStr, Field(..., description="Project under namespace")
63
63
  ],
64
64
  body: Annotated[V1Dashboard, Field(..., description="Dashboard body")],
65
65
  **kwargs
@@ -74,7 +74,7 @@ class ProjectDashboardsV1Api(BaseApi):
74
74
 
75
75
  :param owner: Owner of the namespace (required)
76
76
  :type owner: str
77
- :param project: Project under namesapce (required)
77
+ :param project: Project under namespace (required)
78
78
  :type project: str
79
79
  :param body: Dashboard body (required)
80
80
  :type body: V1Dashboard
@@ -1069,7 +1069,7 @@ class ProjectDashboardsV1Api(BaseApi):
1069
1069
  self,
1070
1070
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
1071
1071
  project: Annotated[
1072
- StrictStr, Field(..., description="Project under namesapce")
1072
+ StrictStr, Field(..., description="Project under namespace")
1073
1073
  ],
1074
1074
  dashboard_uuid: Annotated[StrictStr, Field(..., description="UUID")],
1075
1075
  body: Annotated[V1Dashboard, Field(..., description="Dashboard body")],
@@ -1085,7 +1085,7 @@ class ProjectDashboardsV1Api(BaseApi):
1085
1085
 
1086
1086
  :param owner: Owner of the namespace (required)
1087
1087
  :type owner: str
1088
- :param project: Project under namesapce (required)
1088
+ :param project: Project under namespace (required)
1089
1089
  :type project: str
1090
1090
  :param dashboard_uuid: UUID (required)
1091
1091
  :type dashboard_uuid: str
@@ -1116,7 +1116,7 @@ class ProjectDashboardsV1Api(BaseApi):
1116
1116
  self,
1117
1117
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
1118
1118
  project: Annotated[
1119
- StrictStr, Field(..., description="Project under namesapce")
1119
+ StrictStr, Field(..., description="Project under namespace")
1120
1120
  ],
1121
1121
  dashboard_uuid: Annotated[StrictStr, Field(..., description="UUID")],
1122
1122
  body: Annotated[V1Dashboard, Field(..., description="Dashboard body")],
@@ -1132,7 +1132,7 @@ class ProjectDashboardsV1Api(BaseApi):
1132
1132
 
1133
1133
  :param owner: Owner of the namespace (required)
1134
1134
  :type owner: str
1135
- :param project: Project under namesapce (required)
1135
+ :param project: Project under namespace (required)
1136
1136
  :type project: str
1137
1137
  :param dashboard_uuid: UUID (required)
1138
1138
  :type dashboard_uuid: str
@@ -1440,7 +1440,7 @@ class ProjectDashboardsV1Api(BaseApi):
1440
1440
  self,
1441
1441
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
1442
1442
  project: Annotated[
1443
- StrictStr, Field(..., description="Project under namesapce")
1443
+ StrictStr, Field(..., description="Project under namespace")
1444
1444
  ],
1445
1445
  dashboard_uuid: Annotated[StrictStr, Field(..., description="UUID")],
1446
1446
  body: Annotated[V1Dashboard, Field(..., description="Dashboard body")],
@@ -1456,7 +1456,7 @@ class ProjectDashboardsV1Api(BaseApi):
1456
1456
 
1457
1457
  :param owner: Owner of the namespace (required)
1458
1458
  :type owner: str
1459
- :param project: Project under namesapce (required)
1459
+ :param project: Project under namespace (required)
1460
1460
  :type project: str
1461
1461
  :param dashboard_uuid: UUID (required)
1462
1462
  :type dashboard_uuid: str
@@ -1487,7 +1487,7 @@ class ProjectDashboardsV1Api(BaseApi):
1487
1487
  self,
1488
1488
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
1489
1489
  project: Annotated[
1490
- StrictStr, Field(..., description="Project under namesapce")
1490
+ StrictStr, Field(..., description="Project under namespace")
1491
1491
  ],
1492
1492
  dashboard_uuid: Annotated[StrictStr, Field(..., description="UUID")],
1493
1493
  body: Annotated[V1Dashboard, Field(..., description="Dashboard body")],
@@ -1503,7 +1503,7 @@ class ProjectDashboardsV1Api(BaseApi):
1503
1503
 
1504
1504
  :param owner: Owner of the namespace (required)
1505
1505
  :type owner: str
1506
- :param project: Project under namesapce (required)
1506
+ :param project: Project under namespace (required)
1507
1507
  :type project: str
1508
1508
  :param dashboard_uuid: UUID (required)
1509
1509
  :type dashboard_uuid: str
@@ -15,7 +15,7 @@ class ProjectSearchesV1Api(BaseApi):
15
15
  self,
16
16
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
17
17
  project: Annotated[
18
- StrictStr, Field(..., description="Project under namesapce")
18
+ StrictStr, Field(..., description="Project under namespace")
19
19
  ],
20
20
  body: Annotated[V1Search, Field(..., description="Search body")],
21
21
  **kwargs
@@ -30,7 +30,7 @@ class ProjectSearchesV1Api(BaseApi):
30
30
 
31
31
  :param owner: Owner of the namespace (required)
32
32
  :type owner: str
33
- :param project: Project under namesapce (required)
33
+ :param project: Project under namespace (required)
34
34
  :type project: str
35
35
  :param body: Search body (required)
36
36
  :type body: V1Search
@@ -59,7 +59,7 @@ class ProjectSearchesV1Api(BaseApi):
59
59
  self,
60
60
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
61
61
  project: Annotated[
62
- StrictStr, Field(..., description="Project under namesapce")
62
+ StrictStr, Field(..., description="Project under namespace")
63
63
  ],
64
64
  body: Annotated[V1Search, Field(..., description="Search body")],
65
65
  **kwargs
@@ -74,7 +74,7 @@ class ProjectSearchesV1Api(BaseApi):
74
74
 
75
75
  :param owner: Owner of the namespace (required)
76
76
  :type owner: str
77
- :param project: Project under namesapce (required)
77
+ :param project: Project under namespace (required)
78
78
  :type project: str
79
79
  :param body: Search body (required)
80
80
  :type body: V1Search
@@ -1069,7 +1069,7 @@ class ProjectSearchesV1Api(BaseApi):
1069
1069
  self,
1070
1070
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
1071
1071
  project: Annotated[
1072
- StrictStr, Field(..., description="Project under namesapce")
1072
+ StrictStr, Field(..., description="Project under namespace")
1073
1073
  ],
1074
1074
  search_uuid: Annotated[StrictStr, Field(..., description="UUID")],
1075
1075
  body: Annotated[V1Search, Field(..., description="Search body")],
@@ -1085,7 +1085,7 @@ class ProjectSearchesV1Api(BaseApi):
1085
1085
 
1086
1086
  :param owner: Owner of the namespace (required)
1087
1087
  :type owner: str
1088
- :param project: Project under namesapce (required)
1088
+ :param project: Project under namespace (required)
1089
1089
  :type project: str
1090
1090
  :param search_uuid: UUID (required)
1091
1091
  :type search_uuid: str
@@ -1116,7 +1116,7 @@ class ProjectSearchesV1Api(BaseApi):
1116
1116
  self,
1117
1117
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
1118
1118
  project: Annotated[
1119
- StrictStr, Field(..., description="Project under namesapce")
1119
+ StrictStr, Field(..., description="Project under namespace")
1120
1120
  ],
1121
1121
  search_uuid: Annotated[StrictStr, Field(..., description="UUID")],
1122
1122
  body: Annotated[V1Search, Field(..., description="Search body")],
@@ -1132,7 +1132,7 @@ class ProjectSearchesV1Api(BaseApi):
1132
1132
 
1133
1133
  :param owner: Owner of the namespace (required)
1134
1134
  :type owner: str
1135
- :param project: Project under namesapce (required)
1135
+ :param project: Project under namespace (required)
1136
1136
  :type project: str
1137
1137
  :param search_uuid: UUID (required)
1138
1138
  :type search_uuid: str
@@ -1440,7 +1440,7 @@ class ProjectSearchesV1Api(BaseApi):
1440
1440
  self,
1441
1441
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
1442
1442
  project: Annotated[
1443
- StrictStr, Field(..., description="Project under namesapce")
1443
+ StrictStr, Field(..., description="Project under namespace")
1444
1444
  ],
1445
1445
  search_uuid: Annotated[StrictStr, Field(..., description="UUID")],
1446
1446
  body: Annotated[V1Search, Field(..., description="Search body")],
@@ -1456,7 +1456,7 @@ class ProjectSearchesV1Api(BaseApi):
1456
1456
 
1457
1457
  :param owner: Owner of the namespace (required)
1458
1458
  :type owner: str
1459
- :param project: Project under namesapce (required)
1459
+ :param project: Project under namespace (required)
1460
1460
  :type project: str
1461
1461
  :param search_uuid: UUID (required)
1462
1462
  :type search_uuid: str
@@ -1487,7 +1487,7 @@ class ProjectSearchesV1Api(BaseApi):
1487
1487
  self,
1488
1488
  owner: Annotated[StrictStr, Field(..., description="Owner of the namespace")],
1489
1489
  project: Annotated[
1490
- StrictStr, Field(..., description="Project under namesapce")
1490
+ StrictStr, Field(..., description="Project under namespace")
1491
1491
  ],
1492
1492
  search_uuid: Annotated[StrictStr, Field(..., description="UUID")],
1493
1493
  body: Annotated[V1Search, Field(..., description="Search body")],
@@ -1503,7 +1503,7 @@ class ProjectSearchesV1Api(BaseApi):
1503
1503
 
1504
1504
  :param owner: Owner of the namespace (required)
1505
1505
  :type owner: str
1506
- :param project: Project under namesapce (required)
1506
+ :param project: Project under namespace (required)
1507
1507
  :type project: str
1508
1508
  :param search_uuid: UUID (required)
1509
1509
  :type search_uuid: str