Skip to main content

No project description provided

Project description

jsonpath-rust-bindings

PyPI - Downloads GitHub Workflow Status (with event) GitHub Workflow Status (with event) piwheels (including prereleases)

This package contains Python bindings for jsonpath-rust library by besok.

The details regarding the JsonPath itself can be found here.

Installation

pip install jsonpath-rust-bindings

Usage

from jsonpath_rust_bindings import Finder

sample = {
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95,
            },
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99,
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99,
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99,
            },
        ],
        "bicycle": {"color": "red", "price": 19.95},
    },
    "expensive": 10,
}

queries = [
    '$.store.book[*].author',
    '$..book[?(@.isbn)]',
    '$.store.*',
    '$..author',
    '$.store..price',
    '$..book[2]',
    # '$..book[-2]',
    '$..book[0,1]',
    '$..book[:2]',
    '$..book[1:2]',
    '$..book[-2:]',
    '$..book[2:]',
    '$.store.book[?(@.price<10)]',
    '$..book[?(@.price<=$.expensive)]',
    "$..book[?(@.author ~= '.*Rees')].price",
    '$..*',
]

f = Finder(sample)

for query in queries:
    print(query, f.find(query), '\n')

# You will see a bunch of found items like
# $..book[?(@.author ~= '.*Rees')].price [JsonPathResult(data=8.95, path=Some("$.['store'].['book'][0].['price']"), is_new_value=False)]

JsonPathResult has the following attributes:

  • data: the found value
  • path: the path to the found value
  • is_new_value: whether the value is a new value or a copy of the original value

JsonPathResult can't be constructed from Python; it is only returned by Finder.find().

Caveats

The current implementation is cloning the original PyObject data when converting it to the serde Value. It happens each time you're creating a new Finder instance. Try to reuse the same Finder instance for querying if it's possible.

Also, It has yet another consequence demonstrated in the following example:

>>> original_object_i_want_to_mutate = {'a': {'b': 'sample b'}}
>>> from jsonpath_rust_bindings import Finder
>>> f = Finder(original_object_i_want_to_mutate)
>>> b_dict = f.find('$.a')[0].data
>>> b_dict
{'b': 'sample b'}
>>> b_dict['new'] = 42
>>> original_object_i_want_to_mutate
{'a': {'b': 'sample b'}}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsonpath_rust_bindings-0.2.2.tar.gz (9.7 kB view hashes)

Uploaded Source

Built Distributions

jsonpath_rust_bindings-0.2.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.1 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ s390x

jsonpath_rust_bindings-0.2.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.1 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ppc64le

jsonpath_rust_bindings-0.2.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.8 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARMv7l

jsonpath_rust_bindings-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

jsonpath_rust_bindings-0.2.2-cp312-none-win_amd64.whl (872.1 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

jsonpath_rust_bindings-0.2.2-cp312-none-win32.whl (793.8 kB view hashes)

Uploaded CPython 3.12 Windows x86

jsonpath_rust_bindings-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

jsonpath_rust_bindings-0.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.1 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

jsonpath_rust_bindings-0.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.1 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

jsonpath_rust_bindings-0.2.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.8 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

jsonpath_rust_bindings-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

jsonpath_rust_bindings-0.2.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.5+ i686

jsonpath_rust_bindings-0.2.2-cp312-cp312-macosx_11_0_arm64.whl (984.9 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

jsonpath_rust_bindings-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

jsonpath_rust_bindings-0.2.2-cp311-none-win_amd64.whl (873.2 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

jsonpath_rust_bindings-0.2.2-cp311-none-win32.whl (795.0 kB view hashes)

Uploaded CPython 3.11 Windows x86

jsonpath_rust_bindings-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

jsonpath_rust_bindings-0.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.1 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

jsonpath_rust_bindings-0.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.1 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

jsonpath_rust_bindings-0.2.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.8 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

jsonpath_rust_bindings-0.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

jsonpath_rust_bindings-0.2.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.5+ i686

jsonpath_rust_bindings-0.2.2-cp311-cp311-macosx_11_0_arm64.whl (985.8 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

jsonpath_rust_bindings-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

jsonpath_rust_bindings-0.2.2-cp310-none-win_amd64.whl (873.5 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

jsonpath_rust_bindings-0.2.2-cp310-none-win32.whl (795.0 kB view hashes)

Uploaded CPython 3.10 Windows x86

jsonpath_rust_bindings-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

jsonpath_rust_bindings-0.2.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

jsonpath_rust_bindings-0.2.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

jsonpath_rust_bindings-0.2.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.8 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

jsonpath_rust_bindings-0.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

jsonpath_rust_bindings-0.2.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.5+ i686

jsonpath_rust_bindings-0.2.2-cp310-cp310-macosx_11_0_arm64.whl (985.8 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

jsonpath_rust_bindings-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl (1.1 MB view hashes)

Uploaded CPython 3.10 macOS 10.12+ x86-64

jsonpath_rust_bindings-0.2.2-cp39-none-win_amd64.whl (874.2 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

jsonpath_rust_bindings-0.2.2-cp39-none-win32.whl (795.0 kB view hashes)

Uploaded CPython 3.9 Windows x86

jsonpath_rust_bindings-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

jsonpath_rust_bindings-0.2.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

jsonpath_rust_bindings-0.2.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

jsonpath_rust_bindings-0.2.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.8 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

jsonpath_rust_bindings-0.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

jsonpath_rust_bindings-0.2.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.5+ i686

jsonpath_rust_bindings-0.2.2-cp38-none-win_amd64.whl (873.2 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

jsonpath_rust_bindings-0.2.2-cp38-none-win32.whl (795.7 kB view hashes)

Uploaded CPython 3.8 Windows x86

jsonpath_rust_bindings-0.2.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

jsonpath_rust_bindings-0.2.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

jsonpath_rust_bindings-0.2.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

jsonpath_rust_bindings-0.2.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.8 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

jsonpath_rust_bindings-0.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

jsonpath_rust_bindings-0.2.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.5+ i686

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page