python-rapidjson


Namepython-rapidjson JSON
Version 0.2.7 PyPI version JSON
download
home_pagehttps://github.com/python-rapidjson/python-rapidjson
SummaryPython wrapper around rapidjson
upload_time2017-12-08 13:57:57
maintainer
docs_urlNone
authorLele Gaifax
requires_python
licenseMIT License
keywords json rapidjson
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            .. -*- coding: utf-8 -*-
.. :Project:   python-rapidjson -- Introduction
.. :Author:    Ken Robbins <ken@kenrobbins.com>
.. :License:   MIT License
.. :Copyright: © 2015 Ken Robbins
.. :Copyright: © 2016, 2017 Lele Gaifax
..

==================
 python-rapidjson
==================

Python wrapper around RapidJSON
===============================

RapidJSON_ is an extremely fast C++ JSON serialization library.

We do not support legacy Python versions, you will need to upgrade to Python 3
to use this library.

Latest version documentation is automatically rendered by `Read the Docs`__.

__ http://python-rapidjson.readthedocs.io/en/latest/

.. image:: https://travis-ci.org/python-rapidjson/python-rapidjson.svg?branch=master
   :target: https://travis-ci.org/python-rapidjson/python-rapidjson
   :alt: Build status

.. image:: https://readthedocs.org/projects/python-rapidjson/badge/?version=latest
   :target: http://python-rapidjson.readthedocs.io/en/latest/?badge=latest
   :alt: Documentation status


Getting Started
---------------

First install ``python-rapidjson``:

.. code-block:: bash

    $ pip install python-rapidjson

Basic usage looks like this:

.. code-block:: python

    >>> import rapidjson
    >>> data = {'foo': 100, 'bar': 'baz'}
    >>> rapidjson.dumps(data)
    '{"bar":"baz","foo":100}'
    >>> rapidjson.loads('{"bar":"baz","foo":100}')
    {'bar': 'baz', 'foo': 100}


Development
-----------

If you want to install the development version (maybe to contribute fixes or
enhancements) you may clone the repository:

.. code-block:: bash

    $ git clone --recursive https://github.com/python-rapidjson/python-rapidjson.git

.. note:: The ``--recursive`` option is needed because we use a *submodule* to
          include RapidJSON_ sources. Alternatively you can do a plain
          ``clone`` immediately followed by a ``git submodule update --init``.

          Alternatively, if you already have (a *compatible* version of)
          RapidJSON includes around, you can compile the module specifying
          their location with the option ``--rj-include-dir``, for example:

          .. code-block:: shell

             $ python3 setup.py build --rj-include-dir=/usr/include/rapidjson

A set of makefiles implement most common operations, such as *build*, *check*
and *release*; see ``make help`` output for a list of available targets.


Performance
-----------

``python-rapidjson`` tries to be as performant as possible while staying
compatible with the ``json`` module.

The following tables show a comparison between this module and other libraries
with different data sets.  Last row (“overall”) is the total time taken by all
the benchmarks.

Each number show the factor between the time taken by each contender and
``python-rapidjson`` (in other words, they are *normalized* against a value of
1.0 for ``python-rapidjson``): the lower the number, the speedier the
contender.

In **bold** the winner.


Serialization
~~~~~~~~~~~~~

+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
|       serialize       |  ``dumps()``\ [1]_   | ``Encoder()``\ [2]_  |  ``dumps(n)``\ [3]_  | ``Encoder(n)``\ [4]_ |     ujson\ [5]_      |   simplejson\ [6]_   |     stdlib\ [7]_     |      yajl\ [8]_      |
+=======================+======================+======================+======================+======================+======================+======================+======================+======================+
|    100 arrays dict    |         1.00         |         0.99         |       **0.73**       |         0.77         |         0.97         |         4.82         |         2.27         |         1.37         |
+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
|    100 dicts array    |         1.00         |         1.02         |       **0.82**       |         0.85         |         0.90         |         5.68         |         2.19         |         1.36         |
+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
|    256 Trues array    |       **1.00**       |         1.04         |         1.24         |         1.09         |         1.31         |         2.41         |         2.04         |         1.12         |
+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
|    256 ascii array    |         1.00         |         1.01         |         1.04         |         1.09         |       **0.49**       |         1.01         |         0.95         |         1.08         |
+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
|   256 doubles array   |       **1.00**       |         1.02         |         1.08         |         1.03         |         6.76         |         7.34         |         6.88         |         3.89         |
+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
|   256 unicode array   |         1.00         |         0.89         |         0.89         |         0.91         |         0.56         |         0.73         |         0.83         |       **0.47**       |
+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
|    complex object     |         1.00         |         1.01         |         0.85         |       **0.82**       |         1.04         |         4.11         |         2.62         |         2.16         |
+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
|   composite object    |         1.00         |         1.02         |         0.72         |       **0.68**       |         0.88         |         2.79         |         1.82         |         1.71         |
+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
|        overall        |         1.00         |         0.99         |       **0.73**       |         0.78         |         0.97         |         4.81         |         2.27         |         1.36         |
+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+


Deserialization
~~~~~~~~~~~~~~~

