diff --git a/duniterpy/documents/__init__.py b/duniterpy/documents/__init__.py index a976b3a6e4f6df56b7ef4f3176c44aa57986d625..9768435173a873f4e13e63b7136f8e37628662ab 100644 --- a/duniterpy/documents/__init__.py +++ b/duniterpy/documents/__init__.py @@ -1,4 +1,4 @@ -from .block import Block, BlockUID +from .block import Block, BlockUID, block_uid from .certification import SelfCertification, Certification, Revocation from .membership import Membership from .peer import Endpoint, BMAEndpoint, UnknownEndpoint, Peer diff --git a/duniterpy/documents/block.py b/duniterpy/documents/block.py index ebafdcd82e3a3294c2b7d573559c6dd0fd585888..5cf08ee69c349167c77ef1721b51fcc07e8eb549 100644 --- a/duniterpy/documents/block.py +++ b/duniterpy/documents/block.py @@ -7,6 +7,17 @@ from .constants import pubkey_regex, block_id_regex, block_hash_regex import re +def block_uid(value): + if isinstance(value, BlockUID): + return value + elif isinstance(value, str): + return BlockUID.from_str(value) + elif value is None: + return BlockUID.empty() + else: + raise TypeError("Cannot convert {0} to BlockUID".format(type(value))) + + class BlockUID: """ A simple block id diff --git a/tests/documents/test_block.py b/tests/documents/test_block.py index 7411ebb15df6f29a08480d4ade35365e1af28f28..015d5e2c4a322e1faf1ee20a74fff3f949701760 100644 --- a/tests/documents/test_block.py +++ b/tests/documents/test_block.py @@ -4,7 +4,7 @@ Created on 12 déc. 2014 @author: inso ''' import unittest -from duniterpy.documents.block import Block, BlockUID +from duniterpy.documents.block import Block, BlockUID, block_uid raw_block = """Version: 2 Type: Block @@ -518,6 +518,19 @@ class Test_Block(unittest.TestCase): from_rendered_raw = block.from_signed_raw(rendered_raw) self.assertEqual(from_rendered_raw.signed_raw(), negative_issuers_frame_var) + def test_block_uid_converter(self): + buid = block_uid("1345-0000338C775613399FA508A8F8B22EB60F525884730639E2A707299E373F43C0") + self.assertEqual(buid.number, 1345) + self.assertEqual(buid.sha_hash, "0000338C775613399FA508A8F8B22EB60F525884730639E2A707299E373F43C0") + + def test_block_uid_converter_error(self): + with self.assertRaises(TypeError): + buid = block_uid(1235654) + + def test_block_uid_no_convert(self): + buid = block_uid(BlockUID(1345, "0000338C775613399FA508A8F8B22EB60F525884730639E2A707299E373F43C0")) + self.assertEqual(buid.number, 1345) + self.assertEqual(buid.sha_hash, "0000338C775613399FA508A8F8B22EB60F525884730639E2A707299E373F43C0") if __name__ == '__main__': unittest.main()