Files
pydantic/changes
David Robertson 11d8589423 Teach mypy plugin that validator methods are classmethods (#4102)
* Teach mypy plugin that validator methods are classmethods

For your consideration: a patch which implements the suggestion I made here:
https://github.com/samuelcolvin/pydantic/discussions/4101

Briefly: pydantic automatically wraps validator methods using
`@classmethod`. Hence the first argument to a user-provided validator
should be `cls`. But mypy doesn't know this: it analyses validator
methods like any other regular method, believing the first parameter
`cls` to be a model instance (usually denoted self).

This means that if one annotates `cls` as `Type[...]` then mypy
believes raises an error:

	error: The erased type of self "Type[temp.Model]" is not a supertype of its class "temp.Model"

I concede that this is an extremely niche thing. The only tangible
end-user benefit I can think of is that it'll stop you from calling
instance methods in a validator.

----

I haven't written a mypy plugin before, so this is a bit of a
hack-until-it-works. But it was more straightforward than I expected to
get something working!

* changelog

* Add failure test
2022-08-09 17:04:05 +01:00
..
2022-08-08 15:14:35 +00:00
2019-10-07 17:19:01 +01:00

Pending Changes

This directory contains files describing changes to pydantic since the last release.

If you're creating a pull request, please add a new file to this directory called <pull request or issue id>-<github username>.md. It should be formatted as a single paragraph of markdown

The contents of this file will be used to update HISTORY.md before the next release.