+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+
|      deserialize      |   ``loads()``\ [9]_   | ``Decoder()``\ [10]_  |  ``loads(n)``\ [11]_  | ``Decoder(n)``\ [12]_ |         ujson         |      simplejson       |        stdlib         |         yajl          |
+=======================+=======================+=======================+=======================+=======================+=======================+=======================+=======================+=======================+
|    100 arrays dict    |         1.00          |         1.00          |         0.90          |       **0.90**        |         0.95          |         1.60          |         1.11          |         1.18          |
+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+
|    100 dicts array    |         1.00          |         1.04          |         0.86          |       **0.86**        |         0.94          |         2.00          |         1.43          |         1.27          |
+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+
|    256 Trues array    |       **1.00**        |         1.16          |         1.10          |         1.12          |         1.20          |         1.95          |         1.90          |         1.89          |
+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+
|    256 ascii array    |       **1.00**        |         1.02          |         1.02          |         1.02          |         1.39          |         1.14          |         1.25          |         1.62          |
+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+
|   256 doubles array   |         1.00          |         0.90          |       **0.16**        |         0.16          |         0.39          |         0.86          |         0.83          |         0.42          |
+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+
|   256 unicode array   |       **1.00**        |         1.01          |         1.01          |         1.00          |         1.02          |         5.14          |         5.34          |         2.40          |
+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+
|    complex object     |         1.00          |         1.01          |       **0.73**        |         0.73          |         0.88          |         1.60          |         1.14          |         1.20          |
+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+
|   composite object    |         1.00          |         1.02          |       **0.81**        |         0.81          |         0.85          |         1.97          |         1.42          |         1.26          |
+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+
|        overall        |         1.00          |         1.00          |         0.90          |       **0.90**        |         0.95          |         1.61          |         1.12          |         1.18          |
+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+

.. [1] ``rapidjson.dumps()``
.. [2] ``rapidjson.Encoder()``
.. [3] ``rapidjson.dumps(number_mode=NM_NATIVE)``
.. [4] ``rapidjson.Encoder(number_mode=NM_NATIVE)``
.. [5] `ujson 1.35 <https://pypi.python.org/pypi/ujson/1.35>`__
.. [6] `simplejson 3.11.1 <https://pypi.python.org/pypi/simplejson/3.11.1>`__
.. [7] Python 3.6.2 standard library ``json``
.. [8] `yajl 0.3.5 <https://pypi.python.org/pypi/yajl/0.3.5>`__
.. [9] ``rapidjson.loads()``
.. [10] ``rapidjson.Decoder()``
.. [11] ``rapidjson.loads(number_mode=NM_NATIVE)``
.. [12] ``rapidjson.Decoder(number_mode=NM_NATIVE)``


DIY
~~~

To run these tests yourself, clone the repo and run:

.. code-block:: bash

   $ make benchmarks

or

.. code-block:: bash

   $ make benchmarks-other

The former will focus only on ``RapidJSON`` and is particularly handy coupled
with the `compare past runs`__ functionality of ``pytest-benchmark``:

.. code-block:: bash

   $ make benchmarks PYTEST_OPTIONS=--benchmark-autosave
   # hack, hack, hack!
   $ make benchmarks PYTEST_OPTIONS=--benchmark-compare=0001

   ----------------------- benchmark 'deserialize': 18 tests ------------------------
   Name (time in us)                                                            Min…
   ----------------------------------------------------------------------------------
   test_loads[rapidjson-256 Trues array] (NOW)                         5.2320 (1.0)…
   test_loads[rapidjson-256 Trues array] (0001)                        5.4180 (1.04)…
   …

To reproduce the tables above run ``make benchmarks-tables``

__ http://pytest-benchmark.readthedocs.org/en/latest/comparing.html


Incompatibility
---------------

Here are things in the standard ``json`` library supports that we have decided
not to support:

``separators`` argument
  This is mostly used for pretty printing and not supported by ``RapidJSON``
  so it isn't a high priority. We do support ``indent`` kwarg that would get
  you nice looking JSON anyways.

Coercing keys when dumping
  ``json`` will turn ``True`` into ``'True'`` if you dump it out but when you
  load it back in it'll still be a string. We want the dump and load to return
  the exact same objects so we have decided not to do this coercion.

.. _RapidJSON: https://github.com/miloyip/rapidjson


Changes
-------

0.2.7 (2017-12-08)
~~~~~~~~~~~~~~~~~~

* Restore compatibility with Python < 3.6


0.2.6 (2017-12-08)
~~~~~~~~~~~~~~~~~~

* Fix memory leaks when using object_hook/start_object/end_object


0.2.5 (2017-09-30)
~~~~~~~~~~~~~~~~~~

* Fix bug where error handling code could raise an exception causing a
  confusing exception to be returned (`PR #82`__)

  __ https://github.com/python-rapidjson/python-rapidjson/pull/82

* Fix bug where loads's ``object_hook`` and dumps's ``default`` arguments
  could not be passed ``None`` explicitly (`PR #83`__)

  __ https://github.com/python-rapidjson/python-rapidjson/pull/83

* Fix crash when dealing with surrogate pairs (`issue #81`__)

  __ https://github.com/python-rapidjson/python-rapidjson/issues/81


0.2.4 (2017-09-17)
~~~~~~~~~~~~~~~~~~

* Fix compatibility with MacOS/clang


