Skip to content
Snippets Groups Projects
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