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 typeBlockID
(identifiant unique des blocs) -
BlockUID
a été renommé enBlockID
etBlockID.block_uid()
parget_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 (server
→ host
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