Skip to content

3.7.0

Compare
Choose a tag to compare
@wwkimball wwkimball released this 16 Jan 17:19
· 12 commits to master since this release
8fa2366

Enhancements:

  • Support for Python 3.11 has been added.
  • A new Search Keyword has been added, [unique([NAME])]. This operates against
    collections to return only values which have no duplicates within the
    collection; i.e.: [1, 2, 2, 3] has unique values, [1, 3]. The NAME argument
    is required when operating against Hashes (maps/dicts) and Arrays-of-Hashes
    (sequences/lists of maps/dicts) to identify which field/property to evaluate
    for uniqueness. This can be inverted to return only results which are
    duplicated within the collection.
  • A new Search Keyword has been added, [distinct([NAME])]. This operates
    against collections to return exactly one of every value within the
    collection, discarding duplicates; i.e.: [1, 2, 2, 3] has distinct values,
    [1, 2, 3]. The NAME argument is required when operating against Hashes
    (maps/dicts) and Arrays-of-Hashes (sequences/lists of maps/dicts) to identify
    which field/property to evaluate for uniqueness. This cannot be inverted.
  • Added a new Collector Math Operator: & (intersection)
    As in set mathematics, this yields only elements of two collections which are
    common to both collections. Unlike set mathematics, collections allow
    duplicate elements. If you need to enforce distinctness of the intersected
    results, use the [distinct([NAME])] Search Keyword against the collected
    result, as in ((list1)&(list2))[distinct([NAME])].

Bug Fixes:

  • A typographical error in yamlpath.enums has been corrected with backward-
    compatible adapters in place to support both the correct and incorrect
    spelling of PathSeparators (formerly PathSeperators). If the PathSeperators
    version appears in your own code, please update to the new spelling. The
    incorrectly spelled version of this enumeration is now deprecated and will be
    removed in a future release. Thanks go entirely to
    https://github.com/AndydeCleyre for working so hard to submit this fix!
  • Processor.get_nodes would emit a nonobvious error message when mustexist is
    left at its default value (False) and yaml_path contained ** or * segments.
    Now, these segment types are excluded from generating "missing" nodes; only
    nodes which exist can be matched by * and **. Credit and my thanks go to
    https://github.com/gdubicki for discovering and reporting this issue.