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.6.8
- aiohttp >= 3.6.3
- jsonschema
- pyPEG2
- attrs
- base58
- libnacl
- pyaes
Installation
You can install DuniterPy and its dependencies with the following command:
pip3 install duniterpy --user
Install the development environment
- Install Poetry:
curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python - --preview
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
poetry install -E sphinx
- Generate documentation
poetry run 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.
Black, the formatting tool, requires Python 3.6 or higher.
- Install runtime dependencies
poetry install --no-dev
- Have a look at the examples folder
- Run examples from parent folder
poetry run python examples/request_data.py
-
Before submitting a merge requests, please check the static typing and tests.
-
Install dev dependencies
poetry install
- 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
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