Skip to content

Releases: jg-rp/python-jsonpath

Version 0.6.0

02 May 07:18

Choose a tag to compare

Breaking changes

  • The "extra filter context" identifier now defaults to _. Previously it defaulted to #, but it has been decided that # is better suited as a current key/property or index identifier.

Features

  • Added a non-standard keys/properties selector (docs, source).
  • Added a non-standard typeof() filter function. type() is an alias for typeof() (docs, source).
  • Added a non-standard isinstance() filter function. is() is an alias for isinstance() (docs, source).
  • Added a current key/property or index identifier. When filtering a mapping, # will hold key associated with the current node (@). When filtering a sequence, # will hold the current index. See docs.

IETF JSONPath Draft compliance

  • Don't allow leading zeros in index selectors. We now raise a JSONPathSyntaxError.
  • Validate the built-in count() function's argument is array-like.

Version 0.5.0

10 Apr 15:22

Choose a tag to compare

Features

  • Added the built-in match filter function.
  • Added the built-in search filter function.
  • Added the built-in value filter function.
  • We now pass the current environment to filter function validation.
  • Added support for the wildcard selector in selector segment lists.
  • We now allow nested filters.

Fixes

  • Fixed a bug where the current object selector (@) would evaluate to undefined when a filter is applied to an array of strings.
  • Compound paths that have a trailing | or & now raise a JSONPathSyntaxError.

IETF JSONPath Draft compliance

  • Removed support for dotted index selectors.
  • Raise a JSONPathSyntaxError for unescaped whitespace and control characters.
  • Raise a JSONPathSyntaxError for empty selector segments.
  • Raise a JSONPathIndexError if an index selector is out of range.
  • Raise a JSONPathSyntaxError for too many colons in a slice selector.
  • Raise a JSONPathIndexError if a slice selector argument is out of range.

Version 0.4.0

06 Apr 12:59

Choose a tag to compare

IETF JSONPath Draft compliance

  • Behavioral change. When applied to a JSON object, filters now have an implicit preceding wildcard selector and the "current" (@) object is set to each of the object's values. This is now consistent with applying filters to arrays and adheres to the IETF JSONPath Internet Draft.

Version 0.3.0

04 Apr 06:30

Choose a tag to compare

IETF JSONPath Draft compliance

  • Added support for function extensions.
  • Added the built-in length() function.
  • Added the built-in count() function. count() is an alias for length().
  • Support filters without parentheses.
  • Adhere to IETF JSONPath draft escaping in quoted property selectors.
  • Handle UTF-16 surrogate pairs in quoted property selectors.

Features

  • Added the built-in keys() function.
  • Added parent and children properties to JSONPathMatch. Now we can traverse the "document tree" after finding matches.
  • Added a parts property to JSONPathMatch. parts is a tuple of ints, slices and strs that can be used with JSONPathEnvironment.getitem() to get the matched object from the original data structure, or equivalent data structures. It is the keys, indices and slices that make up a concrete path.