Skip to content
This repository was archived by the owner on Feb 16, 2025. It is now read-only.
This repository was archived by the owner on Feb 16, 2025. It is now read-only.

Error in shards on Mac: unpack requires a buffer of 4 bytes #33

@rserranon

Description

@rserranon

I compiled the code but I get errors every time I interact with shards:

 shards> list-shards
unpack requires a buffer of 4 bytes
Hmm. Something went wrong.

I include test results and the errors i get with

# make lint

What is your environment?

  • Operation system & version: [Mac OS 10.14.6]
  • Python & pip versions: [Python3 3.8.3, pip3 19.2.3]
  • Terminal emulator: [iTerm]

Screenshots

Tests: 

===================================== test session starts ======================================
platform darwin -- Python 3.7.0, pytest-4.4.0, py-1.8.0, pluggy-0.12.0
rootdir: /Users/roberto/hermit
plugins: cov-2.6.1
collected 109 items

tests/test_config.py ....                                                                [  3%]
tests/test_errors.py ..                                                                  [  5%]
tests/test_functional_bitcoin_tests.py ..                                                [  7%]
tests/test_rng.py ...                                                                    [ 10%]
tests/test_wallet.py ..........                                                          [ 19%]
tests/qrcode/test_displayer.py ....                                                      [ 22%]
tests/qrcode/test_format.py .........                                                    [ 31%]
tests/qrcode/test_limits.py .........                                                    [ 39%]
tests/qrcode/test_reader.py ..                                                           [ 41%]
tests/shards/test_shard.py ........                                                      [ 48%]
tests/shards/test_shard_set.py .ss.......                                                [ 57%]
tests/signer/test_base.py .........                                                      [ 66%]
tests/signer/test_bitcoin_signer.py ...................................                  [ 98%]
tests/signer/test_echo_signer.py ..                                                      [100%]

======================================= warnings summary =======================================
tests/qrcode/test_displayer.py::TestDisplayQRCode::test_valid_qr_code[fixture_opensource_bitcoin_vector_0]
tests/qrcode/test_displayer.py::TestDisplayQRCode::test_valid_qr_code[fixture_opensource_bitcoin_vector_1]
  /Users/roberto/hermit/.virtualenv/lib/python3.7/site-packages/_pytest/python.py:178: RuntimeWarning: coroutine 'TestDisplayQRCode.test_valid_qr_code' was never awaited
    testfunction(**testargs)

-- Docs: https://docs.pytest.org/en/latest/warnings.html

---------- coverage: platform darwin, python 3.7.0-final-0 -----------
Name                              Stmts   Miss Branch BrPart  Cover   Missing
-----------------------------------------------------------------------------
hermit/config.py                     29      0     14      0   100%
hermit/errors.py                      5      0      0      0   100%
hermit/plugin.py                     11      5      6      1    41%   10-15, 9->10
hermit/qrcode/displayer.py           22      8      2      0    58%   13-14, 18-26
hermit/qrcode/format.py              40      7      8      1    83%   11, 41-46, 10->11
hermit/qrcode/reader.py              43      3     10      4    87%   47-48, 62, 27->65, 31->55, 51->31, 59->62
hermit/qrcode/utils.py                3      1      0      0    67%   5
hermit/rng.py                        58     29     12      0    50%   48-76, 93-96, 99-105, 108-109
hermit/shamir_share.py               43      2      6      0    92%   30-31
hermit/shards/interface.py          128    103     42      0    16%   24-25, 28-36, 39-49, 56-68, 75-83, 88-109, 112, 116, 120-121, 124-142, 145-163, 166-216
hermit/shards/shard.py               67      6     12      5    86%   29, 45, 55, 65, 93, 128, 28->29, 44->45, 54->55, 64->65, 92->93
hermit/shards/shard_set.py          205     78     62      7    60%   58-83, 86, 94-96, 99-100, 198-199, 205-207, 210, 226-232, 235-246, 249, 252-254, 257-269, 275-277, 285-298, 301, 304-305, 308-310, 313-318, 322, 325, 328, 331-333, 57->58, 85->86, 89->exit, 132->134, 197->198, 209->210, 274->275
hermit/signer/base.py                73      0     18      0   100%
hermit/signer/bitcoin_signer.py     183      0     80      0   100%
hermit/signer/echo_signer.py         11      0      0      0   100%
hermit/ui/base.py                    27     27      6      0     0%   1-40
hermit/ui/common.py                  27     27      2      0     0%   1-74
hermit/ui/main.py                    16     16      2      0     0%   1-29
hermit/ui/relocker.py                15     15      6      0     0%   1-21
hermit/ui/repl.py                    62     62     26      0     0%   1-91
hermit/ui/shards.py                  49     49      2      0     0%   1-341
hermit/ui/state.py                    8      8      0      0     0%   1-15
hermit/ui/toolbar.py                 17     17      6      0     0%   1-25
hermit/ui/wallet.py                  41     41      2      0     0%   1-203
hermit/wallet.py                     55      0     12      0   100%
-----------------------------------------------------------------------------
TOTAL                              1238    504    336     18    59%

