
    ^                     z    d dl mZ d dlZd dlZd dlZd dlZd Z G d de      Zd Z	e
dk(  r e ed             yy)	    )absolute_importNc                     g }t        j                  d|       D ]"  }|s	 t        |      }|j	                  |       $ |S # t        $ r Y  w xY w)zc    Convert string into a list of texts and numbers in order to support a
    natural sorting.
    z(\d+))resplitint
ValueErrorappend)textresultgroups      @/usr/lib/python3/dist-packages/serial/tools/list_ports_common.pynumsplitr      s]    
 F(D) !E
 MM% ! M  s   A  	AAc                   H    e Zd ZdZddZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)ListPortInfoz+Info collection base class for serial portsc                    || _         t        j                  j                  |      | _        d| _        d| _        d | _        d | _        d | _	        d | _
        d | _        d | _        d | _        |sW|Tt        j                  j                  |      r4dj                  t        j                  j!                  |            | _        y y y y )Nzn/azLINK={})deviceospathbasenamenamedescriptionhwidvidpidserial_numberlocationmanufacturerproduct	interfaceislinkformatrealpath)selfr   skip_link_detections      r   __init__zListPortInfo.__init__&   s    GG$$V,	 	! "v'9bggnnV>T!(()9)9&)ABDI ?U'9"    c                     | j                   &dj                  | j                  | j                         S | j                  | j                  S | j                  S )z8return a short string to name the port based on USB info{} - {})r   r!   r   r   r#   s    r   usb_descriptionzListPortInfo.usb_description7   sE    >>%##DLL$..AA\\%<<99r&   c                    dj                  | j                  xs d| j                  xs d| j                  dj                  | j                        nd| j                  dj                  | j                              S d      S )z9return a string with USB related information about devicezUSB VID:PID={:04X}:{:04X}{}{}r   z SER={} z LOCATION={})r!   r   r   r   r   r)   s    r   usb_infozListPortInfo.usb_info@   s}    .55HHMHHM484F4F4RIT//0XZ48MM4MN!!$--0	W 	W TV	W 	Wr&   c                 X    | j                         | _        | j                         | _        y)z)update description and hwid from USB dataN)r*   r   r-   r   r)   s    r   apply_usb_infozListPortInfo.apply_usb_infoH   s     //1MMO	r&   c                 X    t        |t              xr | j                  |j                  k(  S N)
isinstancer   r   r#   others     r   __eq__zListPortInfo.__eq__M   s!    %.N4;;%,,3NNr&   c                 ,    t        | j                        S r1   )hashr   r)   s    r   __hash__zListPortInfo.__hash__P   s    DKK  r&   c                     t        |t              sAt        dj                  t	        |       j
                  t	        |      j
                              t        | j                        t        |j                        k  S )Nz unorderable types: {}() and {}())r2   r   	TypeErrorr!   type__name__r   r   r3   s     r   __lt__zListPortInfo.__lt__S   s`    %.>EET
##U$$& ' ' $x'===r&   c                 N    dj                  | j                  | j                        S )Nr(   )r!   r   r   r)   s    r   __str__zListPortInfo.__str__Z   s    T-=-=>>r&   c                     |dk(  r| j                   S |dk(  r| j                  S |dk(  r| j                  S t        dj	                  |            )z7Item access: backwards compatible -> (port, desc, hwid)r         z{} > 2)r   r   r   
IndexErrorr!   )r#   indexs     r   __getitem__zListPortInfo.__getitem__]   sK    A:;;aZ###aZ99X__U344r&   N)F)r<   
__module____qualname____doc__r%   r*   r-   r/   r5   r8   r=   r?   rE    r&   r   r   r   #   s5    5C"W$
O!>?	5r&   r   c                     g }t        j                   d      D ]U  }t        j                  j                  |      s#t        j                  j	                  |      | v sE|j                  |       W |S )zd    search all /dev devices and look for symlinks to known ports already
    listed in devices.
    z/dev/*)globr   r   r    r"   r	   )deviceslinksr   s      r   
list_linksrN   j   sZ    
 E))H% !77>>&!bgg&6&6v&>'&ILL ! Lr&   __main__dummy)
__future__r   r   rK   r   os.pathr   objectr   rN   r<   printrI   r&   r   <module>rU      sK    ' 	  	  C56 C5N	 z	,w
  r&   