Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/afonasev/flake8-return
Flake8 plugin for return expressions checking.
https://github.com/afonasev/flake8-return
flake8-plugin
Last synced: 3 months ago
JSON representation
Flake8 plugin for return expressions checking.
- Host: GitHub
- URL: https://github.com/afonasev/flake8-return
- Owner: afonasev
- License: mit
- Created: 2019-02-08T18:38:15.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-05-04T21:53:15.000Z (6 months ago)
- Last Synced: 2024-07-18T20:01:36.435Z (4 months ago)
- Topics: flake8-plugin
- Language: Python
- Homepage:
- Size: 183 KB
- Stars: 62
- Watchers: 3
- Forks: 70
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-flake8-extensions - flake8-return - Plugin that checks return values. (Clean code)
README
# flake8-return
[![pypi](https://badge.fury.io/py/flake8-return.svg)](https://pypi.org/project/flake8-return)
[![Python: 3.6+](https://img.shields.io/badge/Python-3.6+-blue.svg)](https://pypi.org/project/flake8-return)
[![Downloads](https://img.shields.io/pypi/dm/flake8-return.svg)](https://pypistats.org/packages/flake8-return)
[![Build Status](https://travis-ci.org/Afonasev/flake8-return.svg?branch=master)](https://travis-ci.org/Afonasev/flake8-return)
[![Code coverage](https://codecov.io/gh/afonasev/flake8-return/branch/master/graph/badge.svg)](https://codecov.io/gh/afonasev/flake8-return)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://en.wikipedia.org/wiki/MIT_License)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)Flake8 plugin that checks return values.
Flake8-return rule set is supported in [ruff](https://github.com/charliermarsh/ruff#flake8-return).## Installation
```bash
pip install flake8-return
```## Errors
* R501 do not explicitly return None in function if it is the only possible return value.
```python
def x(y):
if not y:
return
return None # error!
```* R502 do not implicitly return None in function able to return non-None value.
```python
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.
```python
def x(y):
if not y:
return 1
# error!
```* R504 unnecessary variable assignment before return statement.
```python
def x():
a = 1
# some code that not using `a`
print('test')
return a # error!
```* R505 unnecessary else after return statement.
```python
def x(y, z):
if y: # error!
return 1
else:
return z
```* R506 unnecessary else after raise statement.
```python
def x(y, z):
if y: # error!
raise Exception(y)
else:
raise Exception(z)
```* R507 unnecessary else after continue statement.
```python
def x(y, z):
for i in y:
if i < z: # error!
continue
else:
a = 0
```* R508 unnecessary else after break statement.
```python
def x(y, z):
for i in y:
if i > z: # error!
break
else:
a = 0
```Returns in asyncio coroutines also supported.
## For developers
### Show help
make help
### Create venv and install deps
make init
### Install git precommit hook
make precommit
### Run linters, autoformat, tests etc
make pretty lint test
### Bump new version
make bump_major
make bump_minor
make bump_patch## Change Log
Unreleased
-----* ...
1.2.0 - 2022-10-28
-----* 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) dependabot1.1.3 - 2021-05-05
-----* Error clarifications (#77) Clément Robert
* fix linting (migrate to black 20.0b1) (#78) Clément Robert1.1.2 - 2020-07-09
-----* Make R504 visitors handle while loops (#56) Frank Tackitt
* Rename allows-prereleases to allow-prereleases (#55) Frank Tackitt
* Fix typo: → haven't (#24) Jon Dufresne1.1.1 - 2019-09-21
-----* fixed [#3](https://github.com/afonasev/flake8-return/issues/3) The R504 doesn't detect that the variable is modified in loop
* fixed [#4](https://github.com/afonasev/flake8-return/issues/4) False positive with R503 inside async with clause1.1.0 - 2019-05-23
-----* update flask_plugin_utils version to 1.0
1.0.0 - 2019-05-13
-----* skip assign after unpacking while unnecessary assign checking "(x, y = my_obj)"
0.3.2 - 2019-04-01
-----* allow "assert False" as last function return
0.3.1 - 2019-03-11
-----* add pypi deploy into travis config
* add make bump_version command0.3.0 - 2019-02-26
-----* 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 coroutines0.2.0 - 2019-02-21
-----* 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 cases0.1.1 - 2019-02-10
-----* fix error messages
0.1.0 - 2019-02-10
-----* initial