A tool (and pre-commit hook) to automatically add trailing commas to calls and literals.
A tool (and pre-commit hook) to automatically add trailing commas to calls and literals.
pip install add-trailing-comma
See pre-commit for instructions
Sample
.pre-commit-config.yaml:
- repo: https://github.com/asottile/add-trailing-comma rev: v2.1.0 hooks: - id: add-trailing-comma
# Sample of *ideal* syntax function_call( argument, 5 ** 5, kwarg=foo, )
*args/
**kwargs)) has a trailing comma
This has the following benefits:
arbitrary indentation is avoided:
# I hear you like 15 space indents # oh your function name changed? guess you get to reindent :) very_long_call(arg, arg, arg)
adding / removing a parameter preserves
git blameand is a minimal diff:
# with no trailing commas x( - arg + arg, + arg2 )
# with trailing commas x( arg, + arg2, )
x( arg, - arg + arg, )
If
--py35-plusis passed,
add-trailing-commawill also perform the following change:
x( - *args + *args, ) y( - **kwargs + **kwargs, )
Note that this would cause a
SyntaxErrorin earlier python versions.
x = [ - 1, 2, 3 + 1, 2, 3, ]
def func( arg1, - arg2 + arg2, ):
async def func( arg1, - arg2 + arg2, ):
If
--py36-plusis passed,
add-trailing-commawill also perform the following change:
def f( - *args + *args, ): passdef g(
def h(
Note that this would cause a
SyntaxErrorin earlier python versions.
fromimports
from os import ( path, - makedirs + makedirs, )
class C( Base1, - Base2 + Base2, ): pass
x( arg1, - arg2) + arg2, +)
-function_name(arg1, - arg2) +function_name( + arg1, + arg2, +)
x = [ 1, 2, 3, - ] +]
yes yes, I realize the tool is called
add-trailing-comma:laughing:
-[1, 2, 3,] -[1, 2, 3, ] +[1, 2, 3] +[1, 2, 3]