false negative with underscore on parameter name
Open
Nobody has claimed this yet.
bug
needs discussion
priority-2-low
- Dominant language
- Python
- Stars
- 20.6k
- Forks
- 3.3k
- PR merge metrics
- PR metrics pending
Description
The following code reports no errors with mypy but will fail at runtime:
class Base:
def a(self, a: int) -> None: ...
class Derived(Base):
def a(self, _a: int) -> None: ...
def foo(b: Base) -> None:
b.a(a=1)
foo(Derived())
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the supplied example with mypy and confirm that the keyword argument is accepted despite the differing parameter names. Trace the override and call-checking paths involved, then add coverage showing the runtime failure is diagnosed or rejected.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100