%global _empty_manifest_terminate_build 0 Name: python-jsonsubschema Version: 0.0.6 Release: 1 Summary: A tool to check whether a JSON schema is subset/subschema of another JSON schema License: Apache License 2.0 URL: https://github.com/IBM/jsonsubschema Source0: https://mirrors.nju.edu.cn/pypi/web/packages/8e/05/ac6abfb3de2fffbad863d47122fd12811b78618f376c08561789679481c5/jsonsubschema-0.0.6.tar.gz BuildArch: noarch Requires: python3-portion Requires: python3-greenery Requires: python3-jsonschema Requires: python3-jsonref Requires: python3-numpy %description # jsonsubschema # [![Travis build status](https://travis-ci.com/IBM/jsonsubschema.svg?branch=master)](https://travis-ci.com/IBM/jsonsubschema) [![Codecov code coverage](https://codecov.io/gh/IBM/jsonsubschema/branch/master/graph/badge.svg)](https://codecov.io/gh/IBM/jsonsubschema) **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](https://andrewhabib.org/publications/issta21-paper-JSONSubschema.pdf), which received a [Distinguished Artifact Award](https://conf.researchr.org/details/issta-2021/issta-2021-technical-papers/2/Finding-Data-Compatibility-Bugs-with-JSON-Subschema-Checking): ``` @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.* * Other python dependencies will be installed during the below setup process You can either install subschema from the source code from github or the pypy package. ### A) Install from github source code ### Execute the following: ``` git clone https://github.com/IBM/jsonsubschema.git cd jsonsubschema python setup.py install cd .. ``` ### B) Install from pypy ### Execute the following: ``` pip install jsonsubschema ``` ## 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 ``` 2. 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](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](DCO1.1.txt). %package -n python3-jsonsubschema Summary: A tool to check whether a JSON schema is subset/subschema of another JSON schema Provides: python-jsonsubschema BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-jsonsubschema # jsonsubschema # [![Travis build status](https://travis-ci.com/IBM/jsonsubschema.svg?branch=master)](https://travis-ci.com/IBM/jsonsubschema) [![Codecov code coverage](https://codecov.io/gh/IBM/jsonsubschema/branch/master/graph/badge.svg)](https://codecov.io/gh/IBM/jsonsubschema) **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](https://andrewhabib.org/publications/issta21-paper-JSONSubschema.pdf), which received a [Distinguished Artifact Award](https://conf.researchr.org/details/issta-2021/issta-2021-technical-papers/2/Finding-Data-Compatibility-Bugs-with-JSON-Subschema-Checking): ``` @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.* * Other python dependencies will be installed during the below setup process You can either install subschema from the source code from github or the pypy package. ### A) Install from github source code ### Execute the following: ``` git clone https://github.com/IBM/jsonsubschema.git cd jsonsubschema python setup.py install cd .. ``` ### B) Install from pypy ### Execute the following: ``` pip install jsonsubschema ``` ## 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 ``` 2. 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](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](DCO1.1.txt). %package help Summary: Development documents and examples for jsonsubschema Provides: python3-jsonsubschema-doc %description help # jsonsubschema # [![Travis build status](https://travis-ci.com/IBM/jsonsubschema.svg?branch=master)](https://travis-ci.com/IBM/jsonsubschema) [![Codecov code coverage](https://codecov.io/gh/IBM/jsonsubschema/branch/master/graph/badge.svg)](https://codecov.io/gh/IBM/jsonsubschema) **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](https://andrewhabib.org/publications/issta21-paper-JSONSubschema.pdf), which received a [Distinguished Artifact Award](https://conf.researchr.org/details/issta-2021/issta-2021-technical-papers/2/Finding-Data-Compatibility-Bugs-with-JSON-Subschema-Checking): ``` @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.* * Other python dependencies will be installed during the below setup process You can either install subschema from the source code from github or the pypy package. ### A) Install from github source code ### Execute the following: ``` git clone https://github.com/IBM/jsonsubschema.git cd jsonsubschema python setup.py install cd .. ``` ### B) Install from pypy ### Execute the following: ``` pip install jsonsubschema ``` ## 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 ``` 2. 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](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](DCO1.1.txt). %prep %autosetup -n jsonsubschema-0.0.6 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-jsonsubschema -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue May 30 2023 Python_Bot - 0.0.6-1 - Package Spec generated