Skip to main content

Exit code handler for pylint command line utility.

Project description

pylint-exit

image

Utility to handle pylint exit codes on Linux in a scripting-friendly way.

Pylint uses bit-encoded exit codes to convey the results of the pylint review, which means it will return with a non-zero return code even when the pylint scoring was successful.

This can make it difficult to script the execution of pylint while at the same time detecting genuine errors.

pylint-exit is a small command-line utility that can be used to re-process the pylint return code and translate it into a scripting-friendly return code.

pylint-exit will decode the bit-encoded return code, identify whether there were any fatal messages issued (which might constitute a failure in the execution of pylint), or a usage error, and return a 0 or 1 return code that is more easily used in shell scripts.

Installation

The simplest way to install is via pip.

pip install pylint-exit

This will install the package, and will provide the pylint-exit command line utility.

You can also manually install by downloading pylint_exit.py, and make it executable.

curl -o pylint-exit https://raw.githubusercontent.com/jongracecox/pylint-exit/master/pylint_exit.py && chmod +x pylint_exit.py

You should also consider creating a symbolic link so that the calls in the remainder of this README work as described. Update <path-to> with where you downloaded the script.

ln -s <path-to>/pylint_exit.py /usr/local/bin/pylint-exit

Note: If you perform a ``–user`` install with ``pip`` then you will need to ensure ``~/.local/bin`` appears in your ``PATH`` environment variable, otherwise the command line ``pylint-exit`` will not work.

Usage

Add || pylint-exit $? to the end of your existing Pylint command. You can then use the updated $? return code in your shell script.

pylint mymodule.py || pylint-exit $?
if [ $? -ne 0 ]; then
  echo "An error occurred while running pylint." >&2
  exit 1
fi

Note: Many CI tools will check the return code of each command, so it may be enough to simply add || pylint-exit $?, and leave the return code check to the CI executor.

Example

In this example pylint issues refactor and convention messages, and exits with a return code of 24. pylint-exit decodes this, displays the messages, and exits with a return code of 0.

> pylint --rcfile=.pylintrc --output-format=text mymodule.py || pylint-exit $?
The following messages were raised:

  - refactor message issued
  - convention message issued

No fatal messages detected.  Exiting gracefully...
> echo $?
0

In this example pylint returns with a usage error due to the bad output format, and exits with a return code of 32. pylint-exit detects this, displays the message, and returns with an exit code of 1.

> pylint --rcfile=.pylintrc --output-format=badformat mymodule.py || pylint-exit $?
The following messages were raised:

  - usage error

Fatal messages detected.  Failing...
> echo $?
1

Return codes

Pylint can return combinations of the following codes. pylint-exit will identify each issued message, and return the maximum final return code.

Pylint code

Message

Final return code

1

Fatal message issued

1

2

Error message issued

0

4

Warning message issued

0

8

Refactor message issued

0

16

Convention message issued

0

32

Usage error

1

This list is stored in EXIT_CODES_LIST, which can be customised if needed.

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

pylint-exit-1.1.0rc6.zip (9.4 kB view details)

Uploaded Source

Built Distribution

pylint_exit-1.1.0rc6-py2.py3-none-any.whl (4.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pylint-exit-1.1.0rc6.zip.

File metadata

  • Download URL: pylint-exit-1.1.0rc6.zip
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.7

File hashes

Hashes for pylint-exit-1.1.0rc6.zip
Algorithm Hash digest
SHA256 5548d522e45d3cd873bd4900b5a59140d0536fad09843f02647843556e9b3d64
MD5 4479eb1557b772e8632130c115af5342
BLAKE2b-256 25f41539622ad8290f1b3bbde599ce197eb13b889a010c5d10a5742ad0a5ec23

See more details on using hashes here.

File details

Details for the file pylint_exit-1.1.0rc6-py2.py3-none-any.whl.

File metadata

  • Download URL: pylint_exit-1.1.0rc6-py2.py3-none-any.whl
  • Upload date:
  • Size: 4.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.7

File hashes

Hashes for pylint_exit-1.1.0rc6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 618e2994773b785e69e56841524be3001835cd440264483955d4d76efad64ddf
MD5 e0c5e2d1bf815e1911f4154a32c98751
BLAKE2b-256 2d97de65a6924a42404053884035f06599b94c0e68cd4002bd9e232463608568

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