langchain-ai/langgraph · error · ValueError
Unsupported match type
Error message
Unsupported match type: {match_type} What it means
Dispatch guard in the in-memory store's namespace matching helper (used by list_namespaces): a MatchCondition was encountered whose match_type is neither 'prefix' nor 'suffix'. The function walks key-vs-path element pairs honoring '*' wildcards for those two modes; any other tag (typo like 'exact', None, or a new mode) falls through to this raise.
Solutions
- Construct MatchCondition(match_type='prefix'|'suffix', path=...) when calling list_namespaces programmatically
- Use the supported kwargs (prefix=..., suffix=...) of list_namespaces instead of hand-built conditions
- Check for typos or stale enum values if building conditions dynamically
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at libs/checkpoint/langgraph/store/memory/__init__.py:548 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of langchain-ai/langgraph@38031739e5 (2026-08-26).
Data as JSON: /api/errors/1af748b514ff08aa.
Report an issue: GitHub.
Appendix: source
Thrown at libs/checkpoint/langgraph/store/memory/__init__.py:548
if len(key) < len(path):
return False
if match_type == "prefix":
for k_elem, p_elem in zip(key, path, strict=False):
if p_elem == "*":
continue # Wildcard matches any element
if k_elem != p_elem:
return False
return True
elif match_type == "suffix":
for k_elem, p_elem in zip(reversed(key), reversed(path), strict=False):
if p_elem == "*":
continue # Wildcard matches any element
if k_elem != p_elem:
return False
return True
else:
raise ValueError(f"Unsupported match type: {match_type}")
def _compare_values(item_value: Any, filter_value: Any) -> bool:
"""Compare values in a JSONB-like way, handling nested objects."""
if isinstance(filter_value, dict):
if any(k.startswith("$") for k in filter_value):
return all(
_apply_operator(item_value, op_key, op_value)
for op_key, op_value in filter_value.items()
)
if not isinstance(item_value, dict):
return False
return all(
_compare_values(item_value.get(k), v) for k, v in filter_value.items()
)
elif isinstance(filter_value, (list, tuple)):
return (
isinstance(item_value, (list, tuple))View on GitHub (pinned to 38031739e5)