Python library for developers of Duniter clients
Project description
DuniterPy
Most complete client oriented Python library for Duniter/Ğ1 ecosystem.
This library was originally developed for Sakia desktop client which is now discontinued. It is currently used by following programs:
- Tikka, the desktop client (Work In Progress, not yet available).
- Silkaj, command line client.
- Jaklis, command line client for Cs+/Gchange pods.
- Ğ1Dons, Ğ1Dons, paper-wallet generator aimed at giving tips in Ğ1.
Features
Network
- APIs support: BMA, GVA, WS2P, and CS+:
- Basic Merkle API, first Duniter API to be deprecated
- GraphQL Verification API, Duniter API in developement meant to replace BMA. Based on GraphQL.
- Websocket to Peer, Duniter inter-nodes (servers) API
- Cesium+, non-Duniter API, used to store profile data related to the blockchain as well as ads for Cesium and Ğchange.
- Non-threaded asynchronous/synchronous connections
- Support HTTP, HTTPS, and WebSocket transport for the APIs
- Endpoints management
Blockchain
- Support Duniter blockchain protocol
- Duniter documents management: transaction, block and WoT documents
- Multiple authentication methods
- Duniter signing key
- Sign/verify and encrypt/decrypt messages with Duniter credentials
Requirements
- Python >= 3.6.8
- websocket-client
- jsonschema
- pyPEG2
- attrs
- base58
- libnacl
- pyaes
Installation
You will require following dependencies:
sudo apt install python3-pip python3-dev python3-wheel libsodium23
You can install DuniterPy and its dependencies with following command:
pip3 install duniterpy --user
Install the development environment
Documentation
Online official automaticaly generated documentation
Examples
The examples folder contains scripts to help you!
- Have a look at the
examples
folder - Run examples from parent folder directly
poetry run python examples/request_data.py
Or from Python interpreter:
poetry run python
>>> import examples
>>> help(examples)
>>> examples.create_public_key()
request_data_async
example requires to be run with asyncio
:
>>> import examples, asyncio
>>> asyncio.get_event_loop().run_until_complete(examples.request_data_async())
How to generate and read locally the autodoc
- Install Sphinx, included into the development dependencies:
poetry install
- 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. -
Install runtime dependencies
poetry install --no-dev
-
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 for the shell to not save it in its history system, since the command contains credentials)
[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 for the shell to not save it in its history system, since the command contains credentials)
[SPACE]make deploy PYPI_LOGIN=xxxx PYPI_PASSWORD=xxxx
Packaging status
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for duniterpy-1.0.0rc1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 539f9a92d6098b222ddeb5fb6889ac0d1cf0c401dc8c86a8878a656fcb02b873 |
|
MD5 | fcd57bbf9e008ac97c4fc63796b2f1f5 |
|
BLAKE2b-256 | 4bdc2af571abc062fc6832fdaa9aacd94440a90ecb0744d856cd2d5616d89ee3 |