Automatically add trailing commas to calls and literals
Project description
add-trailing-comma
A tool (and pre-commit hook) to automatically add trailing commas to calls and literals.
Installation
pip install add-trailing-comma
As a pre-commit hook
See pre-commit for instructions
Sample .pre-commit-config.yaml
:
- repo: https://github.com/asottile/add-trailing-comma
rev: v3.0.1
hooks:
- id: add-trailing-comma
multi-line method invocation style -- why?
# Sample of *ideal* syntax
function_call(
argument,
5 ** 5,
kwarg=foo,
)
- the initial paren is at the end of the line
- each argument is indented one level further than the function name
- the last parameter (unless the call contains an unpacking
(
*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 blame
and is a minimal diff:# with no trailing commas x( - arg + arg, + arg2 )
# with trailing commas x( arg, + arg2, )
Implemented features
trailing commas for function calls
x(
arg,
- arg
+ arg,
)
trailing commas for tuple / list / dict / set literals
x = [
- 1, 2, 3
+ 1, 2, 3,
]
trailing commas for function definitions
def func(
arg1,
- arg2
+ arg2,
):
async def func(
arg1,
- arg2
+ arg2,
):
trailing commas for from
imports
from os import (
path,
- makedirs
+ makedirs,
)
trailing comma for class definitions
class C(
Base1,
- Base2
+ Base2,
):
pass
trailing comma for with statement
with (
open('f1', 'r') as f1,
- open('f2', 'w') as f2
+ open('f2', 'w') as f2,
):
pass
trailing comma for match statement
match x:
case A(
1,
- 2
+ 2,
):
pass
case (
1,
- 2
+ 2,
):
pass
case [
1,
- 2
+ 2,
]:
pass
case {
'x': 1,
- 'y': 2
+ 'y': 2,
}:
pass
unhug trailing paren
x(
arg1,
- arg2)
+ arg2,
+)
unhug leading paren
-function_name(arg1,
- arg2)
+function_name(
+ arg1,
+ arg2,
+)
match closing brace indentation
x = [
1,
2,
3,
- ]
+]
remove unnecessary commas
yes yes, I realize the tool is called add-trailing-comma
:laughing:
-[1, 2, 3,]
-[1, 2, 3, ]
+[1, 2, 3]
+[1, 2, 3]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
add_trailing_comma-3.0.1.tar.gz
(10.7 kB
view details)
Built Distribution
File details
Details for the file add_trailing_comma-3.0.1.tar.gz
.
File metadata
- Download URL: add_trailing_comma-3.0.1.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0a65ecf9c5a34f3bccb97e0dffcc62487b29084ae509eeea59960881f55533d |
|
MD5 | dd1b4278b766c5aa3d5ec1ee61620e09 |
|
BLAKE2b-256 | 9735600913775221fa03aa8c2a6906b013403611eb3eb2c8516a9ae2e7ee3e85 |
Provenance
File details
Details for the file add_trailing_comma-3.0.1-py2.py3-none-any.whl
.
File metadata
- Download URL: add_trailing_comma-3.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 14.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92939ba323f6289dc405772eb935044112a7804ceb9beae595a826b894b3d164 |
|
MD5 | 7580be6ea7afaf0e54901cd13bd5a200 |
|
BLAKE2b-256 | cddcf3e08725d635678edd00bd2296382a93c31b96b064adb6d85a7ced9d1616 |