Je me penche sur la gestion des Unlock dans Silkaj, et je rencontre une erreur avec la méthode Unlock.from_inline().
Je me dis : j’ai dû mal comprendre comment fonctionne from_inline, je teste :
# I know this unlock is good
good_unlock = Unlock(0, [SIGParameter(0)])
str_unlock = good_unlock.inline()
# I check the inline format is good. It returns "0:SIG(0)" as expected.
print (str_unlock)
# Unlock.from_inline method refuses the inline format
false_unlock = Unlock.from_inline(str_unlock)
print (false_unlock.inline())
(j’en ai profité pour tester InputSource.from_inline() et OutputSource.from_inline() sans erreurs)
Je reçois cette erreur :
Traceback (most recent call last):
File "test_all_inline.py", line 14, in <module>
false_unlock = Unlock.from_inline(str_unlock)
File "/home/thomas/.cache/pypoetry/virtualenvs/silkaj-aMRjPcbt-py3.7/lib/python3.7/site-packages/duniterpy/documents/transaction.py", line 424, in from_inline
raise MalformedDocumentError("Inline input")
duniterpy.documents.document.MalformedDocumentError: Could not parse field Inline input
Est-ce que je fais mal les choses, ou est-ce que Duniterpy 55.1 a un souci ?
Effectivement, après vérification, l’expression régulière qui vérifie le format inline attend un saut de ligne en fin de document. Si je supprime le saut de ligne ton code fonctionne.
Il faut vérifier dans le protocole si c’est une erreur à la création du format inline ou bien à la lecture.
Mais en tous les cas c’est un bug ! Je fais une issue. Bravo et merci !
class Unlock:
"""
A Transaction UNLOCK
"""
re_inline = re.compile("([0-9]+):((?:SIG\\([0-9]+\\)|XHX\\([0-9]+\\)|\\s)+)\n")