Skip to main content

flake8 plugin to prevent specific hanging indentations

Project description

pypi pypi pypi

flake8-hangover

Flake8 plugin to prevent specific hanging indentations (and more).

Installation

pip install flake8-hangover

Errors

Code Description
FHG001 Function argument has hanging indentation
FHG002 Function call positional argument has hanging indentation
FHG003 Function call keyword argument has hanging indentation
FHG004 First function argument must be on new line
FHG005 Close bracket have different indentation with open bracket

Examples

FHG001 Function argument has hanging indentation

# ERROR: Hanging indentation on `extra_param`
def _hello_world(param: pd.DataFrame, other_param: sklearn.base.BaseEstimator,
                 extra_param: Optional[Dict] = None) -> str:
    ...

# ERROR: Not hanging indentation, but params are "over indendented" by 2 tabs
# instead of just 1 tab
def _calc_pdp(
        df: pd.DataFrame,
        estimator: sklearn.base.BaseEstimator,
        feature_columns: List[str], pdp_kwarg: Optional[Dict] = None,
) -> List[pdp.PDPIsolate]:
    pdp_isolates = []

# OK: Correct indentation
# BUT! It will cause FHG004 error (it's more strict) for `param` argument
def _hello_world(param: pd.DataFrame, other_param: sklearn.base.BaseEstimator,
    extra_param: Optional[Dict] = None) -> str:
    ...

# OK: Best practice
def _hello_world(
    param: pd.DataFrame,
    other_param: sklearn.base.BaseEstimator,
    extra_param: Optional[Dict] = None,
) -> str:
    ...

FHG002 Function call positional argument has hanging indentation

# ERROR: Hanging indentation on `other_param`
if a != b:
    error_message = get_error_message(param,
                                      other_param)

# OK: Correct indentation
if a != b:
    error_message = get_error_message(param,
        other_param,
    )

# OK: Best practice
if a != b:
    error_message = get_error_message(
        param,
        other_param,
    )

FHG003

# ERROR: Keyword argument `other_value` has hanging indentation
def foo():
    result = my_func(value='name',
                     other_value='hello')

# Correct indentation, but looks terrible
# TODO: Rule like FHG004 for function calls is not yet implemented
def foo():
    result = my_func(value='name',
        other_value='hello')

# OK: Best practice
def foo():
    result = my_func(
        value='name',
        other_value='hello',
    )

FHG004 First function argument must be on new line

This is more strict rule that requires any function definition with multiline arguments to place first argument on new line.

# ERROR: Positional argument `foo` must be on new line
def test_something(foo, bar,
    buzz):
    ...

# ERROR: Same thing but for keyword argument `foo`
def test_something(foo='Hello',
    value='World',
):
    return key + value

# OK: Argument `foo` is on new line
def test_something(
    foo, bar, buzz,
):
    ...

# OK: Best practice (but sometimes it's not good looking for over 5 params, for example)
def test_something(
    foo,
    bar,
    buzz,
):
    ...

FHG005 Close bracket have different indentation with open bracket

# ERROR: Close bracket on line with last parameter not allowed
func(
    123,
    456)
# OK: Close bracket on new line
func(
    123,
    456,
)

Same thing with assigments:

# ERROR: Close bracket not aligned with open bracket's line
result = [
    1,
    2]
# OK: Close bracket aligned with first line
result = [
    1,
    2,
]

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

flake8-hangover-0.0.5.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

flake8_hangover-0.0.5-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file flake8-hangover-0.0.5.tar.gz.

File metadata

  • Download URL: flake8-hangover-0.0.5.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for flake8-hangover-0.0.5.tar.gz
Algorithm Hash digest
SHA256 e2bd04ad3cb09cc85c3ad19add8356482d65eec6c4fbedb33a2e6b5e9e7bac2d
MD5 2ed742d45d8ccdac4fe3ff6767144165
BLAKE2b-256 47a8856c69fd8742d072e864dbb3fd27b00e15e2e40e515c64a7e9e3c4e89750

See more details on using hashes here.

File details

Details for the file flake8_hangover-0.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for flake8_hangover-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 c90a2074c11b00ddb9b980fbc0182f2c85b363ff9f9daf527e2f470c3ece8fc4
MD5 c61e63c04f0371868bc8a29bd8dfee96
BLAKE2b-256 10609cdeb8d825f5dbeb37a3b0c992ef26d8deb134d70950ac5b1ae8615e69b4

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