diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-drf-ujson2.spec | 293 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 295 insertions, 0 deletions
@@ -0,0 +1 @@ +/drf_ujson2-1.7.2.tar.gz diff --git a/python-drf-ujson2.spec b/python-drf-ujson2.spec new file mode 100644 index 0000000..0e42768 --- /dev/null +++ b/python-drf-ujson2.spec @@ -0,0 +1,293 @@ +%global _empty_manifest_terminate_build 0 +Name: python-drf-ujson2 +Version: 1.7.2 +Release: 1 +Summary: Django Rest Framework UJSON Renderer +License: MIT License +URL: https://github.com/Amertz08/drf_ujson2 +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/48/51/c43ec446549342b98e446b4d4c1ff37a43a89bf9a59cee42a2ac0f6dec19/drf_ujson2-1.7.2.tar.gz +BuildArch: noarch + +Requires: python3-django +Requires: python3-ujson +Requires: python3-djangorestframework +Requires: python3-pytest +Requires: python3-pytest-django +Requires: python3-pytest-runner +Requires: python3-pytest-cov +Requires: python3-pytest-mock + +%description +[][pypi] +[][pypi] +[][pypi] +[][pypi] + +[pypi]: https://pypi.org/project/drf-ujson2/ +Django Rest Framework renderer using [ujson](https://github.com/esnme/ultrajson) +## Installation +`pip install drf_ujson2` +You can then set the `UJSONRenderer` class as your default renderer in your `settings.py` +```python +REST_FRAMEWORK = { + 'DEFAULT_RENDERER_CLASSES': ( + 'drf_ujson.renderers.UJSONRenderer', + ), +} +``` +## Benchmarks +This is on average 2.3x faster than the default JSON Serializer. +```python +import timeit +setup = ''' +from proposals.models import Proposal +from proposals.serializers import ProposalSerializer +from rest_framework.renderers import JSONRenderer +from drf_ujson.renderers import UJSONRenderer +proposals = Proposal.objects.all() +serialized = ProposalSerializer(proposals, many=True).data +''' +stdlib_test = ''' +JSONRenderer().render(serialized) +''' +ujson_test = ''' +UJSONRenderer().render(serialized) +''' +stdlib_result = timeit.repeat(stdlib_test, setup=setup, number=1, repeat=10) +ujson_result = timeit.repeat(ujson_test, setup=setup, number=1, repeat=10) +print stdlib_result +print sum(stdlib_result) / 10 +print ujson_result +print sum(ujson_result) / 10 +# stdlib results +[ +0.004502058029174805, +0.004289865493774414, +0.006896018981933594, +0.0048198699951171875, +0.004084110260009766, +0.007154941558837891, +0.003937959671020508, +0.004029035568237305, +0.004770040512084961, +0.004539966583251953 +] +# avg +0.00490238666534 +# ujson results +[ +0.0016620159149169922, +0.001817941665649414, +0.0015261173248291016, +0.0040950775146484375, +0.0021469593048095703, +0.001798868179321289, +0.001569986343383789, +0.0019931793212890625, +0.0017120838165283203, +0.001814126968383789 +] +# avg +0.00201363563538 +``` + +%package -n python3-drf-ujson2 +Summary: Django Rest Framework UJSON Renderer +Provides: python-drf-ujson2 +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-drf-ujson2 +[][pypi] +[][pypi] +[][pypi] +[][pypi] + +[pypi]: https://pypi.org/project/drf-ujson2/ +Django Rest Framework renderer using [ujson](https://github.com/esnme/ultrajson) +## Installation +`pip install drf_ujson2` +You can then set the `UJSONRenderer` class as your default renderer in your `settings.py` +```python +REST_FRAMEWORK = { + 'DEFAULT_RENDERER_CLASSES': ( + 'drf_ujson.renderers.UJSONRenderer', + ), +} +``` +## Benchmarks +This is on average 2.3x faster than the default JSON Serializer. +```python +import timeit +setup = ''' +from proposals.models import Proposal +from proposals.serializers import ProposalSerializer +from rest_framework.renderers import JSONRenderer +from drf_ujson.renderers import UJSONRenderer +proposals = Proposal.objects.all() +serialized = ProposalSerializer(proposals, many=True).data +''' +stdlib_test = ''' +JSONRenderer().render(serialized) +''' +ujson_test = ''' +UJSONRenderer().render(serialized) +''' +stdlib_result = timeit.repeat(stdlib_test, setup=setup, number=1, repeat=10) +ujson_result = timeit.repeat(ujson_test, setup=setup, number=1, repeat=10) +print stdlib_result +print sum(stdlib_result) / 10 +print ujson_result +print sum(ujson_result) / 10 +# stdlib results +[ +0.004502058029174805, +0.004289865493774414, +0.006896018981933594, +0.0048198699951171875, +0.004084110260009766, +0.007154941558837891, +0.003937959671020508, +0.004029035568237305, +0.004770040512084961, +0.004539966583251953 +] +# avg +0.00490238666534 +# ujson results +[ +0.0016620159149169922, +0.001817941665649414, +0.0015261173248291016, +0.0040950775146484375, +0.0021469593048095703, +0.001798868179321289, +0.001569986343383789, +0.0019931793212890625, +0.0017120838165283203, +0.001814126968383789 +] +# avg +0.00201363563538 +``` + +%package help +Summary: Development documents and examples for drf-ujson2 +Provides: python3-drf-ujson2-doc +%description help +[][pypi] +[][pypi] +[][pypi] +[][pypi] + +[pypi]: https://pypi.org/project/drf-ujson2/ +Django Rest Framework renderer using [ujson](https://github.com/esnme/ultrajson) +## Installation +`pip install drf_ujson2` +You can then set the `UJSONRenderer` class as your default renderer in your `settings.py` +```python +REST_FRAMEWORK = { + 'DEFAULT_RENDERER_CLASSES': ( + 'drf_ujson.renderers.UJSONRenderer', + ), +} +``` +## Benchmarks +This is on average 2.3x faster than the default JSON Serializer. +```python +import timeit +setup = ''' +from proposals.models import Proposal +from proposals.serializers import ProposalSerializer +from rest_framework.renderers import JSONRenderer +from drf_ujson.renderers import UJSONRenderer +proposals = Proposal.objects.all() +serialized = ProposalSerializer(proposals, many=True).data +''' +stdlib_test = ''' +JSONRenderer().render(serialized) +''' +ujson_test = ''' +UJSONRenderer().render(serialized) +''' +stdlib_result = timeit.repeat(stdlib_test, setup=setup, number=1, repeat=10) +ujson_result = timeit.repeat(ujson_test, setup=setup, number=1, repeat=10) +print stdlib_result +print sum(stdlib_result) / 10 +print ujson_result +print sum(ujson_result) / 10 +# stdlib results +[ +0.004502058029174805, +0.004289865493774414, +0.006896018981933594, +0.0048198699951171875, +0.004084110260009766, +0.007154941558837891, +0.003937959671020508, +0.004029035568237305, +0.004770040512084961, +0.004539966583251953 +] +# avg +0.00490238666534 +# ujson results +[ +0.0016620159149169922, +0.001817941665649414, +0.0015261173248291016, +0.0040950775146484375, +0.0021469593048095703, +0.001798868179321289, +0.001569986343383789, +0.0019931793212890625, +0.0017120838165283203, +0.001814126968383789 +] +# avg +0.00201363563538 +``` + +%prep +%autosetup -n drf-ujson2-1.7.2 + +%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-drf-ujson2 -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 1.7.2-1 +- Package Spec generated @@ -0,0 +1 @@ +4a2018a41fdf7dd03b86d37d7b3d509c drf_ujson2-1.7.2.tar.gz |
