DuniterPy, évolution de la bibliothèque python

silkaj
duniterpy
python
sakia

#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


#21

Justement, je suis en train de me former à Python pour développer une nouvelle version de la wotmap. La bibliothèque Python igraph va me permettre d’interroger un noeud duniter local pour en extraire les membres et les certifications pour ensuite calculer les stats de la wot (position des noeuds en fonction de différents layouts, centralités, communautés, etc.). Ce que je fais actuellement en PHP mais sans les calculs qui sont actuellement effectués par le navigateur. Là, tout se fera côté serveur et SigmaJS affichera la wot directement, sans attendre. Je sais que @tuxmain aussi maîtrise Python. J’espère que je pourrai compter sur un peu d’aide si j’en aurai besoin :wink: Du coup, je me demande si ça pourrait pas s’intégrer dans ta bibliothèque ? Bravo pour ce que tu as fait @vtexier !


#22

Merci !

Duniterpy va te permettre de récupérer les infos de duniter, puis tu utiliseras igraph pour construire un graph avec.
Pour que Duniterpy reste une bibliothèque légère, je n’envisage pas d’inclure de la construction de graph dedans.

Il vaut mieux respecter le principe de séparation des responsabilités :wink:


#23

Bon, j’ai besoin d’éclaircissements pour l’intégration de la partie authentification/cryptographie de DuniterPy dans Silkaj.
En gros, il y a trois types d’authentifications dans Silkaj : scrypt (salt, password), seed (stockés dans les authfile) et (E)WIF.
J’ai réussi l’intégration Scrypt. Par contre, je n’arrive pas avec la chaîne de caractère stockée dans le fichier authfile.
Il s’agit d’une clé modifiée en hexadécimal dont je n’arrive pas à transformer dans la version originale pour que ça soit accepté par DuniterPy.

Je rentre pas trop dans le détail ici, mais on peut en discuter de manière plus approfondie.
Pour références les fichiers silkaj : auth.py et crypto_tools.


#24

Dans les exemples, pour faire vite, j’utilise la fonction native de la libnacl SigningKey.save().
Ça me sauve un “truc” dans un fichier, mais j’ai oublié l’exemple de chargement de ce fichier.

Je vais retravailler ça et te tenir au courant.

Pour le format WIF, c’est dans les issues, à faire…


#25

Ok, merci du tip, j’ai réussi à sauvegarder un fichier, à le lire avec libnacl.utils.load_key(), puis à utiliser son contenu avec succès.


#26

Nouvelle version de Duniterpy 0.52.0

Changelog

  • Refactor documents Identity and Revocation in their own module - Break BC !
  • Add PubSec, Seedhex, WIF and EWIF file authentication (import/export) - Break BC !
  • Simpler certification example.
  • Simpler transaction example.

Merci à @moul pour sa contribution au code !

Documentation html temporairement sur mon site :

http://vit.free.fr/duniterpy/