Pylint's ChangeLog
******************


What's New in Pylint 1.9.5?
===========================

Release date: 2019-07-16

   * Fix a false positive *invalid name* message when method or
     attribute name is longer then 30 characters.

     Close #2047

   * Fix compatibility with changes to stdlib tokenizer.


What's New in Pylint 1.9.4?
===========================

Release date: 2018-12-27

   * "deprecated-method" is correctly emitted for "assertEquals" and
     friends.

     Close #2226

      * Fixed false positive when a numpy Attributes section follows a
        Parameters section

           Close #1867

      * Add support for nupmydoc optional return value names.

           Close #2030

      * Can specify a default docstring type for when the check cannot
        guess the type

           Close #1169

      * Fix false-postive undefined-variable in nested lambda

           Close #760


What's New in Pylint 1.9.3?
===========================

Release date: 2018-07-24

   * *chain.from_iterable* no longer emits *dict-{}-not-iterating*
     when dealing with dict values and keys

      * Fix incorrect file path when file absolute path contains
        multiple "path_strip_prefix" strings.

        Close #1120 and #2280

      * *in* is considered iterating context for some of the Python 3
        porting checkers

        Close #2186

      * Add *--exit-zero* option for continuous integration scripts to
        more easily call Pylint in environments that abort when a
        program returns a non-zero (error) status code.

        Close #2042

      * [].extend and similar builtin operations don't emit *dict
        -*-not-iterating* with the Python 3 porting checker

        Close #2187


What's New in Pylint 1.9.2?
===========================

Release date: 2018-06-06

   * Fix *KeyError* raised when using docparams and
     NotImplementedError is documented.

   * Don't include excepthandlers that don't have a name when looking
     for exception-escape

   * Rewrite the comprehension-escape and exception-escape to work
     only on the corresponding nodes

   These two checks were implemented in terms of visit_namne, that is,
   for every name in the tree, we looked to see if that name leaked.
   This was resulting in a couple of false positives and also in a
   performance issue, since we were calling nodes_of_class() and
   scope() for each name node. Instead, this approach uses the visit
   methods for exception and comprehension nodes and looks to see from
   there if the current scope uses leaked names. This is not the ideal
   situation as well, ideal would be to have access to the definition
   frame of each name, but that requires some extra engineering effort
   in astroid to get it right. Close #2106

   * builtins is allowed to redefine builtins. Close #1966


What's New in Pylint 1.9.1?
===========================

Release date: 2018-05-14

   * Fixed old-raise-syntax always erroring in Python 3.


What's New in Pylint 1.9.0?
===========================

Release date: 2018-05-15

      * Added two new Python 3 porting checks, *exception-escape* and
        *comprehension-escape*

        These two are emitted whenever pylint detects that a variable
        defined in the said blocks is used outside of the given block.
        On Python 3 these values are deleted.

      * Added a new *deprecated-sys-function*, emitted when accessing
        removed sys members.

      * Added *xreadlines-attribute*, emitted when the *xreadlines()*
        attribute is accessed.

      * The Python 3 porting mode can now run with Python 3 as well.

      * docparams extension allows abstract methods to document what
        overriding implementations should return, and to raise
        NotImplementedError without documenting it.

        Closes #2044

      * Special methods do not count towards *too-few-methods*, and
        are considered part of the public API.

      * Enum classes do not trigger *too-few-methods*

        Close #605

      * defaultdict and subclasses of dict are now handled for dict-
        iter-* checks

        Close #2005

   * Added a new Python 2/3 check for accessing *operator.div*, which
     is removed in Python 3

     Close #1936

   * Added a new Python 2/3 check for accessing removed urllib
     functions

     Close #1997

   * Added a new check for catching unicode raw string literals

     Close #1938


What's New in Pylint 1.8.4?
===========================

Release date: 2018-04-05

   * Stop early when we already detected a disable for a line too long

   Close #1974

   * Add missing string functions to the Python 3 porting checker

   * Require no-context-manager to infer paths before walking the tree

   Fixes #1874


What's New in Pylint 1.8.3?
===========================

Release date: 2018-03-16

   * Fix false positive "inconsistent-return-statements" message when
     a function is defined under an if statement.

     Close #1794

      * Exempt *__doc__* from triggering a *redefined-builtin*

         *__doc__* can be used to specify a docstring for a module
         without passing it as a first-statement string.

   * Don't crash on invalid strings when checking for *logging-format-
     interpolation*

     Close #1944

   * Fix false positive "inconsistent-return-statements" message by
     avoiding useless exception inference if the exception is not
     handled.

     Close #1794 (second part)

   * Fix false positive undefined-variable for lambda argument in
        class definitions

     Close #1824

   * Fix false-positive "undefined-variable" for generated
     comprehension variables in function default arguments

     Close #1897


What's New in Pylint 1.8.2?
===========================

