Upgrading pydantic 0.18 to 0.19
Review needed0.18.2 → 0.19Deprecated1New3Changed1Fixed2
Review neededUpgrade verdict
1 deprecation.
In plain terms
- Deprecated ignore_extra and allow_extra Config fields in favor of extra.
Must act 1 item needs code or config changes
Nothing in this upgrade needs a code or configuration change.
Deprecations to plan for
Deprecated1
Deprecated ignore_extra and allow_extra Config fields in favor of extra.
ignore_extraallow_extraextraAPI changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- added:
export Extra
- changed:
constructor ValidatorGroup(validators) → constructor ValidatorGroup(validators: ValidatorListDict) -> None - changed:
field Validator.func: Callable → field Validator.func: AnyCallable - changed:
function extract_validators(namespace) → function extract_validators(namespace: Dict[str, Any]) -> Dict[str, List[Validator]] - changed:
function get_validator_signature(validator) → function get_validator_signature(validator: Any) -> ValidatorSignature - changed:
function inherit_validators(base_validators, validators) → function inherit_validators(base_validators: ValidatorListDict, validators: ValidatorListDict) -> ValidatorListDict - changed:
function validator(*fields, pre: bool=…, whole: bool=…, always: bool=…, check_fields: bool=…) → function validator(*fields: str, pre: bool=…, whole: bool=…, always: bool=…, check_fields: bool=…) -> Callable[[AnyCallable], classmethod] - changed:
method ValidatorGroup.check_for_unused() → method ValidatorGroup.check_for_unused() -> None - changed:
method ValidatorGroup.get_validators(name) → method ValidatorGroup.get_validators(name: str) -> Optional[Dict[str, Validator]] - added:
variable ValidatorListDict
- changed:
function dataclass(_cls=…, *, init=…, repr=…, eq=…, order=…, unsafe_hash=…, frozen=…, config=…) → function dataclass(_cls: Optional[AnyType]=…, *, init: bool=…, repr: bool=…, eq: bool=…, order: bool=…, unsafe_hash: bool=…, frozen: bool=…, config: Type[BaseConfig]=…) -> Union[Callable[[AnyType], DataclassType], DataclassType] - changed:
function setattr_validate_assignment(self, name, value) → function setattr_validate_assignment(self: DataclassType, name: str, value: Any) -> None - added:
class DataclassType - added:
constructor DataclassType(*args: Any, **kwargs: Any) -> None
- changed:
function from_unix_seconds(seconds: int) -> datetime → function from_unix_seconds(seconds: float) -> datetime - changed:
function get_numeric(value: StrIntFloat) → function get_numeric(value: StrIntFloat) -> Union[None, int, float]
- removed:
field BaseSettings.Config.ignore_extra - changed:
constructor BaseSettings(**values) → constructor BaseSettings(**values: Any) -> None - added:
field BaseSettings.Config.extra
- removed:
property ErrorWrapper.ctx - removed:
property ErrorWrapper.msg - removed:
property ErrorWrapper.type_ - changed:
constructor ErrorWrapper(exc, *, loc, config=…) → constructor ErrorWrapper(exc: Exception, *, loc: Union[Tuple[str, ...], str], config: Optional[Type[BaseConfig]]=…) -> None - changed:
constructor ValidationError(errors) → constructor ValidationError(errors: Sequence[ErrorList]) -> None - changed:
method ErrorWrapper.dict(*, loc_prefix=…) → method ErrorWrapper.dict(*, loc_prefix: Optional[Tuple[str, ...]]=…) -> Dict[str, Any] - changed:
method ValidationError.errors() → method ValidationError.errors() -> List[Dict[str, Any]] - changed:
method ValidationError.json(*, indent=…) → method ValidationError.json(*, indent: int=…) -> str - added:
property ErrorWrapper.ctx -> Dict[str, Any] - added:
property ErrorWrapper.msg -> str - added:
property ErrorWrapper.type_ -> str
- changed:
constructor ArbitraryTypeError(*, expected_arbitrary_type) -> None → constructor ArbitraryTypeError(*, expected_arbitrary_type: AnyType) -> None - changed:
constructor PydanticErrorMixin(**ctx) -> None → constructor PydanticErrorMixin(**ctx: Any) -> None - added:
class CallableError(PydanticTypeError) - added:
class NumberNotMultipleError(PydanticValueError) - added:
constructor NumberNotMultipleError(*, multiple_of: Union[int, float, Decimal]) -> None - added:
field CallableError.msg_template - added:
field NumberNotMultipleError.code - added:
field NumberNotMultipleError.msg_template
- removed:
property Field.alt_alias - changed:
constructor Field(*, name: str, type_: Type, class_validators: Optional[Dict[str, Validator]], model_config: Any, default: Any=…, required: bool=…, alias: str=…, schema=…) → constructor Field(*, name: str, type_: AnyType, class_validators: Optional[Dict[str, Validator]], model_config: Type[BaseConfig], default: Any=…, required: bool=…, alias: str=…, schema: Optional[Schema]=…) -> None - changed:
method Field.is_complex() → method Field.is_complex() -> bool - changed:
method Field.prepare() → method Field.prepare() -> None - changed:
method Field.set_config(config) → method Field.set_config(config: Type[BaseConfig]) -> None - changed:
method Field.validate(v, values, *, loc, cls=…) → method Field.validate(v: Any, values: Dict[str, Any], *, loc: LocType, cls: Optional[Type[BaseModel]]=…) -> ValidateReturn - changed:
static method Field.infer(*, name, value, annotation, class_validators, config) → static method Field.infer(*, name: str, value: Any, annotation: Any, class_validators: Optional[Dict[str, Validator]], config: Type[BaseConfig]) -> Field - added:
property Field.alt_alias -> bool - added:
variable LocType - added:
variable ValidateReturn - added:
variable ValidatorTuple
- changed:
function custom_pydantic_encoder(type_encoders, obj) → function custom_pydantic_encoder(type_encoders: Dict[Any, Callable[[Type[Any]], Any]], obj: Any) -> Any - changed:
function pydantic_encoder(obj) → function pydantic_encoder(obj: Any) -> Any
- removed:
field BaseConfig.allow_extra - removed:
field BaseConfig.ignore_extra - removed:
property BaseModel.fields - changed:
constructor BaseModel(**data) → constructor BaseModel(**data: Any) -> None - changed:
field BaseConfig.fields → field BaseConfig.fields: Dict[str, Union[str, Dict[str, str]]] - changed:
field BaseConfig.json_encoders → field BaseConfig.json_encoders: Dict[AnyType, AnyCallable] - changed:
function create_model(model_name: str, *, __config__: Type=…, __base__: Type[BaseModel]=…, **field_definitions) → function create_model(model_name: str, *, __config__: Type[BaseConfig]=…, __base__: Type[BaseModel]=…, **field_definitions: Any) -> BaseModel - changed:
function inherit_config(self_config: Type, parent_config: Type[BaseConfig]) -> Type[BaseConfig] → function inherit_config(self_config: ConfigType, parent_config: ConfigType) -> ConfigType - changed:
function validate_model(model: BaseModel, input_data: dict, raise_exc=…) → function validate_model(model: Union[BaseModel, Type[BaseModel]], input_data: DictStrAny, raise_exc: bool=…) -> Union[DictStrAny, Tuple[DictStrAny, Optional[ValidationError]]] - changed:
method BaseModel.copy(*, include: Set[str]=…, exclude: Set[str]=…, update: Dict[str, Any]=…, deep: bool=…) → method BaseModel.copy(*, include: Set[str]=…, exclude: Set[str]=…, update: DictStrAny=…, deep: bool=…) -> BaseModel - changed:
method BaseModel.dict(*, include: Set[str]=…, exclude: Set[str]=…, by_alias: bool=…) -> Dict[str, Any] → method BaseModel.dict(*, include: Set[str]=…, exclude: Set[str]=…, by_alias: bool=…) -> DictStrAny - changed:
method BaseModel.json(*, include: Set[str]=…, exclude: Set[str]=…, by_alias: bool=…, encoder=…, **dumps_kwargs) -> str → method BaseModel.json(*, include: Set[str]=…, exclude: Set[str]=…, by_alias: bool=…, encoder: Optional[Callable[[Any], Any]]=…, **dumps_kwargs: Any) -> str - changed:
method BaseModel.to_string(pretty=…) → method BaseModel.to_string(pretty: bool=…) -> str - changed:
static method BaseConfig.get_field_schema(name) → static method BaseConfig.get_field_schema(name: str) -> Dict[str, str] - changed:
static method BaseModel.construct(**values) → static method BaseModel.construct(**values: Any) -> BaseModel - changed:
static method BaseModel.parse_file(path: Union[str, Path], *, content_type: str=…, encoding: str=…, proto: Protocol=…, allow_pickle: bool=…) → static method BaseModel.parse_file(path: Union[str, Path], *, content_type: str=…, encoding: str=…, proto: Protocol=…, allow_pickle: bool=…) -> BaseModel - changed:
static method BaseModel.parse_obj(obj) → static method BaseModel.parse_obj(obj: Dict[Any, Any]) -> BaseModel - changed:
static method BaseModel.parse_raw(b: StrBytes, *, content_type: str=…, encoding: str=…, proto: Protocol=…, allow_pickle: bool=…) → static method BaseModel.parse_raw(b: StrBytes, *, content_type: str=…, encoding: str=…, proto: Protocol=…, allow_pickle: bool=…) -> BaseModel - changed:
static method BaseModel.schema(by_alias=…) -> Dict[str, Any] → static method BaseModel.schema(by_alias: bool=…) -> DictStrAny - changed:
static method BaseModel.schema_json(*, by_alias=…, **dumps_kwargs) -> str → static method BaseModel.schema_json(*, by_alias: bool=…, **dumps_kwargs: Any) -> str - changed:
static method BaseModel.update_forward_refs(**localns) → static method BaseModel.update_forward_refs(**localns: Any) -> None - changed:
static method BaseModel.validate(value) → static method BaseModel.validate(value: DictStrAny) -> BaseModel - added:
class Extra(str, Enum) - added:
field BaseConfig.extra - added:
field Extra.allow - added:
field Extra.forbid - added:
field Extra.ignore - added:
function set_extra(config: BaseConfig, cls_name: str) -> None - added:
property BaseModel.fields -> Dict[str, Field] - added:
variable AnyGenerator - added:
variable ConfigType - added:
variable DictStrAny - added:
variable EXTRA_LINK - added:
variable TupleGenerator
- changed:
constructor Schema(default, *, alias: str=…, title: str=…, description: str=…, gt: float=…, ge: float=…, lt: float=…, le: float=…, min_length: int=…, max_length: int=…, regex: str=…, **extra) → constructor Schema(default: Any, *, alias: str=…, title: str=…, description: str=…, gt: float=…, ge: float=…, lt: float=…, le: float=…, multiple_of: float=…, min_length: int=…, max_length: int=…, regex: str=…, **extra: Any) -> None - changed:
function field_schema(field: Field, *, by_alias=…, model_name_map: Dict[Type[main.BaseModel], str], ref_prefix=…) -> Tuple[Dict[str, Any], Dict[str, Any]] → function field_schema(field: Field, *, by_alias: bool=…, model_name_map: Dict[Type[main.BaseModel], str], ref_prefix: Optional[str]=…) -> Tuple[Dict[str, Any], Dict[str, Any]] - changed:
function field_singleton_schema(field: Field, *, by_alias: bool, model_name_map: Dict[Type[main.BaseModel], str], schema_overrides=…, ref_prefix=…) -> Tuple[Dict[str, Any], Dict[str, Any]] → function field_singleton_schema(field: Field, *, by_alias: bool, model_name_map: Dict[Type[main.BaseModel], str], schema_overrides: bool=…, ref_prefix: Optional[str]=…) -> Tuple[Dict[str, Any], Dict[str, Any]] - changed:
function field_singleton_sub_fields_schema(sub_fields: Sequence[Field], *, by_alias: bool, model_name_map: Dict[Type[main.BaseModel], str], schema_overrides=…, ref_prefix=…) -> Tuple[Dict[str, Any], Dict[str, Any]] → function field_singleton_sub_fields_schema(sub_fields: Sequence[Field], *, by_alias: bool, model_name_map: Dict[Type[main.BaseModel], str], schema_overrides: bool=…, ref_prefix: Optional[str]=…) -> Tuple[Dict[str, Any], Dict[str, Any]] - changed:
function field_type_schema(field: Field, *, by_alias: bool, model_name_map: Dict[Type[main.BaseModel], str], schema_overrides=…, ref_prefix=…) -> Tuple[Dict[str, Any], Dict[str, Any]] → function field_type_schema(field: Field, *, by_alias: bool, model_name_map: Dict[Type[main.BaseModel], str], schema_overrides: bool=…, ref_prefix: Optional[str]=…) -> Tuple[Dict[str, Any], Dict[str, Any]] - changed:
function get_annotation_from_schema(annotation, schema) → function get_annotation_from_schema(annotation: Any, schema: Schema) -> Type[Any] - changed:
function get_flat_models_from_fields(fields) -> Set[Type[main.BaseModel]] → function get_flat_models_from_fields(fields: Sequence[Field]) -> Set[Type[main.BaseModel]] - changed:
function get_long_model_name(model: Type[main.BaseModel]) → function get_long_model_name(model: Type[main.BaseModel]) -> str - changed:
function model_process_schema(model: Type[main.BaseModel], *, by_alias=…, model_name_map: Dict[Type[main.BaseModel], str], ref_prefix=…) -> Tuple[Dict[str, Any], Dict[str, Any]] → function model_process_schema(model: Type[main.BaseModel], *, by_alias: bool=…, model_name_map: Dict[Type[main.BaseModel], str], ref_prefix: Optional[str]=…) -> Tuple[Dict[str, Any], Dict[str, Any]] - changed:
function model_schema(model: Type[main.BaseModel], by_alias=…, ref_prefix=…) -> Dict[str, Any] → function model_schema(model: Type[main.BaseModel], by_alias: bool=…, ref_prefix: Optional[str]=…) -> Dict[str, Any] - changed:
function model_type_schema(model: Type[main.BaseModel], *, by_alias: bool, model_name_map: Dict[Type[main.BaseModel], str], ref_prefix=…) → function model_type_schema(model: Type[main.BaseModel], *, by_alias: bool, model_name_map: Dict[Type[main.BaseModel], str], ref_prefix: Optional[str]=…) -> Tuple[Dict[str, Any], Dict[str, Any]] - changed:
function schema(models: Sequence[Type[main.BaseModel]], *, by_alias=…, title=…, description=…, ref_prefix=…) -> Dict → function schema(models: Sequence[Type[main.BaseModel]], *, by_alias: bool=…, title: Optional[str]=…, description: Optional[str]=…, ref_prefix: Optional[str]=…) -> Dict[str, Any]
- changed:
constructor NameEmail(name, email) → constructor NameEmail(name: str, email: str) - changed:
field ConstrainedBytes.max_length: Optional[int] → field ConstrainedBytes.max_length: OptionalInt - changed:
field ConstrainedBytes.min_length: Optional[int] → field ConstrainedBytes.min_length: OptionalInt - changed:
field ConstrainedDecimal.decimal_places: Optional[int] → field ConstrainedDecimal.decimal_places: OptionalInt - changed:
field ConstrainedDecimal.ge: Union[None, int, float, Decimal] → field ConstrainedDecimal.ge: OptionalIntFloatDecimal - changed:
field ConstrainedDecimal.gt: Union[None, int, float, Decimal] → field ConstrainedDecimal.gt: OptionalIntFloatDecimal - changed:
field ConstrainedDecimal.le: Union[None, int, float, Decimal] → field ConstrainedDecimal.le: OptionalIntFloatDecimal - changed:
field ConstrainedDecimal.lt: Union[None, int, float, Decimal] → field ConstrainedDecimal.lt: OptionalIntFloatDecimal - changed:
field ConstrainedDecimal.max_digits: Optional[int] → field ConstrainedDecimal.max_digits: OptionalInt - changed:
field ConstrainedFloat.ge: Union[None, int, float] → field ConstrainedFloat.ge: OptionalIntFloat - changed:
field ConstrainedFloat.gt: Union[None, int, float] → field ConstrainedFloat.gt: OptionalIntFloat - changed:
field ConstrainedFloat.le: Union[None, int, float] → field ConstrainedFloat.le: OptionalIntFloat - changed:
field ConstrainedFloat.lt: Union[None, int, float] → field ConstrainedFloat.lt: OptionalIntFloat - changed:
field ConstrainedInt.ge: Optional[int] → field ConstrainedInt.ge: OptionalInt - changed:
field ConstrainedInt.gt: Optional[int] → field ConstrainedInt.gt: OptionalInt - changed:
field ConstrainedInt.le: Optional[int] → field ConstrainedInt.le: OptionalInt - changed:
field ConstrainedInt.lt: Optional[int] → field ConstrainedInt.lt: OptionalInt - changed:
field ConstrainedStr.curtail_length: Optional[int] → field ConstrainedStr.curtail_length: OptionalInt - changed:
field ConstrainedStr.max_length: Optional[int] → field ConstrainedStr.max_length: OptionalInt - changed:
field ConstrainedStr.min_length: Optional[int] → field ConstrainedStr.min_length: OptionalInt - changed:
field ConstrainedStr.regex: Optional[Pattern] → field ConstrainedStr.regex: Optional[Pattern[str]] - changed:
function conbytes(*, strip_whitespace=…, min_length=…, max_length=…) -> Type[bytes] → function conbytes(*, strip_whitespace: bool=…, min_length: int=…, max_length: int=…) -> Type[bytes] - changed:
function condecimal(*, gt=…, ge=…, lt=…, le=…, max_digits=…, decimal_places=…) -> Type[Decimal] → function condecimal(*, gt: Decimal=…, ge: Decimal=…, lt: Decimal=…, le: Decimal=…, max_digits: int=…, decimal_places: int=…, multiple_of: Decimal=…) -> Type[Decimal] - changed:
function confloat(*, gt=…, ge=…, lt=…, le=…) -> Type[float] → function confloat(*, gt: float=…, ge: float=…, lt: float=…, le: float=…, multiple_of: float=…) -> Type[float] - changed:
function conint(*, gt=…, ge=…, lt=…, le=…) -> Type[int] → function conint(*, gt: int=…, ge: int=…, lt: int=…, le: int=…, multiple_of: int=…) -> Type[int] - changed:
function constr(*, strip_whitespace=…, min_length=…, max_length=…, curtail_length=…, regex=…) -> Type[str] → function constr(*, strip_whitespace: bool=…, min_length: int=…, max_length: int=…, curtail_length: int=…, regex: str=…) -> Type[str] - changed:
function urlstr(*, strip_whitespace=…, min_length=…, max_length=…, relative=…, require_tld=…, schemes: Optional[Set[str]]=…) -> Type[str] → function urlstr(*, strip_whitespace: bool=…, min_length: int=…, max_length: int=…, relative: bool=…, require_tld: bool=…, schemes: Optional[Set[str]]=…) -> Type[str] - changed:
static method DSN.validate(value, values, **kwarg) → static method DSN.validate(value: str, values: Dict[str, Any], **kwarg: Any) -> str - changed:
static method EmailStr.validate(value) → static method EmailStr.validate(value: str) -> str - changed:
static method Json.validate(v: str) → static method Json.validate(v: str) -> Any - changed:
static method NameEmail.validate(value) → static method NameEmail.validate(value: str) -> NameEmail - changed:
static method PyObject.validate(value) → static method PyObject.validate(value: Any) -> Any - changed:
static method StrictStr.validate(v) → static method StrictStr.validate(v: Any) -> str - added:
field ConstrainedDecimal.multiple_of: OptionalIntFloatDecimal - added:
field ConstrainedFloat.multiple_of: OptionalIntFloat - added:
field ConstrainedInt.multiple_of: OptionalInt
- changed:
function change_exception(raise_exc, *except_types) → function change_exception(raise_exc: ExcType, *except_types: ExcType) -> Generator[None, None, None] - changed:
function clean_docstring(d) → function clean_docstring(d: str) -> str - changed:
function display_as_type(v) → function display_as_type(v: AnyType) -> str - changed:
function import_string(dotted_path) → function import_string(dotted_path: str) -> Any - changed:
function in_ipython() → function in_ipython() -> bool - changed:
function lenient_issubclass(cls, class_or_tuple) → function lenient_issubclass(cls: Any, class_or_tuple: Union[AnyType, Tuple[AnyType, ...]]) -> bool - changed:
function list_like(v) → function list_like(v: AnyType) -> bool - changed:
function make_dsn(*, driver: str, user: str=…, password: str=…, host: str=…, port: str=…, name: str=…, query: str=…) → function make_dsn(*, driver: str, user: str=…, password: str=…, host: str=…, port: str=…, name: str=…, query: Dict[str, Any]=…) -> str - changed:
function resolve_annotations(raw_annotations, module) → function resolve_annotations(raw_annotations: Dict[str, AnyType], module_name: Optional[str]) -> Dict[str, AnyType] - changed:
function truncate(v, *, max_len=…) → function truncate(v: str, *, max_len: int=…) -> str - changed:
function url_regex_generator(*, relative: bool, require_tld: bool) -> Pattern → function url_regex_generator(*, relative: bool, require_tld: bool) -> Pattern[str] - changed:
function validate_email(value) -> Tuple[str, str] → function validate_email(value: str) -> Tuple[str, str] - added:
function is_callable_type(type_: AnyType) -> bool - added:
variable AnyCallable - added:
variable AnyType - added:
variable ExcType
- changed:
function anystr_length_validator(v, field, config, **kwargs) → function anystr_length_validator(v: StrBytes, field: Field, config: BaseConfig, **kwargs: Any) -> StrBytes - changed:
function anystr_strip_whitespace(v, field, config, **kwargs) → function anystr_strip_whitespace(v: StrBytes, field: Field, config: BaseConfig, **kwargs: Any) -> StrBytes - changed:
function bool_validator(v) -> bool → function bool_validator(v: Any) -> bool - changed:
function bytes_validator(v) -> bytes → function bytes_validator(v: Any) -> bytes - changed:
function decimal_validator(v) -> Decimal → function decimal_validator(v: Any) -> Decimal - changed:
function dict_validator(v) -> dict → function dict_validator(v: Any) -> Dict[Any, Any] - changed:
function enum_validator(v, field, config, **kwargs) -> Enum → function enum_validator(v: Any, field: Field, config: BaseConfig, **kwargs: Any) -> Enum - changed:
function find_validators(type_, arbitrary_types_allowed=…) → function find_validators(type_: AnyType, arbitrary_types_allowed: bool=…) -> List[AnyCallable] - changed:
function float_validator(v) -> float → function float_validator(v: Any) -> float - changed:
function int_validator(v) -> int → function int_validator(v: Any) -> int - changed:
function is_none_validator(v) → function is_none_validator(v: Any) -> None - changed:
function list_validator(v) -> list → function list_validator(v: Any) -> List[Any] - changed:
function make_arbitrary_type_validator(type_) → function make_arbitrary_type_validator(type_: Type[T]) -> Callable[[T], T] - changed:
function not_none_validator(v) → function not_none_validator(v: Any) -> Any - changed:
function number_size_validator(v, field, config, **kwargs) → function number_size_validator(v: Number, field: Field, config: BaseConfig, **kwargs: Any) -> Number - changed:
function ordered_dict_validator(v) -> OrderedDict → function ordered_dict_validator(v: Any) -> AnyOrderedDict - changed:
function path_exists_validator(v) -> Path → function path_exists_validator(v: Any) -> Path - changed:
function path_validator(v) -> Path → function path_validator(v: Any) -> Path - changed:
function pattern_validator(v) -> Pattern → function pattern_validator(v: Any) -> Pattern[str] - changed:
function set_validator(v) -> set → function set_validator(v: Any) -> Set[Any] - changed:
function str_validator(v) -> str → function str_validator(v: Any) -> str - changed:
function tuple_validator(v) -> tuple → function tuple_validator(v: Any) -> Tuple[Any, ...] - changed:
function uuid_validator(v, field, config, **kwargs) -> UUID → function uuid_validator(v: Any, field: Field, config: BaseConfig, **kwargs: Any) -> UUID - added:
function callable_validator(v: Any) -> AnyCallable - added:
function number_multiple_validator(v: Number, field: Field, config: BaseConfig, **kwargs: Any) -> Number - added:
variable AnyOrderedDict - added:
variable ConstrainedNumber - added:
variable Number - added:
variable StrBytes - added:
variable T