Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions