in azdev/operations/secret.py [0:0]
def _load_regex_patterns(confidence_level=None, custom_pattern=None):
built_in_regex_patterns = _load_built_in_regex_patterns(confidence_level)
if not custom_pattern:
return built_in_regex_patterns
try:
if os.path.isfile(custom_pattern):
with open(custom_pattern, 'r', encoding='utf8') as f:
custom_pattern = json.load(f)
else:
custom_pattern = json.loads(custom_pattern)
except JSONDecodeError as err:
raise ValueError(f'Custom pattern should be in valid json format, err:{err.msg}')
regex_patterns = []
if 'Include' in custom_pattern:
for pattern in custom_pattern['Include']:
if not pattern.get('Pattern', None):
raise ValueError(f'Invalid Custom Pattern: {pattern}, '
f'"Pattern" property is required for Include patterns')
regex_patterns.append(load_regex_pattern_from_json(pattern))
if "Exclude" in custom_pattern:
exclude_pattern_ids = []
for pattern in custom_pattern['Exclude']:
if not pattern.get('Id', None):
raise ValueError(f'Invalid Custom Pattern: {pattern}, "Id" property is required for Exclude patterns')
exclude_pattern_ids.append(pattern['Id'])
for pattern in built_in_regex_patterns:
if pattern.id in exclude_pattern_ids:
continue
regex_patterns.append(pattern)
else:
regex_patterns.extend(built_in_regex_patterns)
return regex_patterns