
­ÄyVÝ  ã               @   sƒ   d  d l  Z  d  d l Z  y e Wn e k
 r: e Z Yn XGd d „  d e  j ƒ Z e d k r e 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   sZ   t  | t ƒ r@ | j d ƒ r@ t j j j |  |  j | ƒ ƒ n t j j j |  | ƒ d S)z%translate port name before storing itz	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”  | j  ƒ  j d ƒ r% | d d … } d } d } | j d ƒ } | j d ƒ } x§ | D]Ÿ } d | k rƒ | j d d ƒ \ } } n | } d } | d	 k rÍ t | ƒ d } | d k  rõ t d
 | f ƒ ‚ qV | d k râ d } qV t d | f ƒ ‚ qV Wx” t t j j	 j
 | ƒ ƒ D]a \ }	 }
 } | rby t j |	 ƒ } Wn t j k
 rWwYn X| j ƒ  | ru| d 8} q|	 SWt j d | f ƒ ‚ d S)z(extract host and port from an URL stringz	hwgrep://é	   Nr   Fú&ú=é   Únz7option "n" expects a positive integer larger than 1: %rZ	skip_busyTzunknown option: %rz!no ports found matching regexp %r)Úlowerr   ÚsplitÚpopÚintÚ
ValueErrorÚ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   5	