Cette version apporte le support des Ascii Armor Messages, c’est à dire que vous pouvez chiffrer/signer des messages avec vos clefs Duniter pour communiquer par courriel ou autre.
Attention, cette version brise la retro-compatibilité avec les précédentes ! Regardez les commits pour vous faire une idée, il sont signalés par la mention (Break BC).
Pour info, cette modification a cassé Silkaj lors de l’importation de ScryptParams :
Voici mon correctif :
--- a/silkaj/auth.py
+++ b/silkaj/auth.py
@@ -21,7 +21,7 @@ from getpass import getpass
from pathlib import Path
from re import compile, search
from duniterpy.key import SigningKey
-from duniterpy.key import ScryptParams
+from duniterpy.key.scrypt_params import ScryptParams
Du coup, je vais figer la version de DuniterPy :
Je sais pas pour quelle raison as-tu modifié cette ligne. C’est un ~breaking change~ mineur.
Je sais pas ce que vous en pensez Mais, sachez que Silkaj va s’en prémunir
D’habitude, quand je brise la retro compatibilité, je rajoute (Break BC) dans le titre du commit… Là j’ai oublié. Désolé.
Je te conseille effectivement de figer ta version de duniterpy tant que tu ne veux pas intégrer de nouvelles fonctionnalités ou récupérer une correction de bug. Car la bibliothèque est en version 0.x.x, donc l’architecture public finale n’est pas encore figée.
Le commit que tu pointes du doigt est une phase de transition pour la classe ScryptParams, qui a encore évoluée dans les commits suivant. Le problème était double en terme d’architecture :
Une classe ScrypParams utilisée par plusieurs modules mais déclarée dans un des modules : je l’ai déplacée dans son propre module.
Les valeurs par défaut de cette classe étaient en dur dans plusieurs modules. Je les ai placées dans un nouveau module constants.py dédié aux constantes du package key.
Je vais éditer mon post pour signaler le “Break BC”.
[Edit]
Pour ton problème d’import, je pense qu’on peut retrouver la compatibilité en ajoutant une ligne du genre from scrypt_params import ScriptParams dans le __init__.py du package key. Je verrai ça pour la prochaine release.
En installant via pip (3.7), je n’ai pas tout, il manque les dossiers api, documents, grammars, key. C’est un que chez moi ou c’est le paquet qui a un problème ?
La grande nouveauté est le support de WS2P !
Vous allez pouvoir vous connecter à un serveur Duniter en WS2P comme ci vous étiez un véritable nœud Duniter ! De quoi faire des automates en Python basés sur les événements WS2P…
Attention : la connexion par websocket a changée ! Reportez-vous aux exemples du dossier examples pour voir comment on se connecte en BMA et en WS2P en websocket.
Ou modifiez votre fichier requirements.txt pour pip:
duniterpy==0.57.*
Nouveautés
Authentification à partir d’un fichier Scuttlebutt .ssb/secret
Authentification à partir d’un fichier d’identifiants
Nouvelle commande BMA : client(bma.wot.requirements_of_pending, minsig)
La classe HeadV2 hérite maintenant des classes précédentes (contient les propriétés de toutes les versions précédentes Head, HeadV0, HeadV1). Attention, cela brise la compatibilité avec l’ancienne classe !
Correctifs
Correctif bug sur le champ software_version des messages WS2Pv1 pas accepté si un mot clé suivait la version (1.7.21-beta est maintenant accepté)
Correctif bug de bma.blockhain.revoked qui appellait l’url /blockchain/with/excluded
La raison a été discutée entre le développeur de Sakia qui avait un besoin et le développeur de Duniterpy qui lui a demandé la même chose. Les deux personnes étant les mêmes, une synergie s’est naturellement créée.