refac: modernize type annotations (PEP 604 / PEP 585)

This commit is contained in:
Timothy Jaeryang Baek committed 2026-05-12 17:10:15 +09:00
1 parent a59c967d7e
commit 6d0295588e
197 files changed
+3265 -3488

No files matched your search

+41 -43
View File
@@ -1,42 +1,40 @@
from typing import List, Optional
from pydantic import BaseModel
from fastapi import APIRouter, Depends, HTTPException, status, Request, Query
from fastapi.responses import StreamingResponse
from __future__ import annotations
import logging
import io
import logging
import zipfile
from typing import List, Optional
from urllib.parse import quote
from sqlalchemy.ext.asyncio import AsyncSession
from fastapi import APIRouter, Depends, HTTPException, Query, Request, status
from fastapi.responses import StreamingResponse
from open_webui.config import BYPASS_ADMIN_ACCESS_CONTROL
from open_webui.constants import ERROR_MESSAGES
from open_webui.internal.db import get_async_session
from open_webui.models.access_grants import AccessGrants
from open_webui.models.files import FileMetadataResponse, FileModel, Files
from open_webui.models.groups import Groups
from open_webui.models.knowledge import (
KnowledgeFileListResponse,
Knowledges,
KnowledgeForm,
KnowledgeResponse,
Knowledges,
KnowledgeUserResponse,
)
from open_webui.models.files import Files, FileModel, FileMetadataResponse
from open_webui.models.models import ModelForm, Models
from open_webui.retrieval.vector.async_client import ASYNC_VECTOR_DB_CLIENT
from open_webui.routers.retrieval import (
process_file,
ProcessFileForm,
process_files_batch,
BatchProcessFilesForm,
ProcessFileForm,
process_file,
process_files_batch,
)
from open_webui.storage.provider import Storage
from open_webui.constants import ERROR_MESSAGES
from open_webui.utils.auth import get_verified_user, get_admin_user
from open_webui.utils.access_control import has_permission, filter_allowed_access_grants
from open_webui.utils.access_control import filter_allowed_access_grants, has_permission
from open_webui.utils.access_control.files import has_access_to_file
from open_webui.models.access_grants import AccessGrants
from open_webui.config import BYPASS_ADMIN_ACCESS_CONTROL
from open_webui.models.models import Models, ModelForm
from open_webui.utils.auth import get_admin_user, get_verified_user
from pydantic import BaseModel
from sqlalchemy.ext.asyncio import AsyncSession
log = logging.getLogger(__name__)
@@ -100,7 +98,7 @@ async def remove_knowledge_base_metadata_embedding(knowledge_base_id: str) -> bo
class KnowledgeAccessResponse(KnowledgeUserResponse):
write_access: Optional[bool] = False
write_access: bool | None = False
class KnowledgeAccessListResponse(BaseModel):
@@ -110,7 +108,7 @@ class KnowledgeAccessListResponse(BaseModel):
@router.get('/', response_model=KnowledgeAccessListResponse)
async def get_knowledge_bases(
page: Optional[int] = 1,
page: int | None = 1,
user=Depends(get_verified_user),
db: AsyncSession = Depends(get_async_session),
):
@@ -159,9 +157,9 @@ async def get_knowledge_bases(
@router.get('/search', response_model=KnowledgeAccessListResponse)
async def search_knowledge_bases(
query: Optional[str] = None,
view_option: Optional[str] = None,
page: Optional[int] = 1,
query: str | None = None,
view_option: str | None = None,
page: int | None = 1,
user=Depends(get_verified_user),
db: AsyncSession = Depends(get_async_session),
):
@@ -215,8 +213,8 @@ async def search_knowledge_bases(
@router.get('/search/files', response_model=KnowledgeFileListResponse)
async def search_knowledge_files(
query: Optional[str] = None,
page: Optional[int] = 1,
query: str | None = None,
page: int | None = 1,
user=Depends(get_verified_user),
db: AsyncSession = Depends(get_async_session),
):
@@ -242,7 +240,7 @@ async def search_knowledge_files(
############################
@router.post('/create', response_model=Optional[KnowledgeResponse])
@router.post('/create', response_model=KnowledgeResponse | None)
async def create_new_knowledge(
request: Request,
form_data: KnowledgeForm,
@@ -380,11 +378,11 @@ async def reindex_knowledge_base_metadata_embeddings(
class KnowledgeFilesResponse(KnowledgeResponse):
files: Optional[list[FileMetadataResponse]] = None
write_access: Optional[bool] = False
files: list[FileMetadataResponse | None] = None
write_access: bool | None = False
@router.get('/{id}', response_model=Optional[KnowledgeFilesResponse])
@router.get('/{id}', response_model=KnowledgeFilesResponse | None)
async def get_knowledge_by_id(id: str, user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session)):
knowledge = await Knowledges.get_knowledge_by_id(id=id, db=db)
@@ -431,7 +429,7 @@ async def get_knowledge_by_id(id: str, user=Depends(get_verified_user), db: Asyn
############################
@router.post('/{id}/update', response_model=Optional[KnowledgeFilesResponse])
@router.post('/{id}/update', response_model=KnowledgeFilesResponse | None)
async def update_knowledge_by_id(
request: Request,
id: str,
@@ -501,7 +499,7 @@ class KnowledgeAccessGrantsForm(BaseModel):
access_grants: list[dict]
@router.post('/{id}/access/update', response_model=Optional[KnowledgeFilesResponse])
@router.post('/{id}/access/update', response_model=KnowledgeFilesResponse | None)
async def update_knowledge_access_by_id(
request: Request,
id: str,
@@ -556,11 +554,11 @@ async def update_knowledge_access_by_id(
@router.get('/{id}/files', response_model=KnowledgeFileListResponse)
async def get_knowledge_files_by_id(
id: str,
query: Optional[str] = None,
view_option: Optional[str] = None,
order_by: Optional[str] = None,
direction: Optional[str] = None,
page: Optional[int] = 1,
query: str | None = None,
view_option: str | None = None,
order_by: str | None = None,
direction: str | None = None,
page: int | None = 1,
user=Depends(get_verified_user),
db: AsyncSession = Depends(get_async_session),
):
@@ -614,7 +612,7 @@ class KnowledgeFileIdForm(BaseModel):
file_id: str
@router.post('/{id}/file/add', response_model=Optional[KnowledgeFilesResponse])
@router.post('/{id}/file/add', response_model=KnowledgeFilesResponse | None)
async def add_file_to_knowledge_by_id(
request: Request,
id: str,
@@ -695,7 +693,7 @@ async def add_file_to_knowledge_by_id(
)
@router.post('/{id}/file/update', response_model=Optional[KnowledgeFilesResponse])
@router.post('/{id}/file/update', response_model=KnowledgeFilesResponse | None)
async def update_file_from_knowledge_by_id(
request: Request,
id: str,
@@ -774,7 +772,7 @@ async def update_file_from_knowledge_by_id(
############################
@router.post('/{id}/file/remove', response_model=Optional[KnowledgeFilesResponse])
@router.post('/{id}/file/remove', response_model=KnowledgeFilesResponse | None)
async def remove_file_from_knowledge_by_id(
id: str,
form_data: KnowledgeFileIdForm,
@@ -936,7 +934,7 @@ async def delete_knowledge_by_id(
############################
@router.post('/{id}/reset', response_model=Optional[KnowledgeResponse])
@router.post('/{id}/reset', response_model=KnowledgeResponse | None)
async def reset_knowledge_by_id(
id: str, user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session)
):
@@ -978,7 +976,7 @@ async def reset_knowledge_by_id(
############################
@router.post('/{id}/files/batch/add', response_model=Optional[KnowledgeFilesResponse])
@router.post('/{id}/files/batch/add', response_model=KnowledgeFilesResponse | None)
async def add_files_to_knowledge_batch(
request: Request,
id: str,