U
    œ™WW/  ã                   @   sf   d dl Z d dlZ ze W n ek
r0   eZY nX G dd„ de jƒZedkrbedƒZde_e	eƒ dS )é    Nc                   @   s*   e Zd ZdZejjjdd„ ƒZdd„ ZdS )ÚSerialzOJust inherit the native Serial port implementation and patch the port property.c                 C   s@   t |tƒr,| d¡r,tjj | |  |¡¡ ntjj | |¡ dS )z%translate port name before storing itú	hwgrep://N)Ú
isinstanceÚ
basestringÚ
startswithÚserialr   ÚportÚ__set__Úfrom_url)ÚselfÚvalue© r   úC/usr/lib/python3/dist-packages/serial/urlhandler/protocol_hwgrep.pyr   $   s    zSerial.portc              	   C   s(  |  ¡  d¡r|dd… }d}d}| d¡}| d¡}|D ]n}d|krX| dd¡\}}n|}d}|d	krŒt|ƒd }|dk r¨td
 |¡ƒ‚q:|dkršd}q:td |¡ƒ‚q:ttj	j
 |¡ƒD ]V\}	}
}|rüzt |	¡}W n tjk
rò   Y q¼Y n
X | ¡  |r|d8 }q¼|	  S t d |¡¡‚dS )z(extract host and port from an URL stringr   é	   Nr   Fú&ú=é   Únz9option "n" expects a positive integer larger than 1: {!r}Z	skip_busyTzunknown option: {!r}z#no ports found matching regexp {!r})Úlowerr   ÚsplitÚpopÚintÚ
ValueErrorÚformatÚsortedr   ZtoolsZ
list_portsZgrepr   ZSerialExceptionÚclose)r   Zurlr   Z	test_openÚargsZregexpÚargZoptionr   r   ZdescZhwidÚsr   r   r   r
   ,   s<    


zSerial.from_urlN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Úsetterr
   r   r   r   r   r       s   
r   Ú__main__zhwgrep://ttyS0)
r   Zserial.tools.list_portsr   Ú	NameErrorÚstrr   r   r   r   Úprintr   r   r   r   Ú<module>   s   
6