Skip to content
Snippets Groups Projects
Select Git revision
  • 60da2608ffae5877390c74a514299c9697790a66
  • dev default protected
  • release/1.9.1 protected
  • pini-1.8-docker
  • pini-sync-onlypeers
  • duniter-v2s-issue-123-industrialize-releases
  • feature/build-aarch64-nodejs16
  • release/1.8 protected
  • pini-docker
  • ci_tags
  • fix/1448/1.8/txs_not_stored
  • feature/node-20
  • fix/1441/node_summary_with_storage
  • fix/1442/improve_bma_tx_history
  • feature/wotwizard-1.8
  • release/1.9 protected
  • 1.7 protected
  • feature/docker-set-latest protected
  • feature/fast-docker-build-1.8.4
  • fast-docker-build protected
  • feature/dump-distance
  • v1.8.7 protected
  • v1.8.7-rc4 protected
  • v1.8.7-rc3 protected
  • v1.8.7-rc2 protected
  • v1.8.7-rc1 protected
  • v1.8.6 protected
  • v1.7.23 protected
  • v1.8.5 protected
  • v1.8.4 protected
  • v1.8.3 protected
  • v1.8.2 protected
  • v1.8.1 protected
  • v1.8.0 protected
  • v1.8.0-rc1 protected
  • v1.8.0-beta5 protected
  • v1.8.0-beta4 protected
  • v1.8.0-beta3 protected
  • v1.8.0-beta2 protected
  • v1.8.0-beta protected
  • v1.7.21 protected
41 results

duniter

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

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

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

Packaging status