qmk / qmk_cli

A program to help users work with QMK
MIT License
136 stars 34 forks source link

[Bug] AttributeError: module 'idna' has no attribute 'IDNAError' #176

Closed lubomirfiala closed 2 weeks ago

lubomirfiala commented 1 month ago

Describe the Bug

I tried to install qmk cli using homebrew, it installed but everytime i try to use it (qmk setup or qmk flash) i'll get this error

Traceback (most recent call last):
  File "/opt/homebrew/bin/qmk", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/opt/homebrew/Cellar/qmk/1.1.5_1/libexec/lib/python3.12/site-packages/qmk_cli/script_qmk.py", line 76, in main
    import qmk.cli  # noqa
    ^^^^^^^^^^^^^^
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/cli/__init__.py", line 253, in <module>
    __import__(subcommand)
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/cli/ci/validate_aliases.py", line 5, in <module>
    from qmk.keyboard import resolve_keyboard, keyboard_folder, keyboard_alias_definitions
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/keyboard.py", line 10, in <module>
    import qmk.path
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/path.py", line 8, in <module>
    from qmk.constants import MAX_KEYBOARD_SUBFOLDERS, QMK_FIRMWARE, QMK_USERSPACE, HAS_QMK_USERSPACE
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/constants.py", line 7, in <module>
    from qmk.userspace import detect_qmk_userspace
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/userspace.py", line 6, in <module>
    import jsonschema
  File "/opt/homebrew/Cellar/qmk/1.1.5_1/libexec/lib/python3.12/site-packages/jsonschema/__init__.py", line 13, in <module>
    from jsonschema._format import FormatChecker
  File "/opt/homebrew/Cellar/qmk/1.1.5_1/libexec/lib/python3.12/site-packages/jsonschema/_format.py", line 287, in <module>
    raises=(idna.IDNAError, UnicodeError),
            ^^^^^^^^^^^^^^
AttributeError: module 'idna' has no attribute 'IDNAError'

Is it a bug or I did something wrong?

Additional Context?

No response

fauxpark commented 1 month ago

Please provide more information.

lubomirfiala commented 1 month ago

Sure, what could be relevant? I'm running MacOS 14.5, python 3.12, idna 3.7, I didn't try anything fancy, just ran brew install qmk/qmk/qmk and then qmk setup and got this result. Is there any other additional log, on top of console output, i could provide?

fauxpark commented 1 month ago

Run qmk doctor. If that doesn't work, update your repo.

lubomirfiala commented 1 month ago

qmk doctor just printed same error, tried to uninstall and install qmk again with same result. I'm not aware that i have any repo related to qmk.

fauxpark commented 1 month ago

By repo I don't mean the CLI. You have a Git clone of qmk_firmware in your home directory.

lubomirfiala commented 1 month ago

ok, I removed that folder and run qmk setup again. If I understand it correctly, it should be up to date. But I got same error.

