Nitrokey / pynitrokey

Python client for Nitrokey devices
Apache License 2.0
93 stars 28 forks source link

nitropy list errors out due to deepmerge not being found (in a version recent enough) #396

Closed johanneskastl closed 1 year ago

johanneskastl commented 1 year ago

I am trying to package this for openSUSE, and noticed that to get nitropy list being functional, it needs deepmerge in a recent version that knows deepmerge.strategy.set.

$ nitropy list
Command line tool to interact with Nitrokey devices 0.4.36
:: 'Nitrokey FIDO2' keys
:: 'Nitrokey Start' keys:
:: 'Nitrokey 3' keys
Critical error:
An unhandled exception occurred
        Exception encountered: ModuleNotFoundError("No module named 'deepmerge.strategy.set'")

--------------------------------------------------------------------------------
Critical error occurred, exiting now
Unexpected? Is this a bug? Would you like to get support/help?
- You can report issues at: https://support.nitrokey.com/
- Writing an e-mail to support@nitrokey.com is also possible
- Please attach the log: '/tmp/nitropy.log.d99sktyh' with any support/help request!
- Please check if you have udev rules installed: https://docs.nitrokey.com/nitrokey3/linux/firmware-update.html#troubleshooting

I might have missed it, but I think this dependency is not set anywhere?

szszszsz commented 1 year ago

Hi!

It seems to be a dependency of spsdk:

