Hi there,

I'm very pleased to announce, after 10 years of existence, the 1.0 release of Pylint.

This release has a hell long ChangeLog, thanks to many contributions and to the 10th anniversary sprint we hosted during june. More details about changes below.

Chances are high that your Pylint score will go down with this new release that includes a lot of new checks :) Also, there are a lot of improvments on the Python 3 side (notably 3.3 support which was somewhat broken).

You may download and install it from Pypi or from Logilab's debian repositories. Notice Pylint has been updated to use the new Astroid library (formerly known as logilab-astng) and that the logilab-common 0.60 library includes some fixes necessary for using Pylint with Python3 as well as long-awaited support for namespace packages.

For those interested, below is a comprehensive list of what changed:

Command line and output formating A new --msg-template option to control output, deprecating "msvc" and "parseable" output formats as well as killing --include-ids and --symbols options.

option to control output, deprecating "msvc" and "parseable" output formats as well as killing and options. Fix spelling of max-branchs option, now max-branches.

Start promoting usage of symbolic name instead of numerical ids.

New checks "missing-final-newline" (C0304) for files missing the final newline.

"invalid-encoded-data" (W0512) for files that contain data that cannot be decoded with the specified or default encoding.

"bad-open-mode" (W1501) for calls to open (or file) that specify invalid open modes (Original implementation by Sasha Issayev).

"old-style-class" (C1001) for classes that do not have any base class.

"trailing-whitespace" (C0303) that warns about trailing whitespace.

"unpacking-in-except" (W0712) about unpacking exceptions in handlers, which is unsupported in Python 3.

"old-raise-syntax" (W0121) for the deprecated syntax raise Exception, args .

. "unbalanced-tuple-unpacking" (W0632) for unbalanced unpacking in assignments (bitbucket #37).

Enhanced behaviours Do not emit [fixme] for every line if the config value 'notes' is empty

Emit warnings about lines exceeding the column limit when those lines are inside multiline docstrings.

Name check enhancement: simplified message, don't double-check parameter names with the regex for parameters and inline variables, don't check names of derived instance class members, methods that are decorated as properties are now treated as attributes, names in global statements are now checked against the regular expression for constants, for toplevel name assignment, the class name regex will be used if pylint can detect that value on the right-hand side is a class (like collections.namedtuple()), add new name type 'class_attribute' for attributes defined in class scope. By default, allow both const and variable names.

Add a configuration option for missing-docstring to optionally exempt short functions/methods/classes from the check.

Add the type of the offending node to missing-docstring and empty-docstring.

Do not warn about redefinitions of variables that match the dummy regex.

Do not treat all variables starting with "_" as dummy variables, only "_" itself.

Make the line-too-long warning configurable by adding a regex for lines for with the length limit should not be enforced.

Do not warn about a long line if a pylint disable option brings it above the length limit.

Do not flag names in nested with statements as undefined.

Remove string module from the default list of deprecated modules (bitbucket #3).

module from the default list of deprecated modules (bitbucket #3). Fix incomplete-protocol false positive for read-only containers like tuple (bitbucket #25).

Python 3 related Support for PEP 3102 and new "missing-kwoa" (E1125) message for missing mandatory keyword argument (logilab.org's #107788).

Make epylint work (bitbucket #7).

Make pyreverse work.

Fix typo causing name error (logilab-common #136037).

Fix python3.3 crash in file_from_modpath due to implementation change of imp.find_module wrt builtin modules (logilab-common #137244).

wrt builtin modules (logilab-common #137244). Fix False positive E1003 on Python 3 for argument-less call to super() (bitbucket #16).

Other changes Support for pkgutil.extend_path and setuptools pkg_resources (logilab-common #8796).

and setuptools (logilab-common #8796). New utility classes for per-checker unittests in testutils.py

Added a new base class and interface for checkers that work on the tokens rather than the syntax, and only tokenize the input file once.

epylint shouldn't hang anymore when there is a large output on pylint'stderr (bitbucket #15).

Put back documentation in source distribution (bitbucket #6).