3
M]Wf @ s d dl Z d dlZd dlT dZeZejdkr8d dlmZ nhd dlZej dkrXd dl
mZ nHej dkrxd dlmZmZm
Z
n(ej d krd dlmZ ned
jej dgZdd
ZdS ) N)*z3.1.1Zcli)Serialntposix)r PosixPollSerialVTIMESerialjavaz;Sorry: no implementation for your platform ('{}') availablezserial.urlhandlerc O s |j dd }t}y| j }W n tk
r2 Y nX d|kr|jddd }dj|}xntD ]X}ytj| tj||} W n t k
r w\Y q\X t
| dr| j| \} }n| j}P q\W tdj||d
||}
| |
_
|r|
j |
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.
Zdo_not_openFz:// r z.protocol_{}serial_class_for_urlz$invalid URL, protocol {!r} not knownN)N)popr lowerAttributeErrorsplitformatprotocol_handler_packages importlib
import_moduleImportErrorhasattrr
ValueErrorZportopen)ZurlargskwargsZdo_openklassZ
url_lowercaseZprotocolZmodule_nameZpackage_nameZhandler_moduleinstance r /usr/lib/python3.6/__init__.pyserial_for_url) s2
r )r sysZserial.serialutil__version__VERSIONplatformZserial.serialclir osnameZserial.serialwin32Zserial.serialposixr r Zserial.serialjavar r r r r r r r