DuniterPy, évolution de la bibliothèque Python

Nouvelle version de Duniterpy 0.53.0

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).

Changelog

Documentation temporairement sur mon site :

http://vit.free.fr/duniterpy/duniterpy.key.html#module-duniterpy.key.ascii_armor

5 Likes

Pour info, cette modification a cassé :broken_heart: 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 :grey_question: Mais, sachez que Silkaj va s’en prémunir :stuck_out_tongue:

1 Like

Mea Culpa !

D’habitude, quand je brise la retro compatibilité, je rajoute (Break BC) dans le titre du commit… Là j’ai oublié. Désolé. :blush:

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.

2 Likes

v0.54.0 (5th May 2019)

Code/tests

  • Fix OutputSource and InputSource from_inline() regex matching
  • Transaction document: tests and code: drop versions 2 and 3 management
  • Block document: code: drop vensions 2 and 3 management
  • Block document: Upgrade blocks to v11 and TX to v10
  • Add OutputSource.inline_condition() method
  • output conditions: fix ‹ parser › variables default definition
  • output conditions: add token() and compose() tests

Other

  • CI: Do not trigger build, tests, type check on modification of non-relevant files
  • Makefile: use python3 module to run tests and type check
  • Add coveralls as dev dependency
  • setup.py: add classifiers: Python versions, Intended Audience
  • Add CHANGELOG.md from v0.53.1

v0.53.1 (18th April 2019)

  • Implement equality __eq__() and __hash__() methods for InputSource and OutputSource classes

Thanks @Moul, @vit

5 Likes

v0.54.1 (9th May 2019)

  • Transaction: add eq() and hash() methods
  • Transaction Unlock parameters: add eq() and hash() methods
  • Transaction: add ‘time’ variable for read and write but not for doc generation
  • output conditions: add eq() and hash() methods
  • test transaction equality at all levels

3 Likes

[EDIT] ATTENTION : cette version publiée est incomplète et non fonctionnelle ! Attendre la 0.55.1 !

v0.55.0 (18th July 2019)

Code

  • Refactor request api.ws2p.heads in api.bma.network.ws2p_heads (BMA command to get ws2p heads)
  • Fix bug in PubSec v1 secret key length check while loading

Checks

Pylint

  • Add Pylint as a dev dependency to check code validity
  • Add pylint command to the Makefile
  • #91, !65: Apply Pylint on the code

Black

  • #54: Add Black as dev dependency to format the code (not PEP8 compliant)
  • Add format and check-format commands to the MakeFile
  • !63: Format the code with Black

Other

  • Makefile: check command for mypy, pylint, and check-format checks
  • #94: Apply Mypy, Pylint and Black on tests and examples folders

CI

  • Add MyPy, Black, and Pylint jobs
  • Rename mypy job to check which run make check: mypy, pylint, check-format
  • Add check-format job at the first stage

Build

  • Add build command to the Makefile
  • Install build dependencies separately via a requirements_deploy.txt file
  • #98, !72: Do not include tests folder in the wheel package for PyPi distribution

CD

  • Add deploy and deploy_test commands to the Makefile
  • #99, !74: Add job for PyPi test deployment
  • !73: Trigger PyPi release job only on tag
  • Move github-sync stage in release stage as an after-script step
  • #100, !75: Use extends instead of Yaml anchors in .gitlab-ci.yml (requires GitLab v12+)
  • Also trigger the pipeline when the Makefile changes

Project

  • #96, !70: Add support for PEP 561 for DuniterPy type hints to be recognized by mypy when imported
  • Remove not used coveralls dependency

Thanks @Moul, @vtexier.

Nouvelle mouture de Duniterpy.

Seule nouveauté côté API, la commande BMA api.bma.network.ws2p_heads pour obtenir la branche majoritaire sur le réseau.

Le reste est un gros travail sur l’environnement de développement et l’intégration continue dans Gitlab.

