Skip to main content

Make sure arguments in Python function definitions are indented by 8 spaces

Project description

py-def-indent-formatter

A command line tool (and a pre-commit hook) to automatically format haning indentation in Python function definitions to 8 spaces.

Currently, this tool is only designed to work properly after your Python files have been formatted by black or blue.

Motivation of this tool

black and blue both use only 4 spaces as haning indentation in function definitions, which is not aligned with PEP8's recommendation.

Therefore, this tool specifically fixes this 4-space style choice of black and blue.

Installation

pip install format-def-indent

Usage

As a command line tool

To auto-format Python files (.py):

format-def-indent <PATH_THAT_CONTAINS_PYTHON_FILES>

Use --help to see documentations of command line arguments.

To auto-format Jupyter notebooks (.ipynb):

format-def-indent-in-jupyter <PATH_THAT_CONTAINS_PYTHON_FILES>

As a pre-commit hook

To auto-format Python files (.py), put the following into your .pre-commit-config.yaml file. Remember to replace <VERSION> with your version of this tool (such as v0.1.4):

-   repo: https://github.com/cyyc1/py-def-indent-formatter
    rev: <VERSION>
    hooks:
    -   id: format-def-indent

To auto-format Jupyter notebooks (.ipynb), put the following into your .pre-commit-config.yaml file:

-   repo: https://github.com/cyyc1/py-def-indent-formatter
    rev: <VERSION>
    hooks:
    -   id: format-def-indent-in-jupyter

See pre-commit for more instructions.

What does this formatter do

This tool formats the following "before" (red) into "after" (green).

Multi-line arguments in function definitions:

def some_function(
-    arg1,
-    arg2='test',
-    *,
-    arg3: int = 2,
-    arg4: bool = False,
+        arg1,
+        arg2='test',
+        *,
+        arg3: int = 2,
+        arg4: bool = False,
) -> None:
    print(1)

or

def some_functions(
-    arg1,
-    *args,
-    **kwargs,
+        arg1,
+        *args,
+        **kwargs,
):
    print(1)

Single-line arguments in function definitions:

def some_function(
-    arg1, arg2='test', *, arg3: int = 2, arg4: bool = False,
+        arg1, arg2='test', *, arg3: int = 2, arg4: bool = False,
):
    print(1)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

format_def_indent-0.1.7.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

format_def_indent-0.1.7-py2.py3-none-any.whl (8.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file format_def_indent-0.1.7.tar.gz.

File metadata

  • Download URL: format_def_indent-0.1.7.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.14

File hashes

Hashes for format_def_indent-0.1.7.tar.gz
Algorithm Hash digest
SHA256 1a0fe4369449144f7c24c8726377a3feec2098d308b0e688269f04efac1a222f
MD5 72f5979f778f18f41723c97cb6b2261a
BLAKE2b-256 8446f117d5e88749b26ce7e2cdeb5e0bedeefceacc2f53cc742299a0793b5d1b

See more details on using hashes here.

File details

Details for the file format_def_indent-0.1.7-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for format_def_indent-0.1.7-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 295eb336b1a7f0481c556a1529b89de9a4ab01bd6fdc430f243e2f2104227835
MD5 d571a5a0107277cf88e2385971b20fe9
BLAKE2b-256 d9140557ba6225cc34b7fac716e6b6ddd340e0deed84eef3e9eb4f5b6fd2b3cf

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page