regex
Utilities for pattern matching on module and layer names.
Functions
Check if a name matches any of the given patterns. |
- matches_pattern(name, patterns, *, allow_callable=True)
Check if a name matches any of the given patterns.
This utility function checks if a given name (e.g., module name, layer name) matches any pattern in a collection of patterns. Patterns can be: - String wildcards (using fnmatch syntax, e.g., “.attention.”) - Callable predicates that take a name and return bool - None (matches everything)
- Parameters:
name (str) – The name to check (e.g., “model.layer1.attention.weight”)
patterns (str | Callable[[str], bool] | Iterable[str | Callable[[str], bool]] | None) – A single pattern, iterable of patterns, or None. If None, returns True (matches everything).
allow_callable (bool) – If False, raises TypeError when encountering callable patterns. Useful for contexts where only string patterns are allowed.
- Returns:
True if the name matches any pattern, False otherwise.
- Raises:
TypeError – If pattern type is unsupported or if callable patterns are provided when allow_callable=False.
- Return type:
bool
Examples
>>> matches_pattern("model.attention.query", "*.attention.*") True >>> matches_pattern("model.mlp.linear", ["*.attention.*", "*.mlp.*"]) True >>> matches_pattern("model.layer1", lambda x: "layer" in x) True >>> matches_pattern("anything", None) True