3 �Pf�@s�ddlmZmZmZddlZddlmZddlmZyddl j j Z Wn e k rdddlj jZ YnXddddd d d gZejdd ko�ejd dkZyed�Zeee�s�ed�ZWndZYnXdZGdd�de�Zdd�Zdd�Zdd �Zdd�ZdS)�)�absolute_import�division�unicode_literalsN)� ModuleType)� text_type� default_etree�MethodDispatcher�isSurrogatePair�surrogatePairToCodepoint�moduleFactoryFactory�supports_lone_surrogates�PY27���z"\uD800"z u"\uD800"FTc@s$eZdZdZffdd�Zdd�ZdS)rapDict with 2 special properties: On initiation, keys that are lists, sets or tuples are converted to multiple keys so accessing any one of the items in the original list-like object returns the matching value md = MethodDispatcher({("foo", "bar"):"baz"}) md["foo"] == "baz" A default value which can be set through the default attribute. cCsjg}xN|D]F\}}t|ttttf�rBx*|D]}|j||f�q*Wq |j||f�q Wtj||�d|_dS)N) � isinstance�list�tuple� frozenset�set�append�dict�__init__�default)�self�itemsZ _dictEntries�name�value�item�r�/usr/lib/python3.6/_utils.pyr4s  zMethodDispatcher.__init__cCstj|||j�S)N)r�getr)r�keyrrr � __getitem__CszMethodDispatcher.__getitem__N)�__name__� __module__� __qualname__�__doc__rr#rrrr r's  cCsLt|�dkoJt|d�dkoJt|d�dkoJt|d�dkoJt|d�dkS)Nrri�i��ri�i��)�len�ord)�datarrr r Js  cCs,dt|d�ddt|d�d}|S)Niri�iri�)r))r*Zchar_valrrr r Pscsi���fdd�}|S)Nc s�ttjtd��rd|j}n d|j}t|j��}y�|||Stk r�t|�}�|f|�|�}|jj|�d�kr�i�|<d�|kr�i�||<d�||kr�i�|||<|�|||<|SXdS)N�z _%s_factorys _%s_factoryr�args�kwargs) rrr$�typerr�KeyError�__dict__�update)Z baseModuler,r-rZ kwargs_tuple�modZobjs)�factory� moduleCacherr � moduleFactory\s$      z+moduleFactoryFactory..moduleFactoryr)r3r5r)r3r4r r Yscsi���fdd�}|S)Ncs2t|�t|j��f}|�kr*�||��|<�|S)N)rr)r,r-r")�cache�funcrr �wrappedyszmemoize..wrappedr)r7r8r)r6r7r �memoizevsr9)Z __future__rrr�sys�typesrZpip._vendor.sixrZxml.etree.cElementTreeZetreeZ cElementTreer� ImportErrorZxml.etree.ElementTreeZ ElementTree�__all__� version_infor �evalZ_xrr rrr r r r9rrrr �s0    #