Ç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 :
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 !
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…
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
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.
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…
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.
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.
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 :
S’assurer d’avoir python 3.5.2 minimum (voir le README).
$ python3
Python 3.5.4 (default, Dec 13 2017, 11:30:56)
Installer le package : pip3 install duniterpy
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']
>>>
Sortir de la console python (ctrl-D).
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.