Require TempController(Smith)'s model params/ambient via setters; add comprehensive process() checks
TempController(Smith).__init__ no longer takes model_params/theta_amb - set_model_plant_params() and the existing set_ambient_temperature() must be called instead (mirrors components/plant/pot.py's own Pot constructor refactor). temp_controller.py's now-pointless model_params/theta_amb constructor placeholders (kept only for "compatibility" with Smith) are dropped too. Both TempController variants now raise a clear RuntimeError from process() itself if set_params() wasn't called, instead of letting it surface deep inside Pid.process() as an opaque "'NoneType' object is not subscriptable". Smith additionally checks its internal models via Pot.is_configured() (new) and raises if set_model_plant_params()/set_ambient_temperature() weren't called either. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DkkuG48uHFCGKe6dPSERFk
This commit is contained in:
@@ -57,6 +57,14 @@ class Pot(APlant):
|
||||
def initial(self, temp):
|
||||
self.temp = temp
|
||||
|
||||
def is_configured(self):
|
||||
"""Whether both set_plant_params() and set_ambient_temperature()
|
||||
have been called - lets a caller driving this Pot as an internal
|
||||
model (e.g. TempController(Smith)) check upfront and raise its
|
||||
own comprehensive error, rather than letting process() fail on
|
||||
whichever of the two happens to be missing."""
|
||||
return self.delay is not None and self.theta_amb is not None
|
||||
|
||||
def activate(self, enable):
|
||||
pass
|
||||
|
||||
|
||||
Reference in New Issue
Block a user