a
    ¢ÀiC  ã                   @   sH  d dl mZmZmZ d dlmZ zd dlmZ W n eyN   d dl	mZ Y n0 d dl
mZmZ erxd dlm  mZ n<zd dlm  mZ W n$ ey²   d dlm  mZ Y n0 g d¢Zz,edƒZeeeƒsæedƒZeeeƒsæJ ‚W n eyþ   d	ZY n0 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d
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   sv   g }|D ]B\}}t |ttttfƒr<|D ]}| ||f¡ q&q| ||f¡ qt | |¡ t| ƒt|ƒkslJ ‚d | _	d S ©N)
Ú
isinstanceÚlistÚtupleÚ	frozensetÚsetÚappendÚdictÚ__init__ÚlenÚdefault)ÚselfÚitemsÚ_dictEntriesÚnameÚvalueÚitemr   r   ú]/home/ec2-user/npost_license/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_utils.pyr   9   s    zMethodDispatcher.__init__c                 C   s   t  | || j¡S r   )r   Úgetr   ©r   Úkeyr   r   r!   Ú__getitem__E   s    zMethodDispatcher.__getitem__Nc                 C   s
   t || ƒS r   )ÚBoundMethodDispatcher)r   ÚinstanceÚownerr   r   r!   Ú__get__H   s    zMethodDispatcher.__get__)r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r%   r)   r   r   r   r!   r
   ,   s   
r
   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 r   )r'   Ú
dispatcher)r   r'   r.   r   r   r!   r   N   s    zBoundMethodDispatcher.__init__c                 C   s   | j |  | j¡S r   )r.   r)   r'   r#   r   r   r!   r%   R   s    z!BoundMethodDispatcher.__getitem__c                 C   s   || j v r| | S |S d S r   ©r.   )r   r$   r   r   r   r!   r"   W   s    
zBoundMethodDispatcher.getc                 C   s
   t | jƒS r   )Úiterr.   ©r   r   r   r!   Ú__iter__]   s    zBoundMethodDispatcher.__iter__c                 C   s
   t | jƒS r   )r   r.   r1   r   r   r!   Ú__len__`   s    zBoundMethodDispatcher.__len__c                 C   s
   || j v S r   r/   r#   r   r   r!   Ú__contains__c   s    z"BoundMethodDispatcher.__contains__N)
r*   r+   r,   r-   r   r%   r"   r2   r3   r4   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ÿß  )r   Úord)Údatar   r   r!   r   j   s    ÿÿþþr   c                 C   s,   dt | d ƒd d  t | d ƒd  }|S )Ni   r   r6   i   r7   r8   )r9   )r:   Úchar_valr   r   r!   r   p   s    ÿr   c                    s   i ‰‡ ‡fdd„}|S )Nc                    sâ   t tjtdƒƒrd| j }n
d| j }t| ¡ ƒ}zˆ| | | W S  tyÜ   t|ƒ}ˆ | g|¢R i |¤Ž}|j |¡ dˆvrŒi ˆ|< dˆ| vr¤i ˆ| |< dˆ| | vrÄi ˆ| | |< |ˆ| | |< | Y S 0 d S )NÚ z_%s_factorys   _%s_factoryr   ÚargsÚkwargs)	r   r   r*   Útyper   r   ÚKeyErrorÚ__dict__Úupdate)Ú
baseModuler=   r>   r   Úkwargs_tupleÚmodÚobjs©ÚfactoryÚmoduleCacher   r!   ÚmoduleFactory|   s$    
z+moduleFactoryFactory.<locals>.moduleFactoryr   )rH   rJ   r   rG   r!   r   y   s    r   c                    s   i ‰ ‡ ‡fdd„}|S )Nc                     s6   t | ƒt | ¡ ƒf}|ˆ vr.ˆ| i |¤Žˆ |< ˆ | S r   )r   r   )r=   r>   r$   ©ÚcacheÚfuncr   r!   Úwrapped™   s    zmemoize.<locals>.wrappedr   )rM   rN   r   rK   r!   Úmemoize–   s    rO   ) Ú
__future__r   r   r   Útypesr   Úcollections.abcr   ÚImportErrorÚcollectionsZpip._vendor.sixr   r   Úxml.etree.ElementTreeÚetreeÚElementTreer	   Zxml.etree.cElementTreeZcElementTreeÚ__all__ÚevalÚ_xr   Ú	Exceptionr   r   r
   r&   r   r   r   rO   r   r   r   r!   Ú<module>   s6   

 	