Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • release/1.1
  • encrypt_comments
  • mnemonic_dewif
  • authors_rules
  • 0.14
  • rtd
  • 1.2.1 protected
  • 1.2.0 protected
  • 1.1.1 protected
  • 1.1.0 protected
  • 1.0.0 protected
  • 1.0.0rc1 protected
  • 1.0.0rc0 protected
  • 1.0.0-rc protected
  • 0.62.0 protected
  • 0.61.0 protected
  • 0.60.1 protected
  • 0.58.1 protected
  • 0.60.0 protected
  • 0.58.0 protected
  • 0.57.0 protected
  • 0.56.0 protected
  • 0.55.1 protected
  • 0.55.0 protected
  • 0.54.3 protected
  • 0.54.2 protected
27 results

duniterpy

  • Clone with SSH
  • Clone with HTTPS
  • Moul's avatar
    Moul authored
    Since Python 3.13, the IOBase finalizer now logs
    any errors raised by the close() method
    https://docs.python.org/3/whatsnew/3.13.html#io
    
    According to
    https://docs.python.org/3.13/library/io.html#io.IOBase.close
    if the file (descriptor) is accessed after being close,
    `ValueError` is raised.
    
    The `fd` is copied with `copy.copy()`.
    Both gets automatically closed once the function ends,
    the second can’t close a second time the same fd,
    that’s why we get this error.
    
    Not sure if there is a use case with the fd copy
    Fix: remove fd copy
    8d7c2d60
    History

    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.
    • 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:

    pip install --user duniterpy

    Once you want to add DuniterPy to your Python project, you can add it as a dependency to your Python development environment: pyproject.toml, requirements.txt, setup.py. We recommend Poetry usage.

    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
    python examples/request_data.py

    Or from Python interpreter:

    python
    >>> import examples
    # To list available examples
    >>> help(examples)
    # Run example
    >>> 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())

    Contributing

    Packaging status

    Packaging status