[issue42812] @overload-ing method of parent class without actual implementation

2021-01-03 Thread Chaim Gewirtz
Chaim Gewirtz added the comment: Interesting. PyCharm has no problem with this code. It also autocompletes the argument names for me, which is very useful, especially since there a dozen different Child classes. Isn't "Simple is better than complex", and doesn't "...pr

[issue42812] @overload-ing method of parent class without actual implementation

2021-01-03 Thread Chaim Gewirtz
Chaim Gewirtz added the comment: What is better? A. Keeping Python as is, with four separate signature declarations (1x Parent, 2x @overload Child, and 1x actual signature in Child), and a second method call overhead at runtime (to satisfy mypy as it exists now). --or-- B. Simplify Python

[issue42812] @overload-ing method of parent class without actual implementation

2021-01-03 Thread Chaim Gewirtz
Chaim Gewirtz added the comment: Thanks for your perspective. To summarize here is how my proposed enhancement might look in practice: class Parent: def foo(self, **kwargs): """Argument names of foo vary depending on the child class.""" clas

[issue42812] @overload-ing method of parent class without actual implementation

2021-01-03 Thread Chaim Gewirtz
Chaim Gewirtz added the comment: "The purpose of `@overload` is quite different." So, this would overload the @overload decorator. Hmmm... Is there a better way to accomplish this goal? What would you suggest, a new decorator? --

[issue42812] @overload-ing method of parent class without actual implementation

2021-01-03 Thread Chaim Gewirtz
Chaim Gewirtz added the comment: In your example, does Child foo call Parent foo? Because the intent is to use the parent's foo method. -- ___ Python tracker <https://bugs.python.org/issue42

[issue42812] @overload-ing method of parent class without actual implementation

2021-01-03 Thread Chaim Gewirtz
Chaim Gewirtz added the comment: To clarify, this is how it's being done now a dozen times in actual production code: class Child(Parent): @overload foo(a, b): ... def overload(**kwargs): return super().foo(**kwargs) The goal of this proposed enhancement is to remove two

[issue42812] @overload-ing method of parent class without actual implementation

2021-01-02 Thread Chaim Gewirtz
New submission from Chaim Gewirtz : Why should @overload need to be followed by an implementation when an implementation already exists in the parent class? Illustrative example: class Parent: def foo(**kwargs): """Argument names of foo vary depending on