Use docstring of handler in the OAS description

This commit is contained in:
Vincent Maillol 2020-11-14 20:33:55 +01:00
parent 03854cf939
commit 913f50298c
3 changed files with 19 additions and 3 deletions

View File

@ -1,3 +1,4 @@
from inspect import getdoc
import typing
from typing import List, Type
@ -67,6 +68,9 @@ def _add_http_method_to_oas(
oas_operation: OperationObject = getattr(oas_path, http_method)
handler = getattr(view, http_method)
path_args, body_args, qs_args, header_args = _parse_func_signature(handler)
description = getdoc(handler)
if description:
oas_operation.description = description
if body_args:
oas_operation.request_body.content = {

View File

@ -9,8 +9,14 @@ from aiohttp.web_exceptions import HTTPMethodNotAllowed
from aiohttp.web_response import StreamResponse
from pydantic import ValidationError
from .injectors import (AbstractInjector, BodyGetter, HeadersGetter,
MatchInfoGetter, QueryGetter, _parse_func_signature)
from .injectors import (
AbstractInjector,
BodyGetter,
HeadersGetter,
MatchInfoGetter,
QueryGetter,
_parse_func_signature,
)
class PydanticView(AbstractView):

View File

@ -15,9 +15,13 @@ class Pet(BaseModel):
class PetCollectionView(PydanticView):
async def get(self) -> r200[List[Pet]]:
"""
Get a list of pets
"""
return web.json_response()
async def post(self, pet: Pet) -> r201[Pet]:
"""Create a Pet"""
return web.json_response()
@ -52,6 +56,7 @@ async def test_generated_oas_should_have_pets_paths(generated_oas):
async def test_pets_route_should_have_get_method(generated_oas):
assert generated_oas["paths"]["/pets"]["get"] == {
"description": "Get a list of pets",
"responses": {
"200": {
"content": {
@ -71,12 +76,13 @@ async def test_pets_route_should_have_get_method(generated_oas):
}
}
}
}
},
}
async def test_pets_route_should_have_post_method(generated_oas):
assert generated_oas["paths"]["/pets"]["post"] == {
"description": "Create a Pet",
"requestBody": {
"content": {
"application/json": {