def lint():
    "report pylint results"
    # report according to file extension
    report_formats = {
        ".html": "html",
        ".log": "parseable",
        ".txt": "text",
    }

    lint_build_dir = easy.path("build/lint")
    lint_build_dir.exists() or lint_build_dir.makedirs()  # pylint: disable=expression-not-assigned

    argv = []
    rcfile = easy.options.lint.get("rcfile")
    if not rcfile and easy.path("pylint.cfg").exists():
        rcfile = "pylint.cfg"
    if rcfile:
        argv += ["--rcfile", os.path.abspath(rcfile)]
    if easy.options.lint.get("msg_only", False):
        argv += ["-rn"]
    argv += [
        "--import-graph", (lint_build_dir / "imports.dot").abspath(),
    ]
    argv += support.toplevel_packages()

    sys.stderr.write("Running %s::pylint '%s'\n" % (sys.argv[0], "' '".join(argv)))
    outfile = easy.options.lint.get("output", None)
    if outfile:
        outfile = os.path.abspath(outfile)

    try:
        with easy.pushd("src" if easy.path("src").exists() else "."):
            if outfile:
                argv.extend(["-f", report_formats.get(easy.path(outfile).ext, "text")])
                sys.stderr.write("Writing output to %r\n" % (str(outfile),))
                outhandle = open(outfile, "w")
                try:
                    subprocess.check_call(["pylint"] + argv, stdout=outhandle)
                finally:
                    outhandle.close()
            else:
                subprocess.check_call(["pylint"] + argv, )
            sys.stderr.write("paver::lint - No problems found.\n")
    except subprocess.CalledProcessError as exc:
        if exc.returncode & 32:
            # usage error (internal error in this code)
            sys.stderr.write("paver::lint - Usage error, bad arguments %r?!\n" % (argv,))
            sys.exit(exc.returncode)
        else:
            bits = {
                1: "fatal",
                2: "error",
                4: "warning",
                8: "refactor",
                16: "convention",
            }
            sys.stderr.write("paver::lint - Some %s message(s) issued.\n" % (
                ", ".join([text for bit, text in bits.items() if exc.returncode & bit])
            ))
            if exc.returncode & 3:
                sys.stderr.write("paver::lint - Exiting due to fatal / error message.\n")
                sys.exit(exc.returncode)
def lint ( ) : report_formats = { ".html" : "html" , ".log" : "parseable" , ".txt" : "text" , } lint_build_dir = easy . path ( "build/lint" ) lint_build_dir . exists ( ) or lint_build_dir . makedirs ( ) argv = [ ] rcfile = easy . options . lint . get ( "rcfile" ) if not rcfile and easy . path ( "pylint.cfg" ) . exists ( ) : rcfile = "pylint.cfg" if rcfile : argv += [ "--rcfile" , os . path . abspath ( rcfile ) ] if easy . options . lint . get ( "msg_only" , False ) : argv += [ "-rn" ] argv += [ "--import-graph" , ( lint_build_dir / "imports.dot" ) . abspath ( ) , ] argv += support . toplevel_packages ( ) sys . stderr . write ( "Running %s::pylint '%s'\n" % ( sys . argv [ 0 ] , "' '" . join ( argv ) ) ) outfile = easy . options . lint . get ( "output" , None ) if outfile : outfile = os . path . abspath ( outfile ) try : with easy . pushd ( "src" if easy . path ( "src" ) . exists ( ) else "." ) : if outfile : argv . extend ( [ "-f" , report_formats . get ( easy . path ( outfile ) . ext , "text" ) ] ) sys . stderr . write ( "Writing output to %r\n" % ( str ( outfile ) , ) ) outhandle = open ( outfile , "w" ) try : subprocess . check_call ( [ "pylint" ] + argv , stdout = outhandle ) finally : outhandle . close ( ) else : subprocess . check_call ( [ "pylint" ] + argv , ) sys . stderr . write ( "paver::lint - No problems found.\n" ) except subprocess . CalledProcessError as exc : if exc . returncode & 32 : sys . stderr . write ( "paver::lint - Usage error, bad arguments %r?!\n" % ( argv , ) ) sys . exit ( exc . returncode ) else : bits = { 1 : "fatal" , 2 : "error" , 4 : "warning" , 8 : "refactor" , 16 : "convention" , } sys . stderr . write ( "paver::lint - Some %s message(s) issued.\n" % ( ", " . join ( [ text for bit , text in bits . items ( ) if exc . returncode & bit ] ) ) ) if exc . returncode & 3 : sys . stderr . write ( "paver::lint - Exiting due to fatal / error message.\n" ) sys . exit ( exc . returncode )
report pylint results