4 Likes

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 ?

Merci du retour ! Effectivement il y a un gros problème sur le build dans gitlab :

Le build seul fonctionne en local sur mon dépôt, je vais tester le build du déploiement de test cette après midi.

En attendant NE PAS UTILISER CETTE VERSION, attendre la 0.55.1.

2 Likes

La version 0.55.1 est disponible ! La version 0.55.0 a été supprimé du dépôt officiel Pypi car non fonctionnelle.

Le changelog reste inchangé et se trouve plus haut.

v0.55.1 (19th July 2019)

  • #102: wheel build does not longer include duniterpy sub-folders
  • Trigger release only on master not on tag as protected environment variables are not shared with pipelines started on a tag
  • Fix Makefile: rebuild not working
4 Likes

Un message a été scindé en un nouveau sujet : Utilisation des conditions dans DuniterPy

DuniterPy version 0.56.0 est sortie !

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.

La documentation automatique que personne ne lit est ici…

v0.56.0 (20th January 2020)

Code

  • #58, !84: Introduce WS2P API support: BREAK BACKWARD COMPATIBILITY:
    • bma.ws: now websocket connections use the special WSConnection class and async, check examples.
    • Add two examples, a helper to retrieve the WS2P API from BMA.
  • #113, !89: Blocks signature verification is correctly handled now, differently from other documents.
  • #112, !88: fix Unlock.from_inline() error on a newly created Unlock
  • !87: Typos in Block: noonce −> nonce, hash
  • !82: Use sys.exit() instead of exit()
  • !79:
    • Move tools out of the helper folder
    • Dedicate the helper folder to helpers
    • Introduce output_available() helper to check if an output is available

Dependencies

  • !91: fix the attrs/attr dependency

Build

  • #107, !81: Enhance version definition in setup.py

CI/CD

  • !78: Release on PyPI only on tags

Documentation

  • #101, !80: Publish auto-documentation on GitLab Pages
  • #106, !83: Migrate the README back to markdown, reword and update it.
  • !77: Improve v0.55.0 and add v0.55.1 changelog
  • !92: Add v0.56.0 changelog

8 Likes

Ouuuuh c’est nice ça :slight_smile: Super boulot vit !!

2 messages ont été scindés en un nouveau sujet : Requêtes tx sur WS2P avec DuniterPy

DuniterPy 0.57.0 est sortie !

Pour l’installer, c’est simple :

pip3 install --user --upgrade

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

CHANGELOG

v0.57.0 (2nd April 2020)

Code

Enhancements

  • #123 Implement authentication from Scuttlebutt .ssb/secret file
  • #77 Implement authentication from credentials file
  • #122, !99 Implement /wot/requirements-of-pending command support in BMA api
  • #120, !98 HeadV2, HeadV1, HeadV0 and Head classes now each inherit from previous class BREAK BACKWARD COMPATIBILITY

Fixes

  • #119, !96 software_version field in WS2Pv1 messages now accept a string after patch number (1.7.21-beta accepted)
  • #114, !100 Fix bma.blockhain.revoked command class calling /blockchain/with/excluded url

Documentation

  • #104 add CONTRIBUTE.md file with release workflow

CI/CD

  • #66, !93 Migrate to Poetry (build and development environment)

  • Thanks @vit, @Moul

4 Likes

T’as implémenté scuttlebutt ?? Génial ! Je te fais un don illico !

Super @vit !!
@Moul , est-ce que la mise à jour se propage à silkaj?

Je suppose que cela change quelque chose à astroport/natools.py at master - astroport - P2Git @tuxmain ?

Venez en parler sur ScuttleButt,

Vous recevrez sûrement des LOVE par mon Journal :wink:

Je modifie natools.py pour qu’il accepte tous les formats autorisés par DuniterPy.

2 Likes

Il y a une raison technique derrière ce choix ?

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. :wink:

3 Likes

Et quel était ce besoin ? ^^