0.2.3 (2017-08-24)
~~~~~~~~~~~~~~~~~~

* Limit the precision of DM_UNIX_TIME timestamps to six decimal digits


0.2.2 (2017-08-24)
~~~~~~~~~~~~~~~~~~

* Nothing new, attempt to fix production of Python 3.6 binary wheels


0.2.1 (2017-08-24)
~~~~~~~~~~~~~~~~~~

* Nothing new, attempt to fix production of Python 3.6 binary wheels


0.2.0 (2017-08-24)
~~~~~~~~~~~~~~~~~~

* New ``parse_mode`` option, implementing relaxed JSON syntax (`issue #73`__)

  __ https://github.com/python-rapidjson/python-rapidjson/issues/73

* New ``Encoder`` and ``Decoder``, implementing a class-based interface

* New ``Validator``, exposing the underlying *JSON schema* validation (`issue #71`__)

  __ https://github.com/python-rapidjson/python-rapidjson/issues/71


0.1.0 (2017-08-16)
~~~~~~~~~~~~~~~~~~

* Remove beta status


0.1.0b4 (2017-08-14)
~~~~~~~~~~~~~~~~~~~~

* Make execution of the test suite on Appveyor actually happen


0.1.0b3 (2017-08-12)
~~~~~~~~~~~~~~~~~~~~

* Exclude CI configurations from the source distribution


0.1.0b2 (2017-08-12)
~~~~~~~~~~~~~~~~~~~~

* Fix Powershell wheel upload script in appveyor configuration


0.1.0b1 (2017-08-12)
~~~~~~~~~~~~~~~~~~~~

* Compilable with somewhat old g++ (`issue #69`__)

  __ https://github.com/python-rapidjson/python-rapidjson/issues/69

* **Backward incompatibilities**:

  - all ``DATETIME_MODE_XXX`` constants have been shortened to ``DM_XXX``
    ``DATETIME_MODE_ISO8601_UTC`` has been renamed to ``DM_SHIFT_TO_UTC``

  - all ``UUID_MODE_XXX`` constants have been shortened to ``UM_XXX``

* New option ``DM_UNIX_TIME`` to serialize date, datetime and time values as
  `UNIX timestamps`__ targeting `issue #61`__

  __ https://en.wikipedia.org/wiki/Unix_time
  __ https://github.com/python-rapidjson/python-rapidjson/issues/61

