.. -*- coding: utf-8 -*-
.. :Project: python-rapidjson -- Introduction
.. :Author: Ken Robbins <ken@kenrobbins.com>
.. :License: MIT License
.. :Copyright: © 2015 Ken Robbins
.. :Copyright: © 2016, 2017, 2018, 2020, 2022 Lele Gaifax
..
==================
python-rapidjson
==================
Python wrapper around RapidJSON
===============================
:Authors: Ken Robbins <ken@kenrobbins.com>; Lele Gaifax <lele@metapensiero.it>
:License: `MIT License`__
:Status: |build| |doc|
__ https://raw.githubusercontent.com/python-rapidjson/python-rapidjson/master/LICENSE
.. |build| image:: https://travis-ci.org/python-rapidjson/python-rapidjson.svg?branch=master
:target: https://travis-ci.org/python-rapidjson/python-rapidjson
:alt: Build status
.. |doc| image:: https://readthedocs.org/projects/python-rapidjson/badge/?version=latest
:target: https://readthedocs.org/projects/python-rapidjson/builds/
:alt: Documentation status
RapidJSON_ is an extremely fast C++ JSON parser and serialization library: this module
wraps it into a Python 3 extension, exposing its serialization/deserialization (to/from
either ``bytes``, ``str`` or *file-like* instances) and `JSON Schema`__ validation
capabilities.
Latest version documentation is automatically rendered by `Read the Docs`__.
__ http://json-schema.org/documentation.html
__ https://python-rapidjson.readthedocs.io/en/latest/
Getting Started
---------------
First install ``python-rapidjson``:
.. code-block:: bash
$ pip install python-rapidjson
or, if you prefer `Conda`__:
.. code-block:: bash
$ conda install -c conda-forge python-rapidjson
__ https://conda.io/docs/
Basic usage looks like this:
.. code-block:: python
>>> import rapidjson
>>> data = {'foo': 100, 'bar': 'baz'}
>>> rapidjson.dumps(data)
'{"foo":100,"bar":"baz"}'
>>> rapidjson.loads('{"bar":"baz","foo":100}')
{'bar': 'baz', 'foo': 100}
>>>
>>> class Stream:
... def write(self, data):
... print("Chunk:", data)
...
>>> rapidjson.dump(data, Stream(), chunk_size=5)
Chunk: b'{"foo'
Chunk: b'":100'
Chunk: b',"bar'
Chunk: b'":"ba'
Chunk: b'z"}'
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.
See the `this section`__ in the documentation for a comparison with other JSON libraries.
__ https://python-rapidjson.readthedocs.io/en/latest/benchmarks.html
Incompatibility
---------------
Although we tried to implement an API similar to the standard library ``json``, being a
strict *drop-in* replacement in not our goal and we have decided to depart from there in
some aspects. See `this section`__ in the documentation for further details.
__ https://python-rapidjson.readthedocs.io/en/latest/quickstart.html#incompatibilities
.. _RapidJSON: http://rapidjson.org/
Changes
-------
1.19 (2024-07-28)
~~~~~~~~~~~~~~~~~
* Properly dump subclasses of ``float`` with custom ``__repr__()`` method ( `issue #213`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/213
1.18 (2024-06-29)
~~~~~~~~~~~~~~~~~
* Expose PEP-484 typing stubs, thanks to Rodion Kosianenko and GoodWasHere (`PR #204`__)
__ https://github.com/python-rapidjson/python-rapidjson/pull/204
1.17 (2024-05-18)
~~~~~~~~~~~~~~~~~
* Use `current master`__ version of rapidjson
__ https://github.com/Tencent/rapidjson/compare/5e17dbed34eef33af8f3e734820b5dc547a2a3aa...ab1842a2dae061284c0a62dca1cc6d5e7e37e346
* Generate wheels on PyPI using Python 3.13b1 release, thanks to cibuildwheel `2.18.0`__
__ https://cibuildwheel.pypa.io/en/stable/changelog/#v2180
1.16 (2024-02-28)
~~~~~~~~~~~~~~~~~
* Produce Python 3.8 wheels again, I deactivated it too eagerly, it's in *security fixes
only* mode, not yet reached its `end-of-life` state
1.15 (2024-02-28)
~~~~~~~~~~~~~~~~~
* Honor the `recursion limit`__ also at parse time, to avoid attacks as described by
`CVE-2024-27454`__
__ https://docs.python.org/3.12/library/sys.html#sys.setrecursionlimit
__ https://monicz.dev/CVE-2024-27454
1.14 (2023-12-14)
~~~~~~~~~~~~~~~~~
* Produce binary wheels for macOS/arm64, thanks to timothyjlaurent (`PR #195`__)
__ https://github.com/python-rapidjson/python-rapidjson/pull/170
1.13 (2023-10-29)
~~~~~~~~~~~~~~~~~
* Fix handling of write_mode in dump functions (problem emerged discussing `issue #191`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/191
1.12 (2023-10-07)
~~~~~~~~~~~~~~~~~
* Generate wheels on PyPI using final Python 3.12 release, thanks to cibuildwheel `2.16.2`__
__ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2162
1.11 (2023-09-11)
~~~~~~~~~~~~~~~~~
* Use `current master`__ version of rapidjson
__ https://github.com/Tencent/rapidjson/compare/083f359f5c36198accc2b9360ce1e32a333231d9...5e17dbed34eef33af8f3e734820b5dc547a2a3aa
* Use cibuildwheel `2.15.0`__
__ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2150
1.10 (2023-03-15)
~~~~~~~~~~~~~~~~~
* Use `current master`__ version of rapidjson
__ https://github.com/Tencent/rapidjson/commit/083f359f5c36198accc2b9360ce1e32a333231d9
* Produce ppc64le wheels, thanks to mgiessing (`PR #170`__)
__ https://github.com/python-rapidjson/python-rapidjson/pull/170
* Use cibuildwheel `2.12.1`__
__ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2121
1.9 (2022-10-17)
~~~~~~~~~~~~~~~~
* Produce Python 3.11 wheels, thanks to ``cibuildwheel`` `2.11.1`__
__ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2111
1.8 (2022-07-07)
~~~~~~~~~~~~~~~~
* Fix `problem on macOS`__ explicitly requiring C++11, thanks to agate-pris (`issue
#166`__)
__ https://github.com/Tencent/rapidjson/commit/9965ab37f6cfae3d58a0a6e34c76112866ace0b1#commitcomment-77875054
__ https://github.com/python-rapidjson/python-rapidjson/issues/166
1.7 (2022-07-06)
~~~~~~~~~~~~~~~~
* Use `current master`__ version of rapidjson
__ https://github.com/Tencent/rapidjson/commit/232389d4f1012dddec4ef84861face2d2ba85709
* Update the test suite to work on Pyston, thanks to Kevin Modzelewski (`PR #161`__)
__ https://github.com/python-rapidjson/python-rapidjson/pull/161
1.6 (2022-02-19)
~~~~~~~~~~~~~~~~
* Fix memory leak when using ``end_array`` (`issue #160`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/160
1.5 (2021-10-16)
~~~~~~~~~~~~~~~~
* Fix serialization bug when using DM_UNIX_TIME in a non-C locale context
1.4 (2021-06-25)
~~~~~~~~~~~~~~~~
* Build binary wheel for aarch64, thanks to odidev (`PR #156`__)
__ https://github.com/python-rapidjson/python-rapidjson/pull/156
1.3 (2021-06-25)
~~~~~~~~~~~~~~~~
* Yet another attempt to fix automatic wheels upload
1.2 (2021-06-25)
~~~~~~~~~~~~~~~~
* Fix automatic wheels upload from GH Actions to PyPI
1.1 (2021-06-25)
~~~~~~~~~~~~~~~~
* Reduce decoder memory consumption by uniquifiying keys in the loaded dictionaries
* Implement an alternative way of transmogrify JSON objects, similar to ``json``\ 's
``object_pairs_hook`` load option (`issue #154`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/154
1.0 (2020-12-13)
~~~~~~~~~~~~~~~~
* Require Python 3.6 or greater
* New serialization options, ``iterable_mode`` and ``mapping_mode``, to give some control
on how generic iterables and mappings get encoded (fix `issue #149`__ and
`issue #150`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/149
__ https://github.com/python-rapidjson/python-rapidjson/issues/150
* Internal refactorings, folding "skipkeys" and "sort_keys" arguments into the
mapping_mode options, respectively as MM_SKIP_NON_STRING_KEYS and MM_SORT_KEYS: "old"
arguments kept for backward compatibility
* Bump major version to 1, tag as "production/stable" and switch to a simpler X.Y
versioning schema
0.9.4 (2020-11-16)
~~~~~~~~~~~~~~~~~~
* Fix memory leak loading an invalid JSON (`issue #148`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/148
0.9.3 (2020-10-24)
~~~~~~~~~~~~~~~~~~
* Fix access to ``Encoder`` instance attributes (`issue #147`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/147
0.9.2 (2020-10-24)
~~~~~~~~~~~~~~~~~~
* Use `current master`__ version of rapidjson
__ https://github.com/Tencent/rapidjson/commit/0ccdbf364c577803e2a751f5aededce935314313
* Enable GH Actions-based test workflow, thanks to Martin Thoma (`PR #143`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/143
* Produce Python 3.9 wheels, disable testing under Python < 3.6
* Make the character used for indentation in pretty mode a parameter (`issue #135`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/135
* Handle wider precision range in timestamps fractional seconds (`PR 133`__), thanks to
Karl Seguin
__ https://github.com/python-rapidjson/python-rapidjson/pull/133
* Add comparison benchmarks against orjson and hyperjson (`issue #130`__ and `PR #131`__,
thanks to Sebastian Pipping)
__ https://github.com/python-rapidjson/python-rapidjson/issues/130
__ https://github.com/python-rapidjson/python-rapidjson/pull/131
0.9.1 (2019-11-13)
~~~~~~~~~~~~~~~~~~
* Fix memory leak in case of failed validation (`issue #126`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/126
0.9.0 (2019-11-13)
~~~~~~~~~~~~~~~~~~
* Produce Python 3.8 wheels
* Compatibility fix for Python 3.8 (`issue #125`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/125
* New dump option ``write_mode``, supporting RapidJSON's ``kFormatSingleLineArray`` option
(`issue #123`__), thanks to Nguyễn Hồng Quân for the initial implementation (`PR #124`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/123
__ https://github.com/python-rapidjson/python-rapidjson/pull/124
0.8.0 (2019-08-09)
~~~~~~~~~~~~~~~~~~
* New serialization option ``bytes_mode`` to control how bytes instances get encoded
(`issue #122`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/122
0.7.2 (2019-06-09)
~~~~~~~~~~~~~~~~~~
* Hopefully fix the memory leak when loading from a stream (`issue #117`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/117
0.7.1 (2019-05-11)
~~~~~~~~~~~~~~~~~~
* Raise a more specific exception on loading errors, ``JSONDecodeError``, instead of
generic ``ValueError`` (`issue #118`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/118
* Fix optimization path when using ``OrderedDict``\ s (`issue #119`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/119
* Fix serialization of ``IntEnum``\ s (`issue #121`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/121
* I spent *quite a lot* of time investigating on the memory leak when loading from a
stream (`issue #117`__): as I was not able to fully replicate the problem, I cannot be
sure I solved the problem... sorry!
__ https://github.com/python-rapidjson/python-rapidjson/issues/117
0.7.0 (2019-02-11)
~~~~~~~~~~~~~~~~~~
* Raise correct exception in code samples (`PR #109`__), thanks to Thomas Dähling
__ https://github.com/python-rapidjson/python-rapidjson/pull/109
* Fix compilation with system-wide install of rapidjson (`issue #110`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/110
* Use current master version of rapidjson, that includes a `fix`__ for its `issue #1368`__
and `issue #1336`__, and cures several compilation warnings as well (`issue #112`__ and
`issue #107`__)
__ https://github.com/Tencent/rapidjson/commit/f5e5d47fac0f654749c4d6267015005b74643dff
__ https://github.com/Tencent/rapidjson/issues/1368
__ https://github.com/Tencent/rapidjson/issues/1336
__ https://github.com/python-rapidjson/python-rapidjson/issues/112
__ https://github.com/python-rapidjson/python-rapidjson/issues/107
* Fix memory leak when using ``object_hook`` (`issue #115`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/115
0.6.3 (2018-07-11)
~~~~~~~~~~~~~~~~~~
* No visible changes, but now PyPI carries binary wheels for Python 3.7.
0.6.2 (2018-06-08)
~~~~~~~~~~~~~~~~~~
* Use a more specific ValidationError, to differentiate from invalid JSON
0.6.1 (2018-06-06)
~~~~~~~~~~~~~~~~~~
* Nothing new, attempt to build Python 3.6 binary wheels on Travis CI
0.6.0 (2018-06-06)
~~~~~~~~~~~~~~~~~~
* Add a new comparison table involving ``ensure_ascii`` (`issue #98`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/98
* Use Python's ``repr()`` to emit float values instead of rapidjson's ``dtoa()`` (`issue
#101`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/101
* Use a newer (although unreleased) version of rapidjson to fix an `issue`__ with
JSONSchema validation (`PR #103`__), thanks to Anthony Miyaguchi
__ https://github.com/Tencent/rapidjson/issues/825
__ https://github.com/python-rapidjson/python-rapidjson/pull/103
0.5.2 (2018-03-31)
~~~~~~~~~~~~~~~~~~
* Tiny tweak to restore macOS build on Travis CI
0.5.1 (2018-03-31)
~~~~~~~~~~~~~~~~~~
* Minor tweaks to CI and PyPI deploy configuration
0.5.0 (2018-03-31)
~~~~~~~~~~~~~~~~~~
* New ``RawJSON`` class, allowing inclusion of *pre-serialized* content (`PR #95`__ and
`PR #96`__), thanks to Silvio Tomatis
__ https://github.com/python-rapidjson/python-rapidjson/pull/95
__ https://github.com/python-rapidjson/python-rapidjson/pull/96
0.4.3 (2018-01-14)
~~~~~~~~~~~~~~~~~~
* Deserialize from ``bytes`` and ``bytearray`` instances, ensuring they
contain valid UTF-8 data
* Speed up parsing of floating point numbers, avoiding intermediary conversion
to a Python string (`PR #94`__)
__ https://github.com/python-rapidjson/python-rapidjson/pull/94
0.4.2 (2018-01-09)
~~~~~~~~~~~~~~~~~~
* Fix precision handling of DM_UNIX_TIME timestamps
0.4.1 (2018-01-08)
~~~~~~~~~~~~~~~~~~
* Fix memory leaks in ``Decoder()`` and ``Encoder()`` classes, related to
bad handling of ``PyObject_GetAttr()`` result value
* Fix compatibility with Python 3.7a
0.4.0 (2018-01-05)
~~~~~~~~~~~~~~~~~~
* Implemented the streaming interface, see `load()`__ and `dump()`__ (`issue #80`__)
__ https://python-rapidjson.readthedocs.io/en/latest/load.html
__ https://python-rapidjson.readthedocs.io/en/latest/dump.html
__ https://github.com/python-rapidjson/python-rapidjson/issues/80
**Backward incompatibility**: now the *flags* arguments on all the functions are
*keyword only*, to mimic stdlib's ``json`` style
0.3.2 (2017-12-21)
~~~~~~~~~~~~~~~~~~
* Reduce compiler warnings (`issue #87`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/87
0.3.1 (2017-12-20)
~~~~~~~~~~~~~~~~~~
* Fix Travis CI recipe to accomodate MacOS
0.3.0 (2017-12-20)
~~~~~~~~~~~~~~~~~~
* Fix compilation on MacOS (`issue #78`__)
__ https://github.com/python-rapidjson/python-rapidjson/issues/78
* Handle generic iterables (`PR #89`__)
__ https://github.com/python-rapidjson/python-rapidjson/pull/89
**Backward incompatibility**: the ``dumps()`` function and the ``Encoder()``
constructor used to accept a ``max_recursion_depth`` argument, to control
the maximum allowed nesting of Python structures; since the underlying
function is now effectively recursive, it has been replaced by the generic
`sys.setrecursionlimit()`__ mechanism
__ https://docs.python.org/3.6/library/sys.html#sys.setrecursionlimit
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
{
"_id": null,
"home_page": "https://github.com/python-rapidjson/python-rapidjson",
"name": "python-rapidjson",
"maintainer": "Lele Gaifax",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "lele@metapensiero.it",
"keywords": "json rapidjson",
"author": "Ken Robbins",
"author_email": "ken@kenrobbins.com",
"download_url": "https://files.pythonhosted.org/packages/5d/28/8b707465257289a237754dc5dde6b176137043b3221d90f45fd9c76dab68/python-rapidjson-1.19.tar.gz",
"platform": 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, 2018, 2020, 2022 Lele Gaifax\n..\n\n==================\n python-rapidjson\n==================\n\nPython wrapper around RapidJSON\n===============================\n\n:Authors: Ken Robbins <ken@kenrobbins.com>; Lele Gaifax <lele@metapensiero.it>\n:License: `MIT License`__\n:Status: |build| |doc|\n\n__ https://raw.githubusercontent.com/python-rapidjson/python-rapidjson/master/LICENSE\n.. |build| 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.. |doc| image:: https://readthedocs.org/projects/python-rapidjson/badge/?version=latest\n :target: https://readthedocs.org/projects/python-rapidjson/builds/\n :alt: Documentation status\n\nRapidJSON_ is an extremely fast C++ JSON parser and serialization library: this module\nwraps it into a Python 3 extension, exposing its serialization/deserialization (to/from\neither ``bytes``, ``str`` or *file-like* instances) and `JSON Schema`__ validation\ncapabilities.\n\nLatest version documentation is automatically rendered by `Read the Docs`__.\n\n__ http://json-schema.org/documentation.html\n__ https://python-rapidjson.readthedocs.io/en/latest/\n\n\nGetting Started\n---------------\n\nFirst install ``python-rapidjson``:\n\n.. code-block:: bash\n\n $ pip install python-rapidjson\n\nor, if you prefer `Conda`__:\n\n.. code-block:: bash\n\n $ conda install -c conda-forge python-rapidjson\n\n__ https://conda.io/docs/\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 '{\"foo\":100,\"bar\":\"baz\"}'\n >>> rapidjson.loads('{\"bar\":\"baz\",\"foo\":100}')\n {'bar': 'baz', 'foo': 100}\n >>>\n >>> class Stream:\n ... def write(self, data):\n ... print(\"Chunk:\", data)\n ...\n >>> rapidjson.dump(data, Stream(), chunk_size=5)\n Chunk: b'{\"foo'\n Chunk: b'\":100'\n Chunk: b',\"bar'\n Chunk: b'\":\"ba'\n Chunk: b'z\"}'\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\nSee the `this section`__ in the documentation for a comparison with other JSON libraries.\n\n__ https://python-rapidjson.readthedocs.io/en/latest/benchmarks.html\n\n\nIncompatibility\n---------------\n\nAlthough we tried to implement an API similar to the standard library ``json``, being a\nstrict *drop-in* replacement in not our goal and we have decided to depart from there in\nsome aspects. See `this section`__ in the documentation for further details.\n\n__ https://python-rapidjson.readthedocs.io/en/latest/quickstart.html#incompatibilities\n\n.. _RapidJSON: http://rapidjson.org/\n\n\nChanges\n-------\n\n1.19 (2024-07-28)\n~~~~~~~~~~~~~~~~~\n\n* Properly dump subclasses of ``float`` with custom ``__repr__()`` method ( `issue #213`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/213\n\n\n1.18 (2024-06-29)\n~~~~~~~~~~~~~~~~~\n\n* Expose PEP-484 typing stubs, thanks to Rodion Kosianenko and GoodWasHere (`PR #204`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/pull/204\n\n\n1.17 (2024-05-18)\n~~~~~~~~~~~~~~~~~\n\n* Use `current master`__ version of rapidjson\n\n __ https://github.com/Tencent/rapidjson/compare/5e17dbed34eef33af8f3e734820b5dc547a2a3aa...ab1842a2dae061284c0a62dca1cc6d5e7e37e346\n\n* Generate wheels on PyPI using Python 3.13b1 release, thanks to cibuildwheel `2.18.0`__\n\n __ https://cibuildwheel.pypa.io/en/stable/changelog/#v2180\n\n\n1.16 (2024-02-28)\n~~~~~~~~~~~~~~~~~\n\n* Produce Python 3.8 wheels again, I deactivated it too eagerly, it's in *security fixes\n only* mode, not yet reached its `end-of-life` state\n\n\n1.15 (2024-02-28)\n~~~~~~~~~~~~~~~~~\n\n* Honor the `recursion limit`__ also at parse time, to avoid attacks as described by\n `CVE-2024-27454`__\n\n __ https://docs.python.org/3.12/library/sys.html#sys.setrecursionlimit\n __ https://monicz.dev/CVE-2024-27454\n\n\n1.14 (2023-12-14)\n~~~~~~~~~~~~~~~~~\n\n* Produce binary wheels for macOS/arm64, thanks to timothyjlaurent (`PR #195`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/pull/170\n\n\n1.13 (2023-10-29)\n~~~~~~~~~~~~~~~~~\n\n* Fix handling of write_mode in dump functions (problem emerged discussing `issue #191`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/191\n\n\n1.12 (2023-10-07)\n~~~~~~~~~~~~~~~~~\n\n* Generate wheels on PyPI using final Python 3.12 release, thanks to cibuildwheel `2.16.2`__\n\n __ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2162\n\n\n1.11 (2023-09-11)\n~~~~~~~~~~~~~~~~~\n\n* Use `current master`__ version of rapidjson\n\n __ https://github.com/Tencent/rapidjson/compare/083f359f5c36198accc2b9360ce1e32a333231d9...5e17dbed34eef33af8f3e734820b5dc547a2a3aa\n\n* Use cibuildwheel `2.15.0`__\n\n __ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2150\n\n\n1.10 (2023-03-15)\n~~~~~~~~~~~~~~~~~\n\n* Use `current master`__ version of rapidjson\n\n __ https://github.com/Tencent/rapidjson/commit/083f359f5c36198accc2b9360ce1e32a333231d9\n\n* Produce ppc64le wheels, thanks to mgiessing (`PR #170`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/pull/170\n\n* Use cibuildwheel `2.12.1`__\n\n __ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2121\n\n\n1.9 (2022-10-17)\n~~~~~~~~~~~~~~~~\n\n* Produce Python 3.11 wheels, thanks to ``cibuildwheel`` `2.11.1`__\n\n __ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2111\n\n\n1.8 (2022-07-07)\n~~~~~~~~~~~~~~~~\n\n* Fix `problem on macOS`__ explicitly requiring C++11, thanks to agate-pris (`issue\n #166`__)\n\n __ https://github.com/Tencent/rapidjson/commit/9965ab37f6cfae3d58a0a6e34c76112866ace0b1#commitcomment-77875054\n __ https://github.com/python-rapidjson/python-rapidjson/issues/166\n\n\n1.7 (2022-07-06)\n~~~~~~~~~~~~~~~~\n\n* Use `current master`__ version of rapidjson\n\n __ https://github.com/Tencent/rapidjson/commit/232389d4f1012dddec4ef84861face2d2ba85709\n\n* Update the test suite to work on Pyston, thanks to Kevin Modzelewski (`PR #161`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/pull/161\n\n\n1.6 (2022-02-19)\n~~~~~~~~~~~~~~~~\n\n* Fix memory leak when using ``end_array`` (`issue #160`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/160\n\n\n1.5 (2021-10-16)\n~~~~~~~~~~~~~~~~\n\n* Fix serialization bug when using DM_UNIX_TIME in a non-C locale context\n\n\n1.4 (2021-06-25)\n~~~~~~~~~~~~~~~~\n\n* Build binary wheel for aarch64, thanks to odidev (`PR #156`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/pull/156\n\n\n1.3 (2021-06-25)\n~~~~~~~~~~~~~~~~\n\n* Yet another attempt to fix automatic wheels upload\n\n\n1.2 (2021-06-25)\n~~~~~~~~~~~~~~~~\n\n* Fix automatic wheels upload from GH Actions to PyPI\n\n\n1.1 (2021-06-25)\n~~~~~~~~~~~~~~~~\n\n* Reduce decoder memory consumption by uniquifiying keys in the loaded dictionaries\n\n* Implement an alternative way of transmogrify JSON objects, similar to ``json``\\ 's\n ``object_pairs_hook`` load option (`issue #154`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/154\n\n\n1.0 (2020-12-13)\n~~~~~~~~~~~~~~~~\n\n* Require Python 3.6 or greater\n\n* New serialization options, ``iterable_mode`` and ``mapping_mode``, to give some control\n on how generic iterables and mappings get encoded (fix `issue #149`__ and\n `issue #150`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/149\n __ https://github.com/python-rapidjson/python-rapidjson/issues/150\n\n* Internal refactorings, folding \"skipkeys\" and \"sort_keys\" arguments into the\n mapping_mode options, respectively as MM_SKIP_NON_STRING_KEYS and MM_SORT_KEYS: \"old\"\n arguments kept for backward compatibility\n\n* Bump major version to 1, tag as \"production/stable\" and switch to a simpler X.Y\n versioning schema\n\n\n0.9.4 (2020-11-16)\n~~~~~~~~~~~~~~~~~~\n\n* Fix memory leak loading an invalid JSON (`issue #148`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/148\n\n\n0.9.3 (2020-10-24)\n~~~~~~~~~~~~~~~~~~\n\n* Fix access to ``Encoder`` instance attributes (`issue #147`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/147\n\n\n0.9.2 (2020-10-24)\n~~~~~~~~~~~~~~~~~~\n\n* Use `current master`__ version of rapidjson\n\n __ https://github.com/Tencent/rapidjson/commit/0ccdbf364c577803e2a751f5aededce935314313\n\n* Enable GH Actions-based test workflow, thanks to Martin Thoma (`PR #143`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/143\n\n* Produce Python 3.9 wheels, disable testing under Python < 3.6\n\n* Make the character used for indentation in pretty mode a parameter (`issue #135`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/135\n\n* Handle wider precision range in timestamps fractional seconds (`PR 133`__), thanks to\n Karl Seguin\n\n __ https://github.com/python-rapidjson/python-rapidjson/pull/133\n\n* Add comparison benchmarks against orjson and hyperjson (`issue #130`__ and `PR #131`__,\n thanks to Sebastian Pipping)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/130\n __ https://github.com/python-rapidjson/python-rapidjson/pull/131\n\n\n0.9.1 (2019-11-13)\n~~~~~~~~~~~~~~~~~~\n\n* Fix memory leak in case of failed validation (`issue #126`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/126\n\n\n0.9.0 (2019-11-13)\n~~~~~~~~~~~~~~~~~~\n\n* Produce Python 3.8 wheels\n\n* Compatibility fix for Python 3.8 (`issue #125`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/125\n\n* New dump option ``write_mode``, supporting RapidJSON's ``kFormatSingleLineArray`` option\n (`issue #123`__), thanks to Nguy\u1ec5n H\u1ed3ng Qu\u00e2n for the initial implementation (`PR #124`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/123\n __ https://github.com/python-rapidjson/python-rapidjson/pull/124\n\n\n0.8.0 (2019-08-09)\n~~~~~~~~~~~~~~~~~~\n\n* New serialization option ``bytes_mode`` to control how bytes instances get encoded\n (`issue #122`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/122\n\n\n0.7.2 (2019-06-09)\n~~~~~~~~~~~~~~~~~~\n\n* Hopefully fix the memory leak when loading from a stream (`issue #117`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/117\n\n\n0.7.1 (2019-05-11)\n~~~~~~~~~~~~~~~~~~\n\n* Raise a more specific exception on loading errors, ``JSONDecodeError``, instead of\n generic ``ValueError`` (`issue #118`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/118\n\n* Fix optimization path when using ``OrderedDict``\\ s (`issue #119`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/119\n\n* Fix serialization of ``IntEnum``\\ s (`issue #121`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/121\n\n* I spent *quite a lot* of time investigating on the memory leak when loading from a\n stream (`issue #117`__): as I was not able to fully replicate the problem, I cannot be\n sure I solved the problem... sorry!\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/117\n\n\n0.7.0 (2019-02-11)\n~~~~~~~~~~~~~~~~~~\n\n* Raise correct exception in code samples (`PR #109`__), thanks to Thomas D\u00e4hling\n\n __ https://github.com/python-rapidjson/python-rapidjson/pull/109\n\n* Fix compilation with system-wide install of rapidjson (`issue #110`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/110\n\n* Use current master version of rapidjson, that includes a `fix`__ for its `issue #1368`__\n and `issue #1336`__, and cures several compilation warnings as well (`issue #112`__ and\n `issue #107`__)\n\n __ https://github.com/Tencent/rapidjson/commit/f5e5d47fac0f654749c4d6267015005b74643dff\n __ https://github.com/Tencent/rapidjson/issues/1368\n __ https://github.com/Tencent/rapidjson/issues/1336\n __ https://github.com/python-rapidjson/python-rapidjson/issues/112\n __ https://github.com/python-rapidjson/python-rapidjson/issues/107\n\n* Fix memory leak when using ``object_hook`` (`issue #115`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/115\n\n\n0.6.3 (2018-07-11)\n~~~~~~~~~~~~~~~~~~\n\n* No visible changes, but now PyPI carries binary wheels for Python 3.7.\n\n\n0.6.2 (2018-06-08)\n~~~~~~~~~~~~~~~~~~\n\n* Use a more specific ValidationError, to differentiate from invalid JSON\n\n\n0.6.1 (2018-06-06)\n~~~~~~~~~~~~~~~~~~\n\n* Nothing new, attempt to build Python 3.6 binary wheels on Travis CI\n\n\n0.6.0 (2018-06-06)\n~~~~~~~~~~~~~~~~~~\n\n* Add a new comparison table involving ``ensure_ascii`` (`issue #98`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/98\n\n* Use Python's ``repr()`` to emit float values instead of rapidjson's ``dtoa()`` (`issue\n #101`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/101\n\n* Use a newer (although unreleased) version of rapidjson to fix an `issue`__ with\n JSONSchema validation (`PR #103`__), thanks to Anthony Miyaguchi\n\n __ https://github.com/Tencent/rapidjson/issues/825\n __ https://github.com/python-rapidjson/python-rapidjson/pull/103\n\n\n0.5.2 (2018-03-31)\n~~~~~~~~~~~~~~~~~~\n\n* Tiny tweak to restore macOS build on Travis CI\n\n\n0.5.1 (2018-03-31)\n~~~~~~~~~~~~~~~~~~\n\n* Minor tweaks to CI and PyPI deploy configuration\n\n\n0.5.0 (2018-03-31)\n~~~~~~~~~~~~~~~~~~\n\n* New ``RawJSON`` class, allowing inclusion of *pre-serialized* content (`PR #95`__ and\n `PR #96`__), thanks to Silvio Tomatis\n\n __ https://github.com/python-rapidjson/python-rapidjson/pull/95\n __ https://github.com/python-rapidjson/python-rapidjson/pull/96\n\n\n0.4.3 (2018-01-14)\n~~~~~~~~~~~~~~~~~~\n\n* Deserialize from ``bytes`` and ``bytearray`` instances, ensuring they\n contain valid UTF-8 data\n\n* Speed up parsing of floating point numbers, avoiding intermediary conversion\n to a Python string (`PR #94`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/pull/94\n\n\n0.4.2 (2018-01-09)\n~~~~~~~~~~~~~~~~~~\n\n* Fix precision handling of DM_UNIX_TIME timestamps\n\n\n0.4.1 (2018-01-08)\n~~~~~~~~~~~~~~~~~~\n\n* Fix memory leaks in ``Decoder()`` and ``Encoder()`` classes, related to\n bad handling of ``PyObject_GetAttr()`` result value\n\n* Fix compatibility with Python 3.7a\n\n\n0.4.0 (2018-01-05)\n~~~~~~~~~~~~~~~~~~\n\n* Implemented the streaming interface, see `load()`__ and `dump()`__ (`issue #80`__)\n\n __ https://python-rapidjson.readthedocs.io/en/latest/load.html\n __ https://python-rapidjson.readthedocs.io/en/latest/dump.html\n __ https://github.com/python-rapidjson/python-rapidjson/issues/80\n\n **Backward incompatibility**: now the *flags* arguments on all the functions are\n *keyword only*, to mimic stdlib's ``json`` style\n\n\n0.3.2 (2017-12-21)\n~~~~~~~~~~~~~~~~~~\n\n* Reduce compiler warnings (`issue #87`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/87\n\n\n0.3.1 (2017-12-20)\n~~~~~~~~~~~~~~~~~~\n\n* Fix Travis CI recipe to accomodate MacOS\n\n\n0.3.0 (2017-12-20)\n~~~~~~~~~~~~~~~~~~\n\n* Fix compilation on MacOS (`issue #78`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/issues/78\n\n* Handle generic iterables (`PR #89`__)\n\n __ https://github.com/python-rapidjson/python-rapidjson/pull/89\n\n **Backward incompatibility**: the ``dumps()`` function and the ``Encoder()``\n constructor used to accept a ``max_recursion_depth`` argument, to control\n the maximum allowed nesting of Python structures; since the underlying\n function is now effectively recursive, it has been replaced by the generic\n `sys.setrecursionlimit()`__ mechanism\n\n __ https://docs.python.org/3.6/library/sys.html#sys.setrecursionlimit\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",
"bugtrack_url": null,
"license": "MIT License",
"summary": "Python wrapper around rapidjson",
"version": "1.19",
"project_urls": {
"Homepage": "https://github.com/python-rapidjson/python-rapidjson"
},
"split_keywords": [
"json",
"rapidjson"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5d288b707465257289a237754dc5dde6b176137043b3221d90f45fd9c76dab68",
"md5": "2f11b74acbf2ac48dc377157d05a2107",
"sha256": "81e7260f6297cad564389b700783c0a33de71310b9eb01fd013faec5e7ed4eff"
},
"downloads": -1,
"filename": "python-rapidjson-1.19.tar.gz",
"has_sig": false,
"md5_digest": "2f11b74acbf2ac48dc377157d05a2107",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 237550,
"upload_time": "2024-07-28T07:08:13",
"upload_time_iso_8601": "2024-07-28T07:08:13.217226Z",
"url": "https://files.pythonhosted.org/packages/5d/28/8b707465257289a237754dc5dde6b176137043b3221d90f45fd9c76dab68/python-rapidjson-1.19.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-28 07:08:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "python-rapidjson",
"github_project": "python-rapidjson",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "python-rapidjson"
}