Skip to content

Instantly share code, notes, and snippets.

@wellic
Created November 11, 2021 16:00
Show Gist options
  • Save wellic/867297d7cd5089cad5a65f643bd162e3 to your computer and use it in GitHub Desktop.
Save wellic/867297d7cd5089cad5a65f643bd162e3 to your computer and use it in GitHub Desktop.
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
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