
    V=^7                     l   d dl mZmZmZ d dlmZ 	 d dlmZ d dl
mZmZ er
d dlmc mZ n
	 d dlmc mZ g dZ	  ed      Z eee      s ed      Z eee      sJ d	Z G d de      Z G d de      Zd Zd Zd Zd Zy# e$ r	 d dl	mZ Y yw xY w# e$ r d dlmc mZ Y ow xY w# e$ r d
ZY Qw xY w)    )absolute_importdivisionunicode_literals)
ModuleType)Mapping)	text_typePY3N)default_etreeMethodDispatcherisSurrogatePairsurrogatePairToCodepointmoduleFactoryFactorysupports_lone_surrogatesz"\uD800"z	u"\uD800"TFc                   &    e Zd ZdZddZd ZddZy)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                 $   g }|D ]S  \  }}t        |t        t        t        t        f      r|D ]  }|j                  ||f        A|j                  ||f       U t        j                  | |       t        |       t        |      k(  sJ d | _	        y N)

isinstancelisttuple	frozensetsetappenddict__init__lendefault)selfitems_dictEntriesnamevalueitems         1/usr/lib/python3/dist-packages/html5lib/_utils.pyr   zMethodDispatcher.__init__9   s      	3KD%$ui =>  7D ''u67 ##T5M2	3 	dL)4yC----    c                 D    t         j                  | || j                        S r   )r   getr   r   keys     r#   __getitem__zMethodDispatcher.__getitem__E   s    xxc4<<00r$   Nc                     t        ||       S r   )BoundMethodDispatcher)r   instanceowners      r#   __get__zMethodDispatcher.__get__H   s    $Xt44r$   ) r   )__name__
__module____qualname____doc__r   r)   r.   r/   r$   r#   r   r   ,   s    

15r$   r   c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	r+   zAWraps a MethodDispatcher, binding its return values to `instance`c                      || _         || _        y r   )r,   
dispatcher)r   r,   r6   s      r#   r   zBoundMethodDispatcher.__init__N   s     $r$   c                 R    | j                   |   j                  | j                        S r   )r6   r.   r,   r'   s     r#   r)   z!BoundMethodDispatcher.__getitem__R   s"     s#++DMM::r$   c                 ,    || j                   v r| |   S |S r   r6   )r   r(   r   s      r#   r&   zBoundMethodDispatcher.getW   s    $//!9Nr$   c                 ,    t        | j                        S r   )iterr6   r   s    r#   __iter__zBoundMethodDispatcher.__iter__]   s    DOO$$r$   c                 ,    t        | j                        S r   )r   r6   r<   s    r#   __len__zBoundMethodDispatcher.__len__`   s    4??##r$   c                     || j                   v S r   r9   r'   s     r#   __contains__z"BoundMethodDispatcher.__contains__c   s    doo%%r$   N)
r0   r1   r2   r3   r   r)   r&   r=   r?   rA   r/   r$   r#   r+   r+   L   s#    K%;
%$&r$   r+   c                     t        |       dk(  xrJ t        | d         dk\  xr7 t        | d         dk  xr$ t        | d         dk\  xr t        | d         dk  S )N   r      i        i  )r   ord)datas    r#   r   r   j   sf    IN >QLF">'*47|v'=>QLF">'*47|v'=?r$   c                 X    dt        | d         dz
  dz  z   t        | d         dz
  z   }|S )Ni   r   rD   i   rE   rF   )rG   )rH   char_vals     r#   r   r   p   s8    3tAw<&0E99T!W&(HOr$   c                      i  fd}|S )Nc                    t        t        j                  t        d            rd| j                  z  }nd| j                  z  }t	        |j                               }	 |   |   |   S # t        $ ro t        |      } | g|i |}|j                  j                  |       dvri |<   d|   vri |   |<   d|   |   vri |   |   |<   ||   |   |<   |cY S w xY w)N z_%s_factorys   _%s_factoryr    argskwargs)	r   r   r0   typer   r   KeyError__dict__update)	
baseModulerN   rO   r    kwargs_tuplemodobjsfactorymoduleCaches	          r#   moduleFactoryz+moduleFactoryFactory.<locals>.moduleFactory|   s   j))484 :#6#66D!J$7$77DV\\^,	t$T*<88 	T"C:777DLL%[($&D![..*,D!$'{40668:D!$'547Kd#L1J	s   
A) )A5C! C!r/   )rX   rZ   rY   s   ` @r#   r   r   y   s    K. r$   c                      i  fd}|S )Nc                  t    t        |       t        |j                               f}|vr | i ||<   |   S r   )r   r   )rN   rO   r(   cachefuncs      r#   wrappedzmemoize.<locals>.wrapped   sA    T{E&,,.12et.v.E#JSzr$   r/   )r^   r_   r]   s   ` @r#   memoizer`      s    E Nr$   ) 
__future__r   r   r   typesr   collections.abcr   ImportErrorcollectionssixr   r	   xml.etree.ElementTreeetreeElementTreer
   xml.etree.cElementTreecElementTree__all__eval_xr   r   	Exceptionr   r   r+   r   r   r   r`   r/   r$   r#   <module>rp      s    B B $' 11666
'	$	k	Bb)$,"i(((  $5t 5@&G &<?:	_  $#$  6556*  %$%s3   B 	B $B) BBB&%B&)B32B3