-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
agent-generatedCreated by Claude from expert reviewCreated by Claude from expert reviewbugSomething isn't workingSomething isn't workinggood first issueGood for newcomersGood for newcomerspriority:mediumMedium priorityMedium priority
Description
Source: Expert Software Review (2026-02-17) — Edge Cases and Undefined Behavior
Description
In MetricWriter.__init__(), the file is opened on line 65 before DictWriter is constructed (line 67) and writeheader() is called (line 74). If either of those calls raises an exception, the file handle stored in self._fout will never be closed.
# metric_writer.py:64-74
self._fout = Path(filename).open("w")
self._writer = DictWriter(
f=self._fout,
fieldnames=self._metric_class._header_fieldnames(),
delimiter=delimiter,
lineterminator=lineterminator,
)
self._writer.writeheader()If _header_fieldnames() or writeheader() raises, _fout is open but never closed.
Suggested fix
Wrap the post-open logic in a try/except that closes the file on failure:
self._fout = Path(filename).open("w")
try:
self._writer = DictWriter(
f=self._fout,
fieldnames=self._metric_class._header_fieldnames(),
delimiter=delimiter,
lineterminator=lineterminator,
)
self._writer.writeheader()
except Exception:
self._fout.close()
raiseAcceptance Criteria
-
MetricWriter.__init__closes file handle on failure via try/except - Test added verifying file is closed when init raises
- All existing tests still pass
Issue ID: ISS-001
Created from: agent_notes/issues/issues_2026-02-17_fgmetric_review.md
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
agent-generatedCreated by Claude from expert reviewCreated by Claude from expert reviewbugSomething isn't workingSomething isn't workinggood first issueGood for newcomersGood for newcomerspriority:mediumMedium priorityMedium priority