Handle self type annotation when converting __init__ as a callable
#2226
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
When a constructor is converted as a callable, we should take care of any type annotation on the
selfwhen setting the return type of the callable.In particular, the spec says that https://typing.python.org/en/latest/spec/constructors.html#init-method
This diff uses the
selfparameter type to set the return type of the callable to implement this requirement.NOTE: In the conformance test, the callbable converted from constructor is passed around an identical function that causes overload handing to be incorrect. Therefore, this fix does not fix the conformance test in full.
Help needed: There's a regression on
dataclasses_transform_converterconformance test, but I'm unable to make sense of the error. I suspect this is due to some mishandling of generics.Next step: Handle generics correctly when converting constructor into a callable.
Test Plan
test.py