3
ôÁgC  ã               @   sD  d dl mZmZmZ d dlmZ yd dlmZ W n  ek
rP   d dl	mZ Y nX d dl
mZmZ ertd dljjZn2yd dljjZW n  ek
r¤   d dljjZY nX dddd	d
dgZy,edƒZeeeƒsàedƒZeeeƒsàt‚W n ek
rú   dZY nX dZG dd„ deƒZG dd„ deƒZdd„ Zdd	„ Zdd
„ Zdd„ Z dS )é    )Úabsolute_importÚdivisionÚunicode_literals)Ú
ModuleType)ÚMapping)Ú	text_typeÚPY3NÚdefault_etreeÚMethodDispatcherÚisSurrogatePairÚsurrogatePairToCodepointÚmoduleFactoryFactoryÚsupports_lone_surrogatesz"\uD800"z	u"\uD800"FTc               @   s.   e Zd ZdZf fdd„Zdd„ Zd	dd„ZdS )
r
   ap  Dict 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.
    c             C   s~   g }xN|D ]F\}}t |ttttfƒrBx*|D ]}|j||fƒ q*W q
|j||fƒ q
W tj| |ƒ t| ƒt|ƒkstt	‚d | _
d S )N)Ú
isinstanceÚlistÚtupleÚ	frozensetÚsetÚappendÚdictÚ__init__ÚlenÚAssertionErrorÚdefault)ÚselfÚitemsZ_dictEntriesÚnameÚvalueÚitem© r   úY/var/www/tester-filtro-web/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_utils.pyr   9   s    
zMethodDispatcher.__init__c             C   s   t j| || jƒS )N)r   Úgetr   )r   Úkeyr   r   r    Ú__getitem__E   s    zMethodDispatcher.__getitem__Nc             C   s
   t || ƒS )N)ÚBoundMethodDispatcher)r   ÚinstanceÚownerr   r   r    Ú__get__H   s    zMethodDispatcher.__get__)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r#   r'   r   r   r   r    r
   ,   s   c               @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )r$   zAWraps a MethodDispatcher, binding its return values to `instance`c             C   s   || _ || _d S )N)r%   Ú
dispatcher)r   r%   r,   r   r   r    r   N   s    zBoundMethodDispatcher.__init__c             C   s   | j | j| jƒS )N)r,   r'   r%   )r   r"   r   r   r    r#   R   s    z!BoundMethodDispatcher.__getitem__c             C   s   || j kr| | S |S d S )N)r,   )r   r"   r   r   r   r    r!   W   s    
zBoundMethodDispatcher.getc             C   s
   t | jƒS )N)Úiterr,   )r   r   r   r    Ú__iter__]   s    zBoundMethodDispatcher.__iter__c             C   s
   t | jƒS )N)r   r,   )r   r   r   r    Ú__len__`   s    zBoundMethodDispatcher.__len__c             C   s
   || j kS )N)r,   )r   r"   r   r   r    Ú__contains__c   s    z"BoundMethodDispatcher.__contains__N)
r(   r)   r*   r+   r   r#   r!   r.   r/   r0   r   r   r   r    r$   L   s   r$   c             C   sL   t | ƒdkoJt| d ƒdkoJt| d ƒdkoJt| d ƒdkoJt| d ƒdkS )Né   r   i Ø  iÿÛ  é   i Ü  iÿß  )r   Úord)Údatar   r   r    r   j   s     c             C   s,   dt | d ƒd d  t | d ƒd  }|S )Ni   r   i Ø  i   r2   i Ü  )r3   )r4   Úchar_valr   r   r    r   p   s    c                s   i ‰‡ ‡fdd„}|S )Nc                sØ   t tjtdƒƒrd| j }n
d| j }t|jƒ ƒ}yˆ| | | S  tk
rÒ   t|ƒ}ˆ | f|ž|Ž}|jj|ƒ dˆkr†i ˆ|< dˆ| krži ˆ| |< dˆ| | kr¾i ˆ| | |< |ˆ| | |< |S X d S )NÚ z_%s_factorys   _%s_factoryr   ÚargsÚkwargs)	r   r   r(   Útyper   r   ÚKeyErrorÚ__dict__Úupdate)Z
baseModuler7   r8   r   Zkwargs_tupleÚmodZobjs)ÚfactoryÚmoduleCacher   r    ÚmoduleFactory|   s$    
z+moduleFactoryFactory.<locals>.moduleFactoryr   )r>   r@   r   )r>   r?   r    r   y   s    c                s   i ‰ ‡ ‡fdd„}|S )Nc                 s2   t | ƒt |jƒ ƒf}|ˆ kr*ˆ| |Žˆ |< ˆ | S )N)r   r   )r7   r8   r"   )ÚcacheÚfuncr   r    Úwrapped™   s    zmemoize.<locals>.wrappedr   )rB   rC   r   )rA   rB   r    Úmemoize–   s    rD   )!Ú
__future__r   r   r   Útypesr   Úcollections.abcr   ÚImportErrorÚcollectionsÚpip._vendor.sixr   r   Úxml.etree.ElementTreeÚetreeÚElementTreer	   Zxml.etree.cElementTreeZcElementTreeÚ__all__ÚevalZ_xr   r   Ú	Exceptionr   r   r
   r$   r   r   r   rD   r   r   r   r    Ú<module>   s:   	

 	