Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • network/gdev-800 protected
  • cgeek/issue-297-cpu
  • gdev-800-tests
  • update-docker-compose-rpc-squid-names
  • fix-252
  • 1000i100-test
  • hugo/tmp-0.9.1
  • network/gdev-803 protected
  • hugo/endpoint-gossip
  • network/gdev-802 protected
  • hugo/distance-precompute
  • network/gdev-900 protected
  • tuxmain/anonymous-tx
  • debug/podman
  • hugo/195-doc
  • hugo/195-graphql-schema
  • hugo-tmp-dockerfile-cache
  • release/client-800.2 protected
  • release/runtime-800 protected
  • gdev-900-0.10.1 protected
  • gdev-900-0.10.0 protected
  • gdev-900-0.9.2 protected
  • gdev-800-0.8.0 protected
  • gdev-900-0.9.1 protected
  • gdev-900-0.9.0 protected
  • gdev-803 protected
  • gdev-802 protected
  • runtime-801 protected
  • gdev-800 protected
  • runtime-800-bis protected
  • runtime-800 protected
  • runtime-800-backup protected
  • runtime-701 protected
  • runtime-700 protected
  • runtime-600 protected
  • runtime-500 protected
  • v0.4.1 protected
  • runtime-401 protected
  • v0.4.0 protected
40 results

primitives

  • Clone with SSH
  • Clone with HTTPS
  • 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