in src/services/rule_meta_service.py [0:0]
def resolve_one_name(self, name: str) -> Generator[Payload, None, None]:
resolved = set()
for sample in self._available_ids:
if name not in sample:
continue
resolved.add(sample)
if self._allow_ambiguous and not self._allow_multiple:
# allow ambiguous means that even if the provided name
# to resolve is too fuzzy and can be interpreted as
# multiple different rules, we anyway resolve the first
# similar. If allow_ambiguous is False, we resolve the
# name only if it represents only one rule without doubt.
break
if not resolved:
_LOG.warning(f'Could not resolve any rule from: {name}')
yield name, False
return
# resolved rules exist
if self._allow_multiple:
_LOG.debug(f'Multiple rules from one name are allowed. '
f'Resolving all from {name}')
for rule in resolved:
yield rule, True
return
# multiple not allowed. But something is resolved.
# Either one ambiguous or just one certain. Anyway yielding
if len(resolved) == 1:
_LOG.debug(f'One rule resolved from {name}')
yield resolved.pop(), True
return
# multiple not allowed
_LOG.warning(f'Cannot certainly resolve name: {name}')
yield name, False