Repository navigation
v1.14.0
What's new
10 new checks (CH061-CH070), bringing the total to 70:
- CH061
regex-backspace-escape- a regex pattern with a literal backspace byte, almost always an un-raw\b - CH062
total-ordering-missing-eq-@functools.total_orderingmissing the__eq__it needs to derive correct comparisons - CH063
unbounded-cycle-consumption-itertools.cycle(...)piped into something that tries to consume it in full - CH064
asyncio-wait-bare-coroutine- a bare coroutine insideasyncio.wait([...]), a hardTypeErroron Python 3.11+ - CH065
dict-fromkeys-mutable-default-dict.fromkeys(keys, value)aliasing one value across every key - CH066
os-path-join-absolute-literal-os.path.join's absolute-literal reset (theos.pathsibling of CH056'spathlibversion) - CH067
namedtuple-mutable-default- aNamedTuplefield with a mutable default, shared across instances unlike a pydantic field default - CH068
logging-extra-reserved-key- a loggingextra={}key colliding with aLogRecordattribute - CH069
contextvar-mutable-default- aContextVarmutated in place on.get()instead of copied-then-set - CH070
threading-local-mutable-class-attr- athreading.localsubclass leaking a class-level mutable attribute across every thread
This batch's first corpus scan came back much cleaner than the last one - only 3 checks had any hits, and only CH069 needed real narrowing (all 7 first-pass hits turned out to already use the correct copy-then-set pattern, independently, in 4 unrelated projects). CH067 and CH068 each found one real, unfiled bug on the first pass with no narrowing needed - see docs/FINDINGS.md for the full story.
35 new tests (419 total), self-scan clean, fresh clean-venv wheel install verified.