Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
+ "yielding a KEY-ANCHOR match, {}."
).format(key, tmp_path)
)
if expand_children:
for path in yield_children(
logger, val, terms, pathsep, tmp_path,
seen_anchors, search_anchors=search_anchors,
include_key_aliases=include_key_aliases,
include_value_aliases=include_value_aliases):
yield path
else:
yield YAMLPath(tmp_path)
continue
# Search the name of the key, itself
matches = search_matches(method, term, key)
if (matches and not invert) or (invert and not matches):
logger.debug(
("yaml_paths::search_for_paths:"
+ "yielding KEY name match, {}: {}."
).format(key, tmp_path)
)
if expand_children:
# Include every non-excluded child node under this
# matched parent node.
for path in yield_children(
logger, val, terms, pathsep, tmp_path,
seen_anchors, search_anchors=search_anchors,
include_key_aliases=include_key_aliases,
include_value_aliases=include_value_aliases):
yield path
else:
self.logger.debug(
("Processor::_get_nodes_by_search: Seeking SEARCH nodes matching"
+ " {}.")
.format(terms)
)
invert = terms.inverted
method = terms.method
attr = terms.attribute
term = terms.term
if isinstance(data, list):
for lstidx, ele in enumerate(data):
if attr == '.':
matches = search_matches(method, term, ele)
elif isinstance(ele, dict) and attr in ele:
matches = search_matches(method, term, ele[attr])
if (matches and not invert) or (invert and not matches):
yield NodeCoords(ele, data, lstidx)
elif isinstance(data, dict):
# Allow . to mean "each key's name"
if attr == '.':
for key, val in data.items():
matches = search_matches(method, term, key)
if (matches and not invert) or (invert and not matches):
yield NodeCoords(val, data, key)
elif attr in data:
value = data[attr]
matches = search_matches(method, term, value)
if (matches and not invert) or (invert and not matches):
term = terms.term
if isinstance(data, list):
for lstidx, ele in enumerate(data):
if attr == '.':
matches = search_matches(method, term, ele)
elif isinstance(ele, dict) and attr in ele:
matches = search_matches(method, term, ele[attr])
if (matches and not invert) or (invert and not matches):
yield NodeCoords(ele, data, lstidx)
elif isinstance(data, dict):
# Allow . to mean "each key's name"
if attr == '.':
for key, val in data.items():
matches = search_matches(method, term, key)
if (matches and not invert) or (invert and not matches):
yield NodeCoords(val, data, key)
elif attr in data:
value = data[attr]
matches = search_matches(method, term, value)
if (matches and not invert) or (invert and not matches):
yield NodeCoords(value, data, attr)
else:
# Check the passed data itself for a match
matches = search_matches(method, term, data)
if (matches and not invert) or (invert and not matches):
yield NodeCoords(data, parent, parentref)
matches = search_matches(method, term, ele[attr])
if (matches and not invert) or (invert and not matches):
yield NodeCoords(ele, data, lstidx)
elif isinstance(data, dict):
# Allow . to mean "each key's name"
if attr == '.':
for key, val in data.items():
matches = search_matches(method, term, key)
if (matches and not invert) or (invert and not matches):
yield NodeCoords(val, data, key)
elif attr in data:
value = data[attr]
matches = search_matches(method, term, value)
if (matches and not invert) or (invert and not matches):
yield NodeCoords(value, data, attr)
else:
# Check the passed data itself for a match
matches = search_matches(method, term, data)
if (matches and not invert) or (invert and not matches):
yield NodeCoords(data, parent, parentref)
# Allow . to mean "each key's name"
if attr == '.':
for key, val in data.items():
matches = search_matches(method, term, key)
if (matches and not invert) or (invert and not matches):
yield NodeCoords(val, data, key)
elif attr in data:
value = data[attr]
matches = search_matches(method, term, value)
if (matches and not invert) or (invert and not matches):
yield NodeCoords(value, data, attr)
else:
# Check the passed data itself for a match
matches = search_matches(method, term, data)
if (matches and not invert) or (invert and not matches):
yield NodeCoords(data, parent, parentref)
Raises: N/A
"""
self.logger.debug(
("Processor::_get_nodes_by_search: Seeking SEARCH nodes matching"
+ " {}.")
.format(terms)
)
invert = terms.inverted
method = terms.method
attr = terms.attribute
term = terms.term
if isinstance(data, list):
for lstidx, ele in enumerate(data):
if attr == '.':
matches = search_matches(method, term, ele)
elif isinstance(ele, dict) and attr in ele:
matches = search_matches(method, term, ele[attr])
if (matches and not invert) or (invert and not matches):
yield NodeCoords(ele, data, lstidx)
elif isinstance(data, dict):
# Allow . to mean "each key's name"
if attr == '.':
for key, val in data.items():
matches = search_matches(method, term, key)
if (matches and not invert) or (invert and not matches):
yield NodeCoords(val, data, key)
elif attr in data:
value = data[attr]
("yaml_paths::search_for_paths:"
+ "yielding RECURSED match, {}."
).format(subpath)
)
logger.debug("<<<< <<<< <<<< <<<< <<<< <<<< <<<<")
yield subpath
elif search_values:
if (anchor_matched is AnchorMatches.UNSEARCHABLE_ALIAS
and not include_value_aliases):
continue
check_value = ele
if decrypt_eyaml and processor.is_eyaml_value(ele):
check_value = processor.decrypt_eyaml(ele)
matches = search_matches(method, term, check_value)
if (matches and not invert) or (invert and not matches):
logger.debug(
("yaml_paths::search_for_paths:"
+ "yielding VALUE match, {}: {}."
).format(check_value, tmp_path)
)
yield YAMLPath(tmp_path)
# pylint: disable=too-many-nested-blocks
elif isinstance(data, CommentedMap):
if build_path:
build_path += strsep
elif pathsep is PathSeperators.FSLASH:
build_path = strsep
pool = data.non_merged_items()