Duniter Python API
Python implementation for Duniter BMA API
This is the most complete Python library to communicate with Duniter nodes endpoints.
This library is used by two clients:
Features
- Support Duniter's Basic Merkle API and protocol
- Asynchronous/synchronous without threads
- Support HTTP, HTTPS and Web Socket transport for the BMA API
- Support Elasticsearch Duniter4j API
- Duniter signing key
- Sign/verify and encrypt/decrypt messages with the Duniter credentials
Requirements
- Python >= 3.5.3
- aiohttp >= 3.6.1
- pylibscrypt
- libnacl
- base58
- attr
Installation
You can install DuniterPy and its dependencies with the following command:
pip3 install duniterpy --user
Documentation
Online official automaticaly generated documentation: https://clients.duniter.io/python/duniterpy/index.html
The examples folder contains scripts to help you!
Please take a look at the document HTTP API to learn more about the BMA API.
How to generate and read locally the autodoc:
- Install Sphinx
pip install -r requirements_dev.txt
- Generate documentation
make docs
- The HTML documentation is generated in
docs/_build/html
folder.
Development
- When writing docstrings, use the reStructuredText format recommended by https://www.python.org/dev/peps/pep-0287/#docstring-significant-features
- Use make commands to check the code and the format it correct.
The development tools require Python 3.6.x or higher.
- Create a python virtual environment with pyenv
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
- Install dependencies
pip install -r requirements.txt
- Have a look at the examples folder
- Run examples from parent folder
PYTHONPATH=`pwd` python examples/request_data.py
-
Before submiting a merge requests, please check the static typing and tests.
-
Install dev dependencies
pip install -r requirements_dev.txt
- Check static typing with mypy
make check
- Run all unit tests (builtin
unittest
module) with:
make tests
- Run only some unit tests by passing a special ENV variable:
make tests TESTS_FILTER=tests.documents.test_block.TestBlock.test_fromraw
Packaging and deploy
PyPi
In the development pyenv environment, install the tools to build and deploy
pip install --upgrade -r requirements_deploy.txt
Change and commit and tag the new version number (semantic version number)
./release.sh 0.42.3
Build the PyPi package in the dist
folder
make build
Deploy the package to PyPi test repository (prefix the command with a space in order for the shell not to save in its history system the command containing the password)
[SPACE]make deploy_test PYPI_TEST_LOGIN=xxxx PYPI_TEST_PASSWORD=xxxx
Install the package from PyPi test repository
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.python.org/simple/ duniterpy
Deploy the package on the PyPi repository (prefix the command with a space in order for the shell not to save in its history system the command containing the password)
[SPACE]make deploy PYPI_LOGIN=xxxx PYPI_PASSWORD=xxxx