# DuniterPy, évolution de la bibliothèque Python

**URL:** https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127
**Category:** DuniterPy
**Tags:** python, sakia, duniterpy, silkaj
**Created:** [17 September 2018 18:32 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127 "2018-09-17T18:32:13Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [17 September 2018 18:32 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/1 "2018-09-17T18:32:13Z")

</div>

La version 0.50.0 est en phase de finalisation.

Elle brise la compatibilité avec les versions précédentes, mais pour le meilleur (simplicité des requêtes).

Je voulais juste signaler la dernière fonctionnalité ajoutée :

- Signer un message avec ses identifiants Duniter.
- Vérifier la signature d’un message avec une clef publique Duniter.
- Chiffrer un message avec une clef publique Duniter.
- Déchiffrer un message avec ses identifiants Duniter.

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [17 September 2018 19:11 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/2 "2018-09-17T19:11:38Z")

</div>

Cool, c’est de belles avancées 😊

Ça me fait penser que lorsque j’aurais fini WS2Pv2 je pourrais, si vous le souhaitez, faire une librairie dynamique importable dans python pour permettre de vérifier la signature des fiches de peer et head de WS2Pv2, Sakia en aura besoin.  
Vous pouvez aussi décider de le refaire a la main en Python mais ça demande de manipuler du binaire et le code qui manipule les formats est déjà écrit en Rust donc ça représente peu de travail de l’enrober dans une librairie importable dans python, j’ai déjà un peu lu ici comment procéder :

> **[GitHub - rochacbruno/rust-python-example: Example of using Rust to Extend Python](https://github.com/rochacbruno/rust-python-example)**
>
> Example of using Rust to Extend Python. Contribute to rochacbruno/rust-python-example development by creating an account on GitHub.

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [10 November 2018 11:39 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/3 "2018-11-10T11:39:36Z")

</div>

## Breaking News!

La refonte de l’api Python **[DuniterPy en version 0.50.0](https://git.duniter.org/clients/python/duniterpy/tree/dev_0.50)** est terminée :

- **Tout le code** a été reformaté (indentation, respect du code style de Python PEP8, etc)
- **Tout le code** (sauf les tests qui n’en avaient pas vraiment besoin) est typé et vérifié avec l’utilitaire [mypy](http://www.mypy-lang.org/)
- **Tout le code** est documenté dans les “docstrings” (que fait la fonction, à quoi correspondent les arguments).

**Attention : la compatibilité avec les versions précédentes 0.40+ est brisée.** Parfois volontairement pour un code plus simple à utiliser, parfois à cause du typage qui dévoilait des redondances ou des approximations.

Il reste une seule chose à faire, tester les exemples présents dans le dossier `examples`.

Je le ferai tranquillement dans les jours qui viennent, mais les [Pythonitas](https://en.wiktionary.org/wiki/Pythonista) (geeks Pythonistes) qui veulent tester la bête peuvent le faire aussi (sur Ğ1-test uniquement svp !) et me faire des retours.

## Intégration dans Sakia

Un chantier assez important se profile pour mettre à jour **[Sakia](https://git.duniter.org/clients/python/sakia)** avec **DuniterPy 0.50.0**.  
Je suis pour l’instant la personne la plus à même de le faire, ayant été le géniteur de la nouvelle mouture de DuniterPy. Mais j’aimerais beaucoup que d’autres développeurs s’en occupent (en plus de moi, ou à ma place) à cause du travail nécessaire pour la version 0.60.0 de DuniterPy.

## Vers la version 0.60.0 et au-délà !

La suite logique pour que DuniterPy continue à vivre et à rendre les services que l’on en attend est de préparer la version 0.60.0.

- Ajout d’un client GVA (GraphQL Verification API). J’ai déjà fait une POC fonctionnelle et un embryon de `schema.graphql`.
- Optionnel : ajout d’un client WS2Pv1 et/ou v2.

_Merci à @moul pour la relecture de ce post, et à @canercandan et @inso pour leur travail énorme sur cette bibliothèque !_

---

<div class="post-metadata">

### Author: ![kimamila](https://forum.duniter.org/user_avatar/forum.duniter.org/kimamila/32/185_2.png) [@kimamila](https://forum.duniter.org/u/kimamila)
#### Post date: [10 November 2018 11:56 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/4 "2018-11-10T11:56:20Z")

</div>

Super vit ! Seras tu au RML12 ? (Je dis cela, mais je pourrais aussi vérifier sur le site…)

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [10 November 2018 12:02 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/5 "2018-11-10T12:02:57Z")

</div>

Je ne sais vraiment pas. Je réfléchis à venir le 24 parce que tous les développeurs seront là et j’aimerais bien discuter avec vous IRL des grands axes de développement. Je vous tiens au courant… 😉

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [10 November 2018 16:24 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/6 "2018-11-10T16:24:08Z")

</div>

> [@vit](#):
>
> Optionnel : ajout d’un client WS2Pv1 et/ou v2.

Pas besoin d’un client WS2Pv2, mais en revanche il faudra que les Clients soit en mesure de gérer les nouveaux formats de fiche de peer et head qui arriveront avec WS2Pv2, c’est tout le sens de mon intervention des rml12 que de donner aux développeurs des clients tous les outils pour s’adapter en amont 🙂

Je pense donc que DuniterPy 0.60.0 devra inclure cela, je suis évidemment prêt à aider si c’est nécessaire, mais tu te rendras compte avec mon intervention que c’est un ajout assez simple 🙂

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [1 December 2018 10:00 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/7 "2018-12-01T10:00:48Z")

</div>

La **bibliothèque python officielle pour Duniter** est enfin sortie dans une version 0.50.0 **complètement révisée** et bien plus **simple d’emploi**!

Vous pouvez l’installer facilement avec pip :

`pip3 install duniterpy`

Si une version antérieure est installée :

`pip3 install --upgrade duniterpy`

Voir la page officielle sur le site PyPI :

> **[duniterpy](https://pypi.org/project/duniterpy/)**
>
> Python library for developers of Duniter clients

**Avertissement :** _cette version est incompatible avec Sakia 0.33.x. Vérifiez bien que vous ne mettez pas à jour une ancienne version utilisée par votre installation de Sakia._

---

<div class="post-metadata">

### Author: ![kimamila](https://forum.duniter.org/user_avatar/forum.duniter.org/kimamila/32/185_2.png) [@kimamila](https://forum.duniter.org/u/kimamila)
#### Post date: [3 December 2018 11:06 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/8 "2018-12-03T11:06:42Z")

</div>

beau travail @vit ! Ca motive les RML, hein !? 🙂

Je m’interroge sur ca :

> Support [Elasticsearch Duniter4j](https://git.duniter.org/clients/java/duniter4j/blob/master/src/site/markdown/ES.md#request-the-es-node) API

Tu l’utilise les noeuds Cesium+ pour quoi ? (simple curiosité)

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [3 December 2018 18:27 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/9 "2018-12-03T18:27:14Z")

</div>

Mon but est de piloter en Python les API Duniter dédiées aux clients.  
J’ai juste testé le fait que c’était possible et mis un exemple. Je n’avais pas d’idée d’utilisation en tête, peut-être que j’en aurai quand je me re-pencherai sur Sakia…

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [16 December 2018 16:59 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/10 "2018-12-16T16:59:05Z")

</div>

Merci à @moul pour ses contributions sur Duniterpy.

J’ai découvert qu’il manquait d’autres commandes de l’api BMA. Je les ajoute cette semaine et ferai une release 0.51.0.

---

<div class="post-metadata">

### Author: ![Moul](https://forum.duniter.org/user_avatar/forum.duniter.org/moul/32/9145_2.png) [@Moul](https://forum.duniter.org/u/Moul)
#### Post date: [16 December 2018 17:28 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/11 "2018-12-16T17:28:31Z")

</div>

Silkajement parlant, il me manque :

```python
"tx/history/" + pubkey + "/pending"

```

---

<div class="post-metadata">

### Author: ![Frederic\_Renault](https://forum.duniter.org/user_avatar/forum.duniter.org/frederic_renault/32/3778_2.png) [@Frederic\_Renault](https://forum.duniter.org/u/Frederic_Renault)
#### Post date: [17 December 2018 18:46 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/12 "2018-12-17T18:46:25Z")

</div>

> [@vit](#):
>
> `pip3 install duniterpy`

whereis duniterpy  
duniterpy:

Comme @Moul Je suis preneur des “pending” 😉  
Et de  
Support [Elasticsearch Duniter4j](https://git.duniter.org/clients/java/duniter4j/blob/master/src/site/markdown/ES.md#request-the-es-node) API

Je veux bien aider sur la doc d’utilisation. Je suis novice…

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [17 December 2018 18:57 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/13 "2018-12-17T18:57:07Z")

</div>

Il y a des exemples dans le dossier “examples” du dépôt de Duniterpy.  
Mais Duniterpy est une bibliothèque python destinée à des développeurs python.

Je ne compte pas faire une documentation autre que celle générée automatiquement.

Mais tu peux faire un blog sur tes avancées avec la bibliothèque…

@moul ne connaissait pas python, et il s’est jeté à l’eau avec succès ! Allez, un petit effort ! 😉

---

<div class="post-metadata">

### Author: ![Inso](https://forum.duniter.org/user_avatar/forum.duniter.org/inso/32/1229_2.png) [@Inso](https://forum.duniter.org/u/Inso)
#### Post date: [18 December 2018 09:00 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/14 "2018-12-18T09:00:23Z")

</div>

> [@vit](#):
>
> @moul ne connaissait pas python, et il s’est jeté à l’eau avec succès ! Allez, un petit effort ! 😉

C’est vraiment le langage le plus simple python, on apprend même aux enfants a coder avec maintenant 😉

---

<div class="post-metadata">

### Author: ![tuxmain](https://forum.duniter.org/user_avatar/forum.duniter.org/tuxmain/32/6423_2.png) [@tuxmain](https://forum.duniter.org/u/tuxmain)
#### Post date: [18 December 2018 14:31 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/15 "2018-12-18T14:31:20Z")

</div>

Oui c’est facile à apprendre mais on remarque que les personnes ayant appris le Python en premier ont plus de mal à changer de langage ensuite et comprennent moins les machines que ceux qui ont commencé par des langages comme le C/C++.  
Si on veut apprendre aux enfants l’algorithmique, ça semble très bien, mais pour apprendre à programmer j’ai l’impression que c’est un mauvais choix.

---

<div class="post-metadata">

### Author: ![Inso](https://forum.duniter.org/user_avatar/forum.duniter.org/inso/32/1229_2.png) [@Inso](https://forum.duniter.org/u/Inso)
#### Post date: [18 December 2018 14:42 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/16 "2018-12-18T14:42:41Z")

</div>

Certes, mais ceux qui ont commencé par du C/C++ mettent beaucoup plus de temps à apprendre les bons patterns de développement. Le spectre d’apprentissage est tellement large qu’il faut coder pendant des années en C/C++ avant de considérer être un “bon développeur” (on peut même ne jamais le devenir). Avec des langages comme python, on apprend plus vite, puisque le langage est structuré pour utiliser ces patterns de développement.

Bon de toute façon ya d’autres endroits pour débattre de la qualité des langages, on va éviter de partir en hors-sujet svp.

---

<div class="post-metadata">

### Author: ![Frederic\_Renault](https://forum.duniter.org/user_avatar/forum.duniter.org/frederic_renault/32/3778_2.png) [@Frederic\_Renault](https://forum.duniter.org/u/Frederic_Renault)
#### Post date: [19 December 2018 11:10 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/17 "2018-12-19T11:10:03Z")

</div>

Après un `pip3 install duniterpy`  
Je ne sais pas où est installé le logiciel? Pas dans mon PATH en tout cas,  
Quelqu’un pourrait me dire où il se place?

merci

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [19 December 2018 12:23 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/18 "2018-12-19T12:23:27Z")

</div>

Ce n’est pas un logiciel, c’est une bibliothèque. Il n’y a aucune commande qui apparaîtra dans ton PATH, c’est normal.

C’est comme quand ton linux installe la glibc. Ne cherche pas la commande glibc dans ton PATH, elle n’existe pas. Par contre des logiciels vont se servir de la glibc comme bibliothèque en important des fonctions.

En python, après l’installation d’un package, tu peux importer le package ou des modules, pour utiliser des fonctions dans ton programme python :

1. S’assurer d’avoir python 3.5.2 minimum (voir le README).

2. Installer le package : `pip3 install duniterpy`

3. Tester la présence du package :

```python
    import duniterpy
    dir(duniterpy)

```

Exemple :

```python
    $ python
    Python 3.5.4 (default, Dec 13 2017, 11:30:56) 
    [GCC 4.8.4] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import duniterpy
    >>> dir(duniterpy)
    [' __author__', ' __builtins__', ' __cached__', ' __doc__', ' __file__', ' __loader__', ' __name__', ' __nonsense__', ' __package__', ' __path__', ' __spec__', ' __version__', 'api', 'constants', 'documents', 'grammars', 'helpers', 'key']
    >>> 

```

1. Sortir de la console python (ctrl-D).
2. Développer son logiciel avec l’import de ce qui est nécessaire depuis le package `duniterpy`.

NB: je vais m’assurer que la documentation auto-générée est lisible pour la prochaine release 0.51.0.

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [19 December 2018 18:08 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/19 "2018-12-19T18:08:30Z")

</div>

## Nouvelle version de Duniterpy 0.51.0

> **[Client Challenge](https://pypi.org/project/duniterpy/0.51.0/)**

## Changelog

- Add blockchain/difficulties schema and method (merci @moul !)

- Add blockchain/with/revoked and blockchain/branches in bma api

- Add node/sandboxes in bma api

- Add tx/history/[pubkey]/pending in bma api (trop tard @moul 😉)

- Add wot/identity\_of in bma api

- Use sphinx\_rtd\_theme for a better html documentation

Documentation html temporairement sur mon site :

> **[duniterpy.api.bma.tx. - duniterpy.api.bma package — duniterpy 0.53.0...](http://vit.free.fr/duniterpy/duniterpy.api.bma.html#duniterpy.api.bma.tx.pending)**
>
> GET the block numbers containing actives

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [22 December 2018 10:52 UTC](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127/20 "2018-12-22T10:52:22Z")

</div>

Un message a été déplacé vers un nouveau sujet : [Système d’impression de billets développé avec Duniterpy](https://forum.duniter.org/t/systeme-dimpression-de-billets-developpe-avec-duniterpy/5506)

[Next page](https://forum.duniter.org/t/duniterpy-evolution-de-la-bibliotheque-python/5127.md?page=2)
