Closed
Description
Bug Report
This is a follow-on from python/typeshed#7739. See there for additional context provided by @srittau and @AlexWaygood.
To Reproduce
from __future__ import annotations
from functools import partialmethod
class A:
def my_add(self, other: A, reverse: bool) -> A:
return self
__add__ = partialmethod(my_add, reverse=False)
a = A()
aa = A()
aaa = A()
result = sum([aa, a], start=aaa)
Expected Behavior
The above seems like a legitimate way to define __add__
.
Actual Behavior
$ mypy --version
mypy 0.950 (compiled: yes)
$ mypy --show-error-codes --strict mypy_bug_report.py
mypy_bug_report.py:15: error: No overload variant of "sum" matches argument types "List[A]", "A" [call-overload]
mypy_bug_report.py:15: note: Possible overload variants:
mypy_bug_report.py:15: note: def [_SumT <: _SupportsSum] sum(Iterable[_SumT]) -> Union[_SumT, Literal[0]]
mypy_bug_report.py:15: note: def [_SumT <: _SupportsSum, _SumS <: _SupportsSum] sum(Iterable[_SumT], start: _SumS) -> Union[_SumT, _SumS]
Found 1 error in 1 file (checked 1 source file)
mypy 1.11.1's output is essentially unchanged.
Your Environment
- Mypy version used: 0.950, 1.11.1
- Mypy command-line flags: none, or as above
- Mypy configuration options from
mypy.ini
(and other config files): none - Python version used: 3.12.5, from Debian
cc @kaushikcfd