Skip to content

Upgrading pydantic 0.18 to 0.19

Review needed0.18.2 → 0.19Deprecated1New3Changed1Fixed2

Review neededUpgrade verdict

1 deprecation.

  • Deprecated ignore_extra and allow_extra Config fields in favor of extra.
1 item needs code or config changes

Nothing in this upgrade needs a code or configuration change.

Deprecated1
Deprecated ignore_extra and allow_extra Config fields in favor of extra.
ignore_extraallow_extraextra

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