from types import SimpleNamespace from deerflow.config import memory_config as memory_config_module from deerflow.config.memory_config import ( MemoryConfig, delete_recall_budget_cache, get_effective_memory_config, get_memory_config, set_memory_config, set_recall_budget_cache, ) def test_runtime_disable_cannot_be_reactivated_by_config_or_user_override(monkeypatch): user_id = "memory-disabled-test-user" original = get_memory_config() try: monkeypatch.setattr( memory_config_module, "get_memory_runtime_settings", lambda: SimpleNamespace(enabled=False), ) set_memory_config(MemoryConfig(enabled=True)) set_recall_budget_cache(user_id, "high") effective = get_effective_memory_config(user_id) assert effective.enabled is False finally: delete_recall_budget_cache(user_id) set_memory_config(original) def test_admin_runtime_enable_activates_memory_even_when_yaml_default_is_off(monkeypatch): original = get_memory_config() try: monkeypatch.setattr( memory_config_module, "get_memory_runtime_settings", lambda: SimpleNamespace(enabled=True), ) set_memory_config(MemoryConfig(enabled=False, version="v1")) effective = get_effective_memory_config("memory-enabled-test-user") assert effective.enabled is True assert effective.version == "v1" finally: set_memory_config(original)