Click to show ``` (venv) ~/w/pynitrokey (392-secrets-ui-separate-command|✔) $ pipdeptree -l -p pynitrokey (...) ------------------------------------------------------------------------ pynitrokey==0.4.36 - certifi [required: >=14.5.14, installed: 2022.9.24] - cffi [required: Any, installed: 1.15.1] - pycparser [required: Any, installed: 2.20] - ply [required: ==3.11, installed: 3.11] - click [required: >=8.0.0,<9, installed: 8.1.3] - cryptography [required: >=3.4.4,<37, installed: 36.0.2] - cffi [required: >=1.12, installed: 1.15.1] - pycparser [required: Any, installed: 2.20] - ply [required: ==3.11, installed: 3.11] - ecdsa [required: Any, installed: 0.18.0] - six [required: >=1.9.0, installed: 1.16.0] - fido2 [required: >=1.1.0,<2, installed: 1.1.0] - cryptography [required: >=2.6,<40,!=35, installed: 36.0.2] - cffi [required: >=1.12, installed: 1.15.1] - pycparser [required: Any, installed: 2.20] - ply [required: ==3.11, installed: 3.11] - frozendict [required: ~=2.3.4, installed: 2.3.6] - intelhex [required: Any, installed: 2.3.0] - nkdfu [required: Any, installed: 0.2] - fire [required: Any, installed: 0.5.0] - six [required: Any, installed: 1.16.0] - termcolor [required: Any, installed: 2.2.0] - intelhex [required: >=2.3.0, installed: 2.3.0] - libusb1 [required: >=1.9.3, installed: 3.0.0] - tqdm [required: Any, installed: 4.65.0] - protobuf [required: >=3.17.3,<4.0.0, installed: 3.20.3] - pyserial [required: Any, installed: 3.5] - python-dateutil [required: ~=2.7.0, installed: 2.7.5] - six [required: >=1.5, installed: 1.16.0] - pyusb [required: Any, installed: 1.2.1] - requests [required: Any, installed: 2.28.2] - charset-normalizer [required: >=2,<4, installed: 3.1.0] - idna [required: >=2.5,<4, installed: 3.4] - urllib3 [required: >=1.21.1,<1.27, installed: 1.26.12] - spsdk [required: >=1.7.0,<1.8.0, installed: 1.7.1] - asn1crypto [required: >=1.2,<2, installed: 1.5.1] - astunparse [required: >=1.6,<2, installed: 1.6.3] - six [required: >=1.6.1,<2.0, installed: 1.16.0] - wheel [required: >=0.23.0,<1.0, installed: 0.40.0] - bincopy [required: >=17.10.2,<17.11, installed: 17.10.3] - argparse-addons [required: >=0.4.0, installed: 0.12.0] - humanfriendly [required: Any, installed: 10.0] - pyelftools [required: Any, installed: 0.29] - bitstring [required: >=3.1,<3.2, installed: 3.1.9] - click [required: >=7.1,<8.2, installed: 8.1.3] - click-command-tree [required: ==1.1.0, installed: 1.1.0] - click [required: Any, installed: 8.1.3] - click-option-group [required: >=0.3.0,<0.6, installed: 0.5.5] - Click [required: >=7.0,<9, installed: 8.1.3] - cmsis-pack-manager [required: <0.3.0, installed: 0.2.10] - appdirs [required: >=1.4, installed: 1.4.4] - milksnake [required: >=0.1.2, installed: 0.1.5] - cffi [required: >=1.6.0, installed: 1.15.1] - pycparser [required: Any, installed: 2.20] - ply [required: ==3.11, installed: 3.11] - pyyaml [required: >=3.12, installed: 5.4.1] - colorama [required: >=0.4.4,<1, installed: 0.4.6] - commentjson [required: >=0.9,<1, installed: 0.9.0] - lark-parser [required: >=0.7.1,<0.8.0, installed: 0.7.8] - crcmod [required: ==1.7, installed: 1.7] - cryptography [required: >=3.4.4,<37, installed: 36.0.2] - cffi [required: >=1.12, installed: 1.15.1] - pycparser [required: Any, installed: 2.20] - ply [required: ==3.11, installed: 3.11] - deepmerge [required: ==0.3.0, installed: 0.3.0] - fastjsonschema [required: >=2.15.1, installed: 2.16.3] - hexdump [required: ~=3.3, installed: 3.3] - jinja2 [required: >=2.11,<3.1, installed: 3.0.3] - MarkupSafe [required: >=2.0, installed: 2.1.2] - libusbsio [required: >=2.1.11, installed: 2.1.11] - oscrypto [required: ~=1.2, installed: 1.3.0] - asn1crypto [required: >=1.5.1, installed: 1.5.1] - pycryptodome [required: >=3.9.3,<4, installed: 3.17] - pylink-square [required: >=0.8.2,<0.11.9, installed: 0.11.1] - future [required: Any, installed: 0.18.3] - psutil [required: >=5.2.2, installed: 5.9.2] - six [required: Any, installed: 1.16.0] - pyocd [required: >=0.28.3,<=0.31.0, installed: 0.31.0] - capstone [required: >=4.0,<5.0, installed: 4.0.2] - cmsis-pack-manager [required: >=0.2.10, installed: 0.2.10] - appdirs [required: >=1.4, installed: 1.4.4] - milksnake [required: >=0.1.2, installed: 0.1.5] - cffi [required: >=1.6.0, installed: 1.15.1] - pycparser [required: Any, installed: 2.20] - ply [required: ==3.11, installed: 3.11] - pyyaml [required: >=3.12, installed: 5.4.1] - colorama [required: <1.0, installed: 0.4.6] - intelhex [required: >=2.0,<3.0, installed: 2.3.0] - intervaltree [required: >=3.0.2,<4.0, installed: 3.1.0] - sortedcontainers [required: >=2.0,<3.0, installed: 2.4.0] - naturalsort [required: >=1.5,<2.0, installed: 1.5.1] - prettytable [required: >=2.0,<3.0, installed: 2.5.0] - wcwidth [required: Any, installed: 0.2.6] - pyelftools [required: <1.0, installed: 0.29] - pylink-square [required: >=0.8.2,<1.0, installed: 0.11.1] - future [required: Any, installed: 0.18.3] - psutil [required: >=5.2.2, installed: 5.9.2] - six [required: Any, installed: 1.16.0] - pyocd-pemicro [required: >=1.0.0.post2, installed: 1.1.5] - pypemicro [required: >=0.1.11, installed: 0.1.11] - pyusb [required: >=1.2.1,<2.0, installed: 1.2.1] - pyyaml [required: >=5.1,<6.0, installed: 5.4.1] - six [required: >=1.15.0,<2.0, installed: 1.16.0] - pyocd-pemicro [required: >=1.1.1,<1.2.0, installed: 1.1.5] - pypemicro [required: >=0.1.11, installed: 0.1.11] - pypemicro [required: >=0.1.9,<0.2.0, installed: 0.1.11] - pyserial [required: >=3.1,<4, installed: 3.5] - ruamel.yaml [required: >=0.17,<0.18.0, installed: 0.17.21] - sly [required: ==0.4, installed: 0.4] - typing-extensions [required: Any, installed: 4.3.0] - tlv8 [required: Any, installed: 0.10.0] - tqdm [required: Any, installed: 4.65.0] - typing-extensions [required: ~=4.3.0, installed: 4.3.0] - urllib3 [required: ~=1.26.7, installed: 1.26.12] (venv) ~/w/pynitrokey (392-secrets-ui-separate-command|✔) $ ```
johanneskastl commented 1 year ago

Thanks, I'll add the proper requires for spsdk to pull in a recent version of deepmerge.