DuniterPy 1.0.0 est sortie!

J’ai le grand plaisir de vous annoncer la sortie de la tant attendue version 1.0.0 en pré-version candidate à la publication numéro 0.

Cette version apporte tellement de changements que nous préférons avoir vos retours avant la sortie de la version stable.

Attention, cette version brise la compatibilité ascendante !

Pour la dernière fois avant la lointaine version 2.0.0.

Les futures versions intermédiaires 1.x.y utiliseront les alertes de dépréciations (Deprecation Warnings) de Python, pour vous signaler ce qui est obsolète, vous permettant de migrer sur le nouveau code tranquillement.

Liste des changements

Bibliothèque non asynchrone

La version 1.0.0 n’est plus en mode asynchrone. En effet, ce mode est très verbeux dans Python, et intimidant avec sa boucle d’évènement, alors qu’il apparaît que la majorité des clients ne font pas usage de requêtes parallèles multiples à haute fréquence.

Ainsi, tout le code est maintenant synchrone. Vous ne verrez plus les mots clefs async/await, ni la boucle d’évènement imposée dans les exemples.

Pour ceux qui désirent utiliser un mode asynchrone, ils peuvent maintenant le faire avec la méthode qu’ils préfèrent, et pas forcément avec asyncio (Threads, Process, etc). Pour ceux qui désirent continuer à utiliser asyncio, rassurez-vous, un exemple est fourni.

Remaniement des classes Documents

D’importants changements ont été apportés aux sous-classes de Document.
Tous les documents disposent maintenant d’un attribut signature qui est une string et non plus une liste de string. Sauf la classe Transaction qui utilise son propre attribut signatures et peut gérer les signatures multiples.

Il n’est plus possible de passer la signature en argument à la création du document puisqu’il n’est pas logique de créer la signature avant le document dans son cycle de vie.
Cependant, il est maintenant possible de passer directement une instance de SigningKey pour créer un document immédiatement signé !

Pour les transactions, les méthodes sign() et multi_sign() ajoutent les signatures au lieu de les remplacer. Ce qui vous permet de faire signer le document en plusieurs fois.

Les méthodes check_signature() s’occupent de vérifier les signatures selon le type de document.

Membership : l’argument membership_type est maintenant optionnel avec IN par défaut.

Les attributs version et currency sont maintenant optionnels et ont par défaut la dernière version stipulée dans le protocole selon le type de document, et le nom de code de la Ğ1 pour la monnaie.
De plus, les noms de code des monnaies connues sont maintenant disponibles dans le module constants.

Les attributs/arguments timestamp et blockstamp étaient utilisés de façon interchangeable sans tenir compte du type de valeur concernée. Ce qui apportait beaucoup de confusion. Ils ont tous été renommés selon les règles suivantes :

  • timestamp pour une unité de temps en secondes
  • block_id pour le type BlockID (identifiant unique des blocs)
  • BlockUID a été renommé en BlockID et BlockID.block_uid() par get_block_id()

Ainsi vous savez instantanément si vous devez fournir un identifiant de bloc ou une date/heure en secondes.

Les classes Endpoint voient leurs attributs renommés également (serverhost notamment)

Cryptographie

Arrivée de la fonctionnalité de création d’un trousseau à partir d’un Mnemonic DUBP avec SigningKey.from_dubp_mnemonic(). Un exemple est fourni.

Exemples plus faciles

Inclusion du dossier des exemples examples dans le package Python !

  • Il est maintenant possible de les lancer dans la console Python !
  • Voir comment s’en servir dans le README.md

Pour le reste, je vous laisse lire le dernier CHANGELOG.md

Merci à @vit et @moul.

6 Likes

v1.0.0rc1

Plus de détails dans le changelog.

1 Like

DuniterPy 1.0.0 est définitivement sortie!

Après des mois de travail patient et acharné pour maintenir une bibliothèque Python simple et puissante pour les clients/scripts/bidouilles, @Moul et moi-même sommes heureux de vous offrir cet outil.

Merci à @matograine, @hugo, et tous les contributeurs que j’oublie !

On continue à améliorer cet outil et on va bien sûr intégrer un client API RPC Substrate et/ou GraphQL Hydra dès que possible.

v1.0.0

Pas de changement par rapport à la version v1.0.0rc1.

5 Likes