summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-drf-ujson2.spec293
-rw-r--r--sources1
3 files changed, 295 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..b87a72d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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 - Version](https://img.shields.io/pypi/v/drf_ujson2)][pypi]
+[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/drf_ujson2)][pypi]
+[![PyPI - Django Version](https://img.shields.io/pypi/djversions/drf_ujson2)][pypi]
+[![PyPI - Downloads](https://img.shields.io/pypi/dm/drf_ujson2)][pypi]
+![Code style: Black](https://img.shields.io/badge/code%20style-black-000000.svg)
+[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 - Version](https://img.shields.io/pypi/v/drf_ujson2)][pypi]
+[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/drf_ujson2)][pypi]
+[![PyPI - Django Version](https://img.shields.io/pypi/djversions/drf_ujson2)][pypi]
+[![PyPI - Downloads](https://img.shields.io/pypi/dm/drf_ujson2)][pypi]
+![Code style: Black](https://img.shields.io/badge/code%20style-black-000000.svg)
+[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 - Version](https://img.shields.io/pypi/v/drf_ujson2)][pypi]
+[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/drf_ujson2)][pypi]
+[![PyPI - Django Version](https://img.shields.io/pypi/djversions/drf_ujson2)][pypi]
+[![PyPI - Downloads](https://img.shields.io/pypi/dm/drf_ujson2)][pypi]
+![Code style: Black](https://img.shields.io/badge/code%20style-black-000000.svg)
+[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
diff --git a/sources b/sources
new file mode 100644
index 0000000..65148e5
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+4a2018a41fdf7dd03b86d37d7b3d509c drf_ujson2-1.7.2.tar.gz