* New option ``DM_NAIVE_IS_UTC`` to treat naïve datetime and time values as if
  they were in the UTC timezone (also for issue #61)

* New keyword argument ``number_mode`` to use underlying C library numbers

* Binary wheels for GNU/Linux and Windows on PyPI (one would hope: this is the
  reason for the beta1 release)


0.0.11 (2017-03-05)
~~~~~~~~~~~~~~~~~~~

* Fix a couple of refcount handling glitches, hopefully targeting `issue
  #48`__.

  __ https://github.com/python-rapidjson/python-rapidjson/issues/48


0.0.10 (2017-03-02)
~~~~~~~~~~~~~~~~~~~

* Fix source distribution to contain all required stuff (`PR #64`__)

  __ https://github.com/python-rapidjson/python-rapidjson/pull/64


0.0.9 (2017-03-02)
~~~~~~~~~~~~~~~~~~

* CI testing on GitHub

* Allow using locally installed RapidJSON library (`issue #60`__)

  __ https://github.com/python-rapidjson/python-rapidjson/issues/60

* Bug fixes (`issue #37`__, `issue #51`__, `issue #57`__)

  __ https://github.com/python-rapidjson/python-rapidjson/issues/37
  __ https://github.com/python-rapidjson/python-rapidjson/issues/51
  __ https://github.com/python-rapidjson/python-rapidjson/issues/57


0.0.8 (2016-12-09)
~~~~~~~~~~~~~~~~~~

* Use unpatched RapidJSON 1.1 (`PR #46`__)

  __ https://github.com/python-rapidjson/python-rapidjson/pull/46

* Handle serialization and deserialization of datetime, date and time
  instances (`PR #35`__) and of UUID instances (`PR #40`__)

  __ https://github.com/python-rapidjson/python-rapidjson/pull/35
  __ https://github.com/python-rapidjson/python-rapidjson/pull/40

* Sphinx based documentation (`PR #44`__)

  __ https://github.com/python-rapidjson/python-rapidjson/pull/44

* Refresh benchmarks (`PR #45`__)

  __ https://github.com/python-rapidjson/python-rapidjson/pull/45

* Bug fixes (`issue #25`__, `issue #38`__, `PR #43`__)

  __ https://github.com/python-rapidjson/python-rapidjson/issues/25
  __ https://github.com/python-rapidjson/python-rapidjson/issues/38
  __ https://github.com/python-rapidjson/python-rapidjson/pull/43

            

Raw data

            {
    "maintainer": "", 
    "docs_url": null, 
    "requires_python": "", 
    "maintainer_email": "", 
    "cheesecake_code_kwalitee_id": null, 
    "keywords": "json rapidjson", 
    "upload_time": "2017-12-08 13:57:57", 
    "requirements": [], 
    "author": "Lele Gaifax", 
    "home_page": "https://github.com/python-rapidjson/python-rapidjson", 
    "github_user": "python-rapidjson", 
    "appveyor": true, 
    "download_url": "https://pypi.python.org/packages/2c/c7/50e7ea97906eb51482d47be13ef2f218fc6aae6fb472585585ad8e507a81/python-rapidjson-0.2.7.tar.gz", 
    "platform": "", 
    "version": "0.2.7", 
    "cheesecake_documentation_id": null, 
    "description": ".. -*- coding: utf-8 -*-\n.. :Project:   python-rapidjson -- Introduction\n.. :Author:    Ken Robbins <ken@kenrobbins.com>\n.. :License:   MIT License\n.. :Copyright: \u00a9 2015 Ken Robbins\n.. :Copyright: \u00a9 2016, 2017 Lele Gaifax\n..\n\n==================\n python-rapidjson\n==================\n\nPython wrapper around RapidJSON\n===============================\n\nRapidJSON_ is an extremely fast C++ JSON serialization library.\n\nWe do not support legacy Python versions, you will need to upgrade to Python 3\nto use this library.\n\nLatest version documentation is automatically rendered by `Read the Docs`__.\n\n__ http://python-rapidjson.readthedocs.io/en/latest/\n\n.. image:: https://travis-ci.org/python-rapidjson/python-rapidjson.svg?branch=master\n   :target: https://travis-ci.org/python-rapidjson/python-rapidjson\n   :alt: Build status\n\n.. image:: https://readthedocs.org/projects/python-rapidjson/badge/?version=latest\n   :target: http://python-rapidjson.readthedocs.io/en/latest/?badge=latest\n   :alt: Documentation status\n\n\nGetting Started\n---------------\n\nFirst install ``python-rapidjson``:\n\n.. code-block:: bash\n\n    $ pip install python-rapidjson\n\nBasic usage looks like this:\n\n.. code-block:: python\n\n    >>> import rapidjson\n    >>> data = {'foo': 100, 'bar': 'baz'}\n    >>> rapidjson.dumps(data)\n    '{\"bar\":\"baz\",\"foo\":100}'\n    >>> rapidjson.loads('{\"bar\":\"baz\",\"foo\":100}')\n    {'bar': 'baz', 'foo': 100}\n\n\nDevelopment\n-----------\n\nIf you want to install the development version (maybe to contribute fixes or\nenhancements) you may clone the repository:\n\n.. code-block:: bash\n\n    $ git clone --recursive https://github.com/python-rapidjson/python-rapidjson.git\n\n.. note:: The ``--recursive`` option is needed because we use a *submodule* to\n          include RapidJSON_ sources. Alternatively you can do a plain\n          ``clone`` immediately followed by a ``git submodule update --init``.\n\n          Alternatively, if you already have (a *compatible* version of)\n          RapidJSON includes around, you can compile the module specifying\n          their location with the option ``--rj-include-dir``, for example:\n\n          .. code-block:: shell\n\n             $ python3 setup.py build --rj-include-dir=/usr/include/rapidjson\n\nA set of makefiles implement most common operations, such as *build*, *check*\nand *release*; see ``make help`` output for a list of available targets.\n\n\nPerformance\n-----------\n\n``python-rapidjson`` tries to be as performant as possible while staying\ncompatible with the ``json`` module.\n\nThe following tables show a comparison between this module and other libraries\nwith different data sets.  Last row (\u201coverall\u201d) is the total time taken by all\nthe benchmarks.\n\nEach number show the factor between the time taken by each contender and\n``python-rapidjson`` (in other words, they are *normalized* against a value of\n1.0 for ``python-rapidjson``): the lower the number, the speedier the\ncontender.\n\nIn **bold** the winner.\n\n\nSerialization\n~~~~~~~~~~~~~\n\n+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+\n|       serialize       |  ``dumps()``\\ [1]_   | ``Encoder()``\\ [2]_  |  ``dumps(n)``\\ [3]_  | ``Encoder(n)``\\ [4]_ |     ujson\\ [5]_      |   simplejson\\ [6]_   |     stdlib\\ [7]_     |      yajl\\ [8]_      |\n+=======================+======================+======================+======================+======================+======================+======================+======================+======================+\n|    100 arrays dict    |         1.00         |         0.99         |       **0.73**       |         0.77         |         0.97         |         4.82         |         2.27         |         1.37         |\n+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+\n|    100 dicts array    |         1.00         |         1.02         |       **0.82**       |         0.85         |         0.90         |         5.68         |         2.19         |         1.36         |\n+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+\n|    256 Trues array    |       **1.00**       |         1.04         |         1.24         |         1.09         |         1.31         |         2.41         |         2.04         |         1.12         |\n+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+\n|    256 ascii array    |         1.00         |         1.01         |         1.04         |         1.09         |       **0.49**       |         1.01         |         0.95         |         1.08         |\n+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+\n|   256 doubles array   |       **1.00**       |         1.02         |         1.08         |         1.03         |         6.76         |         7.34         |         6.88         |         3.89         |\n+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+\n|   256 unicode array   |         1.00         |         0.89         |         0.89         |         0.91         |         0.56         |         0.73         |         0.83         |       **0.47**       |\n+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+\n|    complex object     |         1.00         |         1.01         |         0.85         |       **0.82**       |         1.04         |         4.11         |         2.62         |         2.16         |\n+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+\n|   composite object    |         1.00         |         1.02         |         0.72         |       **0.68**       |         0.88         |         2.79         |         1.82         |         1.71         |\n+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+\n|        overall        |         1.00         |         0.99         |       **0.73**       |         0.78         |         0.97         |         4.81         |         2.27         |         1.36         |\n+-----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+\n\n\nDeserialization\n~~~~~~~~~~~~~~~\n\n+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+\n|      deserialize      |   ``loads()``\\ [9]_   | ``Decoder()``\\ [10]_  |  ``loads(n)``\\ [11]_  | ``Decoder(n)``\\ [12]_ |         ujson         |      simplejson       |        stdlib         |         yajl          |\n+=======================+=======================+=======================+=======================+=======================+=======================+=======================+=======================+=======================+\n|    100 arrays dict    |         1.00          |         1.00          |         0.90          |       **0.90**        |         0.95          |         1.60          |         1.11          |         1.18          |\n+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+\n|    100 dicts array    |         1.00          |         1.04          |         0.86          |       **0.86**        |         0.94          |         2.00          |         1.43          |         1.27          |\n+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+\n|    256 Trues array    |       **1.00**        |         1.16          |         1.10          |         1.12          |         1.20          |         1.95          |         1.90          |         1.89          |\n+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+\n|    256 ascii array    |       **1.00**        |         1.02          |         1.02          |         1.02          |         1.39          |         1.14          |         1.25          |         1.62          |\n+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+\n|   256 doubles array   |         1.00          |         0.90          |       **0.16**        |         0.16          |         0.39          |         0.86          |         0.83          |         0.42          |\n+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+\n|   256 unicode array   |       **1.00**        |         1.01          |         1.01          |         1.00          |         1.02          |         5.14          |         5.34          |         2.40          |\n+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+\n|    complex object     |         1.00          |         1.01          |       **0.73**        |         0.73          |         0.88          |         1.60          |         1.14          |         1.20          |\n+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+\n|   composite object    |         1.00          |         1.02          |       **0.81**        |         0.81          |         0.85          |         1.97          |         1.42          |         1.26          |\n+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+\n|        overall        |         1.00          |         1.00          |         0.90          |       **0.90**        |         0.95          |         1.61          |         1.12          |         1.18          |\n+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+\n\n.. [1] ``rapidjson.dumps()``\n.. [2] ``rapidjson.Encoder()``\n.. [3] ``rapidjson.dumps(number_mode=NM_NATIVE)``\n.. [4] ``rapidjson.Encoder(number_mode=NM_NATIVE)``\n.. [5] `ujson 1.35 <https://pypi.python.org/pypi/ujson/1.35>`__\n.. [6] `simplejson 3.11.1 <https://pypi.python.org/pypi/simplejson/3.11.1>`__\n.. [7] Python 3.6.2 standard library ``json``\n.. [8] `yajl 0.3.5 <https://pypi.python.org/pypi/yajl/0.3.5>`__\n.. [9] ``rapidjson.loads()``\n.. [10] ``rapidjson.Decoder()``\n.. [11] ``rapidjson.loads(number_mode=NM_NATIVE)``\n.. [12] ``rapidjson.Decoder(number_mode=NM_NATIVE)``\n\n\nDIY\n~~~\n\nTo run these tests yourself, clone the repo and run:\n\n.. code-block:: bash\n\n   $ make benchmarks\n\nor\n\n.. code-block:: bash\n\n   $ make benchmarks-other\n\nThe former will focus only on ``RapidJSON`` and is particularly handy coupled\nwith the `compare past runs`__ functionality of ``pytest-benchmark``:\n\n.. code-block:: bash\n\n   $ make benchmarks PYTEST_OPTIONS=--benchmark-autosave\n   # hack, hack, hack!\n   $ make benchmarks PYTEST_OPTIONS=--benchmark-compare=0001\n\n   ----------------------- benchmark 'deserialize': 18 tests ------------------------\n   Name (time in us)                                                            Min\u2026\n   ----------------------------------------------------------------------------------\n   test_loads[rapidjson-256 Trues array] (NOW)                         5.2320 (1.0)\u2026\n   test_loads[rapidjson-256 Trues array] (0001)                        5.4180 (1.04)\u2026\n   \u2026\n\nTo reproduce the tables above run ``make benchmarks-tables``\n\n__ http://pytest-benchmark.readthedocs.org/en/latest/comparing.html\n\n\nIncompatibility\n---------------\n\nHere are things in the standard ``json`` library supports that we have decided\nnot to support:\n\n``separators`` argument\n  This is mostly used for pretty printing and not supported by ``RapidJSON``\n  so it isn't a high priority. We do support ``indent`` kwarg that would get\n  you nice looking JSON anyways.\n\nCoercing keys when dumping\n  ``json`` will turn ``True`` into ``'True'`` if you dump it out but when you\n  load it back in it'll still be a string. We want the dump and load to return\n  the exact same objects so we have decided not to do this coercion.\n\n.. _RapidJSON: https://github.com/miloyip/rapidjson\n\n\nChanges\n-------\n\n0.2.7 (2017-12-08)\n~~~~~~~~~~~~~~~~~~\n\n* Restore compatibility with Python < 3.6\n\n\n0.2.6 (2017-12-08)\n~~~~~~~~~~~~~~~~~~\n\n* Fix memory leaks when using object_hook/start_object/end_object\n\n\n0.2.5 (2017-09-30)\n~~~~~~~~~~~~~~~~~~\n\n* Fix bug where error handling code could raise an exception causing a\n  confusing exception to be returned (`PR #82`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/pull/82\n\n* Fix bug where loads's ``object_hook`` and dumps's ``default`` arguments\n  could not be passed ``None`` explicitly (`PR #83`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/pull/83\n\n* Fix crash when dealing with surrogate pairs (`issue #81`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/issues/81\n\n\n0.2.4 (2017-09-17)\n~~~~~~~~~~~~~~~~~~\n\n* Fix compatibility with MacOS/clang\n\n\n0.2.3 (2017-08-24)\n~~~~~~~~~~~~~~~~~~\n\n* Limit the precision of DM_UNIX_TIME timestamps to six decimal digits\n\n\n0.2.2 (2017-08-24)\n~~~~~~~~~~~~~~~~~~\n\n* Nothing new, attempt to fix production of Python 3.6 binary wheels\n\n\n0.2.1 (2017-08-24)\n~~~~~~~~~~~~~~~~~~\n\n* Nothing new, attempt to fix production of Python 3.6 binary wheels\n\n\n0.2.0 (2017-08-24)\n~~~~~~~~~~~~~~~~~~\n\n* New ``parse_mode`` option, implementing relaxed JSON syntax (`issue #73`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/issues/73\n\n* New ``Encoder`` and ``Decoder``, implementing a class-based interface\n\n* New ``Validator``, exposing the underlying *JSON schema* validation (`issue #71`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/issues/71\n\n\n0.1.0 (2017-08-16)\n~~~~~~~~~~~~~~~~~~\n\n* Remove beta status\n\n\n0.1.0b4 (2017-08-14)\n~~~~~~~~~~~~~~~~~~~~\n\n* Make execution of the test suite on Appveyor actually happen\n\n\n0.1.0b3 (2017-08-12)\n~~~~~~~~~~~~~~~~~~~~\n\n* Exclude CI configurations from the source distribution\n\n\n0.1.0b2 (2017-08-12)\n~~~~~~~~~~~~~~~~~~~~\n\n* Fix Powershell wheel upload script in appveyor configuration\n\n\n0.1.0b1 (2017-08-12)\n~~~~~~~~~~~~~~~~~~~~\n\n* Compilable with somewhat old g++ (`issue #69`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/issues/69\n\n* **Backward incompatibilities**:\n\n  - all ``DATETIME_MODE_XXX`` constants have been shortened to ``DM_XXX``\n    ``DATETIME_MODE_ISO8601_UTC`` has been renamed to ``DM_SHIFT_TO_UTC``\n\n  - all ``UUID_MODE_XXX`` constants have been shortened to ``UM_XXX``\n\n* New option ``DM_UNIX_TIME`` to serialize date, datetime and time values as\n  `UNIX timestamps`__ targeting `issue #61`__\n\n  __ https://en.wikipedia.org/wiki/Unix_time\n  __ https://github.com/python-rapidjson/python-rapidjson/issues/61\n\n* New option ``DM_NAIVE_IS_UTC`` to treat na\u00efve datetime and time values as if\n  they were in the UTC timezone (also for issue #61)\n\n* New keyword argument ``number_mode`` to use underlying C library numbers\n\n* Binary wheels for GNU/Linux and Windows on PyPI (one would hope: this is the\n  reason for the beta1 release)\n\n\n0.0.11 (2017-03-05)\n~~~~~~~~~~~~~~~~~~~\n\n* Fix a couple of refcount handling glitches, hopefully targeting `issue\n  #48`__.\n\n  __ https://github.com/python-rapidjson/python-rapidjson/issues/48\n\n\n0.0.10 (2017-03-02)\n~~~~~~~~~~~~~~~~~~~\n\n* Fix source distribution to contain all required stuff (`PR #64`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/pull/64\n\n\n0.0.9 (2017-03-02)\n~~~~~~~~~~~~~~~~~~\n\n* CI testing on GitHub\n\n* Allow using locally installed RapidJSON library (`issue #60`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/issues/60\n\n* Bug fixes (`issue #37`__, `issue #51`__, `issue #57`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/issues/37\n  __ https://github.com/python-rapidjson/python-rapidjson/issues/51\n  __ https://github.com/python-rapidjson/python-rapidjson/issues/57\n\n\n0.0.8 (2016-12-09)\n~~~~~~~~~~~~~~~~~~\n\n* Use unpatched RapidJSON 1.1 (`PR #46`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/pull/46\n\n* Handle serialization and deserialization of datetime, date and time\n  instances (`PR #35`__) and of UUID instances (`PR #40`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/pull/35\n  __ https://github.com/python-rapidjson/python-rapidjson/pull/40\n\n* Sphinx based documentation (`PR #44`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/pull/44\n\n* Refresh benchmarks (`PR #45`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/pull/45\n\n* Bug fixes (`issue #25`__, `issue #38`__, `PR #43`__)\n\n  __ https://github.com/python-rapidjson/python-rapidjson/issues/25\n  __ https://github.com/python-rapidjson/python-rapidjson/issues/38\n  __ https://github.com/python-rapidjson/python-rapidjson/pull/43\n", 
    "tox": true, 
    "lcname": "python-rapidjson", 
    "bugtrack_url": null, 
    "github": true, 
    "coveralls": false, 
    "name": "python-rapidjson", 
    "license": "MIT License", 
    "travis_ci": true, 
    "github_project": "python-rapidjson", 
    "summary": "Python wrapper around rapidjson", 
    "split_keywords": [
        "json", 
        "rapidjson"
    ], 
    "author_email": "lele@metapensiero.it", 
    "urls": [
        {
            "has_sig": false, 
            "upload_time": "2017-12-08T13:57:57", 
            "comment_text": "", 
            "python_version": "source", 
            "url": "https://pypi.python.org/packages/2c/c7/50e7ea97906eb51482d47be13ef2f218fc6aae6fb472585585ad8e507a81/python-rapidjson-0.2.7.tar.gz", 
            "md5_digest": "f12c2fbeed76e6f87edb1000338360ec", 
            "downloads": 0, 
            "filename": "python-rapidjson-0.2.7.tar.gz", 
            "packagetype": "sdist", 
            "path": "2c/c7/50e7ea97906eb51482d47be13ef2f218fc6aae6fb472585585ad8e507a81/python-rapidjson-0.2.7.tar.gz", 
            "size": 171788
        }, 
        {
            "has_sig": false, 
            "upload_time": "2017-12-08T14:02:26", 
            "comment_text": "", 
            "python_version": "cp34", 
            "url": "https://pypi.python.org/packages/69/48/97ad76f7af1e2bd88438f5a2150a6e03899ad26632d521927f04482c8a20/python_rapidjson-0.2.7-cp34-cp34m-manylinux1_i686.whl", 
            "md5_digest": "e3cc594a5927944277e6a2b339ed72a8", 
            "downloads": 0, 
            "filename": "python_rapidjson-0.2.7-cp34-cp34m-manylinux1_i686.whl", 
            "packagetype": "bdist_wheel", 
            "path": "69/48/97ad76f7af1e2bd88438f5a2150a6e03899ad26632d521927f04482c8a20/python_rapidjson-0.2.7-cp34-cp34m-manylinux1_i686.whl", 
            "size": 700482
        }, 
        {
            "has_sig": false, 
            "upload_time": "2017-12-08T14:02:30", 
            "comment_text": "", 
            "python_version": "cp34", 
            "url": "https://pypi.python.org/packages/55/12/94fc634151892251a277aae1f147a0aac134942098571571929fd02aac3d/python_rapidjson-0.2.7-cp34-cp34m-manylinux1_x86_64.whl", 
            "md5_digest": "4fb0820bf6d765ac840cf32f2f75253c", 
            "downloads": 0, 
            "filename": "python_rapidjson-0.2.7-cp34-cp34m-manylinux1_x86_64.whl", 
            "packagetype": "bdist_wheel", 
            "path": "55/12/94fc634151892251a277aae1f147a0aac134942098571571929fd02aac3d/python_rapidjson-0.2.7-cp34-cp34m-manylinux1_x86_64.whl", 
            "size": 730050
        }, 
        {
            "has_sig": false, 
            "upload_time": "2017-12-08T14:02:21", 
            "comment_text": "", 
            "python_version": "cp34", 
            "url": "https://pypi.python.org/packages/d9/ad/3af498d9995911441f3afb55ff136d3da8e5274d6165a6fb041d34023c34/python_rapidjson-0.2.7-cp34-cp34m-win32.whl", 
            "md5_digest": "e94eb67e3fcdd0ed549ee0270a4e5c56", 
            "downloads": 0, 
            "filename": "python_rapidjson-0.2.7-cp34-cp34m-win32.whl", 
            "packagetype": "bdist_wheel", 
            "path": "d9/ad/3af498d9995911441f3afb55ff136d3da8e5274d6165a6fb041d34023c34/python_rapidjson-0.2.7-cp34-cp34m-win32.whl", 
            "size": 80247
        }, 
        {
            "has_sig": false, 
            "upload_time": "2017-12-08T14:02:23", 
            "comment_text": "", 
            "python_version": "cp34", 
            "url": "https://pypi.python.org/packages/cb/ea/359504f59130fbf6a28f17d7c173f88fbd1b6dd9edca3771f95e1432e200/python_rapidjson-0.2.7-cp34-cp34m-win_amd64.whl", 
            "md5_digest": "6ea97d42e47156e1b8dfc44e53c62503", 
            "downloads": 0, 
            "filename": "python_rapidjson-0.2.7-cp34-cp34m-win_amd64.whl", 
            "packagetype": "bdist_wheel", 
            "path": "cb/ea/359504f59130fbf6a28f17d7c173f88fbd1b6dd9edca3771f95e1432e200/python_rapidjson-0.2.7-cp34-cp34m-win_amd64.whl", 
            "size": 85402
        }, 
        {
            "has_sig": false, 
            "upload_time": "2017-12-08T14:02:32", 
            "comment_text": "", 
            "python_version": "cp35", 
            "url": "https://pypi.python.org/packages/fd/77/da1ab57f10c6433f149b57c46db9db5aa81ec1255a64cbd2732bda972e5e/python_rapidjson-0.2.7-cp35-cp35m-manylinux1_i686.whl", 
            "md5_digest": "580ef6b569176f206354ac214f601323", 
            "downloads": 0, 
            "filename": "python_rapidjson-0.2.7-cp35-cp35m-manylinux1_i686.whl", 
            "packagetype": "bdist_wheel", 
            "path": "fd/77/da1ab57f10c6433f149b57c46db9db5aa81ec1255a64cbd2732bda972e5e/python_rapidjson-0.2.7-cp35-cp35m-manylinux1_i686.whl", 
            "size": 700670
        }, 
        {
            "has_sig": false, 
            "upload_time": "2017-12-08T14:02:35", 
            "comment_text": "", 
            "python_version": "cp35", 
            "url": "https://pypi.python.org/packages/69/52/2346362ebdd8e29f64ac1f134842f324fc9d7509abb4e20bb548cd773c21/python_rapidjson-0.2.7-cp35-cp35m-manylinux1_x86_64.whl", 
            "md5_digest": "1e7229e5cb448086b9497e8ca3b1f241", 
            "downloads": 0, 
            "filename": "python_rapidjson-0.2.7-cp35-cp35m-manylinux1_x86_64.whl", 
            "packagetype": "bdist_wheel", 
            "path": "69/52/2346362ebdd8e29f64ac1f134842f324fc9d7509abb4e20bb548cd773c21/python_rapidjson-0.2.7-cp35-cp35m-manylinux1_x86_64.whl", 
            "size": 730391
        }, 
        {
            "has_sig": false, 
            "upload_time": "2017-12-08T14:02:24", 
            "comment_text": "", 
            "python_version": "cp35", 
            "url": "https://pypi.python.org/packages/0d/16/a2f8e0f878559a46d32052a879d7661a8139f899a72f90460392ca9fa17d/python_rapidjson-0.2.7-cp35-cp35m-win32.whl", 
            "md5_digest": "188253cb55d61aefeb5a43bc89b52b6a", 
            "downloads": 0, 
            "filename": "python_rapidjson-0.2.7-cp35-cp35m-win32.whl", 
            "packagetype": "bdist_wheel", 
            "path": "0d/16/a2f8e0f878559a46d32052a879d7661a8139f899a72f90460392ca9fa17d/python_rapidjson-0.2.7-cp35-cp35m-win32.whl", 
            "size": 81694
        }, 
        {
            "has_sig": false, 
            "upload_time": "2017-12-08T14:02:25", 
            "comment_text": "", 
            "python_version": "cp35", 
            "url": "https://pypi.python.org/packages/07/ce/7f11d4a7499ee3649e58c7330b3bf6dead7b0c677f0ecc20976aa641c7b1/python_rapidjson-0.2.7-cp35-cp35m-win_amd64.whl", 
            "md5_digest": "c8ca232fda26c67c80018a96f6dac2cd", 
            "downloads": 0, 
            "filename": "python_rapidjson-0.2.7-cp35-cp35m-win_amd64.whl", 
            "packagetype": "bdist_wheel", 
            "path": "07/ce/7f11d4a7499ee3649e58c7330b3bf6dead7b0c677f0ecc20976aa641c7b1/python_rapidjson-0.2.7-cp35-cp35m-win_amd64.whl", 
            "size": 91107
        }, 
        {
            "has_sig": false, 
            "upload_time": "2017-12-08T14:02:27", 
            "comment_text": "", 
            "python_version": "cp36", 
            "url": "https://pypi.python.org/packages/b5/ed/4d6cb882d9c4ba73783cf6211bde87ebc1bbb74dabbe7a17a63add091e48/python_rapidjson-0.2.7-cp36-cp36m-win32.whl", 
            "md5_digest": "4c7cc9e85f4a89b713d5156f6fc17cd6", 
            "downloads": 0, 
            "filename": "python_rapidjson-0.2.7-cp36-cp36m-win32.whl", 
            "packagetype": "bdist_wheel", 
            "path": "b5/ed/4d6cb882d9c4ba73783cf6211bde87ebc1bbb74dabbe7a17a63add091e48/python_rapidjson-0.2.7-cp36-cp36m-win32.whl", 
            "size": 81694
        }, 
        {
            "has_sig": false, 
            "upload_time": "2017-12-08T14:02:30", 
            "comment_text": "", 
            "python_version": "cp36", 
            "url": "https://pypi.python.org/packages/ed/4c/8987f489c5679eec5250af48627e4f46bc4f040c95e9dbeabaa83f10989f/python_rapidjson-0.2.7-cp36-cp36m-win_amd64.whl", 
            "md5_digest": "13dbf9ccaea1fd775cda0dce71b0a593", 
            "downloads": 0, 
            "filename": "python_rapidjson-0.2.7-cp36-cp36m-win_amd64.whl", 
            "packagetype": "bdist_wheel", 
            "path": "ed/4c/8987f489c5679eec5250af48627e4f46bc4f040c95e9dbeabaa83f10989f/python_rapidjson-0.2.7-cp36-cp36m-win_amd64.whl", 
            "size": 91111
        }
    ], 
    "_id": null, 
    "cheesecake_installability_id": null
}