All Projects → asottile → Add Trailing Comma

asottile / Add Trailing Comma

Licence: mit
A tool (and pre-commit hook) to automatically add trailing commas to calls and literals.

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Add Trailing Comma

Errcheck
errcheck checks that you checked errors.
Stars: ✭ 1,763 (+949.4%)
Mutual labels:  linter
Muffet
Fast website link checker in Go
Stars: ✭ 1,861 (+1007.74%)
Mutual labels:  linter
Sublimelinter
The code linting framework for Sublime Text 3
Stars: ✭ 1,920 (+1042.86%)
Mutual labels:  linter
Protolint
A pluggable linter and fixer to enforce Protocol Buffer style and conventions.
Stars: ✭ 142 (-15.48%)
Mutual labels:  linter
Jql
Java code analysis and linting with SQL
Stars: ✭ 148 (-11.9%)
Mutual labels:  linter
Misspell Fixer
Simple tool for fixing common misspellings, typos in source code
Stars: ✭ 154 (-8.33%)
Mutual labels:  linter
Wsl Proxy
WSL proxy files for editor/linux interop
Stars: ✭ 134 (-20.24%)
Mutual labels:  linter
Deal
Design by contract for Python with static checker and tests' generation.
Stars: ✭ 164 (-2.38%)
Mutual labels:  linter
Gulp Stylelint
Gulp plugin for running Stylelint results through various reporters.
Stars: ✭ 149 (-11.31%)
Mutual labels:  linter
Eslint Watch
ESLint with simple watching capabilities
Stars: ✭ 159 (-5.36%)
Mutual labels:  linter
Rubocop
A Ruby static code analyzer and formatter, based on the community Ruby style guide.
Stars: ✭ 11,593 (+6800.6%)
Mutual labels:  linter
Cljstyle
A tool for formatting Clojure code
Stars: ✭ 148 (-11.9%)
Mutual labels:  linter
Cflint
Static code analysis for CFML (a linter)
Stars: ✭ 156 (-7.14%)
Mutual labels:  linter
Ale
Check syntax in Vim asynchronously and fix files, with Language Server Protocol (LSP) support
Stars: ✭ 11,380 (+6673.81%)
Mutual labels:  linter
Textlint
The pluggable natural language linter for text and markdown.
Stars: ✭ 2,158 (+1184.52%)
Mutual labels:  linter
Nitpick
Enforce the same settings across multiple language-independent projects
Stars: ✭ 134 (-20.24%)
Mutual labels:  linter
Kube Lint
A linter for Kubernetes resources with a customizable rule set
Stars: ✭ 152 (-9.52%)
Mutual labels:  linter
Pythonvscode
This extension is now maintained in the Microsoft fork.
Stars: ✭ 2,013 (+1098.21%)
Mutual labels:  linter
Poetic
Automatically install and maintain ESLint, Prettier, EditorConfig and Airbnb rules for JavaScript, TypeScript and React.
Stars: ✭ 165 (-1.79%)
Mutual labels:  linter
Clippy Check
📎 GitHub Action for PR annotations with clippy warnings
Stars: ✭ 159 (-5.36%)
Mutual labels:  linter

Build Status Azure DevOps coverage pre-commit.ci status

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: v2.1.0
    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 function calls with unpackings

If --py35-plus is passed, add-trailing-comma will also perform the following change:

 x(
-    *args
+    *args,
 )
 y(
-    **kwargs
+    **kwargs,
 )

Note that this would cause a SyntaxError in earlier python versions.

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 function definitions with unpacking arguments

If --py36-plus is passed, add-trailing-comma will also perform the following change:

 def f(
-    *args
+    *args,
 ): pass


 def g(
-    **kwargs
+    **kwargs,
 ): pass


 def h(
-    *, kw=1
+    *, kw=1,
 ): pass

Note that this would cause a SyntaxError in earlier python versions.

trailing commas for from imports

 from os import (
     path,
-    makedirs
+    makedirs,
 )

trailing comma for class definitions

 class C(
     Base1,
-    Base2
+    Base2,
 ):
     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 😆

-[1, 2, 3,]
-[1, 2, 3, ]
+[1, 2, 3]
+[1, 2, 3]
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].