Release date: 2018-01-23

   * Fixed a crash which occurred when *Uninferable* wasn't properly
     handled in *stop-iteration-return*

      Close #1779

   * Use the proper node to get the name for redefined functions
     (#1792)

     Close #1774

   * Don't crash when encountering bare raises while checking
     inconsistent returns

     Close #1773

   * Fix a false positive "inconsistent-return-statements" message
     when if statement is inside try/except.

     Close #1770

   * Fix a false positive "inconsistent-return-statements" message
     when while loop are used.

     Close #1772

   * Fix "unused-argument" false positives with overshadowed variable
     in dictionary comprehension.

     Close #1731

   * Fix false positive "inconsistent-return-statements" message when
     never returning functions are used (i.e sys.exit for example).

     Close #1771

   * Fix error when checking if function is exception, as in "bad-
     exception-context".


What's New in Pylint 1.8.1?
===========================

Release date: 2017-12-15

   * Wrong version number in __pkginfo__.


What's New in Pylint 1.8?
=========================

Release date: 2017-12-15

   * Respect disable=... in config file when running with --py3k.

   * New warning *shallow-copy-environ* added

     Shallow copy of os.environ doesn't work as people may expect.
     os.environ is not a dict object but rather a proxy object, so any
     changes made on copy may have unexpected effects on os.environ

     Instead of copy.copy(os.environ) method os.environ.copy() should
     be used.

     See https://bugs.python.org/issue15373 for details.

     Close #1301

   * Do not display no-absolute-import warning multiple times per
     file.

   * *trailing-comma-tuple* refactor check now extends to assignment
     with
        more than one element (such as lists)

     Close #1713

   * Fixing u'' string in superfluous-parens message

     Close #1420

   * *abstract-class-instantiated* is now emitted for all inference
     paths.

        Close #1673

   * Add set of predefined naming style to ease configuration of
     checking naming conventions.

     Closes #1013

   * Added a new check, "keyword-arg-before-vararg"

     This is emitted for function definitions in which keyword
     arguments are placed before variable positional arguments
     (>>*<<args).

     This may lead to args list getting modified if keyword argument's
     value is not provided in the function call assuming it will take
     default value provided in the definition.

   * The *invalid-name* check contains the name of the template that
     caused the failure

     Close #1176

   * Using the -j flag won't start more child linters than needed.

     Contributed by Roman Ivanov in #1614

   * Fix a false positive with bad-python3-import on relative imports

     Close #1608

   * Added a new Python 3 check, "non-ascii-bytes-literals"

     Close #1545

   * Added a couple of new Python 3 checks for accessing dict methods
     in non-iterable context

   * Protocol checks (not-a-mapping, not-an-iterable and co.) aren't
     emitted on classes with dynamic getattr

   * Added a new warning, 'bad-thread-instantiation'

     This message is emitted when the threading.Thread class does not
     receive the target argument, but receives just one argument,
     which is by default the group parameter.

     Close #1327

   * In non-quiet mode, absolute path of used config file is logged to
     standard error. Close #1519

   * Raise meaningful exception for invalid reporter class being
     selected

     When unknown reporter class will be selected as Pylint reporter,
     meaningful error message would be raised instead of bare
     "ImportError" or "AttribueError" related to module or reporter
     class being not found. Close #1388

   * Added a new Python 3 check for accessing removed functions from
     itertools like "izip" or "ifilterfalse"

   * Added a new Python 3 check for accessing removed fields from the
     types module like "UnicodeType" or "XRangeType"

   * Added a new Python 3 check for declaring a method "next" that
     would have been treated as an iterator in Python 2 but a normal
     function in Python 3.

   * Added a new key-value pair in json output. The key is "message-
     id" and the value is the message id. Close #1512

   * Added a new Python 3.0 check for raising a StopIteration inside a
     generator. The check about raising a StopIteration inside a
     generator is also valid if the exception raised inherit from
     StopIteration. Close #1385

   * Added a new warning, "raising-format-tuple", to detect multi-
     argument exception construction instead of message string
     formatting.

   * Added a new check for method of logging module that concatenate
     string via + operator Close #1479

   * Added parameter for limiting number of suggestions in
     spellchecking checkers

   * Fix a corner-case in "consider-using-ternary" checker.

     When object "A" used in  "X and A or B" was falsy in boolean
     context, Pylint incorrectly emitted non-equivalent ternary-based
     suggestion. After a change message is correctly not emitted for
     this case. Close #1559

   * Added "suggestion-mode" configuration flag. When flag is enabled,
     informational message is emitted instead of cryptic error message
     for attributes accessed on c-extensions. Close #1466

   * Fix a false positive "useless-super-delegation" message when
     parameters default values are different from those used in the
     base class. Close #1085

   * Disabling 'wrong-import-order', 'wrong-import-position', or
     'ungrouped-imports' for a single line now prevents that line from
     triggering violations on subsequent lines.

     Close #1336

   * Added a new Python check for inconsistent return statements
     inside method or function. Close #1267

   * Fix "superfluous-parens" false positive related to handling
     logical statements involving "in" operator.

     Close #574

   * "function-redefined" message is no longer emitted for functions
     and methods which names matches dummy variable name regular
     expression. Close #1369

   * Fix "missing-param-doc" and "missing-type-doc" false positives
     when mixing "Args" and "Keyword Args" in Google docstring. Close
     #1409

      * Fix "missing-docstring" false negatives when modules, classes,
        or methods

      consist of compound statements that exceed the "docstring-min-
      length"

   * Fix "useless-else-on-loop" false positives when break statements
     are deeply nested inside loop. Close #1661

   * Fix no "wrong-import-order" message emitted on ordering of first
     and third party libraries. With this fix, pylint distinguishes
     third and first party modules when checking import order. Close
     #1702

   * Fix "pylint disable=fixme" directives ignored for comments
     following the last statement in a file. Close #1681

   * Fix "line-too-long" message deactivated by wrong disable
     directive. The directive "disable=fixme" doesn't deactivate
     anymore the emission of "line-too-long" message for long
     commented lines. Close #1741

   * If the rcfile specified on the command line doesn't exist, then
     an IOError exception is raised. Close #1747


What's New in Pylint 1.7.1?
===========================

Release date: 2017-04-17

   * Fix a false positive which occurred when an exception was
     reraised

     Close #1419

   * Fix a false positive of "disallow-trailing-tuple"

     The check was improved by verifying for non-terminating newlines,
     which should exempt function calls and function definitions from
     the check Close #1424


What's New in Pylint 1.7?
=========================

Release date: 2017-04-13

   * Don't emit missing-final-newline or trailing-whitespace for
     formfeeds (page breaks).

     Close #1218 and #1219

   * Don't emit by default no-member if we have opaque inference
     objects in the inference results

     This is controlled through the new flag ignore-on-opaque-
     inference, which is by default True. The inference can return
     multiple potential results while evaluating a Python object, but
     some branches might not be evaluated, which results in partial
     inference. In that case, it might be useful to still emit no-
     member and other checks for the rest of the inferred objects.

   * Added new message *assign-to-new-keyword* to warn about assigning
     to names which will become a keyword in future Python releases.

     Close #1351

   * Split the 'missing or differing' in parameter documentation in
     different error. 'differing-param-doc' covers the differing part
     of the old 'missing-param-doc', and 'differing-type-doc' covers
     the differing part of the old 'missing-type-doc'

     Close #1342

   * Added a new error, 'used-prior-global-declaration', which is
     emitted when a name is used prior a global declaration in a
     function. This causes a SyntaxError in Python 3.6

     Close #1257

   * The protocol checks are emitting their messages when a special
     method is set to None.

     Close #1263

   * Properly detect if imported name is assigned to same name in
     different scope.

     Close #636, #848, #851, and #900

   * Require one space for annotations with type hints, as per PEP 8.

   * 'trailing-comma-tuple' check was added

     This message is emitted when pylint finds an one-element tuple,
     created by a stray comma. This can suggest a potential problem in
     the code and it is recommended to use parantheses in order to
     emphasise the creation of a tuple, rather than relying on the
     comma itself.

   * Don't emit not-callable for instances with unknown bases.

     Close #1213

   * Treat keyword only arguments the same as positional arguments
     with regard to unused-argument check

   * Don't try to access variables defined in a separate scope when
     checking for "protected-access"

   * Added new check to detect incorrect usage of len(SEQUENCE) inside
     test conditions.

   * Added new extension to detect comparisons against empty string
     constants

   * Added new extension to detect comparisons of integers against
     zero

   * Added new error conditions for 'bad-super-call'

     Now detects "super(type(self), self)" and "super(self.__class__,
     self)" which can lead to recursion loop in derived classes.

   * PyLinter.should_analyze_file has a new optional parameter, called
     *is_argument*

     Close #1079

   * Add attribute hints for missing members

     Closes #1035

   * Add a new warning, 'redefined-argument-from-local'

     Closes #649

   * Support inline comments for comma separated values in the config
     file

     Closes #1024

   * epylint.py_run's *script* parameter was removed.

   * epylint.py_run now uses "shell=False" for running the underlying
     process.

     Closes #441

   * Added a new warning, 'useless-super-delegation'

     Close 839.

   * Added a new error, 'invalid-metaclass', raised when we can detect
     that a class is using an improper metaclass.

     Close #579

   * Added a new refactoring message, 'literal-comparison'.

     Close #786

   * arguments-differ takes in consideration kwonlyargs and variadics

     Close #983

   * Removed --optimized-ast. Part of #975.

   * Removed --files-output option. Part of #975.

   * Removed pylint-gui from the package.

   * Removed the HTML reporter. Part of #975.

   * ignored-argument-names is now used for ignoring arguments for
     unused-variable check.

     This option was used for ignoring arguments when computing the
     correct number of arguments a function should have, but for
     handling the arguments with regard to unused-variable check,
     dummy-variables-rgx was used instead. Now, ignored-argument-names
     is used for its original purpose and also for ignoring the
     matched arguments for the unused-variable check. This offers a
     better control of what should be ignored and how. Also, the same
     option was moved from the design checker to the variables
     checker, which means that the option now appears under the
     "[VARIABLES]" section inside the configuration file. Close #862.

   * Fix a false positive for keyword variadics with regard to keyword
     only arguments.

     If a keyword only argument was necessary for a function, but that
     function was called with keyword variadics (>>**<<kwargs), then
     we were emitting a missing-kwoa false positive, which is now
     fixed.

     Close #934.

   * Fix some false positives with unknown sized variadics.

     Close #878

   * Added a new extension, check_docstring, for checking PEP 257
     conventions.

     Closes #868.

   * config files with BOM markers can now be read.

     Close #864.

   * epylint.py_run does not crash on big files, using .communicate()
     instead of .wait()

     Close #599

   * Disable reports by default and show the evaluation score by
     default

     As per discussion from issue #746, the reports were disabled by
     default in order to simplify the interaction between the tool and
     the users. The score is still shown by default, as a way of
     closely measuring when it increases or decreases due to changes
     brought to the code.

   * Disable the information category messages by default.

     This is a step towards making pylint more sane, as per the
     discussion from issue #746.

   * Catch more cases as not proper iterables for __slots__ with
     regard to invalid-slots pattern. Closes issue #775.

   * empty indent strings are rejected.

   * Added a new error, 'relative-beyond-top-level', which is emitted
     when a relative import was attempted beyond the top level
     package.

     Closes issue #588.

   * Added a new warning, 'unsupported-assignment-operation', which is
     emitted when item assignment is tried on an object which doesn't
     have this ability. Closes issue #591.

   * Added a new warning, 'unsupported-delete-operation', which is
     emitted when item deletion is tried on an object which doesn't
     have this ability. Closes issue #592.

   * Fix a false positive of 'redundant-returns-doc', occurred when
     the documented function was using *yield* instead of *return*.

     Closes issue #984.

   * Fix false positives of 'missing-[raises|params|type]-doc' due to
     not recognizing keyword synonyms supported by Sphinx.

   * Added a new refactoring message, 'consider-merging-isinstance',
     which is emitted whenever we can detect that consecutive
     isinstance calls can be merged together.

     Closes issue #968

   * Fix a false positive of 'missing-param-doc' and 'missing-type-
     doc', occurred when a class docstring uses the 'For the
     parameters, see' magic string but the class __init__ docstring
     does not, or vice versa.

   * *redefined-outer-name* is now also emitted when a nested loop's
     target variable is the same as a target variable in an outer
     loop.

     Closes issue #911.

   * Added proper exception type inference for 'missing-raises-doc'.

   * Added InvalidMessageError exception class to replace asserts in
     pylint.utils.

   * More thorough validation in MessagesStore.register_messages() to
     avoid one message accidentally overwriting another.

   * InvalidMessageError, UnknownMessage, and EmptyReport exceptions
     are moved to the new pylint.exceptions submodule.

   * UnknownMessage and EmptyReport are renamed to UnknownMessageError
     and EmptyReportError.

   * Warnings 'missing-returns-type-doc' and 'missing-yields-type-doc'
     have each been split into two warnings -
     'missing-[return|yield]-doc' and 'missing-[return|yield]-type-
     doc'.

   * Added epytext support to docparams extension.

     Closes #1029.

   * Support having plugins with the same name and with options
     defined

     Closes #1018

   * Sort configuration options in a section

     Closes #1087

   * Added a new Python 3 warning around implementing '__div__',
     '__idiv__', or '__rdiv__' as those methods are phased out in
     Python 3.

   * Added a new warning, 'overlapping-except', which is emitted when
     two exceptions in the same except-clause are aliases for each
     other or one exceptions is an ancestor of another.

   * Avoid crashing on ill-formatted strings when checking for string
     formatting errors.

   * Added a new Python 3 warning for calling 'str.encode' or
     'str.decode' with a non-text encoding.

   * Added new coding convention message, 'single-string-used-for-
     slots'.

     Closes #1166

   * Added a new Python 3 check for accessing 'sys.maxint' which was
     removed in Python 3 in favor of 'sys.maxsize'

   * Added a new Python 3 check for bad imports.

   * Added a new Python 3 check for accessing deprecated string
     functions.

   * Do not warn about unused arguments or function being redefined in
     singledispatch registered implementations.

     Closes #1032 and #1034

   * Added refactoring message 'no-else-return'.

   * Improve unused-variable checker to warn about unused variables in
     module scope.

     Closes #919

   * Ignore modules import as _ when checking for unused imports.

     Closes #1190

   * Improve handing of Python 3 classes with metaclasses declared in
     nested scopes.

     Closes #1177

   * Added refactoring message 'consider-using-ternary'.

     Closes #1204

   * Bug-fix for false-positive logging-format-interpolation` when
     format specifications are used in formatted string.

     Fixes #572

   * Added a new switch "single-line-class-stmt" to allow single-line
     declaration of empty class bodies.

     Closes #738

   * Protected access in form *type(self)._attribute* are now allowed.

     Fixes #1031

   * Let the user modify msg-template when Pylint is called from a
     Python script

     Fixes #1269

   * Imports checker supports new switch "allow-wildcard-with-all"
     which disables warning on wildcard import when imported module
     defines *__all__* variable.

     Fixes #831

   * *too-many-format-args* and *too-few-format-args* are emitted
     correctly when starred expression are used in RHS tuple.

     Fixes #957

   * *cyclic-import* checker supports local disable clauses. When one
     of cycle imports was done in scope where disable clause was
     active, cycle is not reported as violation.

     Fixes #59


What's new in Pylint 1.6.3?
===========================

Release date: 2016-07-18

   * Do not crash when inferring uninferable exception types for
     docparams extension

     Close #998


What's new in Pylint 1.6.2?
===========================

Release date: TBA

   * Do not crash when printing the help of options with default
     regular expressions

     Close #990

   * More granular versions for deprecated modules.

     Close #991


What's new in Pylint 1.6.1?
===========================

Release date: 2016-07-07

   * Use environment markers for supporting conditional dependencies.


What's New in Pylint 1.6.0?
===========================

Release date: 2016-07-03

   * Added a new extension, *pylint.extensions.mccabe*, for warning
     about complexity in code.

   * Deprecate support for --optimize-ast. Part of #975.

   * Deprecate support for the HTML output. Part of #975.

   * Deprecate support for --output-files. Part of #975.

   * Fixed a documentation error for the check_docs extension. Fixes
     #735.

   * Made the list of property-defining decorators configurable.

   * Fix a bug where the top name of a qualified import was detected
     as unused variable.

     Close #923.

   * bad-builtin is now an extension check.

   * generated-members support qualified name through regular
     expressions.

     For instance, one can specify a regular expression as
     --generated-members=astroid.node_classes.* for ignoring every no-
     member error that is accessed as in
     *astroid.node_classes.missing.object*.

   * Add the ability to ignore files based on regex matching, with the
     new "--ignore-patterns" option.

     This addresses issue #156 by allowing for multiple ignore
     patterns to be specified. Rather than clobber the existing ignore
     option, we introduced a new one called ignore-patterns.

   * Added a new error, 'trailing-newlines', which is emitted when a
     file has trailing new lines.

     Closes issue #682.

   * Add a new option, 'redefining-builtins-modules', for controlling
     the modules which can redefine builtins, such as six.moves and
     future.builtins.

     Close #464.

   * 'reimported' is emitted when the same name is imported from
     different module.

     Close #162.

   * Add a new recommendation checker, 'consider-iterating-
     dictionary', which is emitted which is emitted when a dictionary
     is iterated through .keys().

     Close #699

   * Use the configparser backport for Python 2

     This fixes a problem we were having with comments inside values,
     which is fixed in Python 3's configparser. Close #828

   * A new error was added, 'invalid-length-returned', when the
     *__len__* special method returned something else than a non-
     negative number.

     Close issue #557

   * Switch to using isort internally for wrong-import-order.

     Closes #879.

   * check_docs extension can find constructor parameters in __init__.

     Closes #887.

   * Don't warn about invalid-sequence-index if the indexed object has
     unknown base classes.

     Closes #867

   * Don't crash when checking, for super-init-not-called, a method
     defined in an if block.

   * Do not emit import-error or no-name-in-module for fallback import
     blocks by default.

     Until now, we warned with these errors when a fallback import
     block (a TryExcept block that contained imports for Python 2 and
     3) was found, but this gets cumbersome when trying to write
     compatible code. As such, we don't check these blocks by default,
     but the analysis can be enforced by using the new "--analyse-
     fallback-block" flag.

     Close #769.


What's New in Pylint 1.5.5?
===========================

Release date: 2016-03-21

   * Let visit_importfrom from Python 3 porting checker be called when
     everything is disabled

     Because the visit method was filtering the patterns it was
     expecting to be activated, it didn't run when everything but one
     pattern was disabled, leading to spurious false positives

     Close #852

   * Don't emit unsubscriptable-value for classes with unknown base
     classes.

     Close #776.

   * Use an OrderedDict for storing the configuration elements

     This fixes an issue related to impredictible order of the disable
     / enable elements from a config file. In certain cases, the
     disable was coming before the enable which resulted in classes of
     errors to be enabled, even though the intention was to disable
     them. The best example for this was in the context of running
     multiple processes, each one of it having different enables /
     disables that affected the output.

     Close #815

   * Don't consider bare and broad except handlers as ignoring
     NameError, AttributeError and similar exceptions, in the context
     of checkers for these issues.

     Closes issue #826


What's New in Pylint 1.5.4?
===========================

Release date: 2016-01-15

   * Merge StringMethodChecker with StringFormatChecker. This fixes a
     bug where disabling all the messages and enabling only a handful
     of messages from the StringFormatChecker would have resulted in
     no messages at all.

   * Don't apply unneeded-not over sets.


What's New in Pylint 1.5.3?
===========================

Release date: 2016-01-11

   * Handle the import fallback idiom with regard to wrong-import-
     order.

     Closes issue #750.

   * Decouple the displaying of reports from the displaying of
     messages

     Some reporters are aggregating the messages instead of displaying
     them when they are available. The actual displaying was
     conflatted in the generate_reports. Unfortunately this behaviour
     was flaky and in the case of the JSON reporter, the messages
     weren't shown at all if a file had syntax errors or if it was
     missing. In order to fix this, the aggregated messages can now be
     displayed with Reporter.display_message, while the reports are
     displayed with display_reports.

     Closes issues #766 and #765.

   * Ignore function calls with variadic arguments without a context.

     Inferring variadic positional arguments and keyword arguments
     will result into empty Tuples and Dicts, which can lead in some
     cases to false positives with regard to no-value-for-parameter.
     In order to avoid this, until we'll have support for call context
     propagation, we're ignoring such cases if detected. Closes issue
     #722.

   * Treat AsyncFunctionDef just like FunctionDef nodes, by
     implementing visit_asyncfunctiondef in terms of
     visit_functiondef.

     Closes issue #767.

   * Take in account kwonlyargs when verifying that arguments are
     defined with the check_docs extension.

     Closes issue #745.

   * Suppress reporting 'unneeded-not' inside *__ne__* methods

     Closes issue #749.


What's New in Pylint 1.5.2?
===========================

Release date: 2015-12-21

   * Don't crash if graphviz is not installed, instead emit a warning
     letting the user to know.

     Closes issue #168.

   * Accept only functions and methods for the deprecated-method
     checker.

     This prevents a crash which can occur when an object doesn't have
     .qname() method after the inference.

   * Don't emit super-on-old-class on classes with unknown bases.
     Closes issue #721.

   * Allow statements in *if* or *try* blocks containing imports.

     Closes issue #714.


What's New in Pylint 1.5.1?
===========================

Release date: 2015-12-02

   * Fix a crash which occurred when old visit methods are encountered
     in plugin modules. Closes issue #711.

   * Add wrong-import-position to check_messages's decorator arguments
     for ImportChecker.leave_module This fixes an esoteric bug which
     occurs when ungrouped-imports and wrong-import-order are disabled
     and pylint is executed on multiple files. What happens is that
     without wrong-import-position in check_messages, leave_module
     will never be called, which means that the first non-import node
     from other files might leak into the current file, leading to
     wrong-import-position being emitted by pylint.

   * Fix a crash which occurred when old visit methods are encountered
     in plugin modules. Closes issue #711.

   * Don't emit import-self and cyclic-import for relative imports of
     modules with the same name as the package itself. Closes issues
     #708 and #706.


What's New in Pylint 1.5.0?
===========================

Release date: 2015-11-29

   * Added multiple warnings related to imports. 'wrong-import-order'
     is emitted when PEP 8 recommendations regarding imports are not
     respected (that is, standard imports should be followed by third-
     party imports and then by local imports). 'ungrouped-imports' is
     emitted when imports from the same package or module are not
     placed together, but scattered around in the code. 'wrong-import-
     position' is emitted when code is mixed with imports, being
     recommended for the latter to be at the top of the file, in order
     to figure out easier by a human reader what dependencies a module
     has. Closes issue #692.

   * Added a new refactoring warning, 'unneeded-not', emitted when an
     expression with the not operator could be simplified. Closes
     issue #670.

   * Added a new refactoring warning, 'simplifiable-if-statement',
     used when an if statement could be reduced to a boolean
     evaluation of its test. Closes issue #698.

   * Added a new refactoring warning, 'too-many-boolean-expressions',
     used when an if statement contains too many boolean expressions,
     which makes the code less maintainable and harder to understand.
     Closes issue #677.

   * Property methods are shown as attributes instead of functions in
     pyreverse class diagrams. Closes Issue #284

   * Add a new refactoring error, 'too-many-nested-blocks', which is
     emitted when a function or a method has too many nested blocks,
     which makes the code less readable and harder to understand.
     Closes issue #668.

   * Add a new error, 'unsubscriptable-object', that is emitted when
     value used in subscription expression doesn't support
     subscription (i.e. doesn't define __getitem__ method).

   * Don't warn about abstract classes instantiated in their own body.
     Closes issue #627.

   * Obsolete options are not present by default in the generated
     configuration file. Closes issue #632.

   * non-iterator-returned can detect classes with iterator-
     metaclasses. Closes issue #679.

   * Add a new error, 'unsupported-membership-test', emitted when
     value to the right of the 'in' operator doesn't support
     membership test protocol (i.e. doesn't define
     __contains__/__iter__/__getitem__)

   * Add new errors, 'not-an-iterable', emitted when non-iterable
     value is used in an iterating context (starargs, for-statement,
     comprehensions, etc), and 'not-a-mapping', emitted when non-
     mapping value is used in a mapping context. Closes issue #563.

   * Make 'no-self-use' checker not emit a warning if there is a
     'super()' call inside the method. Closes issue #667.

   * Add checker to identify multiple imports on one line. Closes
     issue #598.

   * Fix unused-argument false positive when the "+=" operator is
     used. Closes issue #518.

   * Don't emit import-error for ignored modules. PyLint will not emit
     import errors for any import which is, or is a subpackage of, a
     module in the ignored-modules list. Closes issue #223.

   * Fix unused-import false positive when the import is used in a
     class assignment. Closes issue #475

   * Add a new error, 'not-context-manager', emitted when something
     that doesn't implement __enter__ and __exit__ is used in a with
     statement.

   * Add a new warning, 'confusing-with-statement', emitted by the
     base checker, when an ambiguous looking with statement is used.
     For example *with open() as first, second* which looks like a
     tuple assignment but is actually 2 context managers.

   * Add a new warning, 'duplicate-except', emitted when there is an
     exception handler which handles an exception type that was
     handled before. Closes issue #485.

   * A couple of warnings got promoted to errors, since they could
     uncover potential bugs in the code. These warnings are:
     assignment-from-none, unbalanced-tuple-unpacking, unpacking-non-
     sequence, non-iterator-returned. Closes issue #388.

   * Allow ending a pragma control with a semicolon. In this way,
     users can continue a pragma control with a reason for why it is
     used, as in *# pylint: disable=old-style-class;reason=...*.
     Closes issue #449.

   * --jobs can be used with --load-plugins now. Closes issue #456.

   * Improve the performance of --jobs when dealing only with a
     package name. Closes issue #479.

   * Don't emit an unused-wildcard-import when the imported name comes
     from another module and it is in fact a __future__ name.

   * The colorized reporter now works on Windows. Closes issue #96.

   * Remove pointless-except warning. It was previously disabled by
     default and it wasn't very useful. Closes issue #506.

   * Fix a crash on Python 3 related to the string checker, which
     crashed when it encountered a bytes string with a .format method
     called.

   * Don't warn about no-self-use for builtin properties.

   * Fix a false positive for bad-reversed-sequence, when a subclass
     of a *dict* provides a __reversed__ method.

   * Change the default no-docstring-rgx so missing-docstring isn't
     emitted for private functions.

   * Don't emit redefined-outer-name for __future__ directives. Closes
     issue #520.

   * Provide some hints for the bad-builtin message. Closes issue
     #522.

   * When checking for invalid arguments to a callable, in
     typecheck.py, look up for the __init__ in case the found __new__
     comes from builtins.

     Since the __new__ comes from builtins, it will not have attached
     any information regarding what parameters it expects, so the
     check will be useless. Retrieving __init__ in that case will at
     least detect a couple of false negatives. Closes issue #429.

   * Don't emit no-member for classes with unknown bases.

     Since we don't know what those bases might add, we simply ignore
     the error in this case.

   * Lookup in the implicit metaclass when checking for no-member, if
     the class in question has an implicit metaclass, which is True
     for new style classes. Closes issue #438.

   * Add two new warnings, duplicate-bases and inconsistent-mro.

     duplicate-bases is emitted when a class has the same bases listed
     more than once in its bases definition, while inconsistent-mro is
     emitted when no sane mro hierarchy can be determined. Closes
     issue #526.

   * Remove interface-not-implemented warning. Closes issue #532.

   * Remove the rest of interface checks: interface-is-not-class,
     missing-interface-method, unresolved-interface. The reason is
     that its better to start recommending ABCs instead of the old
     Zope era of interfaces. One side effect of this change is that
     ignore-iface-methods becomes a noop, it's deprecated and it will
     be removed at some time.

   * Emit a proper deprecation warning for
     reporters.BaseReporter.add_message.

     The alternative way is to use handle_message. add_message will be
     removed in Pylint 1.6.

   * Added new module 'extensions' for optional checkers with the test
     directory 'test/extensions' and documentation file
     'doc/extensions.rst'.

   * Added new checker 'extensions.check_docs' that verifies parameter
     documention in Sphinx, Google, and Numpy style.

   * Detect undefined variable cases, where the "definition" of an
     undefined variable was in del statement. Instead of emitting
     used-before-assignment, which is totally misleading, it now emits
     undefined-variable. Closes issue #528.

   * Don't emit attribute-defined-outside-init and access-member-
     before-definition for mixin classes. Actual errors can occur in
     mixin classes, but this is controlled by the ignore-mixin-members
     option. Closes issue #412.

   * Improve the detection of undefined variables and variables used
     before assignment for variables used as default arguments to
     function, where the variable was first defined in the class
     scope. Closes issue #342 and issue #404.

   * Add a new warning, 'unexpected-special-method-signature', which
     is emitted when a special method (dunder method) doesn't have the
     expected signature, which can lead to actual errors in the
     application code. Closes issue #253.

   * Remove 'bad-context-manager' due to the inclusion of 'unexpected-
     special-method-signature'.

   * Don't emit no-name-in-module if the import is guarded by an
     ImportError, Exception or a bare except clause.

   * Don't emit no-member if the attribute access node is protected by
     an except handler, which handles AttributeError, Exception or it
     is a bare except.

   * Don't emit import-error if the import is guarded by an
     ImportError, Exception or a bare except clause.

   * Don't emit undefined-variable if the node is guarded by a
     NameError, Exception or bare except clause.

   * Add a new warning, 'using-constant-test', which is emitted when a
     conditional statement (If, IfExp) uses a test which is always
     constant, such as numbers, classes, functions etc. This is most
     likely an error from the user's part. Closes issue #524.

   * Don't emit 'raising-non-exception' when the exception has unknown
     bases. We don't know what those bases actually are and it's
     better to assume that the user knows what he is doing rather than
     emitting a message which can be considered a false positive.

   * Look for a .pylintrc configuration file in the current folder, if
     pylintrc is not found. Dotted pylintrc files will not be searched
     in the parents of the current folder, as it is done for pylintrc.

   * Add a new error, 'invalid-unary-type-operand', emitted when an
     unary operand is used on something which doesn't support that
     operation (for instance, using the unary bitwise inversion
     operator on an instance which doesn't implement __invert__).

   * Take in consideration differences between arguments of various
     type of functions (classmethods, staticmethods, properties) when
     checking for *arguments-differ*. Closes issue #548.

   * astroid.inspector was moved to pylint.pyreverse, since it belongs
     there and it doesn't need to be in astroid.

   * astroid.utils.LocalsVisitor was moved to
     pylint.pyreverse.LocalsVisitor.

   * pylint.checkers.utils.excepts_import_error was removed. Use
     pylint.chekcers.utils.error_of_type instead.

   * Don't emit undefined-all-variables for nodes which can't be
     inferred (YES nodes).

   * yield-outside-func is also emitted for *yield from*.

   * Add a new error, 'too-many-star-expressions', emitted when there
     are more than one starred expression (**x*) in an assignment. The
     warning is emitted only on Python 3.

   * Add a new error, 'invalid-star-assignment-target', emitted when a
     starred expression (**x*) is used as the lhs side of an
     assignment, as in **x = [1, 2]*. This is not a SyntaxError on
     Python 3 though.

   * Detect a couple of objects which can't be base classes (bool,
     slice, range and memoryview, which weren't detected until now).

   * Add a new error for the Python 3 porting checker, *import-star-
     module-level*, which is used when a star import is detected in
     another scope than the module level, which is an error on Python
     3. Using this will emit a SyntaxWarning on Python 2.

   * Add a new error, 'star-needs-assignment-target', emitted on
     Python 3 when a Starred expression (**x*) is not used in an
     assignment target. This is not caught when parsing the AST on
     Python 3, so it needs to be a separate check.

   * Add a new error, 'unsupported-binary-operation', emitted when two
     a binary arithmetic operation is executed between two objects
     which don't support it (a number plus a string for instance).
     This is currently disabled, since the it exhibits way too many
     false positives, but it will be reenabled as soon as possible.

   * New imported features from astroid into pyreverse:
     pyreverse.inspector.Project,
     pyreverse.inspector.project_from_files and
     pyreverse.inspector.interfaces.

     These were moved since they didn't belong in astroid.

   * Enable misplaced-future for Python 3. Closes issue #580.

   * Add a new error, 'nonlocal-and-global', which is emitted when a
     name is found to be both nonlocal and global in the same scope.
     Closes issue #581.

   * ignored-classes option can work with qualified names (ignored-
     classes=optparse.Values) Closes issue #297.

   * ignored-modules can work with qualified names as well as with
     Unix pattern matching for recursive ignoring. Closes issues #244.

   * Improve detection of relative imports in non-packages, as well as
     importing missing modules with a relative import from a package.

   * Don't emit no-init if not all the bases from a class are known.
     Closes issue #604.

   * --no-space-check option accepts *empty-line* as a possible
     option. Closes issue #541.

   * --generate-rcfile generates by default human readable symbols for
     the --disable option. Closes issue #608.

   * Improved the not-in-loop checker to properly detect more cases.

   * Add a new error, 'continue-in-finally', which is emitted when the
     *continue* keyword is found inside a *finally* clause, which is a
     SyntaxError.

   * The --zope flag is deprecated and it is slated for removal in
     Pylint 1.6.

     The reason behind this removal is the fact that it's a
     specialized flag and there are solutions for the original
     problem: use --generated-members with the members that causes
     problems when using Zope or add AST transforms tailored to the
     zope project.

     At the same time, --include-ids and --symbols will also be
     removed in Pylint 1.6. Closes issue #570.

   * missing-module-attribute was removed and the corresponding CLI
     option, required-attributes, which is slated for removal in
     Pylint 1.6.

   * missing-reversed-argument was removed.

     The reason behind this is that this kind of errors should be
     detected by the type checker for *all* the builtins and not as a
     special case for the reversed builtin. This will happen shortly
     in the future.

   * --comment flag is obsolete and it will be removed in Pylint 1.6.

   * --profile flag is obsolete and it will be removed in Pylint 1.6.

   * Add a new error, 'misplaced-bare-raise'.

     The error is used when a bare raise is not used inside an except
     clause. This can generate a RuntimeError in Python, if there are
     no active exceptions to be reraised. While it works in Python 2
     due to the fact that the exception leaks outside of the except
     block, it's nevertheless a behaviour that a user shouldn't depend
     upon, since it's not obvious to the reader of the code what
     exception will be raised and it will not be compatible with
     Python 3 anyhow. Closes issue #633.

   * Bring logilab-common's ureports into pylint.reporters.

     With this change, we moved away from depending on logilab-common,
     having in Pylint all the components that were used from logilab-
     common. The API should be considered an implementation detail and
     can change at some point in the future. Closes issue #621.

   * *reimported* is emitted for reimported objects on the same line.

     Closes issue #639.

   * Abbreviations of command line options are not supported anymore.

     Using abbreviations for CLI options was never considered to be a
     feature of pylint, this fact being only a side effect of using
     optparse. As this was the case, using --load-plugin or other
     abbreviation for --load-plugins never actually worked, while it
     also didn't raise an error. Closes issue #424.

   * Add a new error, 'nonlocal-without-binding'

     The error is emitted on Python 3 when a nonlocal name is not
     bound to any variable in the parents scopes. Closes issue #582.

   * 'deprecated-module' can be shown for modules which aren't
        available. Closes issue #362.

   * Don't consider a class abstract if its members can't be properly
     inferred.

     This fixes a false positive related to abstract-class-
     instantiated. Closes issue #648.

   * Add a new checker for the async features added by PEP 492.

   * Add a new error, 'yield-inside-async-function', emitted on Python
     3.5 and upwards when the *yield* statement is found inside a new
     coroutine function (PEP 492).

   * Add a new error, 'not-async-context-manager', emitted when an
     async context manager block is used with an object which doesn't
     support this protocol (PEP 492).

   * Add a new convention warning, 'singleton-comparison', emitted
     when comparison to True, False or None is found.

   * Don't emit 'assigning-non-slot' for descriptors. Closes issue
     #652.

   * Add a new error, 'repeated-keyword', when a keyword argument is
     passed multiple times into a function call.

     This is similar with redundant-keyword-arg, but it's mildly
     different that it needs to be a separate error.

   * --enable=all can now be used. Closes issue #142.

   * Add a new convention message, 'misplaced-comparison-constant',
     emitted when a constant is placed in the left hand side of a
     comparison, as in '5 == func()'. This is also called Yoda
     condition, since the flow of code reminds of the Star Wars green
     character, conditions usually encountered in languages with
     variabile assignments in conditional statements.

   * Add a new convention message, 'consider-using-enumerate', which
     is emitted when code that uses *range* and *len* for iterating is
     encountered. Closes issue #684.

   * Added two new refactoring messages, 'no-classmethod-decorator'
     and 'no-staticmethod-decorator', which are emitted when a static
     method or a class method is declared without using decorators
     syntax.

     Closes issue #675.


What's New in Pylint 1.4.3?
===========================

Release date: 2015-03-14

   * Remove three warnings: star-args, abstract-class-little-used,
     abstract-class-not-used. These warnings don't add any real value
     and they don't imply errors or problems in the code.

   * Added a new option for controlling the peephole optimizer in
     astroid. The option "--optimize-ast" will control the peephole
     optimizer, which is used to optimize a couple of AST subtrees.
     The current problem solved by the peephole optimizer is when
     multiple joined strings, with the addition operator, are
     encountered. If the numbers of such strings is high enough,
     Pylint will then fail with a maximum recursion depth exceeded
     error, due to its visitor architecture. The peephole just
     transforms such calls, if it can, into the final resulting string
     and this exhibit a problem, because the visit_binop method stops
     being called (in the optimized AST it will be a Const node).


What's New in Pylint 1.4.2?
===========================

Release date: 2015-03-11

   * Don't require a docstring for empty modules. Closes issue #261.

   * Fix a false positive with *too-few-format-args* string warning,
     emitted when the string format contained a normal positional
     argument ('{0}'), mixed with a positional argument which did an
     attribute access ('{0.__class__}'). Closes issue #463.

   * Take in account all the methods from the ancestors when checking
     for too-few-public-methods. Closes issue #471.

   * Catch enchant errors and emit 'invalid-characters-in-docstring'
     when checking for spelling errors. Closes issue #469.

   * Use all the inferred statements for the super-init-not-called
     check. Closes issue #389.

   * Add a new warning, 'unichr-builtin', emitted by the Python 3
     porting checker, when the unichr builtin is found. Closes issue
     #472.

   * Add a new warning, 'intern-builtin', emitted by the Python 3
     porting checker, when the intern builtin is found. Closes issue
     #473.

   * Add support for editable installations.

   * The HTML output accepts the *--msg-template* option. Patch by Dan
     Goldsmith.

   * Add 'map-builtin-not-iterating' (replacing 'implicit-map-
     evaluation'), 'zip-builtin-not-iterating', 'range-builtin-not-
     iterating', and 'filter-builtin-not-iterating' which are emitted
     by *--py3k* when the appropriate built-in is not used in an
     iterating context (semantics taken from 2to3).

   * Add a new warning, 'unidiomatic-typecheck', emitted when an
     explicit typecheck uses type() instead of isinstance(). For
     example, *type(x) == Y* instead of *isinstance(x, Y)*. Patch by
     Chris Rebert. Closes issue #299.

   * Add support for combining the Python 3 checker mode with the
     --jobs flag (--py3k and --jobs). Closes issue #467.

   * Add a new warning for the Python 3 porting checker, 'using-cmp-
     argument', emitted when the *cmp* argument for the *list.sort* or
     *sorted builtin* is encountered.

   * Make the --py3k flag commutative with the -E flag. Also, this
     patch fixes the leaks of error messages from the Python 3 checker
     when the errors mode was activated. Closes issue #437.


What's New in Pylint 1.4.1?
===========================

Release date: 2015-01-16

   * Look only in the current function's scope for bad-super-call.
     Closes issue #403.

   * Check the return of properties when checking for not-callable.
     Closes issue #406.

   * Warn about using the input() or round() built-ins for Python 3.
     Closes issue #411.

   * Proper abstract method lookup while checking for abstract-class-
     instantiated. Closes issue #401.

   * Use a mro traversal for finding abstract methods. Closes issue
     #415.

   * Fix a false positive with catching-non-exception and tuples of
     exceptions.

   * Fix a false negative with raising-non-exception, when the raise
     used an uninferrable exception context.

   * Fix a false positive on Python 2 for raising-bad-type, when
     raising tuples in the form 'raise (ZeroDivisionError, None)'.

   * Fix a false positive with invalid-slots-objects, where the slot
     entry was a unicode string on Python 2. Closes issue #421.

   * Add a new warning, 'redundant-unittest-assert', emitted when
     using unittest's methods assertTrue and assertFalse with constant
     value as argument. Patch by Vlad Temian.

   * Add a new JSON reporter, usable through -f flag.

   * Add the method names for the 'signature-differs' and 'argument-
     differs' warnings. Closes issue #433.

   * Don't compile test files when installing.

   * Fix a crash which occurred when using multiple jobs and the files
     given as argument didn't exist at all.


What's New in Pylint 1.4.0?
===========================

Release date: 2014-11-23

   * Added new options for controlling the loading of C extensions. By
     default, only C extensions from the stdlib will be loaded into
     the active Python interpreter for inspection, because they can
     run arbitrary code on import. The option *--extension-pkg-
     whitelist* can be used to specify modules or packages that are
     safe to load.

   * Change default max-line-length to 100 rather than 80

   * Drop BaseRawChecker class which were only there for backward
     compat for a while now

   * Don't try to analyze string formatting with objects coming from
     function arguments. Closes issue #373.

   * Port source code to be Python 2/3 compatible. This drops the need
     for 2to3, but does drop support for Python 2.5.

   * Each message now comes with a confidence level attached, and can
     be filtered base on this level. This allows to filter out all
     messages that were emitted even though an inference failure
     happened during checking.

   * Improved presenting unused-import message. Closes issue #293.

   * Add new checker for finding spelling errors. New messages: wrong-
     spelling-in-comment, wrong-spelling-in-docstring. New options:
     spelling-dict, spelling-ignore-words.

   * Add new '-j' option for running checks in sub-processes.

   * Added new checks for line endings if they are mixed (LF vs CRLF)
     or if they are not as expected. New messages: mixed-line-endings,
     unexpected-line-ending-format. New option: expected-line-ending-
     format.

   * 'dangerous-default-value' no longer evaluates the value of the
     arguments, which could result in long error messages or sensitive
     data being leaked. Closes issue #282

   * Fix a false positive with string formatting checker, when
     encountering a string which uses only position-based arguments.
     Closes issue #285.

   * Fix a false positive with string formatting checker, when using
     keyword argument packing. Closes issue #288.

   * Proper handle class level scope for lambdas.

   * Handle 'too-few-format-args' or 'too-many-format-args' for format
     strings with both named and positional fields. Closes issue #286.

   * Analyze only strings by the string format checker. Closes issue
     #287.

   * Properly handle nested format string fields. Closes issue #294.

   * Don't emit 'attribute-defined-outside-init' if the attribute was
     set by a function call in a defining method. Closes issue #192.

   * Properly handle unicode format strings for Python 2. Closes issue
     #296.

   * Don't emit 'import-error' if an import was protected by a try-
     except, which excepted ImportError.

   * Fix an 'unused-import' false positive, when the error was emitted
     for all the members imported with 'from import' form. Closes
     issue #304.

   * Don't emit 'invalid-name' when assigning a name in an ImportError
     handler. Closes issue #302.

   * Don't count branches from nested functions.

   * Fix a false positive with 'too-few-format-args', when the format
     strings contains duplicate manual position arguments. Closes
     issue #310.

   * fixme regex handles comments without spaces after the hash.
     Closes issue #311.

   * Don't emit 'unused-import' when a special object is imported
     (__all__, __doc__ etc.). Closes issue #309.

   * Look in the metaclass, if defined, for members not found in the
     current class. Closes issue #306.

   * Don't emit 'protected-access' if the attribute is accessed using
     a property defined at the class level.

   * Detect calls of the parent's __init__, through a binded super()
     call.

   * Check that a class has an explicitly defined metaclass before
     emitting 'old-style-class' for Python 2.

   * Emit 'catching-non-exception' for non-class nodes. Closes issue
     #303.

   * Order of reporting is consistent.

   * Add a new warning, 'boolean-datetime', emitted when an instance
     of 'datetime.time' is used in a boolean context. Closes issue
     #239.

   * Fix a crash which ocurred while checking for 'method-hidden',
     when the parent frame was something different than a function.

   * Generate html output for missing files. Closes issue #320.

   * Fix a false positive with 'too-many-format-args', when the format
     string contains mixed attribute access arguments and manual
     fields. Closes issue #322.

   * Extend the cases where 'undefined-variable' and 'used-before-
     assignment' can be detected. Closes issue #291.

   * Add support for customising callback identifiers, by adding a new
     '--callbacks' command line option. Closes issue #326.

   * Add a new warning, 'logging-format-interpolation', emitted when
     .format() string interpolation is used within logging function
     calls.

   * Don't emit 'unbalanced-tuple-unpacking' when the rhs of the
     assignment is a variable length argument. Closes issue #329.

   * Add a new warning, 'inherit-non-class', emitted when a class
     inherits from something which is not a class. Closes issue #331.

   * Fix another false positives with 'undefined-variable', where the
     variable can be found as a class assignment and used in a
     function annotation. Closes issue #342.

   * Handle assignment of the string format method to a variable.
     Closes issue #351.

   * Support wheel packaging format for PyPi. Closes issue #334.

   * Check that various built-ins that do not exist in Python 3 are
     not used: apply, basestring, buffer, cmp, coerce, execfile, file,
     long raw_input, reduce, StandardError, unicode, reload and
     xrange.

   * Warn for magic methods which are not used in any way in Python 3:
     __coerce__, __delslice__, __getslice__, __setslice__, __cmp__,
     __oct__, __nonzero__ and __hex__.

   * Don't emit 'assigning-non-slot' when the assignment is for a
     property. Closes issue #359.

   * Fix for regression: '{path}' was no longer accepted in '--msg-
     template'.

   * Report the percentage of all messages, not just for errors and
     warnings. Closes issue #319.

   * 'too-many-public-methods' is reported only for methods defined in
     a class, not in its ancestors. Closes issue #248.

   * 'too-many-lines' disable pragma can be located on any line, not
     only the first. Closes issue #321.

   * Warn in Python 2 when an import statement is found without a
     corresponding *from __future__ import absolute_import*.

   * Warn in Python 2 when a non-floor division operation is found
     without a corresponding *from __future__ import division*.

   * Add a new option, 'exclude-protected', for excluding members from
     the protected-access warning. Closes issue #48.

   * Warn in Python 2 when using dict.iter*(), dict.view*(); none of
     these methods are available in Python 3.

   * Warn in Python 2 when calling an object's next() method; Python 3
     uses __next__() instead.

   * Warn when assigning to __metaclass__ at a class scope; in Python
     3 a metaclass is specified as an argument to the 'class'
     statement.

   * Warn when performing parameter tuple unpacking; it is not
     supported in Python 3.

   * 'abstract-class-instantiated' is also emitted for Python 2. It
     was previously disabled.

   * Add 'long-suffix' error, emitted when encountering the long
     suffix on numbers.

   * Add support for disabling a checker, by specifying an 'enabled'
     attribute on the checker class.

   * Add a new CLI option, --py3k, for enabling Python 3 porting mode.
     This mode will disable all other checkers and will emit warnings
     and errors for constructs which are invalid or removed in Python
     3.

   * Add 'old-octal-literal' to Python 3 porting checker, emitted when
     encountering octals with the old syntax.

   * Add 'implicit-map-evaluation' to Python 3 porting checker,
     emitted when encountering the use of map builtin, without
     explicit evaluation.


What's New in Pylint 1.3.0?
===========================

Release date: 2014-07-26

   * Allow hanging continued indentation for implicitly concatenated
     strings. Closes issue #232.

   * Pylint works under Python 2.5 again, and its test suite passes.

   * Fix some false positives for the cellvar-from-loop warnings.
     Closes issue #233.

   * Return new astroid class nodes when the inferencer can detect
     that that result of a function invocation on a type (like *type*
     or *abc.ABCMeta*) is requested. Closes #205.

   * Emit 'undefined-variable' for undefined names when using the
     Python 3 *metaclass=* argument.

   * Checkers respect priority now. Close issue #229.

   * Fix a false positive regarding W0511. Closes issue #149.

   * Fix unused-import false positive with Python 3 metaclasses
     (#143).

   * Don't warn with 'bad-format-character' when encountering the 'a'
     format on Python 3.

   * Add multiple checks for PEP 3101 advanced string formatting:
     'bad-format-string', 'missing-format-argument-key', 'unused-
     format-string-argument', 'format-combined-specification',
     'missing-format-attribute' and 'invalid-format-index'.

   * Issue broad-except and bare-except even if the number of except
     handlers is different than 1. Fixes issue #113.

   * Issue attribute-defined-outside-init for all cases, not just for
     the last assignment. Closes issue #262.

   * Emit 'not-callable' when calling properties. Closes issue #268.

   * Fix a false positive with unbalanced iterable unpacking, when
     encountering starred nodes. Closes issue #273.

   * Add new checks, 'invalid-slice-index' and 'invalid-sequence-
     index' for invalid sequence and slice indices.

   * Add 'assigning-non-slot' warning, which detects assignments to
     attributes not defined in slots.

   * Don't emit 'no-name-in-module' for ignored modules. Closes issue
     #223.

   * Fix an 'unused-variable' false positive, where the variable is
     assigned through an import. Closes issue #196.

   * Definition order is considered for classes, function arguments
     and annotations. Closes issue #257.

   * Don't emit 'unused-variable' when assigning to a nonlocal. Closes
     issue #275.

   * Do not let ImportError propagate from the import checker, leading
     to crash in some namespace package related cases. Closes issue
     #203.

   * Don't emit 'pointless-string-statement' for attribute docstrings.
     Closes issue #193.

   * Use the proper mode for pickle when opening and writing the stats
     file. Closes issue #148.

   * Don't emit hidden-method message when the attribute has been
     monkey-patched, you're on your own when you do that.

   * Only emit attribute-defined-outside-init for definition within
     the same module as the offended class, avoiding to mangle the
     output in some cases.

   * Don't emit 'unnecessary-lambda' if the body of the lambda call
     contains call chaining. Closes issue #243.

   * Don't emit 'missing-docstring' when the actual docstring uses
     *.format*. Closes issue #281.


What's New in Pylint 1.2.1?
===========================

Release date: 2014-04-30

   * Restore the ability to specify the init-hook option via the
     configuration file, which was accidentally broken in 1.2.0.

   * Add a new warning [bad-continuation] for badly indentend
     continued lines.

   * Emit [assignment-from-none] when the function contains bare
     returns. Fixes BitBucket issue #191.

   * Added a new warning for closing over variables that are defined
     in loops. Fixes Bitbucket issue #176.

   * Do not warn about u escapes in string literals when Unicode
     literals are used for Python 2.*. Fixes BitBucket issue #151.

   * Extend the checking for unbalanced-tuple-unpacking and unpacking-
     non-sequence to instance attribute unpacking as well.

   * Fix explicit checking of python script (1.2 regression, #219)

   * Restore --init-hook, renamed accidentally into --init-hooks in
     1.2.0 (#211)

   * Add 'indexing-exception' warning, which detects that indexing an
     exception occurs in Python 2 (behaviour removed in Python 3).


What's New in Pylint 1.2.0?
===========================

Release date: 2014-04-18

   * Pass the current python paths to pylint process when invoked via
     epylint.  Fixes BitBucket issue #133.

   * Add -i / --include-ids and -s / --symbols back as completely
     ignored options. Fixes BitBucket issue #180.

   * Extend the number of cases in which logging calls are detected.
     Fixes bitbucket issue #182.

   * Improve pragma handling to not detect pylint:* strings in non-
     comments. Fixes BitBucket issue #79.

   * Do not crash with UnknownMessage if an unknown message ID/name
     appears in disable or enable in the configuration. Patch by Cole
     Robinson. Fixes bitbucket issue #170.

   * Add new warning 'eval-used', checking that the builtin function
     *eval* was used.

   * Make it possible to show a naming hint for invalid name by
     setting include-naming-hint. Also make the naming hints
     configurable. Fixes BitBucket issue #138.

   * Added support for enforcing multiple, but consistent name styles
     for different name types inside a single module; based on a patch
     written by morbo@google.com.

   * Also warn about empty docstrings on overridden methods;
     contributed by sebastianu@google.com.

   * Also inspect arguments to constructor calls, and emit relevant
     warnings; contributed by sebastianu@google.com.

   * Added a new configuration option logging-modules to make the list
     of module names that can be checked for 'logging-not-lazy' et.
     al. configurable; contributed by morbo@google.com.

   * ensure init-hooks is evaluated before other options, notably
     load-plugins (#166)

   * Python 2.5 support restored: fixed small issues preventing pylint
     to run on python 2.5. Bitbucket issues #50 and #62.

   * bitbucket #128: pylint doesn't crash when looking for used-
     before-assignment in context manager assignments.

   * Add new warning, 'bad-reversed-sequence', for checking that the
     reversed() builtin receive a sequence (implements __getitem__ and
     __len__, without being a dict or a dict subclass) or an instance
     which implements __reversed__.

   * Mark *file* as a bad function when using python2 (closes #8).

   * Add new warning 'bad-exception-context', checking that *raise ...
     from ...* uses a proper exception context (None or an exception).

   * Enhance the check for 'used-before-assignment' to look for
     'nonlocal' uses.

   * Emit 'undefined-all-variable' if a package's __all__ variable
     contains a missing submodule (closes #126).

   * Add a new warning 'abstract-class-instantiated' for checking that
     abstract classes created with *abc* module and with abstract
     methods are instantied.

   * Do not warn about 'return-arg-in-generator' in Python 3.3+.

   * Do not warn about 'abstract-method' when the abstract method is
     implemented through assignment (#155).

   * Improve cyclic import detection in the case of packages, patch by
     Buck Golemon

   * Add new warnings for checking proper class __slots__: *invalid-
     slots-object* and *invalid-slots*.

   * Search for rc file in *~/.config/pylintrc* if *~/.pylintrc*
     doesn't exists (#121)

   * Don't register the newstyle checker w/ python >= 3

   * Fix unused-import false positive w/ augment assignment (#78)

   * Fix access-member-before-definition false negative wrt aug assign
     (#164)

   * Do not attempt to analyze non python file, eg .so file (#122)


What's New in Pylint 1.1.0?
===========================

Release date: 2013-12-22

   * Add new check for use of deprecated pragma directives "pylint
     :disable-msg" or "pylint:enable-msg" (I0022, deprecated-pragma)
     which was previously emmited as a regular warn().

   * Avoid false used-before-assignment for except handler defined
     identifier used on the same line (#111).

   * Combine 'no-space-after-operator', 'no-space-after-comma' and
     'no-space-before-operator' into a new warning 'bad-whitespace'.

   * Add a new warning 'superfluous-parens' for unnecessary
     parentheses after certain keywords.

   * Fix a potential crash in the redefine-in-handler warning if the
     redefined name is a nested getattr node.

   * Add a new option for the multi-statement warning to allow single-
     line if statements.

   * Add 'bad-context-manager' error, checking that '__exit__' special
     method accepts the right number of arguments.

   * Run pylint as a python module 'python -m pylint' (anatoly
     techtonik).

   * Check for non-exception classes inside an except clause.

   * epylint support options to give to pylint after the file to
     analyze and have basic input validation (bitbucket #53 and #54),
     patches provided by felipeochoa and Brian Lane.

   * Added a new warning, 'non-iterator-returned', for non-iterators
     returned by '__iter__'.

   * Add new checks for unpacking non-sequences in assignments
     (unpacking-non-sequence) as well as unbalanced tuple unpacking
     (unbalanced-tuple-unpacking).

   * useless-else-on-loop not emited if there is a break in the else
     clause of inner loop (#117).

   * don't mark *input* as a bad function when using python3 (#110).

   * badly-implemented-container caused several problems in its
     current implementation. Deactivate it until we have something
     better. See #112 for instance.

   * Use attribute regexp for properties in python3, as in python2

   * Create the PYLINTHOME directory when needed, it might fail and
     lead to spurious warnings on import of pylint.config.

   * Fix setup.py so that pylint properly install on Windows when
     using python3

   * Various documentation fixes and enhancements

   * Fix issue #55 (false-positive trailing-whitespace on Windows)


What's New in Pylint 1.0.0?
===========================

Release date: 2013-08-06

   * Add check for the use of 'exec' function

   * New --msg-template option to control output, deprecating "msvc"
     and "parseable" output formats as well as killing *--include-ids*
     and *--symbols* options

   * Do not emit [fixme] for every line if the config value 'notes' is
     empty, but [fixme] is enabled.

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

   * Do not double-check parameter names with the regex for parameters
     and inline variables.

   * Added a new warning missing-final-newline (C0304) for files
     missing the final newline.

   * Methods that are decorated as properties are now treated as
     attributes for the purposes of name checking.

   * Names of derived instance class member are not checked any more.

   * 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()).

   * Simplified invalid-name message

   * Added a new warning invalid-encoded-data (W0512) for files that
     contain data that cannot be decoded with the specified or default
     encoding.

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

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

   * Add new name type 'class_attribute' for attributes defined in
     class scope. By default, allow both const and variable names.

   * New warning trailing-whitespace (C0303) that warns about trailing
     whitespace.

   * Added a new warning unpacking-in-except (W0712) about unpacking
     exceptions in handlers, which is unsupported in Python 3.

   * 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.

   * New utility classes for per-checker unittests in testutils.py

   * 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.

   * Added a new warning 'old-raise-syntax' for the deprecated syntax
     raise Exception, args

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

   * Fix spelling of max-branchs option, now max-branches

   * 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.

   * Follow astng renaming to astroid

   * bitbucket #37: check for unbalanced unpacking in assignments

   * bitbucket #25: fix incomplete-protocol false positive for read-
     only containers like tuple

   * bitbucket #16: fix False positive E1003 on Python 3 for argument-
     less super()

   * bitbucket #6: put back documentation in source distribution

   * bitbucket #15: epylint shouldn't hang anymore when there is a
     large output on pylint'stderr

   * bitbucket #7: fix epylint w/ python3

   * bitbucket #3: remove string module from the default list of
     deprecated modules


What's New in Pylint 0.28.0?
============================

Release date: 2013-04-25

   * bitbucket #1: fix "dictionary changed size during iteration"
     crash

   * #74013: new E1310[bad-str-strip-call] message warning when a call
     to a {l,r,}strip method contains duplicate characters (patch by
     Torsten Marek)

   * #123233: new E0108[duplicate-argument-name] message reporting
     duplicate argument names

   * #81378: emit W0120[useless-else-on-loop] for loops without break

   * #124660: internal dependencies should not appear in external
     dependencies report

   * #124662: fix name error causing crash when symbols are included
     in output messages

   * #123285: apply pragmas for warnings attached to lines to physical
     source code lines

   * #123259: do not emit E0105 for yield expressions inside lambdas

   * #123892: don't crash when attempting to show source code line
     that can't be encoded with the current locale settings

   * Simplify checks for dangerous default values by unifying tests
     for all different mutable compound literals.

   * Improve the description for E1124[redundant-keyword-arg]


What's New in Pylint 0.27.0?
============================

Release date: 2013-02-26

   * #20693: replace pylint.el by Ian Eure version (patch by J.Kotta)

   * #105327: add support for --disable=all option and deprecate the
     'disable-all' inline directive in favour of 'skip-file' (patch by
     A.Fayolle)

   * #110840: add messages I0020 and I0021 for reporting of suppressed
     messages and useless suppression pragmas. (patch by Torsten
     Marek)

   * #112728: add warning E0604 for non-string objects in __all__
     (patch by Torsten Marek)

   * #120657: add warning W0110/deprecated-lambda when a map/filter of
     a lambda could be a comprehension (patch by Martin Pool)

   * #113231: logging checker now looks at instances of Logger classes
     in addition to the base logging module. (patch by Mike Bryant)

   * #111799: don't warn about octal escape sequence, but warn about o
     which is not octal in Python (patch by Martin Pool)

   * #110839: bind <F5> to Run button in pylint-gui

   * #115580: fix erroneous W0212 (access to protected member) on
     super call (patch by Martin Pool)

   * #110853: fix a crash when an __init__ method in a base class has
     been created by assignment rather than direct function definition
     (patch by Torsten Marek)

   * #110838: fix pylint-gui crash when include-ids is activated
     (patch by Omega Weapon)

   * #112667: fix emission of reimport warnings for mixed imports and
     extend the testcase (patch by Torsten Marek)

   * #112698: fix crash related to non-inferable __all__ attributes
     and invalid __all__ contents (patch by Torsten Marek)

   * Python 3 related fixes:

   * #110213: fix import of checkers broken with python 3.3, causing
        "No such message id W0704" breakage

   * #120635: redefine cmp function used in pylint.reporters

   * Include full warning id for I0020 and I0021 and make sure to
     flush warnings after each module, not at the end of the pylint
     run. (patch by Torsten Marek)

   * Changed the regular expression for inline options so that it must
     be preceeded by a # (patch by Torsten Marek)

   * Make dot output for import graph predictable and not depend on
     ordering of strings in hashes. (patch by Torsten Marek)

   * Add hooks for import path setup and move pylint's sys.path
     modifications into them. (patch by Torsten Marek)


What's New in Pylint 0.26.0?
============================

Release date: 2012-10-05

   * #106534: add --ignore-imports option to code similarity checking
     and 'symilar' command line tool (patch by Ry4an Brase)

   * #104571: check for anomalous backslash escape, introducing new
     W1401 and W1402 messages (patch by Martin Pool)

   * #100707: check for boolop being used as exception class,
     introducing new W0711 message (patch by Tim Hatch)

   * #4014: improve checking of metaclass methods first args,
     introducing new C0204 message (patch by lothiraldan@gmail.com
     finalized by sthenault)

   * #4685: check for consistency of a module's __all__ variable,
     introducing new E0603 message

   * #105337: allow custom reporter in output-format (patch by Kevin
     Jing Qiu)

   * #104420: check for protocol completness and avoid false R0903
     (patch by Peter Hammond)

   * #100654: fix grammatical error for W0332 message (using 'l' as
     long int identifier)

   * #103656: fix W0231 false positive for missing call to
     object.__init__ (patch by lothiraldan@gmail.com)

   * #63424: fix similarity report disabling by properly renaming it
     to RP0801

   * #103949: create a console_scripts entry point to be used by
     easy_install, buildout and pip

   * fix cross-interpreter issue (non compatible access to
     __builtins__)

   * stop including tests files in distribution, they causes crash
     when installed with python3 (#72022, #82417, #76910)


What's New in Pylint 0.25.2?
============================

Release date: 2012-07-17

   * #93591: Correctly emit warnings about clobbered variable names
     when an except handler contains a tuple of names instead of a
     single name. (patch by tmarek@google.com)

   * #7394: W0212 (access to protected member) not emited on
     assigments (patch by lothiraldan@gmail.com)

   * #18772; no prototype consistency check for mangled methods (patch
     by lothiraldan@gmail.com)

   * #92911: emit W0102 when sets are used as default arguments in
     functions (patch by tmarek@google.com)

   * #77982: do not emit E0602 for loop variables of comprehensions
     used as argument values inside a decorator (patch by
     tmarek@google.com)

   * #89092: don't emit E0202 (attribute hiding a method) on @property
     methods

   * #92584: fix pylint-gui crash due to internal API change

   * #87192: fix crash when decorators are accessed through more than
     one dot (for instance @a.b is fine, @a.b.c crash)

   * #88914: fix parsing of --generated-members options, leading to
     crash when using a regexp value set

   * fix potential crashes with utils.safe_infer raising
     InferenceError


What's New in Pylint 0.25.1?
============================

Release date: 2011-12-08

   * #81078: Warn if names in  exception handlers clobber overwrite
     existing names (patch by tmarek@google.com)

   * #81113: Fix W0702 messages appearing with the wrong line number.
     (patch by tmarek@google.com)

   * #50461, #52020, #51222: Do not issue warnings when using 2.6's
     property.setter/deleter functionality (patch by dneil@google.com)

   * #9188, #4024: Do not trigger W0631 if a loop variable is assigned
     in the else branch of a for loop.


What's New in Pylint 0.25.0?
============================

Release date: 2011-10-7

   * #74742: make allowed name for first argument of class method
     configurable (patch by Google)

   * #74087: handle case where inference of a module return YES; this
     avoid some cases of "TypeError: '_Yes' object does not support
     indexing" (patch by Google)

   * #74745: make "too general" exception names configurable (patch by
     Google)

   * #74747: crash occurs when lookup up a special attribute in class
     scope (patch by google)

   * #76920: crash if on eg "pylint --rcfile" (patch by Torsten Marek)

   * #77237: warning for E0202 may be very misleading

   * #73941: HTML report messages table is badly rendered


What's New in Pylint 0.24.0?
============================

Release date: 2011-07-18

   * #69738: add regular expressions support for "generated-members"

   * ids of logging and string_format checkers have been changed:
     logging: 65 -> 12, string_format: 99 -> 13 Also add documentation
     to say that ids of range 1-50 shall be reserved to pylint
     internal checkers

   * #69993: Additional string format checks for logging module: check
     for missing arguments, too many arguments, or invalid string
     formats in the logging checker module. Contributed by Daniel
     Arena

   * #69220: add column offset to the reports. If you've a custom
     reporter, this change may break it has now location gain a new
     item giving the column offset.

   * #60828: Fix false positive in reimport check

   * #70495: absolute imports fail depending on module path (patch by
     Jacek Konieczny)

   * #22273: Fix --ignore option documentation to match reality


What's New in Pylint 0.23.0?
============================

Release date: 2011-01-11

   * documentation update, add manpages

   * several performance improvements

   * finalize python3 support

   * new W0106 warning 'Expression "%s" is assigned to nothing'

   * drop E0501 and E0502 messages about wrong source encoding: not
     anymore interesting since it's a syntax error for python >= 2.5
     and we now only support this python version and above.

   * don't emit W0221 or W0222 when methods as variable arguments (eg
     *arg and/or **args). Patch submitted by Charles Duffy.


What's New in Pylint 0.22.0?
============================

Release date: 2010-11-15

   * python versions: minimal python3.x support; drop python < 2.5
     support


What's New in Pylint 0.21.4?
============================

Release date: 2010-10-27

   * fix #48066: pylint crashes when redirecting output containing
     non-ascii characters

   * fix #19799: "pylint -blah" exit with status 2

   * update documentation


What's New in Pylint 0.21.3?
============================

Release date: 2010-09-28

   * restored python 2.3 compatibility. Along with logilab-astng
     0.21.3 and logilab-common 0.52, this will much probably be the
     latest release supporting python < 2.5.


What's New in Pylint 0.21.2?
============================

Release date: 2010-08-26

   * fix #36193: import checker raise exception on cyclic import

   * fix #28796: regression in --generated-members introduced pylint
     0.20

   * some documentation cleanups


What's New in Pylint 0.21.1?
============================

Release date: 2010-06-04

   * fix #28962: pylint crash with new options, due to missing stats
     data while writing the Statistics by types report

   * updated man page to 0.21 or greater command line usage (fix
     debian #582494)


What's New in Pylint 0.21.0?
============================

Release date: 2010-05-11

   * command line updated (closes #9774, #9787, #9992, #22962):

   * all enable-* / disable-* options have been merged into --enable /
     --disable

   * BACKWARD INCOMPATIBLE CHANGE: short name of --errors-only becomes
     -E, -e being affected to --enable

   * pylint --help output much simplified, with --long-help available
     to get the complete one

   * revisited gui, thanks to students from Toronto university (they
     are great contributors to this release!)

   * fix #21591: html reporter produces no output if reports is set to
     'no'

   * fix #4581: not Missing docstring (C0111) warning if a method is
     overridden

   * fix #4683: Non-ASCII characters count double if utf8 encode

   * fix #9018: when using defining-attr-method, method order matters

   * fix #4595: Comma not followed by a space should not occurs on
     trailing comma in list/tuple/dict definition

   * fix #22585: [Patch] fix man warnings for pyreverse.1 manpage

   * fix #20067: AttributeError: 'NoneType' object has no attribute
     'name' with with


What's New in Pylint 0.20.0?
============================

Release date: 2010-03-01

   * fix #19498: fix windows batch file

   * fix #19339: pylint.el : non existing py-mod-map (closes Debian
     Bug report logs - #475939)

   * implement #18860, new W0199 message on assert (a, b)

   * implement #9776, 'W0150' break or return statement in finally
     block may swallow exception.

   * fix #9263, __init__ and __new__ are checked for unused arguments

   * fix #20991, class scope definitions ignored in a genexpr

   * fix #5975, Abstract intermediate class not recognized as such

   * fix #5977, yield and return statement have their own counters, no
     more R0911 (Too many return statements) when a function have many
     yield stamtements

   * implement #5564, function / method arguments with leading "_" are
     ignored in arguments / local variables count.

   * implement #9982, E0711 specific error message when raising
     NotImplemented

   * remove --cache-size option


What's New in Pylint 0.19.0?
============================

Release date: 2009-12-18

   * implement #18947, #5561: checker for function arguments

   * include James Lingard string format checker

   * include simple message (ids) listing by Vincent Ferotin (#9791)

   * --errors-only does not hide fatal error anymore

   * include james Lingard patches for ++/-- and duplicate key in
     dicts

   * include James Lingard patches for function call arguments checker

   * improved flymake code and doc provided by Derek Harland

   * refactor and fix the imports checker

   * fix #18862: E0601 false positive with lambda functions

   * fix #8764: More than one statement on a single line false
     positive with try/except/finally

   * fix #9215: false undefined variable error in lambda function

   * fix for w0108 false positive (Nathaniel)

   * fix test/fulltest.sh

   * #5821 added a utility function to run pylint in another process
     (patch provide by Vincent Ferotin)


What's New in Pylint 0.18.0?
============================

Release date: 2009-03-25

   * tests ok with python 2.4, 2.5, 2.6. 2.3 not tested

   * fix #8687, W0613 false positive on inner function

   * fix #8350, C0322 false positive on multi-line string

   * fix #8332: set E0501 line no to the first line where non ascii
     character has been found

   * avoid some E0203 / E0602 false negatives by detecting
     respectively AttributeError / NameError

   * implements #4037: don't issue W0142 (* or ** magic) when they are
     barely passed from */** arguments

   * complete #5573: more complete list of special methods, also skip
     W0613 for python internal method

   * don't show information messages by default

   * integration of Yuen Ho Wong's patches on emacs lisp files


What's New in Pylint 0.17.0?
============================

Release date: 2009-03-19

   * semicolon check : move W0601 to W0301

   * remove rpython : remove all rpython checker, modules and tests

   * astng 0.18 compatibility: support for _ast module modifies
     interfaces


What's New in Pylint 0.16.0?
============================

Release date: 2009-01-28

   * change [en|dis]able-msg-cat options: only accept message
     categories identified by their first letter (eg IRCWEF) without
     the need for comma as separator

   * add epylint.bat script to fix Windows installation

   * setuptools/easy_install support

   * include a modified version of Maarten ter Huurne patch to avoid
     W0613 warning on arguments from overridden method

   * implement #5575  drop dumb W0704 message) by adding W0704 to
     ignored messages by default

   * new W0108 message, checking for suspicious lambda (provided by
     Nathaniel Manista)

   * fix W0631, false positive reported by Paul Hachmann

   * fix #6951: false positive with W0104

   * fix #6949

   * patches by Mads Kiilerich:

   * implement #4691, make pylint exits with a non zero return status
     if any messages other then Information are issued

   * fix #3711, #5626 (name resolution bug w/ decorator and class
     members)

   * fix #6954


What's New in Pylint 0.15.2?
============================

Release date: 2008-10-13

   * fix #5672: W0706 weirdness ( W0706 removed )

   * fix #5998: documentation points to wrong url for mailing list

   * fix #6022: no error message on wrong module names

   * fix #6040: pytest doesn't run test/func_test.py


What's New in Pylint 0.15.1?
============================

Release date: 2008-09-15

   * fix #4910: default values are missing in manpage

   * fix #5991: missing files in 0.15.0 tarball

   * fix #5993: epylint should work with python 2.3


What's New in Pylint 0.15.0?
============================

Release date: 2008-09-10

   * include pyreverse package and class diagram generation

   * included Stefan Rank's patch to deal with 2.4 relative import

   * included Robert Kirkpatrick's tutorial and typos fixes

   * fix bug in reenabling message

   * fix #2473: invoking pylint on __init__.py (hopefully)

   * typecheck: acquired-members option has been dropped in favor of
     the more generic generated-members option. If the zope option is
     set, the behaviour is now to add some default values to
     generated-members.

   * flymake integration: added bin/epylint and elisp/pylint-
     flymake.el


What's New in Pylint 0.14.0?
============================

Release date: 2008-01-14

   * fix #3733: Messages (dis)appear depending on order of file names

   * fix #4026: pylint.el should require compile

   * fix a bug in colorized reporter, spotted by Dave Borowitz

   * applied patch from Stefan Rank to avoid W0410 false positive when
     multiple "from __future__" import statements

   * implement #4012: flag back tick as deprecated (new W0333 message)

   * new ignored-class option on typecheck checker allowing to skip
     members checking based on class name (patch provided by Thomas W
     Barr)


What's New in Pylint 0.13.2?
============================

Release date: 2007-06-07

   * fix disable-checker option so that it won't accidentally enable
     the rpython checker which is disabled by default

   * added note about the gedit plugin into documentation


What's New in Pylint 0.13.1?
============================

Release date: 2007-03-02

   * fix some unexplained 0.13.0 packaging issue which led to a bunch
     of files missing from the distribution


What's New in Pylint 0.13.0?
============================

Release date: 2007-02-28

   * new RPython (Restricted Python) checker for PyPy fellow or people
     wanting to get a compiled version of their python program using
     the translator of the PyPy project. For more information about
     PyPy or RPython, visit http://codespeak.net/pypy/

   * new E0104 and E0105 messages introduced to respectively warn
     about "return" and "yield" outside function or method

   * new E0106 message when "yield" and "return something" are mixed
     in a function or method

   * new W0107 message for unnecessary pass statement

   * new W0614 message to differentiate between unused *import X* and
     unused *from X import ** (#3209, patch submitted by Daniel Drake)

   * included Daniel Drake's patch to have a different message E1003
     instead of E1001 when a missing member is found but an inference
     failure has been detected

   * msvs reporter for Visual Studio line number reporting (#3285)

   * allow disable-all option inline (#3218, patch submitted by Daniel
     Drake)

   * --init-hook option to call arbitrary code necessary to set
     environment (eg sys.path) (#3156)

   * One more Daniel's patch fixing a command line option parsing
     problem, this'll definitely be the DDrake release :)

   * fix #3184: crashes on "return" outside function

   * fix #3205: W0704 false positive

   * fix #3123: W0212 false positive on static method

   * fix #2485: W0222 false positive

   * fix #3259: when a message is explicitly enabled, check the
     checker emitting it is enabled


What's New in Pylint 0.12.2?
============================

Release date: 2006-11-23

   * fix #3143: W0233 bug w/ YES objects

   * fix #3119: Off-by-one error counting lines in a file

   * fix #3117: ease sys.stdout overriding for reporters

   * fix #2508: E0601 false positive with lambda

   * fix #3125: E1101 false positive and a message duplication. Only
     the last part is actually fixed since the initial false positive
     is due to dynamic setting of attributes on the decimal.Context
     class.

   * fix #3149: E0101 false positives and introduced E0100 for
     generator __init__ methods

   * fixed some format checker false positives


What's New in Pylint 0.12.1?
============================

Release date: 2006-09-25

   * fixed python >= 2.4 format false positive with multiple lines
     statement

   * fixed some 2.5 issues

   * fixed generator expression scope bug (depends on astng 0.16.1)

   * stop requiring __revision__


What's New in Pylint 0.12.0?
============================

Release date: 2006-08-10

   * usability changes:

        * parseable, html and color options are now handled by a
          single output-format option

        * enable-<checkerid> and disable-all options are now handled
          by two (exclusive) enable-checker and disable-checker
          options taking a comma separated list of checker names as
          value

        * renamed debug-mode option to errors-only

   * started a reference user manual

   * new W0212 message for access to protected member from client code
     (close #14081)

   * new W0105 and W0106 messages extracted from W0104 (statement
     seems to have no effect) respectively when the statement is
     actually string (that's sometimes used instead of comments for
     documentation) or an empty  statement generated by a useless
     semicolon

   * reclassified W0302 to C0302

   * fix so that global messages are not anymore connected to the last
     analyzed module (close #10106)

   * fix some bugs related to local disabling of messages

   * fix cr/lf pb when generating the rc file on windows platforms


What's New in Pylint 0.11.0?
============================

Release date: 2006-04-19

   * fix crash caused by the exceptions checker in some case

   * fix some E1101 false positive with abstract method or classes
     defining __getattr__

   * dirty fix to avoid "_socketobject" has not "connect" member. The
     actual problem is that astng isn't able to understand the code
     used to create socket.socket object with exec

   * added an option in the similarity checker to ignore docstrings,
     enabled by default

   * included patch from Benjamin Niemann to allow block level
     enabling/disabling of messages


What's New in Pylint 0.10.0?
============================

Release date: 2006-03-06

   * WARNING, this release include some configuration changes (see
     below), so you may have to check and update your own
     configuration file(s) if you use one

   * this release require the 0.15 version of astng or superior (it
     will save you a lot of pylint crashes...)

   * W0705 has been reclassified to E0701, and is now detecting more
     inheriting problem, and a false positive when empty except clause
     is following an Exception catch has been fixed (close #10422)

   * E0212 and E0214 (metaclass/class method should have mcs/cls as
     first argument have been reclassified to C0202 and C0203 since
     this not as well established as "self" for instance method
     (E0213)

   * W0224 has been reclassified into F0220 (failed to resolve
     interfaces implemented by a class)

   * a new typecheck checker, introducing the following checks:

        * E1101, access to unexistent member (implements #10430),
          remove the need of E0201 and so some options has been moved
          from the classes checker to this one

        * E1102, calling a non callable object

        * E1111 and W1111 when an assignment is done on a function
          call but the inferred function returns None (implements
          #10431)

   * change in the base checker:

        * checks module level and instance attribute names (new const-
          rgx and attr-rgx configuration option) (implements #10209
          and #10440)

        * list comprehension and generator expression variables have
          their own regular expression  (the inlinevar-rgx option)
          (implements #9146)

        * the C0101 check with its min-name-length option has been
          removed (this can be specified in the regxp after all...)

        * W0103 and W0121 are now handled by the variables checker
          (W0103 is now W0603 and W0604 has been splitted into
          different messages)

        * W0131 and W0132 messages  have been reclassified to C0111
          and C0112 respectively

        * new W0104 message on statement without effect

   * regexp support for dummy-variables (dummy-variables-rgx option
     replace dummy-variables) (implements #10027)

   * better global statement handling, see W0602, W0603, W0604
     messages (implements #10344 and #10236)

   * --debug-mode option, disabling all checkers without error message
     and filtering others to only display error

   * fixed some R0201 (method could be a function) false positive


What's New in Pylint 0.9.0?
===========================

Release date: 2006-01-10

   * a lot of updates to follow astng 0.14 API changes, so install
     logilab-astng  0.14 or greater before using this version of
     pylint

   * checker number 10 ! newstyle will search for problems regarding
     old style / new style classes usage problems (rely on astng 0.14
     new style detection feature)

   * new 'load-plugins' options to load additional pylint plugins
     (usable from the command line or from a configuration file)
     (implements #10031)

   * check if a "pylintrc" file exists in the current working
     directory before using the one specified in the PYLINTRC
     environment variable or the default ~/.pylintrc or /etc/pylintrc

   * fixed W0706 (Identifier used to raise an exception is
     assigned...) false positive and reraising a catched exception
     instance

   * fixed E0611 (No name get in module blabla) false positive when
     accessing to a class'__dict__

   * fixed some E0203 ("access to member before its definition") false
     positive

   * fixed E0214 ("metaclass method first argument should be mcs)
     false positive with staticmethod used on a metaclass

   * fixed packaging which was missing the test/regrtest_data
     directory

   * W0212 (method could be a function) has been reclassified in the
     REFACTOR category as R0201, and is no more considerer when a
     method overrides an abstract method from an ancestor class

   * include module name in W0401 (wildcard import), as suggested by
     Amaury

   * when using the '--parseable', path are written relative to the
     current working directory if in a sub-directory of it (#9789)

   * 'pylint --version' shows logilab-astng and logilab-common
     versions

   * fixed pylint.el to handle space in file names

   * misc lint style fixes


What's New in Pylint 0.8.1?
===========================

Release date: 2005-11-07

   * fix "deprecated module" false positive when the code imports a
     module whose name starts with a deprecated module's name (close
     #10061)

   * fix "module has no name __dict__" false positive (close #10039)

   * fix "access to undefined variable __path__" false positive (close
     #10065)

   * fix "explicit return in __init__" false positive when return is
     actually in an inner function (close #10075)


What's New in Pylint 0.8.0?
===========================

Release date: 2005-10-21

   * check names imported from a module exists in the module (E0611),
     patch contributed by Amaury Forgeot d'Arc

   * print a warning (W0212) for methods that could be a function
     (implements #9100)

   * new --defining-attr-methods option on classes checker

   * new --acquired-members option on the classes checker, used when
     --zope=yes to avoid false positive on acquired attributes (listed
     using this new option) (close #8616)

   * generate one E0602 for each use of an undefined variable
     (previously, only one for the first use but not for the
     following) (implements #1000)

   * make profile option saveable

   * fix Windows .bat file,  patch contributed by Amaury Forgeot d'Arc

   * fix one more false positive for E0601 (access before definition)
     with for loop such as "for i in range(10): print i" (test
     func_noerror_defined_and_used_on_same_line)

   * fix false positive for E0201 (undefined member) when accessing to
     __name__ on a class object

   * fix astng checkers traversal order

   * fix bug in format checker when parsing a file from a platform
     using different new line characters (close #9239)

   * fix encoding detection regexp

   * fix --rcfile handling (support for --rcfile=file, close #9590)


What's New in Pylint 0.7.0?
===========================

Release date: 2005-05-27

   * WARNING: pylint is no longer a logilab subpackage. Users may have
     to manually remove the old logilab/pylint directory.

   * introduce a new --additional-builtins option to handle user
     defined builtins

   * --reports option has now -r as short alias, and -i for --include-
     ids

   * fix a bug in the variables checker which may causing some false
     positives when variables are defined and used within the same
     statement (test func_noerror_defined_and_used_on_same_line)

   * this time, real fix of the "disable-msg in the config file"
     problem, test added to unittest_lint

   * fix bug with --list-messages and python -OO

   * fix possible false positive for W0201


What's New in Pylint 0.6.4?
===========================

Release date: 2005-04-14

   * allow to parse files without extension when a path is given on
     the command line (test noext)

   * don't fail if we are unable to read an inline option  (e.g.
     inside a module), just produce an information message (test
     func_i0010)

   * new message E0103 for break or continue outside loop (close
     #8883, test func_continue_not_in_loop)

   * fix bug in the variables checker, causing non detection of some
     actual name error (close #8884, test
     func_nameerror_on_string_substitution)

   * fix bug in the classes checker which was making pylint crash if
     "object" is assigned in a class inheriting from it (test
     func_noerror_object_as_class_attribute)

   * fix problem with the similar checker when related options are
     defined in a configuration file

   * new --generate-man option to generate pylint's man page (require
     the latest logilab.common (>= 0.9.3)

   * packaged (generated...) man page


What's New in Pylint 0.6.3?
===========================

Release date: 2005-02-24

   * fix scope problem which may cause false positive and true
     negative on E0602

   * fix problem with some options such as disable-msg causing error
     when they are coming from the configuration file


What's New in Pylint 0.6.2?
===========================

Release date: 2005-02-16

   * fix false positive on E0201 ("access to undefined member") with
     metaclasses

   * fix false positive on E0203 ("access to member before its
     definition") when attributes are defined in a parent class

   * fix false positive on W0706 ("identifier used to raise an
     exception assigned to...")

   * fix interpretation of "t" as value for the indent-string
     configuration variable

   * fix --rcfile so that --rcfile=pylintrc (only --rcfile pylintrc
     was working in earlier release)

   * new raw checker example in the examples/ directory


What's New in Pylint 0.6.1?
===========================

Release date: 2005-02-04

   * new --rcfile option to specify the configuration file without the
     PYLINTRC environment variable

   * added an example module for a custom pylint checker (see the
     example/ directory)

   * some fixes to handle fixes in common 0.9.1 (should however still
     working with common 0.9.0, even if upgrade is recommended)


What's New in Pylint 0.6.0?
===========================

Release date: 2005-01-20

   * refix pylint emacs mode

   * no more traceback when just typing "pylint"

   * fix a bug which may cause crashes on resolving parent classes

   * fix problems with the format checker: don't chock on files
     containing multiple CR, avoid C0322, C0323, C0324 false positives
     with triple quoted string with quote inside

   * correctly detect access to member defined latter in __init__
     method

   * now depends on common 0.8.1 to fix problem with interface
     resolution (close #8606)

   * new --list-msgs option describing available checkers and their
     messages

   * added windows specific documentation to the README file,
     contributed by Brian van den Broek

   * updated doc/features.txt (actually this file is now generated
     using the --list-msgs option), more entries into the FAQ

   * improved tests coverage


What's New in Pylint 0.5.0?
===========================

Release date: 2004-10-19

   * avoid to import analyzed modules !

   * new Refactor and Convention message categories. Some Warnings
     have been remaped into those new categories

   * added "similar", a tool to find copied and pasted lines of code,
     both using a specific command line tool and integrated as a
     pylint's checker

   * imports checker may report import dependencies as a dot graph

   * new checker regrouping most Refactor detection (with some new
     metrics)

   * more command line options storable in the configuration file

   * fix bug with total / undocumented number of methods


What's New in Pylint 0.4.2?
===========================

Release date: 2004-07-08

   * fix pylint emacs mode

   * fix classes checkers to handler twisted interfaces


What's New in Pylint 0.4.1?
===========================

Release date: 2004-05-14

   * fix the setup.py script to allow bdist_winst (well, the generated
     installer has not been tested...) with the necessary
     logilab/__init__.py file

   * fix file naming convention as suggested by Andreas Amoroso

   * fix stupid crash bug with bad method names


What's New in Pylint 0.4.0?
===========================

Release date: 2004-05-10

   * fix file path with --parsable

   * --parsable option has been renamed to --parseable

   * added patch from Andreas Amoroso to output message to files
     instead of standard output

   * added Run to the list of correct variable names

   * fix variable names regexp and checking of local classes names

   * some basic handling of metaclasses

   * no-docstring-rgx apply now on classes too

   * new option to specify a different regexp for methods than for
     functions

   * do not display the evaluation report when no statements has been
     analysed

   * fixed crash with a class nested in a method

   * fixed format checker to deals with triple quoted string and lines
     with code and comment mixed

   * use logilab.common.ureports to layout reports


What's New in Pylint 0.3.3?
===========================

Release date: 2004-02-17

   * added a parsable text output, used when the --parsable option is
     provided

   * added an emacs mode using this output, available in the distrib's
     elisp directory

   * fixed some typos in messages

   * change include-ids options to yn, and allow it to be in the
     configuration file

   * do not chock on corrupted stats files

   * fixed bug in the format checker which may stop pylint execution

   * provide scripts for unix and windows to wrap the minimal pylint
     tk gui


What's New in Pylint 0.3.2?
===========================

Release date: 2003-12-23

   * html-escape messages in the HTML reporter (bug reported by
     Juergen Hermann)

   * added "TODO" to the list of default note tags

   * added "rexec" to the list of default deprecated modules

   * fixed typos in some messages


What's New in Pylint 0.3.1?
===========================

Release date: 2003-12-05

   * bug fix in format and classes checkers

   * remove print statement from imports checkers

   * provide a simple tk gui, essentially useful for windows users


What's New in Pylint 0.3.0?
===========================

Release date: 2003-11-20

   * new exceptions checker, checking for string exception and empty
     except clauses.

   * imports checker checks for reimport of modules

   * classes checker checks for calls to ancestor's __init__ and
     abstract method not overridden. It doesn't complain anymore for
     unused import in __init__ files, and provides a new option
     ignore-interface-methods, useful when you're using zope Interface
     implementation in your project

   * base checker checks for black listed builtins call (controled by
     the bad-functions option) and for use of * and **

   * format checker checks for use of <> and "l" as long int marker

   * major internal API changes

   * use the rewrite of astng, based on compiler.ast

   * added unique id for messages, as suggested by Wolfgang Grafen

   * added unique id for reports

   * can take multiple modules or files as argument

   * new options command line options : --disable-msg, --enable-msg,
     --help-msg, --include-ids, --reports, --disable-report, --cache-
     size

   * --version shows the version of the python interpreter

   * removed some options which are now replaced by [en|dis]able-msg,
     or disable-report

   * read disable-msg and enable-msg options in source files (should
     be in comments on the top of the file, in the form "# pylint:
     disable-msg=W0402"

   * new message for modules importing themselves instead of the
     "cyclic import" message

   * fix bug with relative and cyclic imports

   * fix bug in imports checker (cycle was not always detected)

   * still fixes in format checker : don't check comment and
     docstring, check first line after an indent

   * black and white list now apply to all identifiers, not only
     variables,  so changed the configuration option from (good|bad
     )-variable-names to (good|bad)-names

   * added string, rexec and Bastion to the default list of deprecated
     modules

   * do not print redefinition warning for function/class/method
     defined in mutually exclusive branches


What's New in Pylint 0.2.1?
===========================

Release date: 2003-10-10

   * added some documentation, fixed some typos

   * set environment variable PYLINT_IMPORT to 1 during pylint
     execution.

   * check that variables "imported" using the global statement exist

   * indentation problems are now warning instead of errors

   * fix checkers.initialize to try to load all files with a known
     python extension (patch from wrobell)

   * fix a bunch of messages

   * fix sample configuration file

   * fix the bad-construction option

   * fix encoding checker

   * fix format checker


What's New in Pylint 0.2.0?
===========================

Release date: 2003-09-12

   * new source encoding / FIXME checker (pep 263)

   * new --zope option which trigger Zope import. Useful to check Zope
     products code.

   * new --comment option which enable the evaluation note comment
     (disabled by default).

   * a ton of bug fixes

   * easy functional test infrastructure


What's New in Pylint 0.1.2?
===========================

Release date: 2003-06-18

   * bug fix release

   * remove dependency to pyreverse


What's New in Pylint 0.1.1?
===========================

Release date: 2003-06-01

   * much more functionalities !


What's New in Pylint 0.1?
=========================

Release date: 2003-05-19

   * initial release