====================== 107 passed, 2 skipped, 2 warnings in 16.15 seconds ======================

make lint
.virtualenv/bin/flake8 hermit --exclude=__init__.py
hermit/config.py:16:80: E501 line too long (131 > 79 characters)
hermit/config.py:82:80: E501 line too long (90 > 79 characters)
hermit/rng.py:7:1: E302 expected 2 blank lines, found 1
hermit/shamir_share.py:2:80: E501 line too long (85 > 79 characters)
hermit/shamir_share.py:3:80: E501 line too long (84 > 79 characters)
hermit/shamir_share.py:7:47: W291 trailing whitespace
hermit/shamir_share.py:11:1: F401 'hashlib' imported but unused
hermit/shamir_share.py:12:1: F401 'hmac' imported but unused
hermit/shamir_share.py:13:1: F401 'os' imported but unused
hermit/shamir_share.py:16:1: F403 'from shamir_mnemonic import *' used; unable to detect undefined names
hermit/shamir_share.py:17:80: E501 line too long (82 > 79 characters)
hermit/shamir_share.py:20:80: E501 line too long (80 > 79 characters)
hermit/shamir_share.py:25:1: E302 expected 2 blank lines, found 0
hermit/shamir_share.py:29:1: E302 expected 2 blank lines, found 1
hermit/shamir_share.py:30:8: F405 'length' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:30:24: E225 missing whitespace around operator
hermit/shamir_share.py:33:1: E302 expected 2 blank lines, found 1
hermit/shamir_share.py:37:12: F405 'mnemonic_from_indices' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:37:75: E231 missing whitespace after ','
hermit/shamir_share.py:37:80: E501 line too long (130 > 79 characters)
hermit/shamir_share.py:37:107: F405 'RADIX_BITS' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:37:119: F405 'RADIX_BITS' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:45:30: F405 'mnemonic_to_indices' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:45:70: F405 'bits_to_bytes' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:45:80: E501 line too long (113 > 79 characters)
hermit/shamir_share.py:45:84: F405 'RADIX_BITS' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:45:106: E203 whitespace before ','
hermit/shamir_share.py:45:107: E231 missing whitespace after ','
hermit/shamir_share.py:47:1: E302 expected 2 blank lines, found 1
hermit/shamir_share.py:48:80: E501 line too long (133 > 79 characters)
hermit/shamir_share.py:52:80: E501 line too long (85 > 79 characters)
hermit/shamir_share.py:53:80: E501 line too long (130 > 79 characters)
hermit/shamir_share.py:55:1: E302 expected 2 blank lines, found 1
hermit/shamir_share.py:56:80: E501 line too long (141 > 79 characters)
hermit/shamir_share.py:60:80: E501 line too long (95 > 79 characters)
hermit/shamir_share.py:61:80: E501 line too long (130 > 79 characters)
hermit/shamir_share.py:63:1: E302 expected 2 blank lines, found 1
hermit/shamir_share.py:64:15: F405 'decode_mnemonic' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:66:12: F405 'encode_mnemonic' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:68:1: E302 expected 2 blank lines, found 1
hermit/shamir_share.py:69:15: F405 'decode_mnemonic' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:72:12: F405 'encode_mnemonic' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:74:1: E302 expected 2 blank lines, found 1
hermit/shamir_share.py:75:15: F405 'decode_mnemonic' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:77:12: F405 'encode_mnemonic' may be undefined, or defined from star imports: shamir_mnemonic
hermit/shamir_share.py:78:1: W391 blank line at end of file
hermit/plugin.py:8:10: E222 multiple spaces after operator
hermit/ui/repl.py:1:1: F401 'asyncio' imported but unused
hermit/ui/repl.py:11:1: F403 'from .base import *' used; unable to detect undefined names
hermit/ui/repl.py:12:1: F403 'from .toolbar import *' used; unable to detect undefined names
hermit/ui/repl.py:17:1: E302 expected 2 blank lines, found 1
hermit/ui/repl.py:17:18: E231 missing whitespace after ':'
hermit/ui/repl.py:17:19: F405 'Dict' may be undefined, or defined from star imports: .base, .toolbar
hermit/ui/repl.py:20:22: E261 at least two spaces before inline comment
hermit/ui/repl.py:25:29: E128 continuation line under-indented for visual indent
hermit/ui/repl.py:25:44: F405 'bottom_toolbar' may be undefined, or defined from star imports: .base, .toolbar
hermit/ui/repl.py:26:29: E128 continuation line under-indented for visual indent
hermit/ui/repl.py:27:64: F405 'bottom_toolbar' may be undefined, or defined from star imports: .base, .toolbar
hermit/ui/repl.py:35:80: E501 line too long (97 > 79 characters)
hermit/ui/repl.py:36:47: E128 continuation line under-indented for visual indent
hermit/ui/repl.py:37:47: E124 closing bracket does not match visual indentation
hermit/ui/repl.py:52:27: F405 'HermitError' may be undefined, or defined from star imports: .base, .toolbar
hermit/ui/repl.py:56:20: F405 'HermitError' may be undefined, or defined from star imports: .base, .toolbar
hermit/ui/repl.py:75:25: F405 'DeadTime' may be undefined, or defined from star imports: .base, .toolbar
hermit/ui/toolbar.py:1:1: F401 'asyncio' imported but unused
hermit/ui/toolbar.py:3:1: F403 'from .base import *' used; unable to detect undefined names
hermit/ui/toolbar.py:6:12: F405 'DeadTime' may be undefined, or defined from star imports: .base
hermit/ui/toolbar.py:6:27: F405 'DeadTime' may be undefined, or defined from star imports: .base
hermit/ui/toolbar.py:8:1: E302 expected 2 blank lines, found 1
hermit/ui/toolbar.py:19:9: F405 'DeadTime' may be undefined, or defined from star imports: .base
hermit/ui/toolbar.py:21:55: F405 'DeadTime' may be undefined, or defined from star imports: .base
hermit/ui/common.py:1:1: F403 'from .base import *' used; unable to detect undefined names
hermit/ui/common.py:5:1: F401 'traceback' imported but unused
hermit/ui/common.py:6:1: F401 'sys' imported but unused
hermit/ui/common.py:7:31: E703 statement ends with a semicolon
hermit/ui/common.py:9:1: E302 expected 2 blank lines, found 1
hermit/ui/common.py:20:7: E111 indentation is not a multiple of four
hermit/ui/common.py:21:12: F405 'HermitError' may be undefined, or defined from star imports: .base
hermit/ui/common.py:22:7: E111 indentation is not a multiple of four
hermit/ui/common.py:22:7: F405 'print_formatted_text' may be undefined, or defined from star imports: .base
hermit/ui/common.py:23:7: E114 indentation is not a multiple of four (comment)
hermit/ui/common.py:23:7: E265 block comment should start with '# '
hermit/ui/common.py:25:25: F405 'DeadTime' may be undefined, or defined from star imports: .base
hermit/ui/common.py:41:1: E302 expected 2 blank lines, found 1
hermit/ui/common.py:48:5: F405 'clear_screen' may be undefined, or defined from star imports: .base
hermit/ui/common.py:50:1: E302 expected 2 blank lines, found 1
hermit/ui/common.py:65:1: E302 expected 2 blank lines, found 1
hermit/ui/common.py:65:1: F811 redefinition of unused 'unlock' from line 9
hermit/ui/common.py:71:1: W293 blank line contains whitespace
hermit/ui/common.py:72:1: W293 blank line contains whitespace
hermit/ui/common.py:74:5: F405 'print_formatted_text' may be undefined, or defined from star imports: .base
hermit/ui/main.py:5:1: F403 'from .wallet import *' used; unable to detect undefined names
hermit/ui/main.py:6:1: F403 'from .common import *' used; unable to detect undefined names
hermit/ui/main.py:7:1: F403 'from .relocker import *' used; unable to detect undefined names
hermit/ui/main.py:21:1: E302 expected 2 blank lines, found 1
hermit/ui/main.py:22:5: F405 'clear_screen' may be undefined, or defined from star imports: .common, .relocker, .wallet
hermit/ui/main.py:27:12: F405 'asyncio' may be undefined, or defined from star imports: .common, .relocker, .wallet
hermit/ui/main.py:28:5: F841 local variable 'deadman_task' is assigned to but never used
hermit/ui/main.py:28:37: F405 'relock_wallet_if_timed_out' may be undefined, or defined from star imports: .common, .relocker, .wallet
hermit/ui/main.py:29:29: F405 'wallet_repl' may be undefined, or defined from star imports: .common, .relocker, .wallet
hermit/ui/relocker.py:3:1: F403 'from .base import *' used; unable to detect undefined names
hermit/ui/relocker.py:3:1: F401 '.base.*' imported but unused
hermit/ui/relocker.py:6:1: E302 expected 2 blank lines, found 1
hermit/ui/relocker.py:11:1: E302 expected 2 blank lines, found 1
hermit/ui/shards.py:3:1: F403 'from .base import *' used; unable to detect undefined names
hermit/ui/shards.py:6:16: F405 'Dict' may be undefined, or defined from star imports: .base
hermit/ui/shards.py:8:1: E302 expected 2 blank lines, found 1
hermit/ui/shards.py:9:12: F405 'command' may be undefined, or defined from star imports: .base
hermit/ui/shards.py:79:2: W291 trailing whitespace
hermit/ui/shards.py:145:15: F405 'reader' may be undefined, or defined from star imports: .base
hermit/ui/shards.py:159:1: E302 expected 2 blank lines, found 1
hermit/ui/shards.py:167:5: F405 'displayer' may be undefined, or defined from star imports: .base
hermit/ui/shards.py:284:1: E303 too many blank lines (3)
hermit/ui/shards.py:298:1: E303 too many blank lines (3)
hermit/ui/shards.py:313:1: E302 expected 2 blank lines, found 3
hermit/ui/shards.py:318:5: F405 'clear_screen' may be undefined, or defined from star imports: .base
hermit/ui/shards.py:341:9: F405 'print_formatted_text' may be undefined, or defined from star imports: .base
hermit/ui/shards.py:341:30: F405 'HTML' may be undefined, or defined from star imports: .base
hermit/ui/base.py:4:1: F401 'prompt_toolkit.HTML' imported but unused
hermit/ui/base.py:4:1: F401 'prompt_toolkit.print_formatted_text' imported but unused
hermit/ui/base.py:7:1: F401 'hermit.qrcode.displayer' imported but unused
hermit/ui/base.py:7:1: F401 'hermit.qrcode.reader' imported but unused
hermit/ui/base.py:11:1: E302 expected 2 blank lines, found 1
hermit/ui/base.py:15:1: E302 expected 2 blank lines, found 1
hermit/ui/base.py:18:1: E302 expected 2 blank lines, found 1
hermit/ui/base.py:18:27: E231 missing whitespace after ':'
hermit/ui/wallet.py:7:1: F403 'from .base import *' used; unable to detect undefined names
hermit/ui/wallet.py:12:17: F405 'Dict' may be undefined, or defined from star imports: .base
hermit/ui/wallet.py:14:1: E302 expected 2 blank lines, found 1
hermit/ui/wallet.py:15:12: F405 'command' may be undefined, or defined from star imports: .base
hermit/ui/wallet.py:83:5: F405 'displayer' may be undefined, or defined from star imports: .base
hermit/ui/wallet.py:83:80: E501 line too long (81 > 79 characters)
hermit/ui/wallet.py:106:5: F405 'displayer' may be undefined, or defined from star imports: .base
hermit/ui/wallet.py:106:80: E501 line too long (85 > 79 characters)
hermit/ui/wallet.py:116:5: F405 'clear_screen' may be undefined, or defined from star imports: .base
hermit/ui/wallet.py:128:5: F405 'clear_screen' may be undefined, or defined from star imports: .base
hermit/ui/wallet.py:166:30: F405 'HTML' may be undefined, or defined from star imports: .base
hermit/ui/wallet.py:202:1: E302 expected 2 blank lines, found 1
hermit/signer/bitcoin_signer.py:79:1: W293 blank line contains whitespace
hermit/signer/bitcoin_signer.py:108:80: E501 line too long (81 > 79 characters)
hermit/signer/bitcoin_signer.py:115:80: E501 line too long (119 > 79 characters)
hermit/signer/bitcoin_signer.py:183:80: E501 line too long (85 > 79 characters)
hermit/signer/bitcoin_signer.py:233:20: E221 multiple spaces before operator
hermit/signer/bitcoin_signer.py:238:55: E261 at least two spaces before inline comment
hermit/signer/bitcoin_signer.py:239:1: W293 blank line contains whitespace
hermit/signer/bitcoin_signer.py:280:80: E501 line too long (111 > 79 characters)
hermit/signer/bitcoin_signer.py:317:10: W291 trailing whitespace
hermit/signer/bitcoin_signer.py:320:10: W291 trailing whitespace
hermit/signer/echo_signer.py:1:1: F401 'hermit.qrcode.displayer' imported but unused
hermit/signer/echo_signer.py:17:1: W293 blank line contains whitespace
hermit/signer/base.py:7:1: F401 'hermit' imported but unused
hermit/signer/base.py:78:45: E231 missing whitespace after ':'
hermit/signer/base.py:123:45: E231 missing whitespace after ':'
hermit/signer/base.py:143:5: E303 too many blank lines (2)
hermit/signer/base.py:162:80: E501 line too long (80 > 79 characters)
hermit/signer/base.py:169:5: E303 too many blank lines (2)
hermit/signer/base.py:176:5: E303 too many blank lines (2)
hermit/shards/interface.py:28:80: E501 line too long (80 > 79 characters)
hermit/shards/interface.py:35:1: W293 blank line contains whitespace
hermit/shards/interface.py:37:1: W293 blank line contains whitespace
hermit/shards/interface.py:41:18: E222 multiple spaces after operator
hermit/shards/interface.py:41:80: E501 line too long (85 > 79 characters)
hermit/shards/interface.py:61:44: W291 trailing whitespace
hermit/shards/interface.py:76:80: E501 line too long (116 > 79 characters)
hermit/shards/interface.py:83:80: E501 line too long (96 > 79 characters)
hermit/shards/interface.py:97:80: E501 line too long (80 > 79 characters)
hermit/shards/interface.py:124:80: E501 line too long (92 > 79 characters)
hermit/shards/interface.py:165:67: E231 missing whitespace after ','
hermit/shards/interface.py:168:80: E501 line too long (81 > 79 characters)
hermit/shards/interface.py:172:80: E501 line too long (141 > 79 characters)
hermit/shards/interface.py:173:15: E203 whitespace before ':'
hermit/shards/interface.py:173:32: E231 missing whitespace after ','
hermit/shards/interface.py:176:80: E501 line too long (88 > 79 characters)
hermit/shards/interface.py:188:80: E501 line too long (148 > 79 characters)
hermit/shards/interface.py:192:80: E501 line too long (158 > 79 characters)
hermit/shards/interface.py:212:80: E501 line too long (130 > 79 characters)
hermit/shards/shard_set.py:18:1: E302 expected 2 blank lines, found 1
hermit/shards/shard_set.py:35:12: E713 test for membership should be 'not in'
hermit/shards/shard_set.py:86:80: E501 line too long (89 > 79 characters)
hermit/shards/shard_set.py:108:80: E501 line too long (80 > 79 characters)
hermit/shards/shard_set.py:152:80: E501 line too long (86 > 79 characters)
hermit/shards/shard_set.py:155:80: E501 line too long (86 > 79 characters)
hermit/shards/shard_set.py:158:80: E501 line too long (117 > 79 characters)
hermit/shards/shard_set.py:177:17: E203 whitespace before ':'
hermit/shards/shard_set.py:177:36: E225 missing whitespace around operator
hermit/shards/shard_set.py:178:26: E203 whitespace before ':'
hermit/shards/shard_set.py:178:42: E225 missing whitespace around operator
hermit/shards/shard_set.py:179:27: E203 whitespace before ':'
hermit/shards/shard_set.py:180:24: E203 whitespace before ':'
hermit/shards/shard_set.py:190:80: E501 line too long (92 > 79 characters)
hermit/shards/shard_set.py:196:31: E231 missing whitespace after ','
hermit/shards/shard_set.py:196:80: E501 line too long (94 > 79 characters)
hermit/shards/shard_set.py:199:80: E501 line too long (101 > 79 characters)
hermit/shards/shard_set.py:205:13: E722 do not use bare 'except'
hermit/shards/shard_set.py:210:80: E501 line too long (81 > 79 characters)
hermit/shards/shard_set.py:220:80: E501 line too long (85 > 79 characters)
hermit/shards/shard_set.py:230:80: E501 line too long (81 > 79 characters)
hermit/shards/shard_set.py:265:80: E501 line too long (85 > 79 characters)
hermit/shards/shard_set.py:291:80: E501 line too long (92 > 79 characters)
hermit/shards/shard.py:6:1: E302 expected 2 blank lines, found 1
hermit/shards/shard.py:77:80: E501 line too long (89 > 79 characters)
hermit/shards/shard.py:105:80: E501 line too long (91 > 79 characters)
hermit/shards/shard.py:131:80: E501 line too long (110 > 79 characters)
hermit/shards/shard.py:135:80: E501 line too long (95 > 79 characters)
hermit/shards/shard.py:138:80: E501 line too long (124 > 79 characters)
make: [lint] Error 1 (ignored)
.virtualenv/bin/mypy hermit/
hermit/shards/interface.py:34: error: Incompatible return value type (got "None", expected "bytes")
hermit/shards/interface.py:46: error: Incompatible return value type (got "None", expected "bytes")
hermit/shards/interface.py:63: error: Incompatible types in assignment (expression has type "None", variable has type "bytes")
hermit/shards/interface.py:66: error: Incompatible types in assignment (expression has type "None", variable has type "bytes")
hermit/shards/shard_set.py:183: error: Need type annotation for 'filled_groups'
hermit/signer/bitcoin_signer.py:109: error: Need type annotation for 'inputs'
hermit/signer/bitcoin_signer.py:157: error: "bytes" has no attribute "encode"; maybe "decode"?
hermit/signer/bitcoin_signer.py:277: error: Need type annotation for 'parsed_redeem_scripts'
hermit/signer/bitcoin_signer.py:290: error: "CBitcoinAddress" has no attribute "to_scriptPubKey"; maybe "from_scriptPubKey"?
hermit/signer/bitcoin_signer.py:299: error: Need type annotation for 'keys'
hermit/ui/repl.py:24: error: Incompatible types in assignment (expression has type "PromptSession", variable has type "None")
hermit/ui/repl.py:35: error: "None" has no attribute "prompt"
hermit/ui/common.py:65: error: Name 'unlock' already defined on line 9
make: [lint] Error 1 (ignored)
´´´

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions