Home

Awesome

flake8-functions-names

PyPI version PyPI - Python Version

An extension for flake8 that validates functions names, decomposition and conformity with annotations. The plugin also has some validations of deal contracts.

This plugin helps to provide better naming for functions. The validations are based on my articles:

deal-related validations are enabled only if deal is installed. They are disabled otherwise.

Installation

pip install flake8-functions-names

Example

def is_user_banned(user: User) -> str:
    return 'is_banned' if user.id in BANNED_USERS else 'not_banned'

def save_user(user: User) -> None:
    user.save()

Usage:

$ flake8 test.py
text.py:1:35: FNE001 Name of the function says that it should return bool-like, but it returns str
text.py:4:4: FNE003 Name of the function uses "save", but not uses "to"

Tested on Python 3.8+ and flake8 3.9+.

Error codes

Error codeDescription
FNE001Name of the function says that it should return bool-like1, but it returns actual_type
FNE002The method has a @property decorator, but has a verb in it's name (verb)
FNE003Name of the function uses save, but not uses to
FNE004Name of the function uses load, but not uses from
FNE005Return type of the function is bool-like1, but the name doesn't show it
FNE006Name of function says, that it works with data, so it should be pure, but it has no @deal.pure()
FNE007and is not recommended in functions names
FNE008Name of functions ends with it's first argument name

Footnotes

  1. bool-like return types: bool, TypeGuard 2