From 9e1ced64388d6fa979da3ffc174b7d0837d2f86f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=AD=E3=81=8A=E3=82=93?= <240400715+neon-aiart@users.noreply.github.com> Date: Tue, 4 Nov 2025 03:14:14 +0900 Subject: [PATCH] Fix: Prevent TypeError: 'NoneType' is not iterable on model switching (Forge/reForge) This fixes the TypeError that occurs during model switching in sd-webui-reforge and possibly other optimized environments. The error happens because 'get_token_counter' tries to access 'sd_models.model_data.sd_model.cond_stage_model' before the model is fully loaded (when 'sd_model' is None). The fix adds a check for the 'None' value to safely return 0 tokens instead of throwing an error. --- scripts/physton_prompt/get_token_counter.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/physton_prompt/get_token_counter.py b/scripts/physton_prompt/get_token_counter.py index 0080284..fb40117 100644 --- a/scripts/physton_prompt/get_token_counter.py +++ b/scripts/physton_prompt/get_token_counter.py @@ -27,6 +27,10 @@ def get_token_counter(text, steps): prompts = [prompt_text for step, prompt_text in flat_prompts] if forge: + # Check if the model is fully loaded to prevent TypeError during model switching + if sd_models.model_data.sd_model is None: + return {"token_count": 0, "max_length": 0} + cond_stage_model = sd_models.model_data.sd_model.cond_stage_model token_count, max_length = max([model_hijack.get_prompt_lengths(prompt,cond_stage_model) for prompt in prompts], key=lambda args: args[0])