Created
November 11, 2021 16:00
-
-
Save wellic/867297d7cd5089cad5a65f643bd162e3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from pydantic import BaseModel | |
import inspect | |
def optional(*fields): | |
def dec(_cls): | |
for field in fields: | |
_cls.__fields__[field].required = False | |
return _cls | |
if fields and inspect.isclass(fields[0]) and issubclass(fields[0], BaseModel): | |
cls = fields[0] | |
fields = cls.__fields__ | |
return dec(cls) | |
return dec | |
# src from https://github.com/samuelcolvin/pydantic/issues/1223#issuecomment-775363074 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from pydantic import BaseModel | |
from decorator_optional_pydantic import optional | |
class Book(BaseModel): | |
author: str | |
available: bool | |
isbn: str | |
@optional | |
class BookUpdate(Book): | |
pass | |
@optional('val1', 'val2') | |
class Model(BaseModel): | |
val1: str | |
val2: str | |
captcha: str |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment