pythonasyncioapiasyncfastapiframeworkjsonjson-schemaopenapiopenapi3pydanticpython-typespython3redocreststarletteswaggerswagger-uiuvicornweb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
246 lines
5.4 KiB
246 lines
5.4 KiB
from typing import Sequence
|
|
from enum import Enum
|
|
from pydantic import Schema
|
|
|
|
|
|
class ParamTypes(Enum):
|
|
query = "query"
|
|
header = "header"
|
|
path = "path"
|
|
cookie = "cookie"
|
|
|
|
|
|
class Param(Schema):
|
|
in_: ParamTypes
|
|
def __init__(
|
|
self,
|
|
default,
|
|
*,
|
|
deprecated: bool = None,
|
|
alias: str = None,
|
|
title: str = None,
|
|
description: str = None,
|
|
gt: float = None,
|
|
ge: float = None,
|
|
lt: float = None,
|
|
le: float = None,
|
|
min_length: int = None,
|
|
max_length: int = None,
|
|
regex: str = None,
|
|
**extra: object,
|
|
):
|
|
self.deprecated = deprecated
|
|
super().__init__(
|
|
default,
|
|
alias=alias,
|
|
title=title,
|
|
description=description,
|
|
gt=gt,
|
|
ge=ge,
|
|
lt=lt,
|
|
le=le,
|
|
min_length=min_length,
|
|
max_length=max_length,
|
|
regex=regex,
|
|
**extra,
|
|
)
|
|
|
|
|
|
class Path(Param):
|
|
in_ = ParamTypes.path
|
|
|
|
def __init__(
|
|
self,
|
|
default,
|
|
*,
|
|
deprecated: bool = None,
|
|
alias: str = None,
|
|
title: str = None,
|
|
description: str = None,
|
|
gt: float = None,
|
|
ge: float = None,
|
|
lt: float = None,
|
|
le: float = None,
|
|
min_length: int = None,
|
|
max_length: int = None,
|
|
regex: str = None,
|
|
**extra: object,
|
|
):
|
|
self.description = description
|
|
self.deprecated = deprecated
|
|
self.in_ = self.in_
|
|
super().__init__(
|
|
default,
|
|
alias=alias,
|
|
title=title,
|
|
description=description,
|
|
gt=gt,
|
|
ge=ge,
|
|
lt=lt,
|
|
le=le,
|
|
min_length=min_length,
|
|
max_length=max_length,
|
|
regex=regex,
|
|
**extra,
|
|
)
|
|
|
|
|
|
class Query(Param):
|
|
in_ = ParamTypes.query
|
|
|
|
def __init__(
|
|
self,
|
|
default,
|
|
*,
|
|
deprecated: bool = None,
|
|
alias: str = None,
|
|
title: str = None,
|
|
description: str = None,
|
|
gt: float = None,
|
|
ge: float = None,
|
|
lt: float = None,
|
|
le: float = None,
|
|
min_length: int = None,
|
|
max_length: int = None,
|
|
regex: str = None,
|
|
**extra: object,
|
|
):
|
|
self.description = description
|
|
self.deprecated = deprecated
|
|
super().__init__(
|
|
default,
|
|
alias=alias,
|
|
title=title,
|
|
description=description,
|
|
gt=gt,
|
|
ge=ge,
|
|
lt=lt,
|
|
le=le,
|
|
min_length=min_length,
|
|
max_length=max_length,
|
|
regex=regex,
|
|
**extra,
|
|
)
|
|
|
|
|
|
class Header(Param):
|
|
in_ = ParamTypes.header
|
|
|
|
def __init__(
|
|
self,
|
|
default,
|
|
*,
|
|
deprecated: bool = None,
|
|
alias: str = None,
|
|
title: str = None,
|
|
description: str = None,
|
|
gt: float = None,
|
|
ge: float = None,
|
|
lt: float = None,
|
|
le: float = None,
|
|
min_length: int = None,
|
|
max_length: int = None,
|
|
regex: str = None,
|
|
**extra: object,
|
|
):
|
|
self.description = description
|
|
self.deprecated = deprecated
|
|
super().__init__(
|
|
default,
|
|
alias=alias,
|
|
title=title,
|
|
description=description,
|
|
gt=gt,
|
|
ge=ge,
|
|
lt=lt,
|
|
le=le,
|
|
min_length=min_length,
|
|
max_length=max_length,
|
|
regex=regex,
|
|
**extra,
|
|
)
|
|
|
|
|
|
class Cookie(Param):
|
|
in_ = ParamTypes.cookie
|
|
|
|
def __init__(
|
|
self,
|
|
default,
|
|
*,
|
|
deprecated: bool = None,
|
|
alias: str = None,
|
|
title: str = None,
|
|
description: str = None,
|
|
gt: float = None,
|
|
ge: float = None,
|
|
lt: float = None,
|
|
le: float = None,
|
|
min_length: int = None,
|
|
max_length: int = None,
|
|
regex: str = None,
|
|
**extra: object,
|
|
):
|
|
self.description = description
|
|
self.deprecated = deprecated
|
|
super().__init__(
|
|
default,
|
|
alias=alias,
|
|
title=title,
|
|
description=description,
|
|
gt=gt,
|
|
ge=ge,
|
|
lt=lt,
|
|
le=le,
|
|
min_length=min_length,
|
|
max_length=max_length,
|
|
regex=regex,
|
|
**extra,
|
|
)
|
|
|
|
|
|
class Body(Schema):
|
|
def __init__(
|
|
self,
|
|
default,
|
|
*,
|
|
sub_key=False,
|
|
alias: str = None,
|
|
title: str = None,
|
|
description: str = None,
|
|
gt: float = None,
|
|
ge: float = None,
|
|
lt: float = None,
|
|
le: float = None,
|
|
min_length: int = None,
|
|
max_length: int = None,
|
|
regex: str = None,
|
|
**extra: object,
|
|
):
|
|
self.sub_key = sub_key
|
|
super().__init__(
|
|
default,
|
|
alias=alias,
|
|
title=title,
|
|
description=description,
|
|
gt=gt,
|
|
ge=ge,
|
|
lt=lt,
|
|
le=le,
|
|
min_length=min_length,
|
|
max_length=max_length,
|
|
regex=regex,
|
|
**extra,
|
|
)
|
|
|
|
|
|
class Depends:
|
|
def __init__(self, dependency = None):
|
|
self.dependency = dependency
|
|
|
|
|
|
class Security:
|
|
def __init__(self, security_scheme = None, scopes: Sequence[str] = None):
|
|
self.security_scheme = security_scheme
|
|
self.scopes = scopes
|
|
|
|
|