Spaces:
Sleeping
Sleeping
from enum import Enum | |
from typing import Any, Callable, Dict, Optional, Sequence | |
from pydantic.fields import FieldInfo, Undefined | |
class ParamTypes(Enum): | |
query = "query" | |
header = "header" | |
path = "path" | |
cookie = "cookie" | |
class Param(FieldInfo): | |
in_: ParamTypes | |
def __init__( | |
self, | |
default: Any = Undefined, | |
*, | |
alias: Optional[str] = None, | |
title: Optional[str] = None, | |
description: Optional[str] = None, | |
gt: Optional[float] = None, | |
ge: Optional[float] = None, | |
lt: Optional[float] = None, | |
le: Optional[float] = None, | |
min_length: Optional[int] = None, | |
max_length: Optional[int] = None, | |
regex: Optional[str] = None, | |
example: Any = Undefined, | |
examples: Optional[Dict[str, Any]] = None, | |
deprecated: Optional[bool] = None, | |
include_in_schema: bool = True, | |
**extra: Any, | |
): | |
self.deprecated = deprecated | |
self.example = example | |
self.examples = examples | |
self.include_in_schema = include_in_schema | |
super().__init__( | |
default=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, | |
) | |
def __repr__(self) -> str: | |
return f"{self.__class__.__name__}({self.default})" | |
class Path(Param): | |
in_ = ParamTypes.path | |
def __init__( | |
self, | |
default: Any = ..., | |
*, | |
alias: Optional[str] = None, | |
title: Optional[str] = None, | |
description: Optional[str] = None, | |
gt: Optional[float] = None, | |
ge: Optional[float] = None, | |
lt: Optional[float] = None, | |
le: Optional[float] = None, | |
min_length: Optional[int] = None, | |
max_length: Optional[int] = None, | |
regex: Optional[str] = None, | |
example: Any = Undefined, | |
examples: Optional[Dict[str, Any]] = None, | |
deprecated: Optional[bool] = None, | |
include_in_schema: bool = True, | |
**extra: Any, | |
): | |
assert default is ..., "Path parameters cannot have a default value" | |
self.in_ = self.in_ | |
super().__init__( | |
default=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, | |
deprecated=deprecated, | |
example=example, | |
examples=examples, | |
include_in_schema=include_in_schema, | |
**extra, | |
) | |
class Query(Param): | |
in_ = ParamTypes.query | |
def __init__( | |
self, | |
default: Any = Undefined, | |
*, | |
alias: Optional[str] = None, | |
title: Optional[str] = None, | |
description: Optional[str] = None, | |
gt: Optional[float] = None, | |
ge: Optional[float] = None, | |
lt: Optional[float] = None, | |
le: Optional[float] = None, | |
min_length: Optional[int] = None, | |
max_length: Optional[int] = None, | |
regex: Optional[str] = None, | |
example: Any = Undefined, | |
examples: Optional[Dict[str, Any]] = None, | |
deprecated: Optional[bool] = None, | |
include_in_schema: bool = True, | |
**extra: Any, | |
): | |
super().__init__( | |
default=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, | |
deprecated=deprecated, | |
example=example, | |
examples=examples, | |
include_in_schema=include_in_schema, | |
**extra, | |
) | |
class Header(Param): | |
in_ = ParamTypes.header | |
def __init__( | |
self, | |
default: Any = Undefined, | |
*, | |
alias: Optional[str] = None, | |
convert_underscores: bool = True, | |
title: Optional[str] = None, | |
description: Optional[str] = None, | |
gt: Optional[float] = None, | |
ge: Optional[float] = None, | |
lt: Optional[float] = None, | |
le: Optional[float] = None, | |
min_length: Optional[int] = None, | |
max_length: Optional[int] = None, | |
regex: Optional[str] = None, | |
example: Any = Undefined, | |
examples: Optional[Dict[str, Any]] = None, | |
deprecated: Optional[bool] = None, | |
include_in_schema: bool = True, | |
**extra: Any, | |
): | |
self.convert_underscores = convert_underscores | |
super().__init__( | |
default=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, | |
deprecated=deprecated, | |
example=example, | |
examples=examples, | |
include_in_schema=include_in_schema, | |
**extra, | |
) | |
class Cookie(Param): | |
in_ = ParamTypes.cookie | |
def __init__( | |
self, | |
default: Any = Undefined, | |
*, | |
alias: Optional[str] = None, | |
title: Optional[str] = None, | |
description: Optional[str] = None, | |
gt: Optional[float] = None, | |
ge: Optional[float] = None, | |
lt: Optional[float] = None, | |
le: Optional[float] = None, | |
min_length: Optional[int] = None, | |
max_length: Optional[int] = None, | |
regex: Optional[str] = None, | |
example: Any = Undefined, | |
examples: Optional[Dict[str, Any]] = None, | |
deprecated: Optional[bool] = None, | |
include_in_schema: bool = True, | |
**extra: Any, | |
): | |
super().__init__( | |
default=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, | |
deprecated=deprecated, | |
example=example, | |
examples=examples, | |
include_in_schema=include_in_schema, | |
**extra, | |
) | |
class Body(FieldInfo): | |
def __init__( | |
self, | |
default: Any = Undefined, | |
*, | |
embed: bool = False, | |
media_type: str = "application/json", | |
alias: Optional[str] = None, | |
title: Optional[str] = None, | |
description: Optional[str] = None, | |
gt: Optional[float] = None, | |
ge: Optional[float] = None, | |
lt: Optional[float] = None, | |
le: Optional[float] = None, | |
min_length: Optional[int] = None, | |
max_length: Optional[int] = None, | |
regex: Optional[str] = None, | |
example: Any = Undefined, | |
examples: Optional[Dict[str, Any]] = None, | |
**extra: Any, | |
): | |
self.embed = embed | |
self.media_type = media_type | |
self.example = example | |
self.examples = examples | |
super().__init__( | |
default=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, | |
) | |
def __repr__(self) -> str: | |
return f"{self.__class__.__name__}({self.default})" | |
class Form(Body): | |
def __init__( | |
self, | |
default: Any = Undefined, | |
*, | |
media_type: str = "application/x-www-form-urlencoded", | |
alias: Optional[str] = None, | |
title: Optional[str] = None, | |
description: Optional[str] = None, | |
gt: Optional[float] = None, | |
ge: Optional[float] = None, | |
lt: Optional[float] = None, | |
le: Optional[float] = None, | |
min_length: Optional[int] = None, | |
max_length: Optional[int] = None, | |
regex: Optional[str] = None, | |
example: Any = Undefined, | |
examples: Optional[Dict[str, Any]] = None, | |
**extra: Any, | |
): | |
super().__init__( | |
default=default, | |
embed=True, | |
media_type=media_type, | |
alias=alias, | |
title=title, | |
description=description, | |
gt=gt, | |
ge=ge, | |
lt=lt, | |
le=le, | |
min_length=min_length, | |
max_length=max_length, | |
regex=regex, | |
example=example, | |
examples=examples, | |
**extra, | |
) | |
class File(Form): | |
def __init__( | |
self, | |
default: Any = Undefined, | |
*, | |
media_type: str = "multipart/form-data", | |
alias: Optional[str] = None, | |
title: Optional[str] = None, | |
description: Optional[str] = None, | |
gt: Optional[float] = None, | |
ge: Optional[float] = None, | |
lt: Optional[float] = None, | |
le: Optional[float] = None, | |
min_length: Optional[int] = None, | |
max_length: Optional[int] = None, | |
regex: Optional[str] = None, | |
example: Any = Undefined, | |
examples: Optional[Dict[str, Any]] = None, | |
**extra: Any, | |
): | |
super().__init__( | |
default=default, | |
media_type=media_type, | |
alias=alias, | |
title=title, | |
description=description, | |
gt=gt, | |
ge=ge, | |
lt=lt, | |
le=le, | |
min_length=min_length, | |
max_length=max_length, | |
regex=regex, | |
example=example, | |
examples=examples, | |
**extra, | |
) | |
class Depends: | |
def __init__( | |
self, dependency: Optional[Callable[..., Any]] = None, *, use_cache: bool = True | |
): | |
self.dependency = dependency | |
self.use_cache = use_cache | |
def __repr__(self) -> str: | |
attr = getattr(self.dependency, "__name__", type(self.dependency).__name__) | |
cache = "" if self.use_cache else ", use_cache=False" | |
return f"{self.__class__.__name__}({attr}{cache})" | |
class Security(Depends): | |
def __init__( | |
self, | |
dependency: Optional[Callable[..., Any]] = None, | |
*, | |
scopes: Optional[Sequence[str]] = None, | |
use_cache: bool = True, | |
): | |
super().__init__(dependency=dependency, use_cache=use_cache) | |
self.scopes = scopes or [] | |