Skip to main content

Stephen Lints Your Python

Project description

SLYP

Stephen Lints Your Python

An opinionated linter and fixer.

PyPI - Version PyPI - Python Version


Table of Contents

Hi

:wave:

I'm Stephen. I'm going to lint (and fix) your Python code.

I wrote this linter because nothing else out there implemented these rules, and some of them needed CST (rather than AST), so there was no plugin framework (e.g. flake8 plugins) which I could use.

I hope it helps you.

Installation

slyp is a python package and can be run as a pre-commit hook.

On supported python versions, it should be installed with

pip install slyp

Usage

Either use it as a CLI tool:

slyp

Or as a pre-commit hook using the following pre-commit-config.yaml:

- repo: https://github.com/sirosen/slyp
  rev: 0.2.2
  hooks:
    - id: slyp

Options and Arguments

[files...]: If passed positional arguments, slyp will treat them as filenames to check. Otherwise, it will search the current directory for python files.

-v/--verbose: Enable more verbose output

--use-git-ls: Find files to check by doing a git ls-files call and filtering the results to files which appear to be python. This is mutually exclusive with any filename arguments.

--disable CODES: Pass a comma-delimited list of codes to turn off.

--enable CODES: Pass a comma-delimited list of codes to turn on.

Implemented Rules

E is for "error" (you should probably change this)

W is for "warning" (you might want to change this)

Some warnings are disabled by default; enable them with --enable.

E100

'unnecessary string concat'

x = "foo " "bar"

W101

'unparenthesized multiline string concat in keyword arg'

foo(
    bar="alpha "
    "beta"
)

W102

'unparenthesized multiline string concat in dict value'

{
    "foo": "alpha "
    "beta"
}

W103

'unparenthesized multiline string concat in collection type'

x = (  # a tuple
    "alpha "
    "beta",
    "gamma"
)
x = {  # or a set
    "alpha "
    "beta",
    "gamma"
}

W120

'unparenthesized multiline union in parameter annotation'

def foo(
    x: int |
    str
):
    return x

E110

'returning a variable checked as None, rather than returning None'

if x is None:
    return x  # should be `return None`

W200

'two AST branches have identical contents'

if x is True:
    return y + 1
else:
    # some comment
    return y + 1

W201

disabled by default

'two AST branches have identical trivial contents'

if x is True:
    return
else:
    return

W202

disabled by default

'two non-adjacent AST branches have identical contents'

if x is True:
    return foo(bar())
elif y is True:
    return 0
elif z is True:
    return 1
else:
    return foo(bar())

W203

disabled by default

'two non-adjacent AST branches have identical trivial contents'

if x is True:
    return None
elif y is True:
    return 0
elif z is True:
    return 1
else:
    return None

License

slyp is distributed under the terms of the MIT license.

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

slyp-0.2.2.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

slyp-0.2.2-py3-none-any.whl (17.8 kB view details)

Uploaded Python 3

File details

Details for the file slyp-0.2.2.tar.gz.

File metadata

  • Download URL: slyp-0.2.2.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for slyp-0.2.2.tar.gz
Algorithm Hash digest
SHA256 b52286ad61effe2bb6a7afe27a7b02945b51ccb599bf4daaf0040708307f2bf4
MD5 fcbbf7035943d2641e8eecea4bcf5061
BLAKE2b-256 d4ae68b6c72cca5891d3da7885af472f8fbc1405bb7306bee4b2d5b2444c1067

See more details on using hashes here.

Provenance

File details

Details for the file slyp-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: slyp-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 17.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for slyp-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 07eccbe112ea274c80fe8f13d73b74a72ea0ab2ef4a7b79d0bec52a18c572ede
MD5 89540e9ebe0a4b144ed2567b97c7c646
BLAKE2b-256 22e49fec68c0b039343d2a50362d3bee41f9adf9ecdb2f42242bcd7e3a774505

See more details on using hashes here.

Provenance

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