o
    äî‡^=  ã                   @   s�   d Z ddlmZ ddlZddlZddlZejdkr ddlmZ nejdkr,ddl	mZ ne
d ej¡ƒ‚dd	d
„Zdd„ ZedkrFeƒ  dS dS )aA  This module will provide a function called comports that returns an
iterable (generator or list) that will enumerate available com ports. Note that
on some systems non-existent ports may be listed.

Additionally a grep function is supplied that can be used to search for ports
based on their descriptions or hardware ID.
é    )Úabsolute_importNÚnt)ÚcomportsÚposixz;Sorry: no implementation for your platform ('{}') availableFc                 c   sP   � t  | t j¡}t|ƒD ]}|\}}}| |¡s"| |¡s"| |¡r%|V  qdS )zÇ    Search for ports using a regular expression. Port name, description and
    hardware ID are searched. The function returns an iterable that returns the
    same tuples as comport() would do.
    N)ÚreÚcompileÚIr   Úsearch)ÚregexpÚinclude_linksÚrÚinfoÚportÚdescÚhwid© r   ú9/usr/lib/python3/dist-packages/serial/tools/list_ports.pyÚgrep'   s   €
€ýr   c            	      C   sb  dd l } | jdd�}|jdddd� |jdd	d
dd� |jddd
dd� |jdtdd� |jddd
dd� | ¡ }d}|jrV|jsKtj 	d 
|j¡¡ tt|j|jd�ƒ}ntt|jd�ƒ}t|dƒD ]3\}\}}}|jd u st|j|kr’tj 	d 
|¡¡ |jr’tj 	d 
|¡¡ tj 	d 
|¡¡ |d7 }qc|js¯|r§tj 	d 
|¡¡ d S tj 	d¡ d S d S )Nr   zSerial port enumeration)Údescriptionr
   ú?z%only show ports that match this regex)ÚnargsÚhelpz-vz	--verboseÚ
store_truezshow more messages)Úactionr   z-qz--quietzsuppress all messagesz-nzonly output the N-th entry)Útyper   z-sz--include-linksz1include entries that are symlinks to real devicesz Filtered list with regexp: {!r}
)r   é   z{:20}
z    desc: {}
z    hwid: {}
z{} ports found
zno ports found
)ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsr
   ÚquietÚsysÚstderrÚwriteÚformatÚsortedr   r   r   Ú	enumerateÚnÚstdoutÚverbose)	r   ÚparserÚargsÚhitsÚiteratorr(   r   r   r   r   r   r   Úmain5   s\   ýýýýý
ür/   Ú__main__)F)Ú__doc__Ú
__future__r   r"   Úosr   ÚnameÚserial.tools.list_ports_windowsr   Úserial.tools.list_ports_posixÚImportErrorr%   r   r/   Ú__name__r   r   r   r   Ú<module>   s   		


8
ÿ