Flake8 plugin that checks return values. Flake8-return rule set is supported in ruff.
pip install flake8-return
- R501 do not explicitly return None in function if it is the only possible return value.
def x(y):
if not y:
return
return None # error!
- R502 do not implicitly return None in function able to return non-None value.
def x(y):
if not y:
return # error!
return 1
- R503 missing explicit return at the end of function able to return non-None value.
def x(y):
if not y:
return 1
# error!
- R504 unnecessary variable assignment before return statement.
def x():
a = 1
# some code that not using `a`
print('test')
return a # error!
- R505 unnecessary else after return statement.
def x(y, z):
if y: # error!
return 1
else:
return z
- R506 unnecessary else after raise statement.
def x(y, z):
if y: # error!
raise Exception(y)
else:
raise Exception(z)
- R507 unnecessary else after continue statement.
def x(y, z):
for i in y:
if i < z: # error!
continue
else:
a = 0
- R508 unnecessary else after break statement.
def x(y, z):
for i in y:
if i > z: # error!
break
else:
a = 0
Returns in asyncio coroutines also supported.
make help
make init
make precommit
make pretty lint test
make bump_major
make bump_minor
make bump_patch
- ...
- Port no-else-break, no-else-continue, no-else-raise, no-else-return from pylint (#122) Calum Young
- PEP 621: Migrate more config to pyproject.toml (#123) Christian Clauss
- Fix/116/R504-try-except (#120) Calum Young
- Update ci (#119) Calum Young
- Fix/47/Update-R504-for-assignment-value (#117) Calum Young
- Upgrade GitHub Actions (#113) Christian Clauss
- Add a space to avoid a typo in R503 (#98) Christian Clauss
- GitHub Action to lint Python code (#97) Christian Clauss
- Typo fixes (#92) Aarni Koskela
- Create codeql-analysis.yml Afonasev Evgeniy
- Bump flake8-plugin-utils from 1.1.1 to 1.3.2 (#87) dependabot
- Bump mypy from 0.812 to 0.971 (#114) dependabot
- Bump pytest-cov from 3.0.0 to 4.0.0 (#124) dependabot
- Bump pytest-cov from 2.11.1 to 3.0.0 (#102) dependabot
- Bump pytest-mock from 3.6.0 to 3.6.1 (#91) dependabot
- Bump pytest from 6.2.4 to 6.2.5 (#99) dependabot
- Bump pylint from 2.8.2 to 2.10.2 (#100) dependabot
- Bump pytest from 6.2.3 to 6.2.4 (#86) dependabot
- Error clarifications (#77) Clément Robert
- fix linting (migrate to black 20.0b1) (#78) Clément Robert
- Make R504 visitors handle while loops (#56) Frank Tackitt
- Rename allows-prereleases to allow-prereleases (#55) Frank Tackitt
- Fix typo: → haven't (#24) Jon Dufresne
- fixed #3 The R504 doesn't detect that the variable is modified in loop
- fixed #4 False positive with R503 inside async with clause
- update flask_plugin_utils version to 1.0
- skip assign after unpacking while unnecessary assign checking "(x, y = my_obj)"
- allow "assert False" as last function return
- add pypi deploy into travis config
- add make bump_version command
- skip functions that consist only
return None
- fix false positive when last return inner with statement
- add unnecessary assign error
- add support tuple in assign or return expressions
- add support asyncio coroutines
- fix explicit/implicit
- add flake8-plugin-utils as dependency
- allow raise as last function return
- allow no return as last line in while block
- fix if/elif/else cases
- fix error messages
- initial