| ************************** |
| What's New in Pylint 2.2 |
| ************************** |
| |
| :Release: 2.2 |
| :Date: 2018-11-25 |
| |
| Summary -- Release highlights |
| ============================= |
| |
| |
| New checkers |
| ============ |
| |
| * String checker now reports format string type mismatches. |
| |
| * ``duplicate-string-formatting-argument`` was added for detecting duplicate string |
| formatting arguments that should be passed instead as named arguments. |
| |
| * ``logging-format-style`` is a new option for the logging checker for usage of |
| str.format() style format strings in calls to loggers. |
| |
| It accepts two options: ``--logging-format-style=old`` for using `%` style formatting, |
| which is the assumed default, and ``--logging-format-style=new`` for using `{}` style formatting. |
| |
| * ``implicit-str-concat-in-sequence`` detects string concatenation inside lists, sets & tuples. |
| |
| Example of code that would generate such warning: |
| |
| .. code-block:: python |
| |
| woops = ('a', 'b' 'c') |
| |
| |
| Other Changes |
| ============= |
| |
| * ``try-except-raise`` checker now handles multilevel inheritance hirerachy for exceptions correctly. |
| |
| Close #2484 |
| |
| * Ignore import x.y.z as z cases for checker ``useless-import-alias``. |
| |
| * ``unnecessary-pass`` is now also emitted when a function or class contains only docstring and pass statement, |
| in which case, docstring is enough for empty definition. |
| |
| * Fix false positive ``undefined-variable`` and ``used-before-assignment`` with nonlocal keyword usage. |
| |
| * Fix exceptions being raised when one of the params is not a ClassDef for :func:`checkers.utils.is_subclass_of`. |
| |
| * ``pylint`` now picks the latest value from the inferred values of the exception that gets |
| raised, when looking for ``raising-non-exception``. This helps when reusing a variable name |
| for multiple types, since ``pylint`` was picking just the first inferred value, leading |
| to spurious false positives. |
| |
| Close #2431 |
| |
| * ``pylint`` used to emit a ``not-an-iterable`` error when looking at coroutines built |
| with ``asyncio.coroutine``. This is no longer the case as we handle coroutines explicitly. |
| |
| Close #996 |
| |
| * ``pylint`` used to emit a ``unused-variable`` error if unused import was found in the function. Now instead of |
| ``unused-variable``, ``unused-import`` is emitted. |
| |
| Close #2421 |