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:
- "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).
- 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).
- Fix incomplete-protocol false positive for read-only containers like tuple
(bitbucket #25).
- Support for pkgutil.extend_path and setuptools pkg_resources
(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).
- New API to make it smarter by allowing transformation functions on any
node, providing a register_transform function on the manager instead of
the register_transformer to make it more flexible wrt node selection
- Use this new transformation API to provide support for namedtuple
(actually in pylint-brain, logilab-astng #8766)
- Better description of hashlib
- Properly recognize methods annotated with abc.abstract{property,method}
as abstract.
- Added the test_utils module for building ASTs and extracting deeply nested
nodes for easier testing.