**************************
  What's New In Pylint 1.4
**************************

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 #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 #463

* Take in account all the methods from the ancestors
  when checking for :ref:`too-few-public-methods`.

  Closes #471

* Catch enchant errors and emit :ref:`invalid-characters-in-docstring`
  when checking for spelling errors.

  Closes #469

* Use all the inferred statements for the :ref:`super-init-not-called`
  check.

  Closes #389

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

  Closes #472

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

  Closes #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, :ref:`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 #299

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

  Closes #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 #437


What's New in Pylint 1.4.1?
===========================
Release date: 2015-01-16

* Look only in the current function's scope for :ref:`bad-super-call`.

  Closes #403

* Check the return of properties when checking for :ref:`not-callable`.

  Closes #406

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

  Closes #411

* Proper abstract method lookup while checking for :ref:`abstract-class-instantiated`.

  Closes #401

* Use a mro traversal for finding abstract methods.

  Closes #415

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

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

* Fix a false positive on Python 2 for :ref:`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 #421

* Add a new warning, :ref:`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 :ref:`signature-differs` and 'argument-differs'
  warnings.

  Closes #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
  compatibility for a while now

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

  Closes #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 :ref:`unused-import` message.

  Closes #293

* Add new checker for finding spelling errors. New messages:
  :ref:`wrong-spelling-in-comment`, :ref:`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: :ref:`mixed-line-endings`,
  :ref:`unexpected-line-ending-format`. New option: expected-line-ending-format.

* :ref:`dangerous-default-value` no longer evaluates the value of the arguments,
  which could result in long error messages or sensitive data being leaked.

  Closes #282

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

  Closes #285

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

  Closes #288

* Proper handle class level scope for lambdas.

* Handle :ref:`too-few-format-args` or :ref:`too-many-format-args` for format
  strings with both named and positional fields.

  Closes #286

* Analyze only strings by the string format checker.

  Closes #287

* Properly handle nested format string fields.

  Closes #294

* Don't emit :ref:`attribute-defined-outside-init` if the attribute
  was set by a function call in a defining method.

  Closes #192

* Properly handle unicode format strings for Python 2.

  Closes #296

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

* Fix an :ref:`unused-import` false positive, when the error was emitted
  for all the members imported with 'from import' form.

  Closes #304

* Don't emit :ref:`invalid-name` when assigning a name in an
  ImportError handler.

  Closes #302

* Don't count branches from nested functions.

* Fix a false positive with :ref:`too-few-format-args`, when the format
  strings contains duplicate manual position arguments.

  Closes #310

* fixme regex handles comments without spaces after the hash.

  Closes #311

* Don't emit :ref:`unused-import` when a special object is imported
  (__all__, __doc__ etc.).

  Closes #309

* Look in the metaclass, if defined, for members not found in the current
  class.

  Closes #306

* Don't emit :ref:`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 :ref:`catching-non-exception` for non-class nodes.

  Closes #303

* Order of reporting is consistent.

* Add a new warning, :ref:`boolean-datetime`, emitted when an instance
  of 'datetime.time' is used in a boolean context.

  Closes #239

* Fix a crash which occurred while checking for :ref:`method-hidden`,
  when the parent frame was something different than a function.

* Generate html output for missing files.

  Closes #320

* Fix a false positive with :ref:`too-many-format-args`, when the format
  string contains mixed attribute access arguments and manual
  fields.

  Closes #322

* Extend the cases where :ref:`undefined-variable` and :ref:`used-before-assignment`
  can be detected.

  Closes #291

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

  Closes #326

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

* Don't emit :ref:`unbalanced-tuple-unpacking` when the rhs of the assignment
  is a variable length argument.

  Closes #329

* Add a new warning, :ref:`inherit-non-class`, emitted when a class inherits
  from something which is not a class.

  Closes #331

* Fix another false positives with :ref:`undefined-variable`, where the variable
  can be found as a class assignment and used in a function annotation.

  Closes #342

* Handle assignment of the string format method to a variable.

  Closes #351

* Support wheel packaging format for PyPi.

  Closes #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 :ref:`assigning-non-slot` when the assignment is for a property.

  Closes #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 #319

* :ref:`too-many-public-methods` is reported only for methods defined in a class,
  not in its ancestors.

  Closes #248

* :ref:`too-many-lines` disable pragma can be located on any line, not only the
  first.

  Closes #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 :ref:`protected-access` warning.

  Closes #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.

* :ref:`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.
