Skip to main content

JSONSchema Spec with object-oriented paths

Project description

https://img.shields.io/pypi/v/jsonschema-path.svg https://travis-ci.org/p1c2u/jsonschema-path.svg?branch=master https://img.shields.io/codecov/c/github/p1c2u/jsonschema-path/master.svg?style=flat https://img.shields.io/pypi/pyversions/jsonschema-path.svg https://img.shields.io/pypi/format/jsonschema-path.svg https://img.shields.io/pypi/status/jsonschema-path.svg

About

Object-oriented JSONSchema

Key features

  • Traverse schema like paths

  • Access schema on demand with separate dereferencing accessor layer

Installation

pip install jsonschema-path

Alternatively you can download the code and install from the repository:

pip install -e git+https://github.com/p1c2u/jsonschema-path.git#egg=jsonschema_path

Usage

>>> from jsonschema_path import SchemaPath

>>> d = {
...     "properties": {
...        "info": {
...            "$ref": "#/$defs/Info",
...        },
...     },
...     "$defs": {
...         "Info": {
...             "properties": {
...                 "title": {
...                     "$ref": "http://example.com",
...                 },
...                 "version": {
...                     "type": "string",
...                     "default": "1.0",
...                 },
...             },
...         },
...     },
... }

>>> path = SchemaPath.from_dict(d)

>>> # Stat keys
>>> "properties" in path
True

>>> # Concatenate paths with /
>>> info_path = path / "properties" / "info"

>>> # Stat keys with implicit dereferencing
>>> "properties" in info_path
True

>>> # Concatenate paths with implicit dereferencing
>>> version_path = info_path / "properties" / "version"

>>> # Open content with implicit dereferencing
>>> with version_path.open() as contents:
...     print(contents)
{'type': 'string', 'default': '1.0'}

Benchmarks

Benchmarks mirror the lightweight (dependency-free) JSON output format used in pathable.

Run locally with Poetry:

poetry run python -m tests.benchmarks.bench_parse --output reports/bench-parse.json
poetry run python -m tests.benchmarks.bench_lookup --output reports/bench-lookup.json

For a quick smoke run:

poetry run python -m tests.benchmarks.bench_parse --output reports/bench-parse.quick.json --quick
poetry run python -m tests.benchmarks.bench_lookup --output reports/bench-lookup.quick.json --quick

You can also control repeats/warmup via env vars:

export JSONSCHEMA_PATH_BENCH_REPEATS=5
export JSONSCHEMA_PATH_BENCH_WARMUP=1

Compare two results:

poetry run python -m tests.benchmarks.compare_results \
   --baseline reports/bench-lookup-master.json \
   --candidate reports/bench-lookup.json \
   --tolerance 0.20

License

Copyright (c) 2017-2025, Artur Maciag, All rights reserved. Apache-2.0

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

jsonschema_path-0.4.1.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jsonschema_path-0.4.1-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

Details for the file jsonschema_path-0.4.1.tar.gz.

File metadata

  • Download URL: jsonschema_path-0.4.1.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jsonschema_path-0.4.1.tar.gz
Algorithm Hash digest
SHA256 ffca3bd37f66364ae3afeaa2804d6078a9ab3b9359ade4dd9923aabbbd475e71
MD5 b256fb2abe76a59f7f74186a0388e6bd
BLAKE2b-256 a88d4b2e648cf643d19e1f76260d9cb002d242e38b4298d6da110bd3c3d8d0d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonschema_path-0.4.1.tar.gz:

Publisher: python-publish.yml on p1c2u/jsonschema-path

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jsonschema_path-0.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for jsonschema_path-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 727d8714158c41327908677e6119f9db9d5e0f486d4cc79ca4b4016eee2f33e8
MD5 9cba9f13557a480b7e561f87c9e69ac1
BLAKE2b-256 425a5a735fd9c889fd7ee214525620ead725861f9f4ddd27097408b63e596b06

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonschema_path-0.4.1-py3-none-any.whl:

Publisher: python-publish.yml on p1c2u/jsonschema-path

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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