Releases: wwkimball/yamlpath
2.3.2
2.3.1
2.3.1:
Bug Fixes:
- Under certain conditions, some YAML changes were affecting unexpected nodes
which had identical original values. - YAMLValueFormats.DEFAULT was identifying all CLI-supplied values as String
rather than their most-likely data-type.
API COMPATIBILITY WARNING:
Previous versions of the library returned only selected data nodes. Now,
instead of data nodes, NodeCoords objects are returned. This is necessary in
order to resolve Issue #44, which was caused by Python over-aggressively
optimizing memory, making non-String data nodes references to any other node
with the same value. This made changing exactly one of those data nodes
impossible because all nodes with the same original value would change with it.
Now, the NodeCoords class carries DOM tracking data along with each data
node making precise node changes possible. However, your queries will now
return this more complex additional data. In order to evaluate just the data,
please refer to this before-and-after example:
BEFORE:
for node in processor.get_values(yaml_path):
do_something_with(node)
AFTER:
for node_coordinate in processor.get_values(yaml_path):
do_something_with(node_coordinate.node)
If you need to recursively remove DOM tracking data from the results, a new
utility function is available: func.unwrap_node_coords(data). Note however
that you need that tracking data in order to change data within the DOM.
This does not affect the output of the sample command-line utilities.
2.3.0
2.3.0:
Bug Fixes:
- The get_yaml_data helper function now contains ruamel.yaml errors/warnings
without disrupting calling context handlers.
Enhancements:
- yaml-paths version 0.2.0 now has more detailed output control, trading
--pathonly for --values, --nofile, --noexpression, and --noyamlpath.
2.2.0
2.2.0:
Bug Fixes:
- YAML construction errors are now caught and more cleanly reported by all
command-line tools.
Enhancements:
- yaml-paths version 0.1.0 now has more specific flags, enabling:
- more precise handling of anchors in YAML data, and
- expanding parent node results to instead return all their child leaf nodes.
2.1.1
Bug Fixes:
- yaml-paths was recursing into nodes for which the name had already matched,
causing unnecessary search results. Version 0.0.2 fixes this; when a node is
matched by name, any children are ignored because they will have already been
yielded as the parent node's value.
2.1.0
Enhancements:
- Added a new yaml-paths command-line tool. In short, it enables searching
YAML/Compatible files, returning YAML Paths for any matches. As an Alpha-
grade tool, it is being released at version 0.0.1. Feedback welcome! - All command-line tools which accept --pathsep now accept symbolic seperators
rather than only names; so, --pathsep=/ is idental to --pathsep=fslash, etc.
Minor changes were also made to all command-line tools to consolidate some
repeat code. Each has a version bump to reflect this minor refactoring
effort.
2.0.2
Bug Fixes:
- eyaml-rotate-keys was broken by the refactoring for 2.0.0. eyaml-rotate-keys
v1.0.2 restores functionality.
Enhancements:
- Command-line tools are now managed via pip as entry_points/console_scripts
rather than external binaries. This enables superior cross-platform
compatibility as well as unit testing. As such, all of the CLI tools have
been updated pursuant to (generally trivial, excepting eyaml-rotate-keys)
issues discovered during their newfound CI tests.
2.0.1
2.0.0
Enhancements:
- Added Collectors to YAML Path expressions. These take the form of "(YAML
Path)" -- parenthesis () are used to demarcate each Collector -- resulting in
a list of zero or more matches for the sub-query. Operators between
Collectors include + and -, like "(...)+(...)", "(...)-(...)", and nested
Collectors are possible, like "(...)-((...)+(...))". Collectors may appear
anywhere within the outer YAML Path, effectively setting the point within the
data at which each Collector is rooted. - A major code refactoring was undertaken to break YAMLPath out as its own class
and improve code quality (per mypy and pylint).
Bug Fixes:
- yaml-set v1.0.4 now implies --mustexist when --saveto is set. Otherwise,
--saveto was trying to save nothing when --change (without --mustexist)
pointed nowhere.