Description of problem: Instantiating the hwdata.USB class causes an exception when loading data from the /usr/share/hwdata/usb.ids file. An example: $ python Python 2.7.8 (default, Nov 10 2014, 08:19:18) [GCC 4.9.2 20141101 (Red Hat 4.9.2-1)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from hwdata import USB >>> u = USB() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/site-packages/hwdata.py", line 57, in __init__ USB.devices[vendor][1][device][0][interface_id] = interface_name TypeError: 'str' object does not support item assignment It appears the code in line 57 should instead be USB.devices[vendor][1][device][1][interface_id] = interface_name in order to access the dictionary, not [0] which accesses the device name. Version-Release number of selected component (if applicable): python-hwdata-1.10.1-3.fc21 How reproducible: Always Steps to Reproduce: 1. Call constructor of hwdata.USB class Actual results: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/site-packages/hwdata.py", line 57, in __init__ USB.devices[vendor][1][device][0][interface_id] = interface_name TypeError: 'str' object does not support item assignment Expected results: Instantiation of class succeeds. Additional info:
For what it's worth, I tried changing line 57 to use index 1 instead of 0 (as noted in the original bug report) and it appears to succeed correctly and give expected results. Some background: I'm using this through spacewalk's rhnreg_ks command which recently seemed to break with this traceback. After making the noted change, the entire rhnreg_ks command (which performs HW inventory) succeeds.
I can not reproduce it with: python-hwdata-1.10.1-3.fc21.noarch hwdata-0.273-1.fc21.noarch Ah, there is new hwdata and it broke with hwdata-0.274-1.fc21.noarch, indeed.
Well it seems as hwdata bug to me: /usr/share/hwdata/usb.ids line 17397 8564 Transcend Information, Inc. 1000 JetFlash 8564 1000 JetFlash 4000 RDF8 The line 8564 1000 JetFlash Seems incorrect to me. Or it is new formating with new semantics?
*** This bug has been marked as a duplicate of bug 1185630 ***