o
    ؁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y'   d dl	mZ Y nw d dl
mZmZ er<d dlm  mZ nzd dlm  mZ W n eyY   d dlm  mZ Y nw g dZzedZeeessedZeeessJ W n ey   d	ZY nw 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 ]!\}}t |ttttfr|D ]	}|||f qq|||f qt| | t| t|ks6J d | _	d S N)

isinstancelisttuple	frozensetsetappenddict__init__lendefault)selfitems_dictEntriesnamevalueitemr   r   \/home/test-dt/pcm-url-check/venv/lib/python3.10/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      
zMethodDispatcher.__get__)r   r   )__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 r   r/   )r   r$   r   r   r   r!   r"   W   s   
zBoundMethodDispatcher.getc                 C   
   t | jS r   )iterr/   r   r   r   r!   __iter__]   r*   zBoundMethodDispatcher.__iter__c                 C   r1   r   )r   r/   r3   r   r   r!   __len__`   r*   zBoundMethodDispatcher.__len__c                 C   s
   || j v S r   r0   r#   r   r   r!   __contains__c   r*   z"BoundMethodDispatcher.__contains__N)
r+   r,   r-   r.   r   r%   r"   r4   r5   r6   r   r   r   r!   r&   L   s    r&   c                 C   sL   t | dko%t| d dko%t| d dko%t| d dko%t| 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   r8   i   r9   r:   )r;   )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yn   t|} | g|R i |}|j| dvrFi |< d| vrRi | |< d| | vrbi | | |< || | |< | Y S w )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   )rJ   rL   r   rI   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   )rO   rP   r   rM   r!   memoize   s   rQ   ) 
__future__r   r   r   typesr   collections.abcr   ImportErrorcollectionspip._vendor.sixr   r   xml.etree.ElementTreeetreeElementTreer	   xml.etree.cElementTreecElementTree__all__eval_xr   	Exceptionr   r   r
   r&   r   r   r   rQ   r   r   r   r!   <module>   s@    
 	