Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.1.1 instead.

jsonsubschema

CI

jsonsubschema checks if one JSON schema is a subschema (subtype) of another.

For any two JSON schemas s1 and s2, s1 <: s2 (reads s1 is subschema/subtype of s2) if every JSON document instance that validates against s1 also validates against s2.

jsonsubschema is very useful in analysing schema evolution and ensuring that newer schema versions are backward compatible. jsonsubschema also enables static type checking on different components of a system that uses JSON schema to describe data interfaces among the system's different components.

The details of JSON subschema are covered in our ISSTA 2021 paper, which received a Distinguished Artifact Award:

@InProceedings{issta21JSONsubschema,
  author    = {Habib, Andrew and Shinnar, Avraham and Hirzel, Martin and Pradel, Michael},
  title     = {Finding Data Compatibility Bugs with JSON Subschema Checking},
  booktitle = {The ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA)},
  year      = {2021},
  pages     = {620--632},
  url       = {https://doi.org/10.1145/3460319.3464796},
}

I) Obtaining the tool

Requirements

  • Python 3.8 or higher
  • Other python dependencies will be installed during the installation process

You can either install jsonsubschema from PyPI or from the source code on GitHub.

A) Install from PyPI

Execute the following:

pip install jsonsubschema

B) Install from GitHub source code

Execute the following:

git clone https://github.com/IBM/jsonsubschema.git
cd jsonsubschema
pip install .

For development installation (editable mode):

pip install -e .

II) Running subschema

JSON subschema provides two usage interfaces:

A) CLI interface

  1. Create two JSON schema examples by executing the following:
echo '{"type": ["null", "string"]}' > s1.json
echo '{"type": ["string", "null"], "not": {"enum": [""]}}' > s2.json
  1. Invoke the CLI by executing:
python -m jsonsubschema.cli s2.json s1.json

B) python API

from jsonsubschema import isSubschema

def main():
	s1 = {'type': "integer"}
	s2 = {'type': ["integer", "string"]}
	
	print(f'LHS <: RHS {isSubschema(s1, s2)}')

if __name__ == "__main__":
	main()

License

jsonsubschema is distributed under the terms of the Apache 2.0 License, see LICENSE.txt.

Contributions

json-subschema is still at an early phase of development and we welcome contributions. Contributors are expected to submit a 'Developer's Certificate of Origin', which can be found in DCO1.1.txt.

Metadata

Release files for jsonsubschema-debug 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jsonsubschema-debug 0.1.2
File Size Uploaded
jsonsubschema_debug-0.1.2.tar.gz 45.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jsonsubschema-debug 0.1.2
File Interpreter ABI Platform
jsonsubschema_debug-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 75.4 kB

Release files / jsonsubschema_debug-0.1.2.tar.gz

Download URL jsonsubschema_debug-0.1.2.tar.gz
Size 45.9 kB
Tags Source
SHA-256 checksum
How to use checksums
69cc1adbe8c5c442b3129301f563fe4163b04778eefc6354f76bd7c3fe324567
BLAKE2b-256 checksum
How to use checksums
f9bb59a07ef7200d93d4d9fa39d5b6bbde5360214d2043938a06bf74b2d17f58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release files / jsonsubschema_debug-0.1.2-py3-none-any.whl

Download URL jsonsubschema_debug-0.1.2-py3-none-any.whl
Size 29.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3aa2a059927eafcc6d8c1ff4706dc637135ab21502a9c2c5273090d6a5ea8659
BLAKE2b-256 checksum
How to use checksums
cb755be88fdbbc3f02362c5b2dd4f0a63c213b7ed3a769ca069d2bcde7660d48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page