Metadata-Version: 2.1
Name: yyjson
Version: 1.0.1
Summary: yyjson bindings for python
Home-page: http://github.com/TkTech/py_yyjson
Author: Tyler Kennedy
Author-email: tk@tkte.ch
Keywords: json,yyjson
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Requires-Python: >3.4
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: release
Requires-Dist: sphinx ; extra == 'release'
Requires-Dist: ghp-import ; extra == 'release'
Requires-Dist: bumpversion ; extra == 'release'
Provides-Extra: test
Requires-Dist: pytest ; extra == 'test'

![PyPI - License](https://img.shields.io/pypi/l/yyjson.svg?style=flat-square)
![Tests](https://github.com/TkTech/py_yyjson/workflows/Run%20tests/badge.svg)

# py_yyjson

Python bindings for the excellent [yyjson][] project.

## Documentation

Find the latest documentation at https://py_yyjson.tkte.ch.

[yyjson]: https://github.com/ibireme/yyjson

## 💡 Why should I use this?

Like everything, it has pros and cons versus other Python JSON parsers. Some of
the pros:

- Good configurable support for **non-standard JSON**, such as comments, NaN,
  Infinity, and numbers of any size.
- **Fast**. yyjson has excellent performance, especially compared to Python's
  built-in JSON library.
- Support for JSON Merge-Patch.
 
For more technical users, some additional pros:

- Building from source is architecture independent (ex, no dependency on SIMD 
  instructions) and requires just a C89 compiler.
- Uses the Python memory allocator, so Python memory profiling tool will work
  as expected.

## 🎉 Installation

If binary wheels are available for your platform, you can install from pip
with no further requirements:

    pip install yyjson

Pre-built binary wheels are available for:

|                  | py3.6 | py3.7 | py3.8 | py3.9 | py3.10 | pypy3 |
|------------------| ---- | ----- | ----- | ----- |--------| ----- |
| OS X (x86_64)    | ✅    | ✅     | ✅     | ✅     | ✅      | ✅     |
| OS X (ARM)       | ❌    | ❌     | ✅     | ✅     | ✅      | ❌     |
| Windows (x86_64) | ✅    | ✅     | ✅     | ✅     | ✅      | ✅     |
| Linux (x86_64)   | ✅    | ✅     | ✅     | ✅     | ✅      | ✅     |
| Linux (aarch64)  | ✅    | ✅     | ✅     | ✅     | ✅      | ✅     |
| Linux (ppc64le)  | ✅    | ✅     | ✅     | ✅     | ✅      | ✅     |
| Linux (S390x)    | ✅    | ✅     | ✅     | ✅     | ✅      | ❌     |

If binary wheels are not available for your platform, you'll need any
C89-compatible compiler.

    pip install 'yyjson' --no-binary :all:

## ⚗ Development and Testing

To install test requirements, use:

    pip install -e ".[test]"

To run the tests, just type `pytest`. To prepare for a release or to rebuild
documentation, you need a few extra dependencies:

    pip install -e ".[release]"

You can then rebuild the documentation by running `make html` within the
`docs/` directory.

## 📈 Benchmarks

py_yyjson compares well against most libraries. The full benchmarks can be
found in its sister project [json_benchmark][].


[pysimdjson]: https://github.com/TkTech/pysimdjson
[json_benchmark]: https://github.com/tktech/json_benchmark
