************************** 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``. .. code-block:: python 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: .. code-block:: python from six.moves.urllib.parse import urlencode To have this working on Python 3 as well, please use the ``six`` library: .. code-block:: python 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: .. code-block:: python 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. .. code-block:: python 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: .. code-block:: python 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.