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):
pass
class ItemNotFoundError(Exception):
pass
class ProjectNotFoundError(Exception):
status = 400
......
from typing import Type
from fastapi import APIRouter
from pydantic import BaseModel
......@@ -27,7 +29,7 @@ async def emit(event: Event) -> None:
"""
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:
raise UnknownEventError(f'Event {event.event} not in {AnyEvent}')
......@@ -38,7 +40,6 @@ async def emit(event: Event) -> None:
logger.debug(f'Going to emit {emit_event} ({emit_event})')
await eventbus.emit_async(emit_event._name, emit_event) # noqa PyProtectedMember
# 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 @startup function that sets up all listeners
......
......@@ -15,6 +15,7 @@ from nacsos_data.db.crud.items.twitter import \
read_twitter_item_by_item_id, \
create_twitter_item
from server.api.errors import ItemNotFoundError
from server.data import db_engine
from server.util.security import UserPermissionChecker
from server.util.logging import get_logger
......@@ -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).')
@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,
permission=Depends(UserPermissionChecker('dataset_read'))):
permission=Depends(UserPermissionChecker('dataset_read'))) -> AnyItemModel:
result: AnyItemModel | None = None
if item_type == 'basic':
return await read_basic_item_by_item_id(item_id=item_id, engine=db_engine)
if item_type == 'twitter':
return await read_twitter_item_by_item_id(item_id=item_id, engine=db_engine)
raise HTTPException(status_code=status.HTTP_501_NOT_IMPLEMENTED,
detail=f'Detail getter for {item_type} not implemented (yet).')
result = await read_basic_item_by_item_id(item_id=item_id, engine=db_engine)
elif item_type == 'twitter':
result = await read_twitter_item_by_item_id(item_id=item_id, engine=db_engine)
else:
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)
......
......@@ -7,9 +7,7 @@ from . import events
eventbus = EventEmitter(delimiter='_', wildcard=True)
if TYPE_CHECKING:
from typing import TypeVar
AnyEvent = TypeVar('AnyEvent', bound=events.BaseEvent)
AnyEvent = events.BaseEvent
AnyEventType = str
AnyEventLiteral = str
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