lubomirfiala@mbp ~ % qmk setup
☒ Could not find qmk_firmware!
Would you like to clone qmk/qmk_firmware to /Users/lubomirfiala/qmk_firmware? [y/n] y
Cloning into '/Users/lubomirfiala/qmk_firmware'...
Updating files:  26% (6973/26376)
Updating files:  27% (7122/26376)
Updating files:  28% (7386/26376)
Updating files:  29% (7650/26376)
Updating files:  30% (7913/26376)
Updating files:  31% (8177/26376)
Updating files:  32% (8441/26376)
Updating files:  33% (8705/26376)
Updating files:  34% (8968/26376)
Updating files:  35% (9232/26376)
Updating files:  36% (9496/26376)
Updating files:  37% (9760/26376)
Updating files:  38% (10023/26376)
Updating files:  39% (10287/26376)
Updating files:  40% (10551/26376)
Updating files:  41% (10815/26376)
Updating files:  42% (11078/26376)
Updating files:  43% (11342/26376)
Updating files:  44% (11606/26376)
Updating files:  45% (11870/26376)
Updating files:  46% (12133/26376)
Updating files:  47% (12397/26376)
Updating files:  48% (12661/26376)
Updating files:  49% (12925/26376)
Updating files:  50% (13188/26376)
Updating files:  50% (13360/26376)
Updating files:  51% (13452/26376)
Updating files:  52% (13716/26376)
Updating files:  53% (13980/26376)
Updating files:  54% (14244/26376)
Updating files:  55% (14507/26376)
Updating files:  56% (14771/26376)
Updating files:  57% (15035/26376)
Updating files:  58% (15299/26376)
Updating files:  59% (15562/26376)
Updating files:  60% (15826/26376)
Updating files:  61% (16090/26376)
Updating files:  62% (16354/26376)
Updating files:  63% (16617/26376)
Updating files:  64% (16881/26376)
Updating files:  65% (17145/26376)
Updating files:  66% (17409/26376)
Updating files:  67% (17672/26376)
Updating files:  68% (17936/26376)
Updating files:  69% (18200/26376)
Updating files:  70% (18464/26376)
Updating files:  71% (18727/26376)
Updating files:  72% (18991/26376)
Updating files:  73% (19255/26376)
Updating files:  74% (19519/26376)
Updating files:  75% (19782/26376)
Updating files:  76% (20046/26376)
Updating files:  77% (20310/26376)
Updating files:  78% (20574/26376)
Updating files:  78% (20683/26376)
Updating files:  79% (20838/26376)
Updating files:  80% (21101/26376)
Updating files:  81% (21365/26376)
Updating files:  82% (21629/26376)
Updating files:  83% (21893/26376)
Updating files:  84% (22156/26376)
Updating files:  85% (22420/26376)
Updating files:  86% (22684/26376)
Updating files:  87% (22948/26376)
Updating files:  88% (23211/26376)
Updating files:  89% (23475/26376)
Updating files:  90% (23739/26376)
Updating files:  91% (24003/26376)
Updating files:  92% (24266/26376)
Updating files:  93% (24530/26376)
Updating files:  94% (24794/26376)
Updating files:  95% (25058/26376)
Updating files:  96% (25321/26376)
Updating files:  97% (25585/26376)
Updating files:  98% (25849/26376)
Updating files:  99% (26113/26376)
Updating files: 100% (26376/26376)
Updating files: 100% (26376/26376), done.
Submodule 'lib/chibios' (https://github.com/qmk/ChibiOS) registered for path 'lib/chibios'
Submodule 'lib/chibios-contrib' (https://github.com/qmk/ChibiOS-Contrib) registered for path 'lib/chibios-contrib'
Submodule 'lib/googletest' (https://github.com/qmk/googletest) registered for path 'lib/googletest'
Submodule 'lib/lufa' (https://github.com/qmk/lufa) registered for path 'lib/lufa'
Submodule 'lib/lvgl' (https://github.com/qmk/lvgl.git) registered for path 'lib/lvgl'
Submodule 'lib/pico-sdk' (https://github.com/qmk/pico-sdk.git) registered for path 'lib/pico-sdk'
Submodule 'lib/printf' (https://github.com/qmk/printf) registered for path 'lib/printf'
Submodule 'lib/vusb' (https://github.com/qmk/v-usb) registered for path 'lib/vusb'
Cloning into '/Users/lubomirfiala/qmk_firmware/lib/chibios'...
Cloning into '/Users/lubomirfiala/qmk_firmware/lib/chibios-contrib'...
Cloning into '/Users/lubomirfiala/qmk_firmware/lib/googletest'...
Cloning into '/Users/lubomirfiala/qmk_firmware/lib/lufa'...
Cloning into '/Users/lubomirfiala/qmk_firmware/lib/lvgl'...
Cloning into '/Users/lubomirfiala/qmk_firmware/lib/pico-sdk'...
Cloning into '/Users/lubomirfiala/qmk_firmware/lib/printf'...
Cloning into '/Users/lubomirfiala/qmk_firmware/lib/vusb'...
Submodule path 'lib/chibios': checked out 'be44b3305f9a9fe5f2f49a4e7b978db322dc463e'
Submodule path 'lib/chibios-contrib': checked out '77cb0a4f7589f89e724f5e6ecb1d76d514dd1212'
Submodule 'ext/mcux-sdk' (https://github.com/NXPmicro/mcux-sdk) registered for path 'lib/chibios-contrib/ext/mcux-sdk'
Cloning into '/Users/lubomirfiala/qmk_firmware/lib/chibios-contrib/ext/mcux-sdk'...
Submodule path 'lib/chibios-contrib/ext/mcux-sdk': checked out '102c27d7cc2aaac87c133702e7829a105e0cb433'
Submodule path 'lib/googletest': checked out 'e2239ee6043f73722e7aa812a459f54a28552929'
Submodule path 'lib/lufa': checked out '549b97320d515bfca2f95c145a67bd13be968faa'
Submodule path 'lib/lvgl': checked out 'e19410f8f8a256609da72cff549598e0df6fa4cf'
Submodule path 'lib/pico-sdk': checked out 'a3398d8d3a772f37fef44a74743a1de69770e9c2'
Submodule path 'lib/printf': checked out 'c2e3b4e10d281e7f0f694d3ecbd9f320977288cc'
Submodule path 'lib/vusb': checked out '819dbc1e5d5926b17e27e00ca6d3d2988adae04e'
Ψ Successfully cloned https://github.com/qmk/qmk_firmware to /Users/lubomirfiala/qmk_firmware!
Ψ Added https://github.com/qmk/qmk_firmware as remote upstream.
Traceback (most recent call last):
  File "/opt/homebrew/bin/qmk", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/opt/homebrew/Cellar/qmk/1.1.5_1/libexec/lib/python3.12/site-packages/qmk_cli/script_qmk.py", line 76, in main
    import qmk.cli  # noqa
    ^^^^^^^^^^^^^^
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/cli/__init__.py", line 253, in <module>
    __import__(subcommand)
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/cli/ci/validate_aliases.py", line 5, in <module>
    from qmk.keyboard import resolve_keyboard, keyboard_folder, keyboard_alias_definitions
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/keyboard.py", line 10, in <module>
    import qmk.path
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/path.py", line 8, in <module>
    from qmk.constants import MAX_KEYBOARD_SUBFOLDERS, QMK_FIRMWARE, QMK_USERSPACE, HAS_QMK_USERSPACE
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/constants.py", line 7, in <module>
    from qmk.userspace import detect_qmk_userspace
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/userspace.py", line 6, in <module>
    import jsonschema
  File "/opt/homebrew/Cellar/qmk/1.1.5_1/libexec/lib/python3.12/site-packages/jsonschema/__init__.py", line 13, in <module>
    from jsonschema._format import FormatChecker
  File "/opt/homebrew/Cellar/qmk/1.1.5_1/libexec/lib/python3.12/site-packages/jsonschema/_format.py", line 287, in <module>
    raises=(idna.IDNAError, UnicodeError),
            ^^^^^^^^^^^^^^
AttributeError: module 'idna' has no attribute 'IDNAError'
lubomirfiala@mbp ~ % 

I just bought my first keyboard kit, and this is my first time i'm trying to use qmk, I have pretty much zero knowledge and experience with it.

fauxpark commented 1 month ago

I can't reproduce this, and I'm also on an M1 Mac with the same Python and qmk_cli versions.

The strange thing is that although the CLI does not install the idna Python package, and the ImportError is suppressed by jsonschema, the package does have an IDNAError class, and has for many years. Additionally I'm not sure why this code is even being run as to my knowledge QMK doesn't use any IDN domain names.

Can you run python3 -m pip list and check that it is not installed?

lubomirfiala commented 1 month ago

That list is not long

lubomirfiala@mbp ~ % python3 -m pip list
Package                   Version
------------------------- ---------
attrs                     23.2.0
idna                      3.7
jsonschema                4.7.2
jsonschema-specifications 2023.12.1
pip                       24.0
pyrsistent                0.20.0
referencing               0.35.1
rpds-py                   0.18.1
setuptools                70.0.0
wheel                     0.43.0

Ill try to find some older computer and install linux on it, I suspect it will work without a problem. One of my sea picro controllers are dead anyway, so it will take another 3 weeks before i'll get replacement...

fauxpark commented 1 month ago

You should not need anything except pip and wheel installed. Please remove them.

lubomirfiala commented 1 month ago
lubomirfiala@mbp ~ % python3 -m pip list             
Package Version
------- -------
pip     24.0
wheel   0.43.0
lubomirfiala@mbp ~ % qmk setup
Traceback (most recent call last):
  File "/opt/homebrew/bin/qmk", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/opt/homebrew/Cellar/qmk/1.1.5_1/libexec/lib/python3.12/site-packages/qmk_cli/script_qmk.py", line 76, in main
    import qmk.cli  # noqa
    ^^^^^^^^^^^^^^
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/cli/__init__.py", line 253, in <module>
    __import__(subcommand)
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/cli/ci/validate_aliases.py", line 5, in <module>
    from qmk.keyboard import resolve_keyboard, keyboard_folder, keyboard_alias_definitions
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/keyboard.py", line 10, in <module>
    import qmk.path
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/path.py", line 8, in <module>
    from qmk.constants import MAX_KEYBOARD_SUBFOLDERS, QMK_FIRMWARE, QMK_USERSPACE, HAS_QMK_USERSPACE
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/constants.py", line 7, in <module>
    from qmk.userspace import detect_qmk_userspace
  File "/Users/lubomirfiala/qmk_firmware/lib/python/qmk/userspace.py", line 6, in <module>
    import jsonschema
  File "/opt/homebrew/Cellar/qmk/1.1.5_1/libexec/lib/python3.12/site-packages/jsonschema/__init__.py", line 13, in <module>
    from jsonschema._format import FormatChecker
  File "/opt/homebrew/Cellar/qmk/1.1.5_1/libexec/lib/python3.12/site-packages/jsonschema/_format.py", line 287, in <module>
    raises=(idna.IDNAError, UnicodeError),
            ^^^^^^^^^^^^^^
AttributeError: module 'idna' has no attribute 'IDNAError'
fauxpark commented 2 weeks ago

See https://github.com/qmk/qmk_firmware/issues/23893