python / cpython

The Python programming language
https://www.python.org/
Other
61.1k stars 29.5k forks source link

3.13 Better Document `__replace__` on Dataclasses and Named Tuples #121371

Open max-muoto opened 1 week ago

max-muoto commented 1 week ago

Documentation

With named tuples and dataclasses now implementing __replace__, it would be good to have some clearer documentation on this somewhere. Type-checkers will likely have to implement support as a specific implementation detail, which MyPy is already starting to do (see here, for example), so having more formal documentation of this fact would helpful.

serhiy-storchaka commented 1 week ago

The __replace__ method itself is an implementation detail. Only the support of copy.replace() should be documented. In future we may add other ways to specify this.

Special methods like __iter__ or __reduce__ are rarely documented. Instead the fact that objects are iterable or pickleable are documented.

max-muoto commented 1 week ago

The __replace__ method itself is an implementation detail. Only the support of copy.replace() should be documented. In future we may add other ways to specify this.

Special methods like __iter__ or __reduce__ are rarely documented. Instead the fact that objects are iterable or pickleable are documented.

Makes sense, I will just say it just being documented in copy, while it needing to be special-cased I think makes it harder to realize that type-checkers should likely implement support - so I do wonder if there's a better way to indicate things like that long-term.