| *************************** |
| What's New in Pylint 2.11 |
| *************************** |
| |
| :Release: 2.11 |
| :Date: 2021-09-16 |
| |
| Summary -- Release highlights |
| ============================= |
| |
| In 2.11, we added a new default checker to advise using f-string as it's |
| the most efficient way of formatting strings right now. You can use |
| `pyupgrade`_ to migrate your old ``%`` and ``format()`` automatically. |
| |
| We added a new extension ``SetMembershipChecker`` that will advise the |
| use of set for membership test, as it's more performant than lists or tuples. |
| The ``CodeStyleChecker`` also got some love, check it out if you're not already |
| using it. |
| |
| We fixed some long standing bugs, false positives, or false negatives and |
| we added small quality of life options like ``min-similarity-lines`` that |
| disable the duplication check when set to 0. |
| |
| Under the hood the code for both pylint and astroid is progressively more typed, |
| which could be helpful to you if you're using them as libraries. In order for |
| this new typing to make more sense and stay simple, we deprecated some functions |
| or type that will be removed in the next major version. This is an ongoing effort. |
| |
| The future ``possible-forgotten-f-prefix`` check still had too much false positives, |
| and is delayed again. Check the `possible-forgotten-f-prefix`_ issue if you want |
| to provide knowledge or use case :) |
| |
| .. _possible-forgotten-f-prefix: https://github.com/PyCQA/pylint/pull/4787 |
| .. _pyupgrade: https://github.com/asottile/pyupgrade |
| |
| |
| New checkers |
| ============ |
| |
| * Added ``consider-using-f-string``: Emitted when .format() or '%' is being used to format a string. |
| |
| Closes #3592 |
| |
| Removed checkers |
| ================ |
| |
| * The python3 porting mode checker and it's ``py3k`` option were removed. You can still find it in older pylint |
| versions. |
| |
| Extensions |
| ========== |
| |
| * Added new extension ``SetMembershipChecker`` with ``use-set-for-membership`` check: |
| Emitted when using an in-place defined ``list`` or ``tuple`` to do a membership test. ``sets`` are better optimized for that. |
| |
| Closes #4776 |
| |
| * ``CodeStyleChecker`` |
| |
| * Added ``consider-using-assignment-expr``: Emitted when an assignment is directly followed by an if statement |
| and both can be combined by using an assignment expression ``:=``. Requires Python 3.8 |
| |
| Closes #4862 |
| |
| |
| Other Changes |
| ============= |
| |
| * Added ``py-version`` config key (if ``[MASTER]`` section). Used for version dependant checks. |
| Will default to whatever Python version pylint is executed with. |
| |
| * The ``invalid-name`` message is now more detailed when using multiple naming style regexes. |
| |
| * Fix false positive for ``consider-using-with`` if a context manager is assigned to a |
| variable in different paths of control flow (e. g. if-else clause). |
| |
| Closes #4751 |
| |
| * Fix false positive for ``function-redefined`` for simple type annotations |
| |
| Closes #4936 |
| |
| * Fix false positive for ``protected-access`` if a protected member is used in type hints of function definitions |
| |
| * Fix false positive ``dict-iter-missing-items`` for dictionaries only using tuples as keys |
| |
| Closes #3282 |
| |
| * The ``unspecified-encoding`` checker now also checks calls to ``pathlib.Path().read_text()`` |
| and ``pathlib.Path().write_text()`` |
| |
| Closes #4945 |
| |
| * Fix false positive ``superfluous-parens`` for tuples created with inner tuples |
| |
| Closes #4907 |
| |
| * Fix false positive ``unused-private-member`` for accessing attributes in a class using ``cls`` |
| |
| Closes #4849 |
| |
| * Extended ``consider-using-in`` check to work for attribute access. |
| |
| * Setting ``min-similarity-lines`` to 0 now makes the similarty checker stop checking for duplicate code |
| |
| Closes #4901 |
| |
| * Fix a bug where pylint complained if the cache's parent directory does not exist |
| |
| Closes #4900 |
| |
| * The ``global-variable-not-assigned`` checker now catches global variables that are never reassigned in a |
| local scope and catches (reassigned) functions |
| |
| Closes #1375 |
| Closes #330 |
| |
| * The ``consider-iterating-dictionary`` checker now also considers membership checks |
| |
| Closes #4069 |