Skip to content
Snippets Groups Projects

Improve Readme, config

Merged Moul requested to merge readme_config into dev
1 file
+ 34
29
Compare changes
  • Side-by-side
  • Inline
  • 1451b257
    [doc] Improve README: · 1451b257
    Moul authored
    - Improve description
    - Update chapter about clients using it
    - PyPI
+ 34
29
# Duniter Python API
# DuniterPy
 
Most complete client oriented Python library for [Duniter](https://git.duniter.org/nodes/typescript/duniter)/Ğ1 ecosystem.
Python implementation for [Duniter](https://git.duniter.org/nodes/typescript/duniter) BMA API
This library was originally developed for [Sakia](http://sakia-wallet.org/) desktop client which is now discontinued.
It is currently used by following programs:
This is the most complete Python library to communicate with Duniter nodes endpoints.
- [Tikka](https://git.duniter.org/clients/python), the desktop client (Work In Progress, not yet available).
- [Silkaj](https://silkaj.duniter.org/), command line client.
This library is used by two clients:
- [Jaklis](https://git.p2p.legal/axiom-team/jaklis), command line client.
- [Sakia](http://sakia-wallet.org/), the rich client to manage your Duniter's wallets.
- [Ğ1Dons](https://git.duniter.org/matograine/g1pourboire), tools.
- [Silkaj](https://silkaj.duniter.org/), the command line client.
## Features
## Features
- Support Duniter's [Basic Merkle API](https://git.duniter.org/nodes/typescript/duniter/blob/master/doc/HTTP_API.md) and [protocol](https://git.duniter.org/nodes/common/doc/blob/master/rfc/0009_Duniter_Blockchain_Protocol_V11.md)
### Network
- Asynchronous/synchronous without threads
- APIs support: BMA, GVA, WS2P, and CS+:
- Support HTTP, HTTPS and Web Socket transport for the BMA API
- [Basic Merkle API](https://git.duniter.org/nodes/typescript/duniter/-/blob/dev/doc/HTTP_API.md), first Duniter API to be deprecated
- Support [Elasticsearch Duniter4j](https://git.duniter.org/clients/java/duniter4j/blob/master/src/site/markdown/ES.md#request-the-es-node>) API
- 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](https://git.duniter.org/documents/rfcs#duniter-blockchain-protocol-dubp)
 
- Duniter documents management: transaction, block and WoT documents
 
- Multiple authentication methods
- Duniter signing key
- Duniter signing key
- Sign/verify and encrypt/decrypt messages with the Duniter credentials
- Sign/verify and encrypt/decrypt messages with Duniter credentials
## Requirements
## Requirements
- Python >= 3.6.8
- Python >= 3.6.8
@@ -33,23 +43,18 @@ pip3 install duniterpy --user
@@ -33,23 +43,18 @@ pip3 install duniterpy --user
```
```
## Install the development environment
## Install the development environment
- Install [Poetry](https://poetry.eustace.io):
- [Install Poetry](https://python-poetry.org/docs/#installation)
```bash
curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python - --preview
```
## Documentation
## Documentation
Online official automaticaly generated documentation: https://clients.duniter.io/python/duniterpy/index.html
[Online official automaticaly generated documentation](https://clients.duniter.io/python/duniterpy/index.html)
The [examples folder](https://git.duniter.org/clients/python/duniterpy/tree/master/examples) contains scripts to help you!
The [examples folder](https://git.duniter.org/clients/python/duniterpy/tree/master/examples) contains scripts to help you!
Please take a look at the document [HTTP API](https://git.duniter.org/nodes/typescript/duniter/blob/master/doc/HTTP_API.md) to learn more about the BMA API.
### How to generate and read locally the autodoc
How to generate and read locally the autodoc:
- Install Sphinx
- Install Sphinx, included into the development dependencies:
```bash
```bash
poetry install -E sphinx
poetry install
```
```
- Generate documentation
- Generate documentation
@@ -61,7 +66,7 @@ poetry run make docs
@@ -61,7 +66,7 @@ poetry run make docs
## Development
## Development
* When writing docstrings, use the reStructuredText format recommended by https://www.python.org/dev/peps/pep-0287/#docstring-significant-features
* 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.
* Use `make` commands to check the code and the format.
Black, the formatting tool, requires Python 3.6 or higher.
Black, the formatting tool, requires Python 3.6 or higher.
@@ -99,28 +104,28 @@ make tests TESTS_FILTER=tests.documents.test_block.TestBlock.test_fromraw
@@ -99,28 +104,28 @@ make tests TESTS_FILTER=tests.documents.test_block.TestBlock.test_fromraw
```
```
## Packaging and deploy
## Packaging and deploy
### PyPi
### PyPI
Change and commit and tag the new version number (semantic version number)
Change and commit and tag the new version number (semantic version number)
```bash
```bash
./release.sh 0.42.3
./release.sh 0.42.3
```
```
Build the PyPi package in the `dist` folder
Build the PyPI package in the `dist` folder
```bash
```bash
make build
make build
```
```
Deploy the package to PyPi test repository (prefix the command with a space in order for the shell not to save in its history system the command containing the password)
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 containing credentials)
```bash
```bash
[SPACE]make deploy_test PYPI_TEST_LOGIN=xxxx PYPI_TEST_PASSWORD=xxxx
[SPACE]make deploy_test PYPI_TEST_LOGIN=xxxx PYPI_TEST_PASSWORD=xxxx
```
```
Install the package from PyPi test repository
Install the package from PyPI test repository
```bash
```bash
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.python.org/simple/ duniterpy
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 in order for the shell not to save in its history system the command containing the password)
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 containing credentials)
```bash
```bash
[SPACE]make deploy PYPI_LOGIN=xxxx PYPI_PASSWORD=xxxx
[SPACE]make deploy PYPI_LOGIN=xxxx PYPI_PASSWORD=xxxx
```
```
Loading