Source code for openapi.spec.operation
from dataclasses import dataclass
from functools import wraps
from typing import Any, Callable
from ..data.view import DataView, Operation
from ..utils import TypingInfo
[docs]@dataclass
class op:
"""Decorator for a :class:`.ApiPath` view which specifies an operation object
in an OpenAPI Path. Parameters are dataclasses used for validation and
OpenAPI auto documentation.
"""
body_schema: Any = None
query_schema: Any = None
response_schema: Any = None
response: int = 200
# responses: List[Any] = []
def __call__(self, method) -> Callable:
method.op = Operation(
body_schema=TypingInfo.get(self.body_schema),
query_schema=TypingInfo.get(self.query_schema),
response_schema=TypingInfo.get(self.response_schema),
response=self.response,
)
@wraps(method)
async def _(view: DataView) -> Any:
view.operation = method.op
return await method(view)
return _