DuniterPy, évolution de la bibliothèque python

silkaj
duniterpy
python
sakia

#1

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.

#2

Cool, c’est de belles avancées :blush:

Ç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 :


#3

Breaking News!

La refonte de l’api Python DuniterPy en version 0.50.0 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
  • 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 (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 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 !


#4

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


#5

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… :wink:


#6

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 :slight_smile:

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 :slight_smile:


#7

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 :

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.


#8

beau travail @vtexier ! Ca motive les RML, hein !? :slight_smile:

Je m’interroge sur ca :

Support Elasticsearch Duniter4j API

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


#9

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…


#10

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.


#11

Silkajement, il me manque :

"tx/history/" + pubkey + "/pending"

#12

whereis duniterpy
duniterpy:

Comme @Moul Je suis preneur des “pending” :wink:
Et de
Support Elasticsearch Duniter4j API

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


#13

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 ! :wink:


#14

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


#15

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.


#16

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.


#17

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


#18

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).

    $ python3
    Python 3.5.4 (default, Dec 13 2017, 11:30:56)

  2. Installer le package : pip3 install duniterpy

  3. Tester la présence du package :

    import duniterpy
    dir(duniterpy)

Exemple :

    $ 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.


#19

Nouvelle version de 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 :wink:)

  • Add wot/identity_of in bma api

  • Use sphinx_rtd_theme for a better html documentation

Documentation html temporairement sur mon site :

http://vit.free.fr/duniterpy/duniterpy.api.bma.html#duniterpy.api.bma.tx.pending


a scindé ce sujet #20

Un message a été déplacé vers un nouveau sujet : Système d’impression de billets développé avec Duniterpy