Skip to content

Commit f461f9c

Browse files
committed
lint error fixed
1 parent c4c50b8 commit f461f9c

File tree

10 files changed

+30
-29
lines changed

10 files changed

+30
-29
lines changed

src/ai/backend/manager/repositories/project_config/db_source/db_source.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from __future__ import annotations
1010

1111
import uuid
12-
from typing import Optional
1312

1413
import sqlalchemy as sa
1514

@@ -44,7 +43,7 @@ def __init__(self, db: ExtendedAsyncSAEngine) -> None:
4443
self._db = db
4544

4645
async def resolve_project(
47-
self, domain_name: Optional[str], project_id_or_name: uuid.UUID | str
46+
self, domain_name: str | None, project_id_or_name: uuid.UUID | str
4847
) -> ResolvedProject:
4948
"""
5049
Resolve project identity (id + domain_name) in a single query.
@@ -92,7 +91,7 @@ async def get_dotfiles(self, project_id: uuid.UUID) -> ProjectDotfilesResult:
9291
"""
9392
async with self._db.begin_readonly_session() as session:
9493
conn = await session.connection()
95-
dotfiles, leftover_space = await query_group_dotfiles(conn, project_id) # type: ignore[arg-type]
94+
dotfiles, leftover_space = await query_group_dotfiles(conn, project_id)
9695
if dotfiles is None:
9796
raise DotfileNotFound
9897
return ProjectDotfilesResult(dotfiles=dotfiles, leftover_space=leftover_space)
@@ -111,7 +110,7 @@ async def add_dotfile(self, project_id: uuid.UUID, dotfile: DotfileInput) -> Non
111110
"""Add a new dotfile to the project in a single session."""
112111
async with self._db.begin_session() as session:
113112
conn = await session.connection()
114-
dotfiles, leftover_space = await query_group_dotfiles(conn, project_id) # type: ignore[arg-type]
113+
dotfiles, leftover_space = await query_group_dotfiles(conn, project_id)
115114
if dotfiles is None:
116115
raise DotfileNotFound
117116

@@ -143,7 +142,7 @@ async def modify_dotfile(self, project_id: uuid.UUID, dotfile: DotfileInput) ->
143142
"""Update an existing dotfile in the project in a single session."""
144143
async with self._db.begin_session() as session:
145144
conn = await session.connection()
146-
dotfiles, _ = await query_group_dotfiles(conn, project_id) # type: ignore[arg-type]
145+
dotfiles, _ = await query_group_dotfiles(conn, project_id)
147146
if dotfiles is None:
148147
raise DotfileNotFound
149148

@@ -169,7 +168,7 @@ async def remove_dotfile(self, project_id: uuid.UUID, path: str) -> None:
169168
"""Remove a dotfile from the project in a single session."""
170169
async with self._db.begin_session() as session:
171170
conn = await session.connection()
172-
dotfiles, _ = await query_group_dotfiles(conn, project_id) # type: ignore[arg-type]
171+
dotfiles, _ = await query_group_dotfiles(conn, project_id)
173172
if dotfiles is None:
174173
raise DotfileNotFound
175174

src/ai/backend/manager/repositories/project_config/repository.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from __future__ import annotations
1010

1111
import uuid
12-
from typing import Optional
1312

1413
from ai.backend.common.metrics.metric import DomainType, LayerType
1514
from ai.backend.common.resilience.policies.metrics import MetricArgs, MetricPolicy
@@ -48,7 +47,7 @@ def __init__(self, db: ExtendedAsyncSAEngine) -> None:
4847

