Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
- &testAnchor Initial Value
top_array:
# Comment 1
- 1
# Comment 2
- 2
# Comment N
top_scalar: Top-level plain scalar string
"""
yaml = YAML()
data = yaml.load(yamldata)
processor = Processor(quiet_logger, data)
processor.set_value(yamlpath, value, mustexist=mustexist, value_format=vformat, pathsep=pathsep)
matchtally = 0
for node in processor.get_nodes(yamlpath, mustexist=mustexist):
assert unwrap_node_coords(node) == value
matchtally += 1
assert matchtally == tally
alpha: 1.1
bravo: 2.2
charlie: 3.3
delta: 4.4
number_keys:
1: one
2: two
3: three
"""
yaml = YAML()
processor = Processor(quiet_logger, yaml.load(yamldata))
matchidx = 0
for node in processor.get_nodes(
yamlpath, mustexist=mustexist, default_value=default
):
assert unwrap_node_coords(node) == results[matchidx]
matchidx += 1
assert len(results) == matchidx
hash:
*keyOne :
subval: 1.1
*keyTwo :
subval: 2.2
"""
yaml = YAML()
data = yaml.load(yamldata)
processor = Processor(quiet_logger, data)
yamlpath = YAMLPath("hash[&keyTwo].subval")
newvalue = "Mute audibles"
processor.set_value(yamlpath, newvalue, mustexist=True)
matchtally = 0
for node in processor.get_nodes(yamlpath):
assert unwrap_node_coords(node) == newvalue
matchtally += 1
assert matchtally == 1
alias_number: *alias_number
alias_bool: *alias_bool
complex:
hash:
number: 1
bool: true
alias_number: *alias_number
alias_bool: *alias_bool
"""
yaml = YAML()
data = yaml.load(yamldata)
processor = Processor(quiet_logger, data)
processor.set_value(yamlpath, value)
for verification in verifications:
for verify_node_coord in processor.get_nodes(verification[0]):
assert unwrap_node_coords(verify_node_coord) == verification[1]
# Attempt to open the YAML file; check for parsing errors
yaml_data = get_yaml_data(yaml, log, args.yaml_file)
if yaml_data is None:
# An error message has already been logged
sys.exit(1)
# Seek the queried value(s)
discovered_nodes = []
processor = EYAMLProcessor(
log, yaml_data, binary=args.eyaml,
publickey=args.publickey, privatekey=args.privatekey)
try:
for node in processor.get_eyaml_values(yaml_path, mustexist=True):
log.debug("Got {} from {}.".format(repr(node), yaml_path))
discovered_nodes.append(unwrap_node_coords(node))
except YAMLPathException as ex:
log.critical(ex, 1)
except EYAMLCommandException as ex:
log.critical(ex, 2)
for node in discovered_nodes:
if isinstance(node, (dict, list)):
print(json.dumps(node))
else:
print("{}".format(str(node).replace("\n", r"\n")))
for node_coord in self._get_required_nodes(
data, peek_path, 0, parent, parentref):
if (isinstance(node_coord, NodeCoords)
and isinstance(node_coord.node, list)):
for coord_idx, coord in enumerate(node_coord.node):
if not isinstance(coord, NodeCoords):
coord = NodeCoords(
coord, node_coord.node, coord_idx)
node_coords.append(coord)
else:
node_coords.append(node_coord)
elif peek_attrs.operation == CollectorOperators.SUBTRACTION:
rem_data = []
for node_coord in self._get_required_nodes(
data, peek_path, 0, parent, parentref):
unwrapped_data = unwrap_node_coords(node_coord)
if isinstance(unwrapped_data, list):
for unwrapped_datum in unwrapped_data:
rem_data.append(unwrapped_datum)
else:
rem_data.append(unwrapped_data)
node_coords = [e for e in node_coords
if unwrap_node_coords(e) not in rem_data]
else:
raise YAMLPathException(
"Adjoining Collectors without an operator has no"
+ " meaning; try + or - between them",
str(yaml_path),
str(peek_path)
)
else:
node_coords.append(coord)
else:
node_coords.append(node_coord)
elif peek_attrs.operation == CollectorOperators.SUBTRACTION:
rem_data = []
for node_coord in self._get_required_nodes(
data, peek_path, 0, parent, parentref):
unwrapped_data = unwrap_node_coords(node_coord)
if isinstance(unwrapped_data, list):
for unwrapped_datum in unwrapped_data:
rem_data.append(unwrapped_datum)
else:
rem_data.append(unwrapped_data)
node_coords = [e for e in node_coords
if unwrap_node_coords(e) not in rem_data]
else:
raise YAMLPathException(
"Adjoining Collectors without an operator has no"
+ " meaning; try + or - between them",
str(yaml_path),
str(peek_path)
)
else:
break # pragma: no cover
next_segment_idx += 1
# yield only when there are results
if node_coords:
yield node_coords