Couple new rule suggestions
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.1k
- Forks
- 123
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 5
Description
I had a few thoughts for some more linter checks I'd like to have. Would be happy to implement them here if you guys are interested.
1. return <value> or yield <?from> <?value> in __init__()
Example:
class Example:
def __init__():
return 1 # bad
yield # bad
yield 1 # bad
yield from () # bad
return # ok
Any returning of values, or yielding, in an __init__() would result in a runtime error, but not until you try to instantiate an object of the class. So I think this should be a reasonably safe on-by-default error.
2. assert <constant or fixed value>
Normal asserts:
assert condition
assert condition, "message"
There's already a flake8 check for asserting on a tuple specifically - e.g. accidentally adding parens around (condition, message). And there's a bugbear check for assert False warning that it's disabled by -O. But forgetting the condition (assert "message") or asserting on any other literal value or list/tuple will either always pass or always fail - and is probably unintentional?
3. Inconsistent returns in function
def func(x) -> int | None:
if x:
return 0
# should return None here
This one's more opinionated, but if a function returns something in some case, it should explicitly return something (None) in all other cases.
Contributor guide
No contributing guide indexed for this repository
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 reviewing the repository's existing linter-check implementations and tests, then compare how they represent diagnostics and configure checks. Treat the three proposals separately: done means each accepted check has defined behavior, coverage for the shown examples, and agreement on the opinionated return-rule semantics.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100