apimodel.fields#

Field descriptors.

Module Contents#

class apimodel.fields.FieldInfo(default: object = ..., *, default_factory: Optional[Callable[[], object]] = None, alias: Optional[str] = None, private: Optional[bool] = False, validators: apimodel.tutils.MaybeSequence[apimodel.tutils.AnyCallable] = (), **extra: Any)[source]#

Basic information about a field.

default :object[source]#

The default value of the field.

default_factory :Optional[Callable[[], object]][source]#

Factory for the default value in case of mutables.

alias :Optional[str][source]#

Key name in the JSON object. Similar to pydantic’s alias.

The attribute name by default.

private :Optional[bool][source]#

Whether the field is private. Affects model.as_dict()

Set to True by default if the attribute name starts with an underscore.

validators :List[apimodel.validation.Validator][source]#

Validators for the value.

extra :Mapping[str, Any][source]#

Extra metadata about the field.

May be used by subclasses to store additional information.

add_validators(self, *validators: Union[apimodel.validation.Validator, apimodel.tutils.AnyCallable]) None[source]#

Properly add validators to the field.

class apimodel.fields.ModelFieldInfo(default: object = ..., *, default_factory: Optional[Callable[[], object]] = None, alias: Optional[str] = None, private: Optional[bool] = False, validators: apimodel.tutils.MaybeSequence[apimodel.tutils.AnyCallable] = (), **extra: Any)[source]#

Complete information about a field.

alias :str[source]#
private :bool[source]#
classmethod from_annotation(cls, name: str, annotation: object, default: object = ..., *, model: Optional[type] = None) apimodel.tutils.Self[source]#

Create a new model field info from an annotation.

If the default is already a FieldInfo, the data is copied.

property annotation_validator(self) apimodel.parser.AnnotationValidator[source]#

Return the validator for the annotation.

property tp(self) object[source]#

Return the type of the field.

class apimodel.fields.ExtraInfo(default: object = ..., *, alias: str = '')[source]#

Descriptor for a special extra attribute.

default :object[source]#
alias :str[source]#
class apimodel.fields.NamedProperty(fget: apimodel.tutils.AnyCallable, *, alias: Optional[str] = None, exclude: Optional[bool] = None)[source]#

Property with a public name.

alias :str[source]#
exclude :bool[source]#
apimodel.fields.Field(default: object = ..., *, default_factory: Optional[Callable[[], object]] = None, alias: Optional[str] = None, private: Optional[bool] = None, validator: apimodel.tutils.MaybeSequence[apimodel.tutils.AnyCallable] = (), validators: apimodel.tutils.MaybeSequence[apimodel.tutils.AnyCallable] = (), **extra: Any) Any[source]#

Create a new FieldInfo.

apimodel.fields.Extra(default: object = ..., alias: str = '') Any[source]#

Create a new ExtraInfo.

apimodel.fields.Aliased(alias: str, *, default: object = ..., default_factory: Optional[Callable[[], object]] = None, private: Optional[bool] = None, validator: apimodel.tutils.MaybeSequence[apimodel.tutils.AnyCallable] = (), validators: apimodel.tutils.MaybeSequence[apimodel.tutils.AnyCallable] = (), **extra: Any) Any[source]#

Create a new FieldInfo with an alias as the first argument.

apimodel.fields.named_property(alias: Optional[str] = None, *, exclude: Optional[bool] = None) Type[NamedProperty][source]#

Create a named property.