Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extend broad-exception-raised and broad-exception-caught to except* #8827

Closed
jacobtylerwalls opened this issue Jul 6, 2023 · 4 comments · Fixed by #9197 or #9461
Closed

Extend broad-exception-raised and broad-exception-caught to except* #8827

jacobtylerwalls opened this issue Jul 6, 2023 · 4 comments · Fixed by #9197 or #9461
Assignees
Labels
False Negative 🦋 No message is emitted but something is wrong with the code Good first issue Friendly and approachable by new contributors python 3.11
Milestone

Comments

@jacobtylerwalls
Copy link
Member

jacobtylerwalls commented Jul 6, 2023

Originally posted by @clavedeluna in #7703 (comment)


Expect these examples to raise the same message:

try:
    1 / 0
except Exception:
    pass

************* Module a
a.py:3:7: W0718: Catching too general exception Exception (broad-exception-caught)

try:
    1 / 0
except* Exception:
    pass

************* Module a
a.py:2:4: W0104: Statement seems to have no effect (pointless-statement)

@jacobtylerwalls jacobtylerwalls added False Negative 🦋 No message is emitted but something is wrong with the code python 3.11 Good first issue Friendly and approachable by new contributors labels Jul 6, 2023
@azinneck0485
Copy link
Contributor

Can I work on this issue?

I've spent some time looking into the code and added a dummy visit_trystar method to the ExceptionChecker class in exceptions.py. This dummy method prints the value of node.handler to the console, which correctly indicates the line in my test code where except* is.

Should the contents of this method be similar to visit_try?

@jacobtylerwalls
Copy link
Member Author

Hi @azinneck0485 thanks for getting started! I haven't looked in detail, but yes, that seems like a wise plan of action.

@Pierre-Sassoulas
Copy link
Member

You can try to call visit_try directly in visit_try_star, add some functional tests and see how it goes, sometime you get lucky.

@azinneck0485
Copy link
Contributor

looks like that works, luckily, for broad-exception-caught, pending functional tests ... thanks so much for the tip!

@Pierre-Sassoulas Pierre-Sassoulas added this to the 3.1.0 milestone Oct 28, 2023
netbsd-srcmastr referenced this issue in NetBSD/pkgsrc Mar 3, 2024
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 <https://github.com/pylint-dev/pylint/issues/8701>`_)

- Discover ``.pyi`` files when linting.

  These can be ignored with the ``ignore-patterns`` setting.

  Closes #9097 (`#9097 <https://github.com/pylint-dev/pylint/issues/9097>`_)

- Check ``TypeAlias`` and ``TypeVar`` (PEP 695) nodes for ``invalid-name``.

  Refs #9196 (`#9196 <https://github.com/pylint-dev/pylint/issues/9196>`_)

- Support for resolving external toml files named pylintrc.toml and .pylintrc.toml.

  Closes #9228 (`#9228 <https://github.com/pylint-dev/pylint/issues/9228>`_)

- Check for `.clear`, `.discard`, `.pop` and `remove` methods being called on a set while it is being iterated over.

  Closes #9334 (`#9334 <https://github.com/pylint-dev/pylint/issues/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 <https://github.com/pylint-dev/pylint/issues/9229>`_)

- Added a ``deprecated-attribute`` message to check deprecated attributes in the stdlib.

  Closes #8855 (`#8855 <https://github.com/pylint-dev/pylint/issues/8855>`_)


False Positives Fixed
---------------------

- Fixed false positive for ``inherit-non-class`` for generic Protocols.

  Closes #9106 (`#9106 <https://github.com/pylint-dev/pylint/issues/9106>`_)

- Exempt ``TypedDict`` from ``typing_extensions`` from ``too-many-ancestor`` checks.

  Refs #9167 (`#9167 <https://github.com/pylint-dev/pylint/issues/9167>`_)



False Negatives Fixed
---------------------

- Extend broad-exception-raised and broad-exception-caught to except*.

  Closes #8827 (`#8827 <https://github.com/pylint-dev/pylint/issues/8827>`_)

- Fix a false-negative for unnecessary if blocks using a different than expected ordering of arguments.

  Closes #8947. (`#8947 <https://github.com/pylint-dev/pylint/issues/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 <https://github.com/pylint-dev/pylint/issues/8808>`_)



Other Changes
-------------

- Print how many files were checked in verbose mode.

  Closes #8935 (`#8935 <https://github.com/pylint-dev/pylint/issues/8935>`_)

- Fix a crash when an enum class which is also decorated with a ``dataclasses.dataclass`` decorator is defined.

  Closes #9100 (`#9100 <https://github.com/pylint-dev/pylint/issues/9100>`_)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
False Negative 🦋 No message is emitted but something is wrong with the code Good first issue Friendly and approachable by new contributors python 3.11
Projects
None yet
3 participants