diff options
author | Sylvain Th?nault <sylvain.thenault@logilab.fr> | 2009-12-18 11:34:04 +0100 |
---|---|---|
committer | Sylvain Th?nault <sylvain.thenault@logilab.fr> | 2009-12-18 11:34:04 +0100 |
commit | 8847a3a202afe2f7edf9acd89a30d81126c96e37 (patch) | |
tree | 24a4aae6cfec0ffafdc63005c0d48dfa180c440b /epylint.py | |
parent | aad18c7062f98f4b1b2dc76ca5748af6deddbe33 (diff) | |
download | pylint-8847a3a202afe2f7edf9acd89a30d81126c96e37.tar.gz |
include vincent patch for #5821
Diffstat (limited to 'epylint.py')
-rwxr-xr-x | epylint.py | 55 |
1 files changed, 54 insertions, 1 deletions
@@ -1,6 +1,5 @@ #!/usr/bin/env python # -*- coding: utf-8; mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=python:et:sw=4:ts=4:sts=4 - """Emacs and Flymake compatible Pylint. This script is for integration with emacs and is compatible with flymake mode. @@ -27,6 +26,8 @@ For example: - As this script will be invoked by emacs within the directory of the file we are checking we need to traverse down out of it to avoid these false positives. + +You may also use py_run to run pylint with desired options and get back (or not) its output. """ import sys, os, re @@ -91,6 +92,58 @@ def lint(filename): def Run(): lint(sys.argv[1]) + +def py_run(command_options='', return_std=False, stdout=None, stderr=None, + script='pylint'): + """Run pylint from python (needs Python >= 2.4). + + ``command_options`` is a string containing ``pylint`` command line options; + ``return_std`` (boolean) indicates return of created standart output + and error (see below); + ``stdout`` and ``stderr`` are 'file-like' objects in which standart output + could be written. + + Calling agent is responsible for stdout/err management (creation, close). + Default standart output and error are those from sys, + or standalone ones (``subprocess.PIPE``) are used + if they are not set and ``return_std``. + + If ``return_std`` is set to ``True``, this function returns a 2-uple + containing standart output and error related to created process, + as follows: ``(stdout, stderr)``. + + A trivial usage could be as follows: + >>> py_run( '--version') + No config file found, using default configuration + pylint 0.18.1, + ... + + To silently run Pylint on a module, and get its standart output and error: + >>> (pylint_stdout, pylint_stderr) = py_run( 'module_name.py', True) + """ + # Create command line to call pylint + if os.name == 'nt': + script += '.bat' + command_line = script + ' ' + command_options + # Providing standart output and/or error if not set + if stdout is None: + if return_std: + stdout = PIPE + else: + stdout = sys.stdout + if stderr is None: + if return_std: + stderr = PIPE + else: + stderr = sys.stderr + # Call pylint in a subprocess + p = Popen(command_line, shell=True, stdout=stdout, stderr=stderr) + p.wait() + # Return standart output and error + if return_std: + return (p.stdout, p.stderr) + + if __name__ == '__main__': lint(sys.argv[1]) |