What's New In Pylint 1.9
************************

Release:
   1.9

Date:
   2018-05-15


Summary -- Release highlights
=============================

* None so far


New checkers
============

* A new Python 3 checker was added to warn about the removed
  "operator.div" function.

* A new Python 3 checker was added to warn about accessing functions
  that have been moved from the urllib module in corresponding
  subpackages, such as "urllib.request".

     from urllib import urlencode

  Instead the previous code should use "urllib.parse" or "six.moves"
  to import a module in a Python 2 and 3 compatible fashion:

     from six.moves.urllib.parse import urlencode

  To have this working on Python 3 as well, please use the "six"
  library:

     six.reraise(Exception, "value", tb)

* A new check was added to warn about using unicode raw string
  literals. This is a syntax error in Python 3:

     a = ur'...'

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

* Added *xreadlines-attribute* check, emitted when the *xreadlines()*
  attribute is accessed on a file object.

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

     try:
       1/0
     except ZeroDivisionError as exc:
        ...
     print(exc) # This will raise a NameError on Python 3

     [i for i in some_iterator if some_condition(i)]
     print(i) # This will raise a NameError on Python 3


Other Changes
=============

* *defaultdict* and subclasses of *dict* are now handled for *dict-
  iter-** checks. That means that the following code will now emit
  warnings for when *iteritems* and friends are accessed:

     some_dict = defaultdict(list)
     ...
     some_dict.iterkeys()

* Enum classes no longer trigger *too-few-methods*

* Special methods now count towards *too-few-methods*, and are
  considered part of the public API. They are still not counted
  towards the number of methods for *too-many-methods*.

* docparams allows abstract methods to document returns documentation
  even if the default implementation does not return something. They
  also no longer need to document raising a NotImplementedError.
