o
    /»_Œ  ã                   @   s¾   d dl mZ d dlZd dlZd dlT dZeZejdkr"d dlm	Z	 n4d dl
Z
e
jdkr2d dlm	Z	 n$e
jdkrBd d	lm	Z	mZmZ ne
jd
krNd dlm	Z	 ned e
j¡ƒ‚dgZdd„ ZdS )é    )Úabsolute_importN)Ú*z3.5Zcli)ÚSerialÚntÚposix)r   ÚPosixPollSerialÚVTIMESerialÚjavaz;Sorry: no implementation for your platform ('{}') availablezserial.urlhandlerc              	   O   sè   |  dd¡ }t}z|  ¡ }W n	 ty   Y nFw d|v r^| dd¡d }d |¡}tD ]*}zt |¡ t ||¡}	W n	 t	yD   Y q,w t
|	dƒrR|	 | ¡\} }n|	j} ntd |¡ƒ‚|d	g|¢R i |¤Ž}
| |
_|rr|
 ¡  |
S )
a‰      Get an instance of the Serial class, depending on port/url. The port is not
    opened when the keyword parameter 'do_not_open' is true, by default it
    is. All other parameters are directly passed to the __init__ method when
    the port is instantiated.

    The list of package names that is searched for protocol handlers is kept in
    ``protocol_handler_packages``.

    e.g. we want to support a URL ``foobar://``. A module
    ``my_handlers.protocol_foobar`` is provided by the user. Then
    ``protocol_handler_packages.append("my_handlers")`` would extend the search
    path so that ``serial_for_url("foobar://"))`` would work.
    Zdo_not_openFz://é   r   z.protocol_{}Úserial_class_for_urlz$invalid URL, protocol {!r} not knownN)Úpopr   ÚlowerÚAttributeErrorÚsplitÚformatÚprotocol_handler_packagesÚ	importlibÚimport_moduleÚImportErrorÚhasattrr   Ú
ValueErrorZportÚopen)ZurlÚargsÚkwargsZdo_openÚklassZurl_lowercaseZprotocolZmodule_nameZpackage_nameZhandler_moduleÚinstance© r   ú1/usr/lib/python3/dist-packages/serial/__init__.pyÚserial_for_url+   s6   þ

ÿ
r   )Z
__future__r   Úsysr   Zserial.serialutilÚ__version__ZVERSIONÚplatformZserial.serialclir   ÚosÚnameZserial.serialwin32Zserial.serialposixr   r   Zserial.serialjavar   r   r   r   r   r   r   r   Ú<module>   s&   	



ÿ