bellows icon indicating copy to clipboard operation
bellows copied to clipboard

Bellows CLI scan results in error if no channels are specified ("AttributeError: 'list' object has no attribute 'split'")

Open mt0321 opened this issue 4 years ago • 1 comments

Hello, thank you for the work on this library!

The bellows CLI scan command raises an AttributeError when no channels list is specified. When the channels list is specified, the command works properly.

Version and environment information:

bash-5.1# uname -a
Linux homeassistant 5.10.17-v8 #1 SMP PREEMPT Sat Sep 4 00:55:46 UTC 2021 aarch64 Linux

bash-5.1# python --version
Python 3.9.6

bash-5.1# pip3 --version
pip 20.2.4 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

bash-5.1# pip3 show bellows
Name: bellows
Version: 0.27.0
Summary: Library implementing EZSP
Home-page: http://github.com/zigpy/bellows
Author: Russell Cloran
Author-email: [email protected]
License: GPL-3.0
Location: /usr/local/lib/python3.9/site-packages
Requires: pyserial-asyncio, pure-pcapy3, voluptuous, pyserial, zigpy, click-log, click
Required-by:

Example of the error:

bash-5.1# export EZSP_DEVICE=/dev/ttyUSB1

bash-5.1# bellows scan -e
Traceback (most recent call last):
  File "/usr/local/bin/bellows", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1062, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1666, in invoke
    sub_ctx = cmd.make_context(cmd_name, args, parent=ctx)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 923, in make_context
    self.parse_args(ctx, args)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1379, in parse_args
    value, args = param.handle_parse_result(ctx, opts, args)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 2364, in handle_parse_result
    value = self.process_value(ctx, value)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 2320, in process_value
    value = self.type_cast_value(ctx, value)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 2307, in type_cast_value
    return convert(value)
  File "/usr/local/lib/python3.9/site-packages/click/types.py", line 75, in __call__
    return self.convert(value, param, ctx)
  File "/usr/local/lib/python3.9/site-packages/bellows/cli/util.py", line 22, in convert
    values = [self.intrange.convert(v, param, ctx) for v in value.split(",")]
AttributeError: 'list' object has no attribute 'split'

Example without the error:

bash-5.1# bellows scan -e -C 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
Scanning channels 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
[11, -70]
[12, -73]
[13, -67]
[14, -76]
[15, -73]
[16, -72]
[17, -76]
[18, -78]
[19, -73]
[20, -78]
[21, -60]
[22, -40]
[23, -40]
[24, -77]
[25, -71]
[26, -76]

mt0321 avatar Sep 12 '21 00:09 mt0321

FYI, the bellows CLI is not maintained any longer, it has been replaced by the combination of the main zigpy library (for ZCL + ZDO) and zigpy-cli (for tools and debugging):

https://github.com/zigpy/zigpy

https://github.com/zigpy/zigpy-cli

Hedda avatar Mar 08 '24 07:03 Hedda