Bug Report
Python seems to treat raise ValueError the same way as raise ValueError(), with implicit instantiation, but Mypy doesn't seem to have the same behavior.
See: https://docs.python.org/3/tutorial/errors.html#raising-exceptions
To Reproduce
- Define subclass of
Exception where __init__ has mandatory arguments
raise SomeException
class SomeException(Exception):
thing: str
def __init__(self, thing: str) -> None:
self.thing = thing
def __str__(self) -> str:
return f"There's a {self.thing} in my boot"
# BUG: Mypy does not see this problem.
def a() -> None:
raise SomeException
# Correct: Mypy identifies the problem.
def b() -> None:
raise SomeException()
# Correct: Mypy identifies that there is no problem here.
def c() -> None:
raise SomeException(thing="snake")
https://mypy-play.net/?mypy=latest&python=3.10&gist=158348310d55f703fc05bacde65af438
Expected Behavior
This should throw an error about missing mandatory arguments.
Actual Behavior
No error.
Your Environment
- Mypy version used: 0.910
- Mypy command-line flags: None
- Mypy configuration options from
mypy.ini (and other config files): None
- Python version used: 3.10
- Operating system and version: N/A
Bug Report
Python seems to treat
raise ValueErrorthe same way asraise ValueError(), with implicit instantiation, but Mypy doesn't seem to have the same behavior.See: https://docs.python.org/3/tutorial/errors.html#raising-exceptions
To Reproduce
Exceptionwhere__init__has mandatory argumentsraise SomeExceptionhttps://mypy-play.net/?mypy=latest&python=3.10&gist=158348310d55f703fc05bacde65af438
Expected Behavior
This should throw an error about missing mandatory arguments.
Actual Behavior
No error.
Your Environment
mypy.ini(and other config files): None