You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
functools.partialmethod not supported properly? #8619
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 commentedon Feb 1, 2025
partial() was added in #16939. Is this likely to be an easy addition to repeat for partialmethod()?
emmatyping commentedon Feb 1, 2025
Yeah, it looks like no specific support for
partialmethodis in mypy. I expect it to be a bit more complicated thanpartialsupport becausepartialmethodworks with descriptors, but I'll have to think about how much more work it would be.kaelzhang commentedon May 12, 2025
Any updates for this?
RBerga06 commentedon Aug 17, 2025
I also encountered this issue (in ManimCommunity/manim#4398).