Skip to content

Need to change dependency version (click 8.3.0 -> ~8.0.0) #2048

@grrr7230

Description

@grrr7230

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

  1. Install python-miio using pip install python-miio
  2. Ensure click version 8.3.0 is installed
  3. Run miiocli yeelight --help
  4. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions