From fe23deb18cc7d3a8f76bf63f1ace934af67b0119 Mon Sep 17 00:00:00 2001 From: simpleqt <89645338+simpleqt@users.noreply.github.com> Date: Wed, 30 Sep 2026 22:01:27 +0800 Subject: [PATCH] Raise a clear ValueError for invalid text_mem_type get_default_cube_config only assigned text_mem_config inside the tree_text/general_text branches, so any other value crashed with a bare UnboundLocalError. Fixes #2441 --- src/memos/mem_os/utils/default_config.py | 5 +++++ .../mem_os/test_default_config_text_mem_type.py | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 tests/mem_os/test_default_config_text_mem_type.py diff --git a/src/memos/mem_os/utils/default_config.py b/src/memos/mem_os/utils/default_config.py index de79d535d..c9fead569 100644 --- a/src/memos/mem_os/utils/default_config.py +++ b/src/memos/mem_os/utils/default_config.py @@ -231,6 +231,11 @@ def get_default_cube_config( }, } + else: + raise ValueError( + f"text_mem_type must be 'tree_text' or 'general_text', got {text_mem_type!r}" + ) + # Configure activation memory if enabled. # KV cache activation memory requires a local HuggingFace/vLLM model (it # extracts internal attention KV tensors via build_kv_cache), so it cannot diff --git a/tests/mem_os/test_default_config_text_mem_type.py b/tests/mem_os/test_default_config_text_mem_type.py new file mode 100644 index 000000000..b9fb84844 --- /dev/null +++ b/tests/mem_os/test_default_config_text_mem_type.py @@ -0,0 +1,17 @@ +import pytest + +from memos.mem_os.utils.default_config import get_default_cube_config + + +@pytest.mark.parametrize("bad_type", ["tree-text", "Tree_Text", ""]) +def test_invalid_text_mem_type_raises_clear_error(bad_type): + # an unrecognized text_mem_type used to crash with a bare + # UnboundLocalError because text_mem_config was never assigned + with pytest.raises(ValueError, match="text_mem_type must be"): + get_default_cube_config(openai_api_key="sk-x", text_mem_type=bad_type) + + +@pytest.mark.parametrize("mem_type", ["tree_text", "general_text"]) +def test_valid_text_mem_types_build_cube_config(mem_type): + config = get_default_cube_config(openai_api_key="sk-x", text_mem_type=mem_type) + assert config.text_mem.backend == mem_type