-
-
Notifications
You must be signed in to change notification settings - Fork 592
Open
Labels
Description
Issue Title
Compatibility issue between python-miio and click 8.3.0 causes TypeError when using miiocli yeelight --help (or any other comand)
Describe the bug
When running miiocli yeelight --help with click version 8.3.0 installed, a TypeError occurs: sequence item 1: expected str instance, bool found. The issue is resolved by downgrading click to version 8.0.0. This indicates a compatibility problem between the current python-miio version and newer click releases.
Version information
- OS: Windows
- python-miio version: 0.5.12
- click version: 8.3.0 (problematic), 8.0.0 (working)
To Reproduce
- Install
python-miiousingpip install python-miio - Ensure
clickversion 8.3.0 is installed - Run
miiocli yeelight --help - Observe the TypeError traceback
Console output
PS C:\Users\AsrockB560MHDV> miiocli yeelight --help
Traceback (most recent call last):
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\Scripts\miiocli.exe\__main__.py", line 6, in <module>
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\miio\cli.py", line 66, in create_cli
return cli(auto_envvar_prefix="MIIO")
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\miio\click_common.py", line 51, in __call__
return self.main(*args, **kwargs)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1383, in main
rv = self.invoke(ctx)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1848, in invoke
sub_ctx = cmd.make_context(cmd_name, args, parent=ctx)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1206, in make_context
self.parse_args(ctx, args)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1806, in parse_args
rest = super().parse_args(ctx, args)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1217, in parse_args
_, args = param.handle_parse_result(ctx, opts, args)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 2516, in handle_parse_result
value = self.process_value(ctx, value)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 2411, in process_value
value = self.callback(ctx, self, value)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\click\decorators.py", line 539, in show_help
echo(ctx.get_help(), color=ctx.color)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 750, in get_help
return self.command.get_help(self)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1084, in get_help
self.format_help(ctx, formatter)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1122, in format_help
self.format_usage(ctx, formatter)
File "C:\Users\AsrockB560MHDV\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1023, in format_usage
formatter.write_usage(ctx.command_path, " ".join(pieces))
TypeError: sequence item 1: expected str instance, bool found
Additional context
The issue appears to be related to changes in click 8.3.0 that break compatibility with how python-miio handles command-line interface generation. This likely affects other device commands as well, not just Yeelight.
Temporary workaround
pip install click==8.0.0