Are you reporting a bug, or opening a feature request?
Bug
Please insert below the code you are checking with mypy.
importoperatorfromfunctoolsimportpartialmethodclassIntCmp:
def__init__(self, value):
self._value=valuedef_cmp(self, opr, other: int) ->bool:
ifisinstance(other, int):
returnopr(self._value, other)
returnNotImplemented__eq__=partialmethod(_cmp, operator.eq) # Incompatible types in assignment (expression has type "partialmethod[bool]", base class "object" defined the type as "Callable[[object, object], bool]")__ne__=partialmethod(_cmp, operator.ne) # Incompatible types in assignment (expression has type "partialmethod[bool]", base class "object" defined the type as "Callable[[object, object], bool]")# rest of the comparison operators (lt, le, gt, ge) type checks correctlyc=IntCmp(1)
assertc==1# Cannot determine type of '__eq__'
What is the actual behavior/output?
MyPy reports an error on the comparison, saying Cannot determine type of '__eq__', as well as incompatible types on assignment as shown.
The code correctly passes at runtime.
Yeah, it looks like no specific support for partialmethod is in mypy. I expect it to be a bit more complicated than partial support because partialmethod works with descriptors, but I'll have to think about how much more work it would be.
Activity
Dreamsorcerer commented on Feb 1, 2025
partial() was added in #16939. Is this likely to be an easy addition to repeat for partialmethod()?
emmatyping commented on Feb 1, 2025
Yeah, it looks like no specific support for partialmethod is in mypy. I expect it to be a bit more complicated than partial support because partialmethod works with descriptors, but I'll have to think about how much more work it would be.
kaelzhang commented on May 12, 2025
Any updates for this?
RBerga06 commented on Aug 17, 2025
I also encountered this issue (in ManimCommunity/manim#4398).