diff --git a/doc/whatsnew/3/3.1/index.rst b/doc/whatsnew/3/3.1/index.rst index 37ddab5759..2580c7377e 100644 --- a/doc/whatsnew/3/3.1/index.rst +++ b/doc/whatsnew/3/3.1/index.rst @@ -7,10 +7,116 @@ :maxdepth: 2 :Release:3.1 -:Date: TBA +:Date: 2024-02-25 Summary -- Release highlights ============================= +Two new checks--``use-yield-from``, ``deprecated-attribute``-- +and a smattering of bug fixes. .. towncrier release notes start + +What's new in Pylint 3.1.0? +--------------------------- +Release date: 2024-02-25 + + +New Features +------------ + +- Skip ``consider-using-join`` check for non-empty separators if an ``suggest-join-with-non-empty-separator`` option is set to ``no``. + + Closes #8701 (`#8701 `_) + +- Discover ``.pyi`` files when linting. + + These can be ignored with the ``ignore-patterns`` setting. + + Closes #9097 (`#9097 `_) + +- Check ``TypeAlias`` and ``TypeVar`` (PEP 695) nodes for ``invalid-name``. + + Refs #9196 (`#9196 `_) + +- Support for resolving external toml files named pylintrc.toml and .pylintrc.toml. + + Closes #9228 (`#9228 `_) + +- Check for `.clear`, `.discard`, `.pop` and `remove` methods being called on a set while it is being iterated over. + + Closes #9334 (`#9334 `_) + + + +New Checks +---------- + +- New message `use-yield-from` added to the refactoring checker. This message is emitted when yielding from a loop can be replaced by `yield from`. + + Closes #9229. (`#9229 `_) + +- Added a ``deprecated-attribute`` message to check deprecated attributes in the stdlib. + + Closes #8855 (`#8855 `_) + + +False Positives Fixed +--------------------- + +- Fixed false positive for ``inherit-non-class`` for generic Protocols. + + Closes #9106 (`#9106 `_) + +- Exempt ``TypedDict`` from ``typing_extensions`` from ``too-many-ancestor`` checks. + + Refs #9167 (`#9167 `_) + + + +False Negatives Fixed +--------------------- + +- Extend broad-exception-raised and broad-exception-caught to except*. + + Closes #8827 (`#8827 `_) + +- Fix a false-negative for unnecessary if blocks using a different than expected ordering of arguments. + + Closes #8947. (`#8947 `_) + + + +Other Bug Fixes +--------------- + +- Improve the message provided for wrong-import-order check. Instead of the import statement ("import x"), the message now specifies the import that is out of order and which imports should come after it. As reported in the issue, this is particularly helpful if there are multiple imports on a single line that do not follow the PEP8 convention. + + The message will report imports as follows: + For "import X", it will report "(standard/third party/first party/local) import X" + For "import X.Y" and "from X import Y", it will report "(standard/third party/first party/local) import X.Y" + The import category is specified to provide explanation as to why pylint has issued the message and guidence to the developer on how to fix the problem. + + Closes #8808 (`#8808 `_) + + + +Other Changes +------------- + +- Print how many files were checked in verbose mode. + + Closes #8935 (`#8935 `_) + +- Fix a crash when an enum class which is also decorated with a ``dataclasses.dataclass`` decorator is defined. + + Closes #9100 (`#9100 `_) + + + +Internal Changes +---------------- + +- Update astroid version to 3.1.0. + + Refs #9457 (`#9457 `_) diff --git a/doc/whatsnew/fragments/8701.feature b/doc/whatsnew/fragments/8701.feature deleted file mode 100644 index 4a9781accf..0000000000 --- a/doc/whatsnew/fragments/8701.feature +++ /dev/null @@ -1,3 +0,0 @@ -Skip ``consider-using-join`` check for non-empty separators if an ``suggest-join-with-non-empty-separator`` option is set to ``no``. - -Closes #8701 diff --git a/doc/whatsnew/fragments/8808.bugfix b/doc/whatsnew/fragments/8808.bugfix deleted file mode 100644 index a26d7358a0..0000000000 --- a/doc/whatsnew/fragments/8808.bugfix +++ /dev/null @@ -1,8 +0,0 @@ -Improve the message provided for wrong-import-order check. Instead of the import statement ("import x"), the message now specifies the import that is out of order and which imports should come after it. As reported in the issue, this is particularly helpful if there are multiple imports on a single line that do not follow the PEP8 convention. - -The message will report imports as follows: -For "import X", it will report "(standard/third party/first party/local) import X" -For "import X.Y" and "from X import Y", it will report "(standard/third party/first party/local) import X.Y" -The import category is specified to provide explanation as to why pylint has issued the message and guidence to the developer on how to fix the problem. - -Closes #8808 diff --git a/doc/whatsnew/fragments/8827.false_negative b/doc/whatsnew/fragments/8827.false_negative deleted file mode 100644 index 42b84e712d..0000000000 --- a/doc/whatsnew/fragments/8827.false_negative +++ /dev/null @@ -1,3 +0,0 @@ -Extend broad-exception-raised and broad-exception-caught to except*. - -Closes #8827 diff --git a/doc/whatsnew/fragments/8855.new_check b/doc/whatsnew/fragments/8855.new_check deleted file mode 100644 index 43eca39240..0000000000 --- a/doc/whatsnew/fragments/8855.new_check +++ /dev/null @@ -1,3 +0,0 @@ -Added a ``deprecated-attribute`` message to check deprecated attributes in the stdlib. - -Closes #8855 diff --git a/doc/whatsnew/fragments/8935.other b/doc/whatsnew/fragments/8935.other deleted file mode 100644 index f105c8eb11..0000000000 --- a/doc/whatsnew/fragments/8935.other +++ /dev/null @@ -1,3 +0,0 @@ -Print how many files were checked in verbose mode. - -Closes #8935 diff --git a/doc/whatsnew/fragments/8947.false_negative b/doc/whatsnew/fragments/8947.false_negative deleted file mode 100644 index 7ecacfabbb..0000000000 --- a/doc/whatsnew/fragments/8947.false_negative +++ /dev/null @@ -1,3 +0,0 @@ -Fix a false-negative for unnecessary if blocks using a different than expected ordering of arguments. - -Closes #8947. diff --git a/doc/whatsnew/fragments/9097.feature b/doc/whatsnew/fragments/9097.feature deleted file mode 100644 index 51874b3604..0000000000 --- a/doc/whatsnew/fragments/9097.feature +++ /dev/null @@ -1,5 +0,0 @@ -Discover ``.pyi`` files when linting. - -These can be ignored with the ``ignore-patterns`` setting. - -Closes #9097 diff --git a/doc/whatsnew/fragments/9100.other b/doc/whatsnew/fragments/9100.other deleted file mode 100644 index 75e19175b9..0000000000 --- a/doc/whatsnew/fragments/9100.other +++ /dev/null @@ -1,3 +0,0 @@ -Fix a crash when an enum class which is also decorated with a ``dataclasses.dataclass`` decorator is defined. - -Closes #9100 diff --git a/doc/whatsnew/fragments/9106.false_positive b/doc/whatsnew/fragments/9106.false_positive deleted file mode 100644 index 58edbc0bfa..0000000000 --- a/doc/whatsnew/fragments/9106.false_positive +++ /dev/null @@ -1,3 +0,0 @@ -Fixed false positive for ``inherit-non-class`` for generic Protocols. - -Closes #9106 diff --git a/doc/whatsnew/fragments/9167.false_positive b/doc/whatsnew/fragments/9167.false_positive deleted file mode 100644 index 58701e6e5a..0000000000 --- a/doc/whatsnew/fragments/9167.false_positive +++ /dev/null @@ -1,3 +0,0 @@ -Exempt ``TypedDict`` from ``typing_extensions`` from ``too-many-ancestor`` checks. - -Refs #9167 diff --git a/doc/whatsnew/fragments/9196.feature b/doc/whatsnew/fragments/9196.feature deleted file mode 100644 index df1a560e2a..0000000000 --- a/doc/whatsnew/fragments/9196.feature +++ /dev/null @@ -1,3 +0,0 @@ -Check ``TypeAlias`` and ``TypeVar`` (PEP 695) nodes for ``invalid-name``. - -Refs #9196 diff --git a/doc/whatsnew/fragments/9228.feature b/doc/whatsnew/fragments/9228.feature deleted file mode 100644 index e7b984014c..0000000000 --- a/doc/whatsnew/fragments/9228.feature +++ /dev/null @@ -1,3 +0,0 @@ -Support for resolving external toml files named pylintrc.toml and .pylintrc.toml. - -Closes #9228 diff --git a/doc/whatsnew/fragments/9229.feature b/doc/whatsnew/fragments/9229.feature deleted file mode 100644 index 22d059ecdf..0000000000 --- a/doc/whatsnew/fragments/9229.feature +++ /dev/null @@ -1,3 +0,0 @@ -New message `use-yield-from` added to the refactoring checker. This message is emitted when yielding from a loop can be replaced by `yield from`. - -Closes #9229. diff --git a/doc/whatsnew/fragments/9334.feature b/doc/whatsnew/fragments/9334.feature deleted file mode 100644 index ec4b62a704..0000000000 --- a/doc/whatsnew/fragments/9334.feature +++ /dev/null @@ -1,3 +0,0 @@ -Check for `.clear`, `.discard`, `.pop` and `remove` methods being called on a set while it is being iterated over. - -Closes #9334 diff --git a/doc/whatsnew/fragments/9457.internal b/doc/whatsnew/fragments/9457.internal deleted file mode 100644 index 504ee2b1d0..0000000000 --- a/doc/whatsnew/fragments/9457.internal +++ /dev/null @@ -1,3 +0,0 @@ -Update astroid version to 3.1.0. - -Refs #9457 diff --git a/examples/pylintrc b/examples/pylintrc index 5ca3f45140..d47800516d 100644 --- a/examples/pylintrc +++ b/examples/pylintrc @@ -468,6 +468,11 @@ max-nested-blocks=5 # printed. never-returning-functions=sys.exit,argparse.parse_error +# Let 'consider-using-join' be raised when the separator to join on would be +# non-empty (resulting in expected fixes of the type: ``"- " + " - +# ".join(items)``) +suggest-join-with-non-empty-separator=yes + [REPORTS] diff --git a/examples/pyproject.toml b/examples/pyproject.toml index 2a518eaac0..a8ec9a7ecb 100644 --- a/examples/pyproject.toml +++ b/examples/pyproject.toml @@ -394,6 +394,10 @@ max-nested-blocks = 5 # considered as an explicit return statement and no message will be printed. never-returning-functions = ["sys.exit", "argparse.parse_error"] +# Let 'consider-using-join' be raised when the separator to join on would be non- +# empty (resulting in expected fixes of the type: ``"- " + " - ".join(items)``) +suggest-join-with-non-empty-separator = true + [tool.pylint.reports] # Python expression which should return a score less than or equal to 10. You # have access to the variables 'fatal', 'error', 'warning', 'refactor', diff --git a/pylint/__pkginfo__.py b/pylint/__pkginfo__.py index 9db81fb544..06884a7f1e 100644 --- a/pylint/__pkginfo__.py +++ b/pylint/__pkginfo__.py @@ -9,7 +9,7 @@ from __future__ import annotations -__version__ = "3.1.0-dev0" +__version__ = "3.1.0" def get_numversion_from_version(v: str) -> tuple[int, int, int]: diff --git a/tbump.toml b/tbump.toml index 3c747af214..a12e0ef93b 100644 --- a/tbump.toml +++ b/tbump.toml @@ -1,7 +1,7 @@ github_url = "https://github.com/pylint-dev/pylint" [version] -current = "3.1.0-dev0" +current = "3.1.0" regex = ''' ^(?P0|[1-9]\d*) \.