[pylint] Do not report methods with only one EM101-compatible raise (PLR6301)#15507
[pylint] Do not report methods with only one EM101-compatible raise (PLR6301)#15507MichaReiser merged 1 commit intoastral-sh:mainfrom
pylint] Do not report methods with only one EM101-compatible raise (PLR6301)#15507Conversation
…ise` (`PLR6301`)
|
MichaReiser
left a comment
There was a problem hiding this comment.
Thanks for working on this change but I'm not convinced this goes into the right direction.
Taking the exmaples from your tests. The self parameter is unused and unnecessary because Foo doesn't extend any base class. That's why I think this is in the spirit of PLR6301 to flag the self usage. I can see how the warning is annoying when prototyping an API but I'd simply ignore the warning in that case (either using a noqa or literally ignoring the warning).
The other case is where Foo extends from a base class but our recommendation there is to mark the method as @override.
That's why I think we should leave the rule as is but I'm interested in your perspective.
|
I still advocate for this change, as it improves consistency. Currently this triggers class Foo:
# PLR6301: Method `lorem` could be a function, class method, or static method
def lorem(self, v):
msg = 'Lorem ipsum dolor sit amet'
raise NotImplementedError(msg)This triggers both: class Foo:
# PLR6301: Method `lorem` could be a function, class method, or static method
def lorem(self, v): # Unused method argument: `v`
print(1 + 2) |
* main: [red-knot] Inline `SubclassOfType::as_instance_type_of_metaclass()` (#15556) [`flake8-comprehensions`] strip parentheses around generators in `unnecessary-generator-set` (`C401`) (#15553) [`pylint`] Implement `redefined-slots-in-subclass` (`W0244`) (#9640) [`flake8-bugbear`] Do not raise error if keyword argument is present and target-python version is less or equals than 3.9 (`B903`) (#15549) [red-knot] `type[T]` is disjoint from `type[S]` if the metaclass of `T` is disjoint from the metaclass of `S` (#15547) [red-knot] Pure instance variables declared in class body (#15515) Update snapshots of #15507 with new annotated snipetts rendering (#15546) [`pylint`] Do not report methods with only one `EM101`-compatible `raise` (`PLR6301`) (#15507) Fix unstable f-string formatting for expressions containing a trailing comma (#15545) Support `knot.toml` files in project discovery (#15505) Add support for configuring knot in `pyproject.toml` files (#15493) Fix bracket spacing for single-element tuples in f-string expressions (#15537) [`flake8-simplify`] Do not emit diagnostics for expressions inside string type annotations (`SIM222`, `SIM223`) (#15405) [`flake8-pytest-style`] Do not emit diagnostics for empty `for` loops (`PT012`, `PT031`) (#15542)
Summary
Related to this comment by @DaniBodor at #12172. Tests adapted from that of #13714.
Test Plan
cargo nextest runandcargo insta test.