U ��.e��@s�ddlmZmZmZddlmZddlmZzddlm m Z Wn&e k rhddl m mZ YnXddddd d gZzed �Zeee�s�ed �ZWnd ZYnXdZGdd�de�Zdd�Zdd�Zdd �Zdd�ZdS)�)�absolute_import�division�unicode_literals)� ModuleType)� text_typeN� default_etree�MethodDispatcher�isSurrogatePair�surrogatePairToCodepoint�moduleFactoryFactory�supports_lone_surrogatesz"\uD800"z u"\uD800"FTc@s"eZdZdZddd�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. �cCsbg}|D]B\}}t|ttttf�r<|D]}|�||f�q&q|�||f�qt�||�d|_dS�N) � isinstance�list�tuple� frozenset�set�append�dict�__init__�default)�self�itemsZ _dictEntries�name�value�itemr r �?/usr/lib/python3.8/site-packages/pip/_vendor/html5lib/_utils.pyr1s  zMethodDispatcher.__init__cCst�|||j�Sr)r�getr)r�keyr r r� __getitem__@szMethodDispatcher.__getitem__N)r )�__name__� __module__� __qualname__�__doc__rr r r r rr$s cCsLt|�dkoJt|d�dkoJt|d�dkoJt|d�dkoJt|d�dkS)N�r��i�����i��)�len�ord)�datar r rr Gs ����cCs,dt|d�ddt|d�d}|S)Nirr&ir'r()r*)r+Zchar_valr r rr Ms�csi���fdd�}|S)Ncs�ttjtd��rd|j}n d|j}t|���}z�|||WStk r�t|�}�|f|�|�}|j�|�d�kr�i�|<d�|kr�i�||<d�||kr�i�|||<|�|||<|YSXdS)N�z _%s_factorys _%s_factoryr�args�kwargs) rrr!�typerr�KeyError�__dict__�update)Z baseModuler-r.rZ kwargs_tuple�modZobjs��factoryZ moduleCacher r� moduleFactoryYs$      z+moduleFactoryFactory..moduleFactoryr )r5r6r r4rr Vscsi���fdd�}|S)Ncs2t|�t|���f}|�kr*�||��|<�|Sr)rr)r-r.r��cache�funcr r�wrappedvszmemoize..wrappedr )r9r:r r7r�memoizessr;)Z __future__rrr�typesrZpip._vendor.sixrZxml.etree.cElementTreeZetreeZ cElementTreer� ImportErrorZxml.etree.ElementTreeZ ElementTree�__all__�evalZ_xrr rrr r r r;r r r r�s0  �   #