Original title: How to typehint functools.partial classes
I’m struggling to type hint correctly a python dataclass (or any class) with partial initialization, it seems that the type is lost somewhere but not sure where: from dataclasses import dataclass from functools import partial @dataclass class Test: a : int b : int
@classmethod
def test_partial[T: Test](cls: type[T], b:int) -> partial[T]:
return partial(cls, b=b)
@classmethod
def test_partial2(cls, b:int):
return partial(cls, b=b)
part = Test.test_partial(3) part( # linter suggest nothing when passing here
part2 =partial(Test, b=3) part2( # linter suggest a=…,b=… when passing
interestingly enough letting out the typehint, the linter knows again
part = Test.test_partial2(3) part( # linter suggest a=…,b=… when passing
The interesting thing is that both mypy and typeright get’s it right when I don’t give it to them, so probably there is a way. Any clue?