(compatible with micropython)
This repository contains an implementation of specification of the parser for BIP32 path templates described in BIP-88 and specified by TLA+ specification at https://github.com/dgpv/bip32_template_parse_tplaplus_spec
The implementation is in bip32template/__init__.py
The tests is in tests/
To run tests on micropython, use micropython_unittest.py (you will need micropython-os.path module to run the tests)
to run static type checking, use run_mypy.sh
Example usage:
>>>frombip32templateimportBIP32Template>>>tpl=BIP32Template.parse('m/0h/{1-9,23}/*')
>>>tplBIP32Template([[(2147483648, 2147483648)], [(1, 9), (23, 23)], [(0, 2147483647)]], is_partial=False, hardened_marker="h")
>>>tpl.sections
[[(2147483648, 2147483648)], [(1, 9), (23, 23)], [(0, 2147483647)]]
>>>str(tpl)
'm/0h/{1-9,23}/*'>>>str(BIP32Template(tpl.sections, hardened_marker="'", is_partial=True))
"0'/{1-9,23}/*">>>tpl.to_path() isNoneTrue>>>tpl.match([0x80000000, 3, 33])
True>>>tpl.match([0x80000000, 99, 33])
False>>>BIP32Template.parse('m/0/1/{2-3}', is_format_onlypath=True)
...
bip32template.BIP32TemplateExceptionUnexpectedCharacter: unexpectedcharacteratposition7>>>ptpl=BIP32Template.parse('m/0h/1/2', is_format_onlypath=True)
>>>ptplBIP32Template([[(2147483648, 2147483648)], [(1, 1)], [(2, 2)]], is_partial=False, hardened_marker="h")
>>>ptpl.to_path()
[2147483648, 1, 2]
>>>tpl.match(ptpl.to_path())
True>>>str(BIP32Template.from_path(ptpl.to_path(), is_partial=True))
"0'/1/2">>>str(BIP32Template.from_path(ptpl.to_path(), is_partial=False, hardened_marker="h"))
'm/0h/1/2'This implementation was created by Dmitry Petukhov (https://github.com/dgpv/)
Released under MIT license.