4948
@project_config_repository_resilience.apply()
5049
async def resolve_project(
51-
self, domain_name: Optional[str], project_id_or_name: uuid.UUID | str
50+
self, domain_name: str | None, project_id_or_name: uuid.UUID | str
5251
) -> ResolvedProject:
5352
"""
5453
Resolve project identity (id + domain_name) in a single query.

src/ai/backend/manager/services/project_config/actions/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import uuid
44
from dataclasses import dataclass
5-
from typing import Optional, override
5+
from typing import override
66

77
from ai.backend.manager.actions.action import BaseAction
88

@@ -12,7 +12,7 @@ class ProjectConfigAction(BaseAction):
1212
"""Base action for project config operations."""
1313

1414
project_id_or_name: uuid.UUID | str
15-
domain_name: Optional[str]
15+
domain_name: str | None
1616

1717
@override
1818
@classmethod

src/ai/backend/manager/services/project_config/actions/create_dotfile.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import uuid
44
from dataclasses import dataclass
5-
from typing import Optional, override
5+
from typing import override
66

77
from ai.backend.manager.actions.action import BaseActionResult
88
from ai.backend.manager.services.project_config.actions.base import ProjectConfigAction
@@ -15,7 +15,7 @@ class CreateDotfileAction(ProjectConfigAction):
1515
permission: str
1616

1717
@override
18-
def entity_id(self) -> Optional[str]:
18+
def entity_id(self) -> str | None:
1919
return str(self.project_id_or_name)
2020

2121
@override
@@ -29,5 +29,5 @@ class CreateDotfileActionResult(BaseActionResult):
2929
project_id: uuid.UUID
3030

3131
@override
32-
def entity_id(self) -> Optional[str]:
32+
def entity_id(self) -> str | None:
3333
return str(self.project_id)

src/ai/backend/manager/services/project_config/actions/delete_dotfile.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
from dataclasses import dataclass
4-
from typing import Optional, override
4+
from typing import override
55

66
from ai.backend.manager.actions.action import BaseActionResult
77
from ai.backend.manager.services.project_config.actions.base import ProjectConfigAction
@@ -12,7 +12,7 @@ class DeleteDotfileAction(ProjectConfigAction):
1212
path: str
1313

1414
@override
15-
def entity_id(self) -> Optional[str]:
15+
def entity_id(self) -> str | None:
1616
return str(self.project_id_or_name)
1717

1818
@override
@@ -26,5 +26,5 @@ class DeleteDotfileActionResult(BaseActionResult):
2626
success: bool
2727

2828
@override
29-
def entity_id(self) -> Optional[str]:
29+
def entity_id(self) -> str | None:
3030
return None

src/ai/backend/manager/services/project_config/actions/get_dotfile.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from __future__ import annotations
66

77
from dataclasses import dataclass
8-
from typing import Optional, override
8+
from typing import override
99

1010
from ai.backend.manager.actions.action import BaseActionResult
1111
from ai.backend.manager.models.group import GroupDotfile
@@ -17,7 +17,7 @@ class GetDotfileAction(ProjectConfigAction):
1717
path: str
1818

1919
@override
20-
def entity_id(self) -> Optional[str]:
20+
def entity_id(self) -> str | None:
2121
return str(self.project_id_or_name)
2222

2323
@override
@@ -31,5 +31,5 @@ class GetDotfileActionResult(BaseActionResult):
3131
dotfile: GroupDotfile
3232

3333
@override
34-
def entity_id(self) -> Optional[str]:
34+
def entity_id(self) -> str | None:
3535
return None

src/ai/backend/manager/services/project_config/actions/list_dotfiles.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
from dataclasses import dataclass
4-
from typing import Optional, override
4+
from typing import override
55

66
from ai.backend.manager.actions.action import BaseActionResult
77
from ai.backend.manager.models.group import GroupDotfile
@@ -11,7 +11,7 @@
1111
@dataclass
1212
class ListDotfilesAction(ProjectConfigAction):
1313
@override
14-
def entity_id(self) -> Optional[str]:
14+
def entity_id(self) -> str | None:
1515
return str(self.project_id_or_name)
1616

1717
@override
@@ -25,5 +25,5 @@ class ListDotfilesActionResult(BaseActionResult):
2525
dotfiles: list[GroupDotfile]
2626

2727
@override
28-
def entity_id(self) -> Optional[str]:
28+
def entity_id(self) -> str | None:
2929
return None

src/ai/backend/manager/services/project_config/actions/update_dotfile.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import uuid
44
from dataclasses import dataclass
5-
from typing import Optional, override
5+
from typing import override
66

77
from ai.backend.manager.actions.action import BaseActionResult
88
from ai.backend.manager.services.project_config.actions.base import ProjectConfigAction
@@ -15,7 +15,7 @@ class UpdateDotfileAction(ProjectConfigAction):
1515
permission: str
1616

1717
@override
18-
def entity_id(self) -> Optional[str]:
18+
def entity_id(self) -> str | None:
1919
return str(self.project_id_or_name)
2020

2121
@override
@@ -29,5 +29,5 @@ class UpdateDotfileActionResult(BaseActionResult):
2929
project_id: uuid.UUID
3030

3131
@override
32-
def entity_id(self) -> Optional[str]:
32+
def entity_id(self) -> str | None:
3333
return str(self.project_id)

src/ai/backend/manager/services/project_config/service.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ async def _resolve_project_for_admin(
6363
Validates that admin has permission to modify the project's dotfiles.
6464
"""
6565
user = current_user()
66-
assert user is not None
66+
if user is None:
67+
raise InsufficientPrivilege("Authentication required")
6768

6869
project = await self._project_config_repository.resolve_project(
6970
domain_name, project_id_or_name
@@ -88,7 +89,8 @@ async def _resolve_project_for_user(
8889
Validates that user has permission to access the project's dotfiles.
8990
"""
9091
user = current_user()
91-
assert user is not None
92+
if user is None:
93+
raise InsufficientPrivilege("Authentication required")
9294

9395
project = await self._project_config_repository.resolve_project(
9496
domain_name, project_id_or_name

tests/unit/manager/services/project_config/test_service.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
import pytest
1616

17-
from ai.backend.common.contexts.user import UserData, with_user
17+
from ai.backend.common.contexts.user import with_user
18+
from ai.backend.common.data.user.types import UserData, UserRole
1819
from ai.backend.manager.errors.api import InvalidAPIParameters
1920
from ai.backend.manager.errors.storage import (
2021
DotfileAlreadyExists,
@@ -73,7 +74,7 @@ def user_context(user_id: uuid.UUID, domain_name: str) -> Iterator[UserData]:
7374
is_authorized=True,
7475
is_admin=True,
7576
is_superadmin=True,
76-
role="superadmin",
77+
role=UserRole.SUPERADMIN,
7778
domain_name=domain_name,
7879
)
7980
with with_user(user_data):

0 commit comments

Comments
 (0)