This is the bindings library used to call the anonymous credentials library from Python land
We use this in our backend implement the anonymous credentials protocol in our API
You can install this library by running:
pip install ooniauth-pyThese tools are required to contribute to this library
- maturin: Is used to build the library itself, it's heavily used to develop this library
In order to use maturin, you need a virtual environment to manage the resulting Python package during development, see more details here
If you try to run the tests as you usually would with cargo test, you will get linking errors. This
happens because Maturin provides a build configuration with all the linking flags required to build
the library. However, it does not provide a maturing test command that could help you with this.
A possible solution is to manually specify the linking flags to the compiler, but in order to do this you will probably need to download the specific Python version (3.10). A good way to do this is using Pyenv:
- Install Pyenv
- Install Python 3.10.0 with pyenv:
pyenv install 3.10.0
With the Python version installed, you can create a .cargo/config.toml
with the linking flags. Create the file in userauth/.cargo/config.toml
and fill the following template:
[target.'cfg(all())']
rustflags = [
"-C", "link-arg=-Wl,-rpath,<YOUR PYENV PATH HERE>/.pyenv/versions/3.10.0/lib",
"-C", "link-arg=-L<YOUR PYENV PATH HERE>/.pyenv/versions/3.10.0/lib",
"-C", "link-arg=-lpython3.10",
]Example result:
[target.'cfg(all())']
rustflags = [
"-C", "link-arg=-Wl,-rpath,/home/ooni/.pyenv/versions/3.10.0/lib",
"-C", "link-arg=-L/home/ooni/.pyenv/versions/3.10.0/lib",
"-C", "link-arg=-lpython3.10",
]Note: Make sure to create this file in userauth/.cargo/config.toml and not in userauth/ooniauth-py/.cargo.toml
- Create a ready-to-use
.whlto import in python:make wheels
- Note: You will find the wheels file in:
/userauth/ooniauth-py/wheels
- Build the library and install it in a virtualenv for trying it in Python:
make dev
- Note: Requires an active virtual environment to install the library
- Run tests:
make test