You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Remaining bare except: / swallowed exceptions in tests/ and src/ (Codacy + hidden failures) #115
Follow-up to #51 / #114, which fixed the bare except: pass pattern in tests/test_image_point_features.py. Inventory of what remains as of 2026-10-03 (main at 770a031). These are likely contributing to the Codacy B grade (Pylint/Pyflakes bare-except and try/except/pass/W0702/W0703-type findings, see #41) and, in tests, hide real failures.
Why it matters
In tests, a bare except: also swallows the AssertionError from assert*, so the test can never fail. Fixing the same pattern in #114 showed that several of those tests had been calling APIs that don't exist (Image.SURF, corners, getpixel, concat), so expect similar findings here: fix by running each snippet unprotected on OpenCV 4 and 5, rewriting against the real API with direct assertions, and mutation-checking that the test now fails when the code is broken (see #114's PR description for the method).
tests/
File
bare except:
except Exception + pass/continue
tests/test_camera.py
11
8
tests/base/test_base_color.py
3
1
tests/test_ros.py
0
3
tests/conftest.py
0
2 (probably legitimate GUI-suppression; review rather than blanket-remove)
src/
Location
Issue
Suggested fix
base/color.py:966 and :976 (rgb2xyz-style white/primaries lookup)
bare except: around a dict lookup, then raise ValueError("unknown white value, must be one of" ", ".join(...)). Real bug: the two adjacent string literals concatenate first, so ", ".join(...) uses the whole sentence as the separator; the error message is garbled.
except KeyError: and build the message with an f-string: f"unknown white value, must be one of {', '.join(_whites)}", plus a test that checks the message
base/findpeaks.py:119
bare except: around Polynomial.fit, then print + continue
catch the specific exceptions Polynomial.fit raises for a neighbourhood falling off the data; use warnings.warn rather than print
base/imageio.py:1033 (set_window_title)
bare except: pass
except (AttributeError, RuntimeError): (backends without a window manager)
Camera.py, ImageProcessing.py, base/imageio.py
one except Exception: pass/continue each
review each: narrow the exception type or log
Suggested approach
Separate small PRs: (1) color.py message bug + test (src, real fix), (2) other src sites, (3) tests/test_camera.py, (4) tests/base/test_base_color.py and the rest. Add E722 (bare except) and BLE001/S110 (try-except-pass) to the ruff rule set once clean so it can't regress (see the typing/lint cluster, #40/#41).
Activity