mirror of
https://github.com/correl/tornado-openapi3.git
synced 2024-11-21 19:18:40 +00:00
Annotate formatter and deserializer types
This commit is contained in:
parent
5fe5b75285
commit
88f56bb64d
3 changed files with 19 additions and 2 deletions
|
@ -16,6 +16,7 @@ python = "^3.7"
|
|||
tornado = "^4 || ^5 || ^6"
|
||||
openapi-core = "^0.13.4"
|
||||
ietfparse = "^1.7.0"
|
||||
typing-extensions = "^3.7.4"
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
black = { version = "*", allow-prereleases = true }
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import asyncio
|
||||
import logging
|
||||
import typing
|
||||
|
||||
from openapi_core import create_spec # type: ignore
|
||||
from openapi_core.casting.schemas.exceptions import CastError # type: ignore
|
||||
|
@ -24,6 +25,7 @@ from openapi_core.validation.exceptions import InvalidSecurity # type: ignore
|
|||
import tornado.web # type: ignore
|
||||
|
||||
from tornado_openapi3.requests import RequestValidator
|
||||
from tornado_openapi3.types import Deserializer, Formatter
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -62,7 +64,7 @@ class OpenAPIRequestHandler(tornado.web.RequestHandler):
|
|||
return create_spec(self.spec_dict, validate_spec=False)
|
||||
|
||||
@property
|
||||
def custom_formatters(self) -> dict:
|
||||
def custom_formatters(self) -> typing.Mapping[str, Formatter]:
|
||||
"""A dictionary mapping value formats to formatter objects.
|
||||
|
||||
A formatter object must provide:
|
||||
|
@ -73,7 +75,7 @@ class OpenAPIRequestHandler(tornado.web.RequestHandler):
|
|||
return dict()
|
||||
|
||||
@property
|
||||
def custom_media_type_deserializers(self) -> dict:
|
||||
def custom_media_type_deserializers(self) -> typing.Mapping[str, Deserializer]:
|
||||
"""A dictionary mapping media types to deserializing functions.
|
||||
|
||||
If your endpoints make use of content types beyond ``application/json``,
|
||||
|
|
14
tornado_openapi3/types.py
Normal file
14
tornado_openapi3/types.py
Normal file
|
@ -0,0 +1,14 @@
|
|||
import typing
|
||||
import typing_extensions
|
||||
|
||||
Deserializer = typing.Callable[[typing.Union[bytes, str]], typing.Any]
|
||||
|
||||
|
||||
class Formatter(typing_extensions.Protocol):
|
||||
"""A type representing an OpenAPI formatter."""
|
||||
|
||||
def validate(self, value: str) -> bool: # pragma: no cover
|
||||
...
|
||||
|
||||
def unmarshal(self, value: str) -> typing.Any: # pragma: no cover
|
||||
...
|
Loading…
Reference in a new issue