drf-ujson2


Namedrf-ujson2 JSON
Version 1.8.0 PyPI version JSON
download
home_pagehttps://github.com/Amertz08/drf_ujson2
SummaryDjango Rest Framework UJSON Renderer
upload_time2025-02-01 05:32:22
maintainerNone
docs_urlNone
authorGizmag
requires_python>=3.10
licenseNone
keywords django djangorestframework ujson
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Django Rest Framework UJSON Renderer
==================

[![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
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Amertz08/drf_ujson2",
    "name": "drf-ujson2",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "django, djangorestframework, ujson",
    "author": "Gizmag",
    "author_email": "tech@gizmag.com",
    "download_url": "https://files.pythonhosted.org/packages/ea/9b/6255e579d0903f2c1a50c77a7e3af8e563cd9f116af21ac6e7690eec019c/drf_ujson2-1.8.0.tar.gz",
    "platform": null,
    "description": "Django Rest Framework UJSON Renderer\n==================\n\n[![PyPi - Version](https://img.shields.io/pypi/v/drf_ujson2)][pypi]\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/drf_ujson2)][pypi]\n[![PyPI - Django Version](https://img.shields.io/pypi/djversions/drf_ujson2)][pypi]\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/drf_ujson2)][pypi]\n![Code style: Black](https://img.shields.io/badge/code%20style-black-000000.svg)\n\n[pypi]: https://pypi.org/project/drf-ujson2/\n\nDjango Rest Framework renderer using [ujson](https://github.com/esnme/ultrajson)\n\n## Installation\n\n`pip install drf_ujson2`\n\nYou can then set the `UJSONRenderer` class as your default renderer in your `settings.py`\n\n```python\nREST_FRAMEWORK = {\n    'DEFAULT_RENDERER_CLASSES': (\n        'drf_ujson.renderers.UJSONRenderer',\n    ),\n    ...\n}\n```\n\n## Benchmarks\nThis is on average 2.3x faster than the default JSON Serializer.\n\n```python\nimport timeit\n\nsetup = '''\nfrom proposals.models import Proposal\nfrom proposals.serializers import ProposalSerializer\nfrom rest_framework.renderers import JSONRenderer\nfrom drf_ujson.renderers import UJSONRenderer\n\nproposals = Proposal.objects.all()\nserialized = ProposalSerializer(proposals, many=True).data\n'''\n\nstdlib_test = '''\nJSONRenderer().render(serialized)\n'''\n\nujson_test = '''\nUJSONRenderer().render(serialized)\n'''\n\nstdlib_result = timeit.repeat(stdlib_test, setup=setup, number=1, repeat=10)\nujson_result = timeit.repeat(ujson_test, setup=setup, number=1, repeat=10)\n\nprint stdlib_result\nprint sum(stdlib_result) / 10\nprint ujson_result\nprint sum(ujson_result) / 10\n\n# stdlib results\n[\n0.004502058029174805,\n0.004289865493774414,\n0.006896018981933594,\n0.0048198699951171875,\n0.004084110260009766,\n0.007154941558837891,\n0.003937959671020508,\n0.004029035568237305,\n0.004770040512084961,\n0.004539966583251953\n]\n# avg\n0.00490238666534\n\n# ujson results\n[\n0.0016620159149169922,\n0.001817941665649414,\n0.0015261173248291016,\n0.0040950775146484375,\n0.0021469593048095703,\n0.001798868179321289,\n0.001569986343383789,\n0.0019931793212890625,\n0.0017120838165283203,\n0.001814126968383789\n]\n# avg\n0.00201363563538\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Django Rest Framework UJSON Renderer",
    "version": "1.8.0",
    "project_urls": {
        "Homepage": "https://github.com/Amertz08/drf_ujson2"
    },
    "split_keywords": [
        "django",
        " djangorestframework",
        " ujson"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7cdd8f9f458de766c6e83912058c1fc47946a5cba34a8fee9fe7d9974c7d36b7",
                "md5": "4bf281c3616d204596e5c872388c8299",
                "sha256": "6a6e32f687e29394002d8bec91e8a9ab44251564888fa5d907c737bc2f62ce42"
            },
            "downloads": -1,
            "filename": "drf_ujson2-1.8.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4bf281c3616d204596e5c872388c8299",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 4916,
            "upload_time": "2025-02-01T05:32:20",
            "upload_time_iso_8601": "2025-02-01T05:32:20.410170Z",
            "url": "https://files.pythonhosted.org/packages/7c/dd/8f9f458de766c6e83912058c1fc47946a5cba34a8fee9fe7d9974c7d36b7/drf_ujson2-1.8.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ea9b6255e579d0903f2c1a50c77a7e3af8e563cd9f116af21ac6e7690eec019c",
                "md5": "d3e3c4ba544a67185e5fb6201e81d0e6",
                "sha256": "3b42cade02138cc1ddb159e4a91ff7115929d3066242bffc623ade9b3a525d70"
            },
            "downloads": -1,
            "filename": "drf_ujson2-1.8.0.tar.gz",
            "has_sig": false,
            "md5_digest": "d3e3c4ba544a67185e5fb6201e81d0e6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 4642,
            "upload_time": "2025-02-01T05:32:22",
            "upload_time_iso_8601": "2025-02-01T05:32:22.506923Z",
            "url": "https://files.pythonhosted.org/packages/ea/9b/6255e579d0903f2c1a50c77a7e3af8e563cd9f116af21ac6e7690eec019c/drf_ujson2-1.8.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-01 05:32:22",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Amertz08",
    "github_project": "drf_ujson2",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "drf-ujson2"
}
        
Elapsed time: 0.40946s