Development#
This project comes with a full test suite. To install development and testing dependencies, use:
pip install -e ".[test]"
To run the tests, just type pytest
. To also run some slow integration
tests, use pytest --runslow
.
To properly test builds on Windows, you need both a recent version of Visual Studio as well as VS2015, patch 3. Older versions of CPython required portable C/C++ extensions to be built with the same version of VS as the interpreter. Use the Developer Command Prompt to easily switch between versions.
Cythonize#
pysimdjson is written using Cython. However, by default setup.py
will
use the already-generated csimdjson.cpp
instead of regenerating it. This
is to avoid making Cython an install-time requirement.
To force the usage of Cython, use BUILD_WITH_CYTHON
:
BUILD_WITH_CYTHON=1 python setup.py develop
This will cause Cython to regenerate the csimdjson.cpp
from the
csimdjson.pyx
and csimdjson.pxd
files.
To build pysimdjson with support for linetracing and coverage, use BUILD_FOR_DEBUG
:
BUILD_WITH_CYTHON=1 BUILD_FOR_DEBUG=1 python setup.py develop
pysimdjson will also reuse the generated .so file if you build it more than
once, so to force Cython to rebuild it, use FORCE_REBUILD
:
BUILD_WITH_CYTHON=1 FORCE_REBUILD=1 python setup.py develop
Benchmarks#
The benchmarks that used to exist in this project have been moved into a sister project, json_benchmark. This project contains a number of benchmarks for various JSON libraries, including pysimdjson. It also tests for correctness, so it can be used to verify that simdjson is working correctly.