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.