%global _empty_manifest_terminate_build 0 Name: python-py-ubjson Version: 0.16.1 Release: 1 Summary: Universal Binary JSON encoder/decoder License: Apache License 2.0 URL: https://github.com/Iotic-Labs/py-ubjson Source0: https://mirrors.nju.edu.cn/pypi/web/packages/1d/c7/28220d37e041fe1df03e857fe48f768dcd30cd151480bf6f00da8713214a/py-ubjson-0.16.1.tar.gz BuildArch: noarch %description # Overview This is a Python v3.2+ (and 2.7+) [Universal Binary JSON](http://ubjson.org) encoder/decoder based on the [draft-12](UBJSON-Specification.md) specification. # Installing / packaging ```shell # To get from PyPI pip3 install py-ubjson # To only build extension modules inline (e.g. in repository) python3 setup.py build_ext -i # To build & install globally python3 setup.py install # To skip building of extensions when installing (or building) PYUBJSON_NO_EXTENSION=1 python3 setup.py install ``` **Notes** - The extension module is not required but provide a significant speed boost. - The above can also be run with v2.7+ - This module is also available via [Anaconda (conda-forge)](https://anaconda.org/conda-forge/py-ubjson) - PyPI releases are signed with the [Iotic Labs Software release signing key](https://developer.iotic-labs.com/iotic-labs.com.asc) - At run time, one can check whether compiled version is in use via the _ubjson.EXTENSION_ENABLED_ boolean # Usage It's meant to behave very much like Python's built-in [JSON module](https://docs.python.org/3/library/json.html), e.g.: ```python import ubjson encoded = ubjson.dumpb({u'a': 1}) decoded = ubjson.loadb(encoded) ``` **Note**: Only unicode strings in Python 2 will be encoded as strings, plain *str* will be encoded as a byte array. # Documentation ```python import ubsjon help(ubjson.dump) help(ubjson.load) ``` # Command-line utility This converts between JSON and UBJSON formats: ```shell python3 -mubjson USAGE: ubjson (fromjson|tojson) (INFILE|-) [OUTFILE] ``` # Tests ## Static This library has been checked using [flake8](https://pypi.python.org/pypi/flake8) and [pylint](http://www.pylint.org), using a modified configuration - see _pylint.rc_ and _flake8.cfg_. ## Unit ```shell python3 -mvenv py . py/bin/activate pip install -U pip setuptools pip install -e .[dev] ./coverage_test.sh ``` **Note**: See `coverage_test.sh` for additional requirements. # Limitations - The **No-Op** type is only supported by the decoder. (This should arguably be a protocol-level rather than serialisation-level option.) Specifically, it is **only** allowed to occur at the start or between elements of a container and **only** inside un-typed containers. (In a typed container it is impossible to tell the difference between an encoded element and a No-Op.) - Strongly-typed containers are only supported by the decoder (apart from for **bytes**/**bytearray**) and not for No-Op. - Encoder/decoder extensions are not supported at this time. # Why? The only existing implementation I was aware of at the time of writing ([simpleubjson](https://github.com/brainwater/simpleubjson)) had the following limitations: - Does not support efficient binary encoding - Only supports draft-9 - Only supports individual Python types rather than anything implementing an interface (e.g. _Mapping_) - Does not decode nested arrays or objects in expected form - Lacks C extension speed-up %package -n python3-py-ubjson Summary: Universal Binary JSON encoder/decoder Provides: python-py-ubjson BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-py-ubjson # Overview This is a Python v3.2+ (and 2.7+) [Universal Binary JSON](http://ubjson.org) encoder/decoder based on the [draft-12](UBJSON-Specification.md) specification. # Installing / packaging ```shell # To get from PyPI pip3 install py-ubjson # To only build extension modules inline (e.g. in repository) python3 setup.py build_ext -i # To build & install globally python3 setup.py install # To skip building of extensions when installing (or building) PYUBJSON_NO_EXTENSION=1 python3 setup.py install ``` **Notes** - The extension module is not required but provide a significant speed boost. - The above can also be run with v2.7+ - This module is also available via [Anaconda (conda-forge)](https://anaconda.org/conda-forge/py-ubjson) - PyPI releases are signed with the [Iotic Labs Software release signing key](https://developer.iotic-labs.com/iotic-labs.com.asc) - At run time, one can check whether compiled version is in use via the _ubjson.EXTENSION_ENABLED_ boolean # Usage It's meant to behave very much like Python's built-in [JSON module](https://docs.python.org/3/library/json.html), e.g.: ```python import ubjson encoded = ubjson.dumpb({u'a': 1}) decoded = ubjson.loadb(encoded) ``` **Note**: Only unicode strings in Python 2 will be encoded as strings, plain *str* will be encoded as a byte array. # Documentation ```python import ubsjon help(ubjson.dump) help(ubjson.load) ``` # Command-line utility This converts between JSON and UBJSON formats: ```shell python3 -mubjson USAGE: ubjson (fromjson|tojson) (INFILE|-) [OUTFILE] ``` # Tests ## Static This library has been checked using [flake8](https://pypi.python.org/pypi/flake8) and [pylint](http://www.pylint.org), using a modified configuration - see _pylint.rc_ and _flake8.cfg_. ## Unit ```shell python3 -mvenv py . py/bin/activate pip install -U pip setuptools pip install -e .[dev] ./coverage_test.sh ``` **Note**: See `coverage_test.sh` for additional requirements. # Limitations - The **No-Op** type is only supported by the decoder. (This should arguably be a protocol-level rather than serialisation-level option.) Specifically, it is **only** allowed to occur at the start or between elements of a container and **only** inside un-typed containers. (In a typed container it is impossible to tell the difference between an encoded element and a No-Op.) - Strongly-typed containers are only supported by the decoder (apart from for **bytes**/**bytearray**) and not for No-Op. - Encoder/decoder extensions are not supported at this time. # Why? The only existing implementation I was aware of at the time of writing ([simpleubjson](https://github.com/brainwater/simpleubjson)) had the following limitations: - Does not support efficient binary encoding - Only supports draft-9 - Only supports individual Python types rather than anything implementing an interface (e.g. _Mapping_) - Does not decode nested arrays or objects in expected form - Lacks C extension speed-up %package help Summary: Development documents and examples for py-ubjson Provides: python3-py-ubjson-doc %description help # Overview This is a Python v3.2+ (and 2.7+) [Universal Binary JSON](http://ubjson.org) encoder/decoder based on the [draft-12](UBJSON-Specification.md) specification. # Installing / packaging ```shell # To get from PyPI pip3 install py-ubjson # To only build extension modules inline (e.g. in repository) python3 setup.py build_ext -i # To build & install globally python3 setup.py install # To skip building of extensions when installing (or building) PYUBJSON_NO_EXTENSION=1 python3 setup.py install ``` **Notes** - The extension module is not required but provide a significant speed boost. - The above can also be run with v2.7+ - This module is also available via [Anaconda (conda-forge)](https://anaconda.org/conda-forge/py-ubjson) - PyPI releases are signed with the [Iotic Labs Software release signing key](https://developer.iotic-labs.com/iotic-labs.com.asc) - At run time, one can check whether compiled version is in use via the _ubjson.EXTENSION_ENABLED_ boolean # Usage It's meant to behave very much like Python's built-in [JSON module](https://docs.python.org/3/library/json.html), e.g.: ```python import ubjson encoded = ubjson.dumpb({u'a': 1}) decoded = ubjson.loadb(encoded) ``` **Note**: Only unicode strings in Python 2 will be encoded as strings, plain *str* will be encoded as a byte array. # Documentation ```python import ubsjon help(ubjson.dump) help(ubjson.load) ``` # Command-line utility This converts between JSON and UBJSON formats: ```shell python3 -mubjson USAGE: ubjson (fromjson|tojson) (INFILE|-) [OUTFILE] ``` # Tests ## Static This library has been checked using [flake8](https://pypi.python.org/pypi/flake8) and [pylint](http://www.pylint.org), using a modified configuration - see _pylint.rc_ and _flake8.cfg_. ## Unit ```shell python3 -mvenv py . py/bin/activate pip install -U pip setuptools pip install -e .[dev] ./coverage_test.sh ``` **Note**: See `coverage_test.sh` for additional requirements. # Limitations - The **No-Op** type is only supported by the decoder. (This should arguably be a protocol-level rather than serialisation-level option.) Specifically, it is **only** allowed to occur at the start or between elements of a container and **only** inside un-typed containers. (In a typed container it is impossible to tell the difference between an encoded element and a No-Op.) - Strongly-typed containers are only supported by the decoder (apart from for **bytes**/**bytearray**) and not for No-Op. - Encoder/decoder extensions are not supported at this time. # Why? The only existing implementation I was aware of at the time of writing ([simpleubjson](https://github.com/brainwater/simpleubjson)) had the following limitations: - Does not support efficient binary encoding - Only supports draft-9 - Only supports individual Python types rather than anything implementing an interface (e.g. _Mapping_) - Does not decode nested arrays or objects in expected form - Lacks C extension speed-up %prep %autosetup -n py-ubjson-0.16.1 %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-py-ubjson -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Apr 11 2023 Python_Bot - 0.16.1-1 - Package Spec generated