Skip to content
Snippets Groups Projects
Commit 7e2fe953 authored by Tim Repke's avatar Tim Repke
Browse files

fix mypy

parent a4cc6712
No related branches found
No related tags found
No related merge requests found
Pipeline #774 failed
...@@ -2,6 +2,10 @@ class DataNotFoundWarning(Warning): ...@@ -2,6 +2,10 @@ class DataNotFoundWarning(Warning):
pass pass
class ItemNotFoundError(Exception):
pass
class ProjectNotFoundError(Exception): class ProjectNotFoundError(Exception):
status = 400 status = 400
......
from typing import Type
from fastapi import APIRouter from fastapi import APIRouter
from pydantic import BaseModel from pydantic import BaseModel
...@@ -27,7 +29,7 @@ async def emit(event: Event) -> None: ...@@ -27,7 +29,7 @@ async def emit(event: Event) -> None:
""" """
logger.info(f'Received external event to be emitted: {event.event}') logger.info(f'Received external event to be emitted: {event.event}')
emit_event_type: AnyEvent = getattr(events, event.event, None) emit_event_type: Type[AnyEvent] | None = getattr(events, event.event, None)
if emit_event_type is None: if emit_event_type is None:
raise UnknownEventError(f'Event {event.event} not in {AnyEvent}') raise UnknownEventError(f'Event {event.event} not in {AnyEvent}')
...@@ -38,7 +40,6 @@ async def emit(event: Event) -> None: ...@@ -38,7 +40,6 @@ async def emit(event: Event) -> None:
logger.debug(f'Going to emit {emit_event} ({emit_event})') logger.debug(f'Going to emit {emit_event} ({emit_event})')
await eventbus.emit_async(emit_event._name, emit_event) # noqa PyProtectedMember await eventbus.emit_async(emit_event._name, emit_event) # noqa PyProtectedMember
# TODO user-configurable triggers (e.g. trigger on event or cron-like) # TODO user-configurable triggers (e.g. trigger on event or cron-like)
# - create schema, model, crud in nacsos-data (probably could just be a JSONB field in `Project` # - create schema, model, crud in nacsos-data (probably could just be a JSONB field in `Project`
# - create @startup function that sets up all listeners # - create @startup function that sets up all listeners
......
...@@ -15,6 +15,7 @@ from nacsos_data.db.crud.items.twitter import \ ...@@ -15,6 +15,7 @@ from nacsos_data.db.crud.items.twitter import \
read_twitter_item_by_item_id, \ read_twitter_item_by_item_id, \
create_twitter_item create_twitter_item
from server.api.errors import ItemNotFoundError
from server.data import db_engine from server.data import db_engine
from server.util.security import UserPermissionChecker from server.util.security import UserPermissionChecker
from server.util.logging import get_logger from server.util.logging import get_logger
...@@ -49,15 +50,21 @@ async def list_project_data_paged(project_id: str, item_type: ProjectTypeLiteral ...@@ -49,15 +50,21 @@ async def list_project_data_paged(project_id: str, item_type: ProjectTypeLiteral
detail=f'Paged data listing for {item_type} not implemented (yet).') detail=f'Paged data listing for {item_type} not implemented (yet).')
@router.get('/{item_type}/detail/{item_id}', response_model=AnyItemModel) @router.get('/{item_type}/detail/{item_id}', response_model=AnyItemModel) # type: ignore[arg-type]
async def get_detail_for_item(item_id: str, item_type: ProjectTypeLiteral, async def get_detail_for_item(item_id: str, item_type: ProjectTypeLiteral,
permission=Depends(UserPermissionChecker('dataset_read'))): permission=Depends(UserPermissionChecker('dataset_read'))) -> AnyItemModel:
result: AnyItemModel | None = None
if item_type == 'basic': if item_type == 'basic':
return await read_basic_item_by_item_id(item_id=item_id, engine=db_engine) result = await read_basic_item_by_item_id(item_id=item_id, engine=db_engine)
if item_type == 'twitter': elif item_type == 'twitter':
return await read_twitter_item_by_item_id(item_id=item_id, engine=db_engine) result = await read_twitter_item_by_item_id(item_id=item_id, engine=db_engine)
raise HTTPException(status_code=status.HTTP_501_NOT_IMPLEMENTED, else:
detail=f'Detail getter for {item_type} not implemented (yet).') raise HTTPException(status_code=status.HTTP_501_NOT_IMPLEMENTED,
detail=f'Detail getter for {item_type} not implemented (yet).')
if result is not None:
return result
raise ItemNotFoundError(f'No item found with type {item_type} with the id {item_id}')
@router.get('/count', response_model=int) @router.get('/count', response_model=int)
......
...@@ -7,9 +7,7 @@ from . import events ...@@ -7,9 +7,7 @@ from . import events
eventbus = EventEmitter(delimiter='_', wildcard=True) eventbus = EventEmitter(delimiter='_', wildcard=True)
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import TypeVar AnyEvent = events.BaseEvent
AnyEvent = TypeVar('AnyEvent', bound=events.BaseEvent)
AnyEventType = str AnyEventType = str
AnyEventLiteral = str AnyEventLiteral = str
else: else:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment