3 U�ZÎã@sJddlZejddkZGdd„deƒZGdd„deƒZGdd„deƒZdS) éNéc@s2eZdZdZdZdZd dd„Zdd„Zdd „ZdS) ÚUSBz) Interace to usb.ids from hwdata package z/usr/share/hwdata/usb.idsNc CsÄ|r ||_ntj|_d|_|jo&tj �rÀit_trDt|jdd�}n t|jƒ}d}d}d}�xb|jƒD�]T}|d7}|jƒ}|jdƒr˜|jdƒrfPnqfqft |ƒdkr¨qfqf|jdƒ�r2|dj ƒ}t |ƒd kràd j |dd…ƒ} nd } y| tj|d|d|<Wn,t k �r.t jjd j||jƒƒYnXqf|jd ƒ�rt|dj ƒ}d j |dd…ƒ} | igtj|d|<qf|dj ƒ}d j |dd…ƒ} |tjk�r®| igtj|<qf| tj|d<qfWdS)z Load pci.ids from file to internal data structure. parameter 'filename' can specify location of this file éz ISO8859-1)ÚencodingrNú#z8# List of known device classes, subclasses and protocolsz éú Úz!Unknown line at line {0} in {1}. ú )ÚfilenamerÚcacheÚdevicesÚinPy3kÚopenÚ readlinesÚsplitÚ startswithÚlenÚlowerÚjoinÚ TypeErrorÚsysÚstderrÚwriteÚformat) Úselfr ÚfÚlinenoÚvendorÚdeviceÚlineÚlZ interface_idZinterface_nameÚ device_nameÚ vendor_name©r$ú/usr/lib/python3.6/hwdata.pyÚ__init__sN           z USB.__init__cCs2|jƒ}|jr,|tjkr&tj|dSdSn‚dS)z~ Return description of vendor. Parameter is two byte code in hexa. If vendor is unknown None is returned. rN)rr rr )rrr$r$r%Ú get_vendorOs  zUSB.get_vendorcCsZ|jƒ}|jƒ}|jrT|tjkrN|tj|dkrHtj|d|dSdSqVdSn‚dS)zŠ Return description of device. Parameters are two byte code variables in hexa. If device is unknown None is returned. rrN)rr rr )rrrr$r$r%Ú get_device\s zUSB.get_device)N) Ú__name__Ú __module__Ú __qualname__Ú__doc__r r r&r'r(r$r$r$r%rs  4 rc@s2eZdZdZdZdZd dd„Zdd„Zdd „ZdS) ÚPCIz) Interace to pci.ids from hwdata package z/usr/share/hwdata/pci.idsNc Cs(|r ||_ntj|_d|_|jo&tj �r$it_trDt|jdd�}n t|jƒ}d}xÐ|jƒD]Ä}|jƒ}|jdƒrvq\q\t |ƒdkr†q\q\|jdƒr”q\q\|jdƒrÐ|dj ƒ}d j |dd…ƒ}|tj|d|<q\|dj ƒ}d j |dd…ƒ}|t tjj ƒƒk�r|igtj|<q\|tj|d<q\WdS) z Load pci.ids from file to internal data structure. parameter 'filename' can specify location of this file rz ISO8859-1)rNrrz r r)r r-r r rrrrrrrrÚlistÚkeys) rr rrr r!rr"r#r$r$r%r&rs6       z PCI.__init__cCs:|jƒ}|jr4|ttjjƒƒkr.tj|dSdSn‚dS)z~ Return description of vendor. Parameter is two byte code in hexa. If vendor is unknown None is returned. rN)rr r.r-r r/)rrr$r$r%r'˜s zPCI.get_vendorcCsf|jƒ}|jƒ}|jr`|ttjjƒƒkrZ|ttj|djƒƒkrTtj|d|SdSqbdSn‚dS)zŠ Return description of device. Parameters are two byte code variables in hexa. If device is unknown None is returned. rN)rr r.r-r r/)rrrr$r$r%r(¥szPCI.get_device)N) r)r*r+r,r r r&r'r(r$r$r$r%r-ms  & r-c@s*eZdZdZdZdZddd„Zdd„ZdS) ÚPNPz) Interace to pnp.ids from hwdata package z/usr/share/hwdata/pnp.idsNcCs¬|r ||_ntj|_d|_|jr¨tj r¨it_trBt|jdd�}n t|jƒ}xZ|jƒD]N}|jƒ}|jdƒrpqVqVt |ƒdkr€qVqV|dj ƒ}dj |dd…ƒtj|<qVWdS)z Load pnp.ids from file to internal data structure. parameter 'filename' can specify location of this file rz ISO8859-1)rrrrN) r r0r ÚVENDORSrrrrrrÚupperr)rr rr r!Ú vendor_idr$r$r%r&»s"    z PNP.__init__cCs6|jƒ}|jr0|ttjjƒƒkr*tj|SdSn‚dS)z† Return description of vendor. Parameter is 3 character long id of vendor. If vendor is unknown None is returned. N)r2r r.r0r1r/)rr3r$r$r%r'Ös  zPNP.get_vendor)N)r)r*r+r,r r1r&r'r$r$r$r%r0¶s  r0)rÚ version_inforÚobjectrr-r0r$r$r$r%ÚsWI