* B007: don't flag a loop variable that is read by a function or lambda defined
in the same scope as the loop (#​175)
* B049: New check for ``@abstractmethod`` listed before ``@property``,
``@classmethod`` or ``@staticmethod`` (or a property ``.setter``/``.getter``/
``.deleter``). It must be the innermost decorator, otherwise the class definition
raises ``AttributeError`` (#​279)
* B906: don't flag ``visit_`` methods of libcst visitors (classes inheriting
from ``libcst``), which have no ``generic_visit`` (#​359)
* B045: detect reuse of an enclosing loop's control variable in a nested loop
in the same scope (#​360).
* B046: New check for ``dict.fromkeys()`` called with a mutable value, which is
shared by every key (#​387)
* B005: say in the message that only strings with repeated characters are
reported, since ``.strip("abc")`` style character sets are fine (#​91)
* B047: New check for ``except`` handlers that can never run because an earlier
handler already catches a builtin parent exception (#​349)
* B044: also report asserts on other always-true values, such as a message
without a condition (``assert "x must be positive"``), non-zero numbers,
f-strings with literal text, non-empty list/set/dict literals and lambdas
(#​534, #​440)
* B031: only treat a bare ``groupby()`` call as ``itertools.groupby`` when the
module doesn't bind ``groupby`` to something else, such as its own
``def groupby`` (#​356)
* B025: fix the message running ``except`` and the exception name together
(``exceptValueError``) and dropping the ``*`` for ``except*`` handlers
* B903: don't flag classes that inherit from another class, like an exception
or ``dict`` subclass, which a namedtuple can't replace, and fix ``__slot__``
in the message to ``__slots__`` (#​63)
* B950: respect the ``max-doc-length`` option for docstring and comment-only lines,
as ``pycodestyle``'s ``W505`` does; behavior is unchanged when it is not set (#​285)
* B902: treat ``abc.abstractclassmethod`` and ``abc.abstractstaticmethod`` like
``classmethod`` and ``staticmethod`` instead of expecting ``self`` (#​33)
* B909: also check loops over ``d.keys()``, ``d.values()`` and ``d.items()``,
which are views of ``d``, so ``for k in d.keys(): d.pop(k)`` is reported like
``for k in d: d.pop(k)``
* B012: don't flag ``break`` or ``continue`` in an ``async for`` loop inside a
``finally`` block, as for ``for`` and ``while`` loops
* B018: also report generator expressions and lambdas used as statements. A
statement like ``(print(x) for x in items)`` never runs its body, and a bare
``lambda x: True`` is usually an assignment that lost its target (#​452)
* B018: also report ``map()``, ``filter()``, ``reversed()``, ``zip()`` and
``enumerate()`` calls used as statements. They return lazy iterators, so
``map(print, items)`` on its own line never calls ``print`` (#​452)
* B909: also check mutations in ``if`` conditions and ``elif``/``else``
branches inside loops (#​606)
* B042: don't treat a class named like an exception as one when its only base is
``object``, as in ``class ParsedException(object)`` (#​538)
* B911: only treat a bare ``batched()`` call as ``itertools.batched`` when the
module doesn't bind ``batched`` to something else, such as its own
``def batched``, the same way B031 handles ``groupby()``
Configuration
📅Schedule: (in timezone America/Edmonton)
Branch creation
At any time (no schedule defined)
Automerge
At any time (no schedule defined)
🚦Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕Ignore: Close this PR and you won't be reminded about this update again.
If you want to rebase/retry this PR, check this box
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [flake8-bugbear](https://github.com/PyCQA/flake8-bugbear#change-log) ([changelog](https://github.com/PyCQA/flake8-bugbear#change-log)) | minor | `~=26.9.9` → `~=26.10.27` |
---
### Release Notes
<details>
<summary>PyCQA/flake8-bugbear (flake8-bugbear)</summary>
### [`v26.10.27`](https://github.com/PyCQA/flake8-bugbear/releases/tag/26.10.27)
[Compare Source](https://github.com/PyCQA/flake8-bugbear/compare/26.9.30...26.10.27)
```
* B007: don't flag a loop variable that is read by a function or lambda defined
in the same scope as the loop (#​175)
* B049: New check for ``@abstractmethod`` listed before ``@property``,
``@classmethod`` or ``@staticmethod`` (or a property ``.setter``/``.getter``/
``.deleter``). It must be the innermost decorator, otherwise the class definition
raises ``AttributeError`` (#​279)
* B906: don't flag ``visit_`` methods of libcst visitors (classes inheriting
from ``libcst``), which have no ``generic_visit`` (#​359)
* B045: detect reuse of an enclosing loop's control variable in a nested loop
in the same scope (#​360).
* B046: New check for ``dict.fromkeys()`` called with a mutable value, which is
shared by every key (#​387)
* B005: say in the message that only strings with repeated characters are
reported, since ``.strip("abc")`` style character sets are fine (#​91)
* B047: New check for ``except`` handlers that can never run because an earlier
handler already catches a builtin parent exception (#​349)
* B044: also report asserts on other always-true values, such as a message
without a condition (``assert "x must be positive"``), non-zero numbers,
f-strings with literal text, non-empty list/set/dict literals and lambdas
(#​534, #​440)
* B031: only treat a bare ``groupby()`` call as ``itertools.groupby`` when the
module doesn't bind ``groupby`` to something else, such as its own
``def groupby`` (#​356)
* B025: fix the message running ``except`` and the exception name together
(``exceptValueError``) and dropping the ``*`` for ``except*`` handlers
* B903: don't flag classes that inherit from another class, like an exception
or ``dict`` subclass, which a namedtuple can't replace, and fix ``__slot__``
in the message to ``__slots__`` (#​63)
* B950: respect the ``max-doc-length`` option for docstring and comment-only lines,
as ``pycodestyle``'s ``W505`` does; behavior is unchanged when it is not set (#​285)
* B902: treat ``abc.abstractclassmethod`` and ``abc.abstractstaticmethod`` like
``classmethod`` and ``staticmethod`` instead of expecting ``self`` (#​33)
* B909: also check loops over ``d.keys()``, ``d.values()`` and ``d.items()``,
which are views of ``d``, so ``for k in d.keys(): d.pop(k)`` is reported like
``for k in d: d.pop(k)``
* B012: don't flag ``break`` or ``continue`` in an ``async for`` loop inside a
``finally`` block, as for ``for`` and ``while`` loops
* B018: also report generator expressions and lambdas used as statements. A
statement like ``(print(x) for x in items)`` never runs its body, and a bare
``lambda x: True`` is usually an assignment that lost its target (#​452)
* B018: also report ``map()``, ``filter()``, ``reversed()``, ``zip()`` and
``enumerate()`` calls used as statements. They return lazy iterators, so
``map(print, items)`` on its own line never calls ``print`` (#​452)
* B909: also check mutations in ``if`` conditions and ``elif``/``else``
branches inside loops (#​606)
* B042: don't treat a class named like an exception as one when its only base is
``object``, as in ``class ParsedException(object)`` (#​538)
* B911: only treat a bare ``batched()`` call as ``itertools.batched`` when the
module doesn't bind ``batched`` to something else, such as its own
``def batched``, the same way B031 handles ``groupby()``
```
</details>
---
### Configuration
📅 **Schedule**: (in timezone America/Edmonton)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xODguNCIsInVwZGF0ZWRJblZlciI6IjQ0LjE4OC40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
~=26.9.9→~=26.10.27Release Notes
PyCQA/flake8-bugbear (flake8-bugbear)
v26.10.27Compare Source
Configuration
📅 Schedule: (in timezone America/Edmonton)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate CLI.