Description
14 function signatures across 9 files use mutable default arguments (=[], ={}), which is a well-known Python anti-pattern.
Mutable defaults are evaluated once at function definition time and shared across all calls, so data from one invocation can silently persist into subsequent calls. This is particularly concerning in the AI reasoning interfaces where shared state between invocations could lead to subtle bugs.
Proposed Fix
Replace all mutable defaults with None sentinels and assign fresh instances inside the function body:
# Before
def foo(items=[]):
items.append(1)
return items
# After
def foo(items=None):
if items is None:
items = []
items.append(1)
return items
Files Affected
onair/src/reasoning/reasoning_interface.py
onair/src/reasoning/agent.py
- And 7 additional files in
onair/src/ and plugins
PR
PR #194 addresses this issue.
Description
14 function signatures across 9 files use mutable default arguments (
=[],={}), which is a well-known Python anti-pattern.Mutable defaults are evaluated once at function definition time and shared across all calls, so data from one invocation can silently persist into subsequent calls. This is particularly concerning in the AI reasoning interfaces where shared state between invocations could lead to subtle bugs.
Proposed Fix
Replace all mutable defaults with
Nonesentinels and assign fresh instances inside the function body:Files Affected
onair/src/reasoning/reasoning_interface.pyonair/src/reasoning/agent.pyonair/src/and pluginsPR
PR #194 addresses this issue.