mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-04-21 16:21:12 +00:00
Pre-compile regexes to speed up target processing.
Without this, changing a large number of files results in target processing taking a very long time due to repeatedly compiling the same patterns in a loop over many targets.
This commit is contained in:
@@ -137,6 +137,7 @@ def filter_targets(targets, patterns, include=True, directories=True, errors=Tru
|
||||
:rtype: collections.Iterable[CompletionTarget]
|
||||
"""
|
||||
unmatched = set(patterns or ())
|
||||
compiled_patterns = dict((p, re.compile('^%s$' % p)) for p in patterns) if patterns else None
|
||||
|
||||
for target in targets:
|
||||
matched_directories = set()
|
||||
@@ -145,7 +146,7 @@ def filter_targets(targets, patterns, include=True, directories=True, errors=Tru
|
||||
if patterns:
|
||||
for alias in target.aliases:
|
||||
for pattern in patterns:
|
||||
if re.match('^%s$' % pattern, alias):
|
||||
if compiled_patterns[pattern].match(alias):
|
||||
match = True
|
||||
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user