B
    18\              	   @   s  d ddddddddg	Z d	d
lZd	dlmZmZ d	dlmZ	 d	d
l
Zd	d
lZd	dlmZ d	dlmZmZmZ d	dlmZ yd	dlmZ W n ek
r   Y nX eje yd	dlm Z  W n ek
r   Y nX dd Z!G dd dej"Z#G dd dej$Z%G dd dej&Z'G dd de(Z)G dd de*Z+yd	dlm+Z+ W n ek
rR   Y nX i Z,dd
d
dd dZ-d!d" Z.yd	d#lm.Z. W n ek
r   Y nX G d$d de*Z/G d%d dej0Z1G d&d dej0Z2G d'd dejZ3G d(d dej4Z5d
S ))dequedefaultdict
namedtupleUserDictUserList
UserStringCounterOrderedDictChainMap    N)
itemgettereq)	iskeyword)proxy)repeatchainstarmap)recursive_repr)r   )r   c             C   sR   | t jkr:tt | }dd l}|jdtdd |t | < |S tdtd| d S )Nr
   zUsing or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working   )
stacklevelzmodule z has no attribute )	_collections_abc__all__getattrwarningswarnDeprecationWarningglobalsAttributeError__name__)nameobjr    r    X/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/collections/__init__.py__getattr__*   s    



r"   c               @   s   e Zd Zdd ZdS )_OrderedDictKeysViewc             c   s   t | jE d H  d S )N)reversed_mapping)selfr    r    r!   __reversed__?   s    z!_OrderedDictKeysView.__reversed__N)r   
__module____qualname__r'   r    r    r    r!   r#   =   s   r#   c               @   s   e Zd Zdd ZdS )_OrderedDictItemsViewc             c   s(   x"t | jD ]}|| j| fV  qW d S )N)r$   r%   )r&   keyr    r    r!   r'   D   s    z"_OrderedDictItemsView.__reversed__N)r   r(   r)   r'   r    r    r    r!   r*   B   s   r*   c               @   s   e Zd Zdd ZdS )_OrderedDictValuesViewc             c   s$   xt | jD ]}| j| V  qW d S )N)r$   r%   )r&   r+   r    r    r!   r'   J   s    z#_OrderedDictValuesView.__reversed__N)r   r(   r)   r'   r    r    r    r!   r,   H   s   r,   c               @   s   e Zd ZdZdS )_Link)prevnextr+   __weakref__N)r   r(   r)   	__slots__r    r    r    r!   r-   N   s   r-   c               @   s   e Zd Zdd ZejeefddZejfddZdd Z	d	d
 Z
dd Zd)ddZd*ddZdd Zejj ZZdd Zdd Zdd ZejjZe ZefddZd+ddZe dd  Zd!d" Zd#d$ Zed,d%d&Z d'd( Z!dS )-r   c              O   s   | st d| ^}} t| dkr0t dt|  y
|j W n> tk
rx   t |_t|j |_}| |_|_i |_	Y nX |j
| | d S )Nz?descriptor '__init__' of 'OrderedDict' object needs an argument   z$expected at most 1 arguments, got %d)	TypeErrorlen_OrderedDict__rootr   r-   _OrderedDict__hardroot_proxyr.   r/   _OrderedDict__map_OrderedDict__update)argskwdsr&   rootr    r    r!   __init__`   s    
zOrderedDict.__init__c       	      C   sZ   || krJ|  | j |< }| j}|j}|||  |_|_|_||_|||_|| || d S )N)r8   r5   r.   r/   r+   )	r&   r+   valueZdict_setitemr   ZLinklinkr<   lastr    r    r!   __setitem__s   s    
zOrderedDict.__setitem__c             C   s>   || | | j |}|j}|j}||_||_d |_d |_d S )N)r8   popr.   r/   )r&   r+   Zdict_delitemr?   	link_prev	link_nextr    r    r!   __delitem__   s    
zOrderedDict.__delitem__c             c   s,   | j }|j}x||k	r&|jV  |j}qW d S )N)r5   r/   r+   )r&   r<   currr    r    r!   __iter__   s
    
zOrderedDict.__iter__c             c   s,   | j }|j}x||k	r&|jV  |j}qW d S )N)r5   r.   r+   )r&   r<   rF   r    r    r!   r'      s
    
zOrderedDict.__reversed__c             C   s*   | j }| |_|_| j  t|  d S )N)r5   r.   r/   r8   cleardict)r&   r<   r    r    r!   rH      s    
zOrderedDict.clearTc             C   sj   | st d| j}|r0|j}|j}||_||_n|j}|j}||_||_|j}| j|= t| |}||fS )Nzdictionary is empty)KeyErrorr5   r.   r/   r+   r8   rI   rB   )r&   r@   r<   r?   rC   rD   r+   r>   r    r    r!   popitem   s     zOrderedDict.popitemc       	      C   st   | j | }|j}|j}|j}||_||_| j}|rR|j}||_||_||_||_n|j}||_||_||_||_d S )N)r8   r.   r/   r5   )	r&   r+   r@   r?   rC   rD   Z	soft_linkr<   Zfirstr    r    r!   move_to_end   s$    
zOrderedDict.move_to_endc             C   sV   t j}t| d }|| j}||| jd 7 }||| j| 7 }||| j| 7 }|S )Nr2   r   )_sys	getsizeofr4   __dict__r8   r6   r5   )r&   sizeofnsizer    r    r!   
__sizeof__   s    
zOrderedDict.__sizeof__c             C   s   t | S )N)r#   )r&   r    r    r!   keys   s    zOrderedDict.keysc             C   s   t | S )N)r*   )r&   r    r    r!   items   s    zOrderedDict.itemsc             C   s   t | S )N)r,   )r&   r    r    r!   values   s    zOrderedDict.valuesc             C   s0   || kr| | }| |= |S || j kr,t||S )N)_OrderedDict__markerrJ   )r&   r+   defaultresultr    r    r!   rB      s    
zOrderedDict.popNc             C   s   || kr| | S || |< |S )Nr    )r&   r+   rX   r    r    r!   
setdefault   s    zOrderedDict.setdefaultc             C   s*   | sd| j jf S d| j jt|  f S )Nz%s()z%s(%r))	__class__r   listrU   )r&   r    r    r!   __repr__
  s    zOrderedDict.__repr__c             C   sH   t |  }xt t D ]}||d  qW | jd|p8d d t|  fS )Nr    )varscopyr   rB   r[   iterrU   )r&   Z	inst_dictkr    r    r!   
__reduce__  s    zOrderedDict.__reduce__c             C   s
   |  | S )N)r[   )r&   r    r    r!   r_     s    zOrderedDict.copyc             C   s    |  }x|D ]}|||< qW |S )Nr    )clsiterabler>   r&   r+   r    r    r!   fromkeys  s    
zOrderedDict.fromkeysc             C   s2   t |tr&t| |o$ttt| |S t| |S )N)
isinstancer   rI   __eq__allmap_eq)r&   otherr    r    r!   rg   %  s    
zOrderedDict.__eq__)T)T)N)N)"r   r(   r)   r=   rI   rA   r7   r-   rE   rG   r'   rH   rK   rL   rS   r   MutableMappingupdater9   rT   rU   rV   __ne__objectrW   rB   rZ   _recursive_reprr]   rb   r_   classmethodre   rg   r    r    r    r!   r   Q   s.   		

	

)r   F)renamedefaultsmodulec               s  t trdd ttttt| } |rt }xNt	D ]B\}}|
 rtt|st|dst||krd| |< || qJW xR| g D ]D}t|tk	rtd|
 std|t|rtd|qW t }xND ]F}|dr|std|||kr,td||| qW i }|d k	rt|}t|tkrjtd	tttttt|}tttjttd
ddd }	dddd D  d tjt d|	 d|	 d}
d|  d}t|
| |d }d|  d|	 d|_|d k	r6||_t fdd}d|  d|j_fdd}d |  d!|_fd"d#}d$d% }d&d' }x.||j||||fD ]}|  d(|j |_qW |  d|	 dd)|||||||d*
}t }xlt	D ]`\}}y|| \}}W n4 t!k
r@   t"|}d+| }||f||< Y nX t#||d,||< qW t| tf|}|d kryt$dj%&d-d.}W n t'tfk
r   Y nX |d k	r||_(|S )/N, _z*Type names and field names must be stringsz6Type names and field names must be valid identifiers: z0Type names and field names cannot be a keyword: z-Field names cannot start with an underscore: z"Encountered duplicate field name: z(Got more default values than field names' r2   (z, c             s   s   | ]}| d V  qdS )z=%rNr    ).0r   r    r    r!   	<genexpr>  s    znamedtuple.<locals>.<genexpr>)zdef __new__(_cls, z): return _tuple_new(_cls, (z))Znamedtuple_)Z
_tuple_newr   __new__zCreate new instance of c                s2   | |} |kr.t d dt| |S )Nz	Expected z arguments, got )r3   r4   )rc   rd   rY   )_len
num_fields	tuple_newr    r!   _make  s    
znamedtuple.<locals>._makezMake a new z# object from a sequence or iterablec                s.   |  t|j | }|r*tdt||S )NzGot unexpected field names: )r   ri   rB   
ValueErrorr\   )Z_selfr;   rY   )field_namesr    r!   _replace  s    znamedtuple.<locals>._replacezReturn a new z2 object replacing specified fields with new valuesc                s   | j j |   S )N)r[   r   )r&   )repr_fmtr    r!   r]     s    znamedtuple.<locals>.__repr__c             S   s   t t| j| S )N)r   zip_fields)r&   r    r    r!   _asdict  s    znamedtuple.<locals>._asdictc             S   s   t | S )N)tuple)r&   r    r    r!   __getnewargs__  s    z"namedtuple.<locals>.__getnewargs__.r    )
__doc__r1   r   Z_fields_defaultsr   r   r   r]   r   r   zAlias for field number )docr   __main__))rf   strreplacesplitr\   ri   rM   internset	enumerateisidentifier
_iskeyword
startswithaddtyper3   r   r   r4   rI   r$   r   reprjoinr   execr   __defaults__rq   __func__r   r)   _nt_itemgettersrJ   _itemgetterproperty	_getframe	f_globalsgetr   r(   )Ztypenamer   rr   rs   rt   seenindexr   Zfield_defaultsZarg_lists	namespacer   r   r   r]   r   r   methodZclass_namespacecacheZitemgetter_objectr   rY   r    )r   r   r   r   r   r!   r   <  s    










c             C   s*   | j }x|D ]}||dd | |< qW d S )Nr
   r2   )r   )mappingrd   Zmapping_getelemr    r    r!   _count_elements  s    
r   )r   c                   s   e Zd Z fddZdd Zd.ddZdd	 Zed/d
dZ fddZ	dd Z
dd Zdd Z fddZdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Z  ZS )0r   c                 sN   | st d| ^}} t| dkr0t dt|  tt|  |j| | d S )Nz;descriptor '__init__' of 'Counter' object needs an argumentr2   z$expected at most 1 arguments, got %d)r3   r4   superr   r=   rm   )r:   r;   r&   )r[   r    r!   r=   $  s    zCounter.__init__c             C   s   dS )Nr
   r    )r&   r+   r    r    r!   __missing__8  s    zCounter.__missing__Nc             C   s6   |d krt |  tdddS tj||  tddS )Nr2   T)r+   reverse)r+   )sortedrU   r   _heapqZnlargest)r&   rQ   r    r    r!   most_common=  s    	zCounter.most_commonc             C   s   t tt|  S )N)_chainZfrom_iterable_starmap_repeatrU   )r&   r    r    r!   elementsJ  s    zCounter.elementsc             C   s   t dd S )Nz@Counter.fromkeys() is undefined.  Use Counter(iterable) instead.)NotImplementedError)rc   rd   vr    r    r!   re   b  s    zCounter.fromkeysc                 s   | st d| ^}} t| dkr0t dt|  | r<| d nd }|d k	rt|tjr|r|j}x8| D ]\}}|||d ||< qhW qtt|	| n
t
|| |r|	| d S )Nz9descriptor 'update' of 'Counter' object needs an argumentr2   z$expected at most 1 arguments, got %dr
   )r3   r4   rf   r   Mappingr   rU   r   r   rm   r   )r:   r;   r&   rd   self_getr   count)r[   r    r!   rm   i  s     
zCounter.updatec              O   s   | st d| ^}} t| dkr0t dt|  | r<| d nd }|d k	r|j}t|tjrxH| D ]\}}||d| ||< qdW n x|D ]}||dd ||< qW |r|| d S )Nz;descriptor 'subtract' of 'Counter' object needs an argumentr2   z$expected at most 1 arguments, got %dr
   )r3   r4   r   rf   r   r   rU   subtract)r:   r;   r&   rd   r   r   r   r    r    r!   r     s    
zCounter.subtractc             C   s
   |  | S )N)r[   )r&   r    r    r!   r_     s    zCounter.copyc             C   s   | j t| ffS )N)r[   rI   )r&   r    r    r!   rb     s    zCounter.__reduce__c                s   || krt  | d S )N)r   rE   )r&   r   )r[   r    r!   rE     s    zCounter.__delitem__c             C   s`   | sd| j j S y&dtdj|  }d| j j|f S  tk
rZ   d| j jt| S X d S )Nz%s()z, z%r: %rz%s({%s})z
{0}({1!r}))	r[   r   r   ri   __mod__r   r3   formatrI   )r&   rU   r    r    r!   r]     s    zCounter.__repr__c             C   sx   t |tstS t }x0|  D ]$\}}|||  }|dkr|||< qW x,| D ] \}}|| krP|dkrP|||< qPW |S )Nr
   )rf   r   NotImplementedrU   )r&   rk   rY   r   r   newcountr    r    r!   __add__  s    
zCounter.__add__c             C   s|   t |tstS t }x0|  D ]$\}}|||  }|dkr|||< qW x0| D ]$\}}|| krP|dk rPd| ||< qPW |S )Nr
   )rf   r   r   rU   )r&   rk   rY   r   r   r   r    r    r!   __sub__  s    
zCounter.__sub__c             C   s   t |tstS t }x<|  D ]0\}}|| }||k r:|n|}|dkr|||< qW x,| D ] \}}|| kr\|dkr\|||< q\W |S )Nr
   )rf   r   r   rU   )r&   rk   rY   r   r   other_countr   r    r    r!   __or__  s    
zCounter.__or__c             C   sV   t |tstS t }x<|  D ]0\}}|| }||k r:|n|}|dkr|||< qW |S )Nr
   )rf   r   r   rU   )r&   rk   rY   r   r   r   r   r    r    r!   __and__  s    
zCounter.__and__c             C   s0   t  }x$|  D ]\}}|dkr|||< qW |S )Nr
   )r   rU   )r&   rY   r   r   r    r    r!   __pos__  s
    zCounter.__pos__c             C   s4   t  }x(|  D ]\}}|dk rd| ||< qW |S )Nr
   )r   rU   )r&   rY   r   r   r    r    r!   __neg__%  s
    zCounter.__neg__c             C   s*   dd |   D }x|D ]
}| |= qW | S )Nc             S   s   g | ]\}}|d ks|qS )r
   r    )r|   r   r   r    r    r!   
<listcomp>2  s    z*Counter._keep_positive.<locals>.<listcomp>)rU   )r&   Znonpositiver   r    r    r!   _keep_positive0  s    

zCounter._keep_positivec             C   s.   x$|  D ]\}}| |  |7  < q
W |  S )N)rU   r   )r&   rk   r   r   r    r    r!   __iadd__7  s    	zCounter.__iadd__c             C   s.   x$|  D ]\}}| |  |8  < q
W |  S )N)rU   r   )r&   rk   r   r   r    r    r!   __isub__D  s    	zCounter.__isub__c             C   s6   x,|  D ] \}}| | }||kr
|| |< q
W |  S )N)rU   r   )r&   rk   r   r   r   r    r    r!   __ior__Q  s
    	zCounter.__ior__c             C   s6   x,|   D ] \}}|| }||k r
|| |< q
W |  S )N)rU   r   )r&   rk   r   r   r   r    r    r!   __iand__`  s
    	zCounter.__iand__)N)N)r   r(   r)   r=   r   r   r   rq   re   rm   r   r_   rb   rE   r]   r   r   r   r   r   r   r   r   r   r   r   __classcell__r    r    )r[   r!   r     s.   3
("c               @   s   e Zd Zdd Zdd Zdd Zd&dd	Zd
d Zdd Zdd Z	dd Z
e dd Zedd Zdd ZeZd'ddZedd Zdd Zdd Zd d! Zd"d# Zd$d% ZdS )(r	   c             G   s   t |pi g| _d S )N)r\   maps)r&   r   r    r    r!   r=     s    zChainMap.__init__c             C   s   t |d S )N)rJ   )r&   r+   r    r    r!   r     s    zChainMap.__missing__c          	   C   s8   x,| j D ]"}y|| S  tk
r(   Y qX qW | |S )N)r   rJ   r   )r&   r+   r   r    r    r!   __getitem__  s    
zChainMap.__getitem__Nc             C   s   || kr| | S |S )Nr    )r&   r+   rX   r    r    r!   r     s    zChainMap.getc             C   s   t t j| j S )N)r4   r   unionr   )r&   r    r    r!   __len__  s    zChainMap.__len__c             C   s*   i }xt | jD ]}|| qW t|S )N)r$   r   rm   r`   )r&   dr   r    r    r!   rG     s    zChainMap.__iter__c                s   t  fdd| jD S )Nc             3   s   | ]} |kV  qd S )Nr    )r|   m)r+   r    r!   r}     s    z(ChainMap.__contains__.<locals>.<genexpr>)anyr   )r&   r+   r    )r+   r!   __contains__  s    zChainMap.__contains__c             C   s
   t | jS )N)r   r   )r&   r    r    r!   __bool__  s    zChainMap.__bool__c             C   s   d | dtt| jS )Nz{0.__class__.__name__}({1})z, )r   r   ri   r   r   )r&   r    r    r!   r]     s    zChainMap.__repr__c             G   s   | t j|f| S )N)rI   re   )rc   rd   r:   r    r    r!   re     s    zChainMap.fromkeysc             C   s$   | j | jd  f| jdd   S )Nr
   r2   )r[   r   r_   )r&   r    r    r!   r_     s    zChainMap.copyc             C   s   |d kri }| j |f| j S )N)r[   r   )r&   r   r    r    r!   	new_child  s    zChainMap.new_childc             C   s   | j | jdd   S )Nr2   )r[   r   )r&   r    r    r!   parents  s    zChainMap.parentsc             C   s   || j d |< d S )Nr
   )r   )r&   r+   r>   r    r    r!   rA     s    zChainMap.__setitem__c             C   s8   y| j d |= W n" tk
r2   td|Y nX d S )Nr
   z(Key not found in the first mapping: {!r})r   rJ   r   )r&   r+   r    r    r!   rE     s    zChainMap.__delitem__c             C   s0   y| j d  S  tk
r*   tdY nX d S )Nr
   z#No keys found in the first mapping.)r   rK   rJ   )r&   r    r    r!   rK     s    zChainMap.popitemc             G   s>   y| j d j|f| S  tk
r8   td|Y nX d S )Nr
   z(Key not found in the first mapping: {!r})r   rB   rJ   r   )r&   r+   r:   r    r    r!   rB     s    zChainMap.popc             C   s   | j d   d S )Nr
   )r   rH   )r&   r    r    r!   rH     s    zChainMap.clear)N)N)r   r(   r)   r=   r   r   r   r   rG   r   r   rp   r]   rq   re   r_   Z__copy__r   r   r   rA   rE   rK   rB   rH   r    r    r    r!   r	   t  s&   

c               @   sb   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZedddZdS )r   c              O   s   | st d| ^}} t| dkr0t dt|  | r>| d }n0d|krj|d}dd l}|jdtdd nd }i |_|d k	r|| t|r|| d S )	Nz<descriptor '__init__' of 'UserDict' object needs an argumentr2   z$expected at most 1 arguments, got %dr
   rI   z0Passing 'dict' as keyword argument is deprecatedr   )r   )r3   r4   rB   r   r   r   datarm   )r:   kwargsr&   rI   r   r    r    r!   r=     s$    


zUserDict.__init__c             C   s
   t | jS )N)r4   r   )r&   r    r    r!   r         zUserDict.__len__c             C   s:   || j kr| j | S t| jdr.| j| |S t|d S )Nr   )r   hasattrr[   r   rJ   )r&   r+   r    r    r!   r     s
    

zUserDict.__getitem__c             C   s   || j |< d S )N)r   )r&   r+   itemr    r    r!   rA     r   zUserDict.__setitem__c             C   s   | j |= d S )N)r   )r&   r+   r    r    r!   rE     r   zUserDict.__delitem__c             C   s
   t | jS )N)r`   r   )r&   r    r    r!   rG     s    zUserDict.__iter__c             C   s
   || j kS )N)r   )r&   r+   r    r    r!   r     s    zUserDict.__contains__c             C   s
   t | jS )N)r   r   )r&   r    r    r!   r]     r   zUserDict.__repr__c             C   sR   | j tkrt| j S dd l}| j}zi | _|| }W d || _X ||  |S )Nr
   )r[   r   r   r_   rm   )r&   r_   r   cr    r    r!   r_     s    

zUserDict.copyNc             C   s    |  }x|D ]}|||< qW |S )Nr    )rc   rd   r>   r   r+   r    r    r!   re     s    
zUserDict.fromkeys)N)r   r(   r)   r=   r   r   rA   rE   rG   r   r]   r_   rq   re   r    r    r    r!   r     s   c               @   s   e Zd Zd=ddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# ZeZd$d% Zd&d' Zd(d) Zd>d+d,Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z dS )?r   Nc             C   sb   g | _ |d k	r^t|t| j kr0|| j d d < n.t|trT|j d d  | j d d < n
t|| _ d S )N)r   r   rf   r   r\   )r&   Zinitlistr    r    r!   r=   (  s    
zUserList.__init__c             C   s
   t | jS )N)r   r   )r&   r    r    r!   r]   2  r   zUserList.__repr__c             C   s   | j | |k S )N)r   _UserList__cast)r&   rk   r    r    r!   __lt__3  r   zUserList.__lt__c             C   s   | j | |kS )N)r   r   )r&   rk   r    r    r!   __le__4  r   zUserList.__le__c             C   s   | j | |kS )N)r   r   )r&   rk   r    r    r!   rg   5  r   zUserList.__eq__c             C   s   | j | |kS )N)r   r   )r&   rk   r    r    r!   __gt__6  r   zUserList.__gt__c             C   s   | j | |kS )N)r   r   )r&   rk   r    r    r!   __ge__7  r   zUserList.__ge__c             C   s   t |tr|jS |S )N)rf   r   r   )r&   rk   r    r    r!   Z__cast8  s    zUserList.__castc             C   s
   || j kS )N)r   )r&   r   r    r    r!   r   :  r   zUserList.__contains__c             C   s
   t | jS )N)r4   r   )r&   r    r    r!   r   ;  r   zUserList.__len__c             C   s
   | j | S )N)r   )r&   ir    r    r!   r   <  r   zUserList.__getitem__c             C   s   || j |< d S )N)r   )r&   r   r   r    r    r!   rA   =  r   zUserList.__setitem__c             C   s   | j |= d S )N)r   )r&   r   r    r    r!   rE   >  r   zUserList.__delitem__c             C   sP   t |tr| | j|j S t |t| jr<| | j| S | | jt| S )N)rf   r   r[   r   r   r\   )r&   rk   r    r    r!   r   ?  s
    
zUserList.__add__c             C   sP   t |tr| |j| j S t |t| jr<| || j S | t|| j S )N)rf   r   r[   r   r   r\   )r&   rk   r    r    r!   __radd__E  s
    
zUserList.__radd__c             C   sR   t |tr|  j|j7  _n2t |t| jr<|  j|7  _n|  jt|7  _| S )N)rf   r   r   r   r\   )r&   rk   r    r    r!   r   K  s    
zUserList.__iadd__c             C   s   |  | j| S )N)r[   r   )r&   rQ   r    r    r!   __mul__S  s    zUserList.__mul__c             C   s   |  j |9  _ | S )N)r   )r&   rQ   r    r    r!   __imul__V  s    zUserList.__imul__c             C   s   | j | d S )N)r   append)r&   r   r    r    r!   r   Y  r   zUserList.appendc             C   s   | j || d S )N)r   insert)r&   r   r   r    r    r!   r   Z  r   zUserList.insertrz   c             C   s   | j |S )N)r   rB   )r&   r   r    r    r!   rB   [  r   zUserList.popc             C   s   | j | d S )N)r   remove)r&   r   r    r    r!   r   \  r   zUserList.removec             C   s   | j   d S )N)r   rH   )r&   r    r    r!   rH   ]  r   zUserList.clearc             C   s
   |  | S )N)r[   )r&   r    r    r!   r_   ^  r   zUserList.copyc             C   s   | j |S )N)r   r   )r&   r   r    r    r!   r   _  r   zUserList.countc             G   s   | j j|f| S )N)r   r   )r&   r   r:   r    r    r!   r   `  r   zUserList.indexc             C   s   | j   d S )N)r   r   )r&   r    r    r!   r   a  r   zUserList.reversec             O   s   | j j|| d S )N)r   sort)r&   r:   r;   r    r    r!   r   b  r   zUserList.sortc             C   s*   t |tr| j|j n| j| d S )N)rf   r   r   extend)r&   rk   r    r    r!   r   c  s    
zUserList.extend)N)rz   )!r   r(   r)   r=   r]   r   r   rg   r   r   r   r   r   r   rA   rE   r   r   r   r   __rmul__r   r   r   rB   r   rH   r_   r   r   r   r   r   r    r    r    r!   r   &  s<   


c               @   sh  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& ZeZd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1ejfd2d3Zdd5d6Zd1ejfd7d8Z dd:d;Z!d1ejfd<d=Z"d>d? Z#d@dA Z$d1ejfdBdCZ%dDdE Z&dFdG Z'dHdI Z(dJdK Z)dLdM Z*dNdO Z+dPdQ Z,dRdS Z-dTdU Z.dVdW Z/dXdY Z0dZd[ Z1d\d] Z2d^d_ Z3d`da Z4ddbdcZ5e6j7Z7ddde Z8ddgdhZ9d1ejfdidjZ:d1ejfdkdlZ;dmdn Z<dodp Z=ddqdrZ>ddsdtZ?ddudvZ@ddxdyZAd1ejfdzd{ZBdd|d}ZCd~d ZDdd ZEdd ZFdd ZGdd ZHd4S )r   c             C   s<   t |tr|| _n&t |tr.|jd d  | _n
t|| _d S )N)rf   r   r   r   )r&   seqr    r    r!   r=   p  s
    

zUserString.__init__c             C   s
   t | jS )N)r   r   )r&   r    r    r!   __str__w  r   zUserString.__str__c             C   s
   t | jS )N)r   r   )r&   r    r    r!   r]   x  r   zUserString.__repr__c             C   s
   t | jS )N)intr   )r&   r    r    r!   __int__y  r   zUserString.__int__c             C   s
   t | jS )N)floatr   )r&   r    r    r!   	__float__z  r   zUserString.__float__c             C   s
   t | jS )N)complexr   )r&   r    r    r!   __complex__{  r   zUserString.__complex__c             C   s
   t | jS )N)hashr   )r&   r    r    r!   __hash__|  r   zUserString.__hash__c             C   s   | j d d  fS )N)r   )r&   r    r    r!   r   }  s    zUserString.__getnewargs__c             C   s    t |tr| j|jkS | j|kS )N)rf   r   r   )r&   stringr    r    r!   rg     s    
zUserString.__eq__c             C   s    t |tr| j|jk S | j|k S )N)rf   r   r   )r&   r   r    r    r!   r     s    
zUserString.__lt__c             C   s    t |tr| j|jkS | j|kS )N)rf   r   r   )r&   r   r    r    r!   r     s    
zUserString.__le__c             C   s    t |tr| j|jkS | j|kS )N)rf   r   r   )r&   r   r    r    r!   r     s    
zUserString.__gt__c             C   s    t |tr| j|jkS | j|kS )N)rf   r   r   )r&   r   r    r    r!   r     s    
zUserString.__ge__c             C   s   t |tr|j}|| jkS )N)rf   r   r   )r&   Zcharr    r    r!   r     s    
zUserString.__contains__c             C   s
   t | jS )N)r4   r   )r&   r    r    r!   r     r   zUserString.__len__c             C   s   |  | j| S )N)r[   r   )r&   r   r    r    r!   r     r   zUserString.__getitem__c             C   sJ   t |tr| | j|j S t |tr6| | j| S | | jt| S )N)rf   r   r[   r   r   )r&   rk   r    r    r!   r     s
    

zUserString.__add__c             C   s.   t |tr| || j S | t|| j S )N)rf   r   r[   r   )r&   rk   r    r    r!   r     s    
zUserString.__radd__c             C   s   |  | j| S )N)r[   r   )r&   rQ   r    r    r!   r     s    zUserString.__mul__c             C   s   |  | j| S )N)r[   r   )r&   r:   r    r    r!   r     s    zUserString.__mod__c             C   s   |  |t S )N)r[   r:   )r&   r   r    r    r!   __rmod__  s    zUserString.__rmod__c             C   s   |  | j S )N)r[   r   
capitalize)r&   r    r    r!   r     r   zUserString.capitalizec             C   s   |  | j S )N)r[   r   casefold)r&   r    r    r!   r     s    zUserString.casefoldc             G   s   |  | jj|f| S )N)r[   r   center)r&   widthr:   r    r    r!   r     s    zUserString.centerr
   c             C   s    t |tr|j}| j|||S )N)rf   r   r   r   )r&   substartendr    r    r!   r     s    
zUserString.countNc             C   s>   |r.|r|  | j||S |  | j|S |  | j S )N)r[   r   encode)r&   encodingerrorsr    r    r!   r    s
    zUserString.encodec             C   s   | j |||S )N)r   endswith)r&   suffixr  r  r    r    r!   r    s    zUserString.endswith   c             C   s   |  | j|S )N)r[   r   
expandtabs)r&   Ztabsizer    r    r!   r    s    zUserString.expandtabsc             C   s    t |tr|j}| j|||S )N)rf   r   r   find)r&   r  r  r  r    r    r!   r    s    
zUserString.findc             O   s   | j j||S )N)r   r   )r&   r:   r;   r    r    r!   r     s    zUserString.formatc             C   s   | j |S )N)r   
format_map)r&   r   r    r    r!   r    s    zUserString.format_mapc             C   s   | j |||S )N)r   r   )r&   r  r  r  r    r    r!   r     s    zUserString.indexc             C   s
   | j  S )N)r   isalpha)r&   r    r    r!   r    r   zUserString.isalphac             C   s
   | j  S )N)r   isalnum)r&   r    r    r!   r    r   zUserString.isalnumc             C   s
   | j  S )N)r   isascii)r&   r    r    r!   r    r   zUserString.isasciic             C   s
   | j  S )N)r   	isdecimal)r&   r    r    r!   r    r   zUserString.isdecimalc             C   s
   | j  S )N)r   isdigit)r&   r    r    r!   r    r   zUserString.isdigitc             C   s
   | j  S )N)r   r   )r&   r    r    r!   r     r   zUserString.isidentifierc             C   s
   | j  S )N)r   islower)r&   r    r    r!   r    r   zUserString.islowerc             C   s
   | j  S )N)r   	isnumeric)r&   r    r    r!   r    r   zUserString.isnumericc             C   s
   | j  S )N)r   isprintable)r&   r    r    r!   r    r   zUserString.isprintablec             C   s
   | j  S )N)r   isspace)r&   r    r    r!   r    r   zUserString.isspacec             C   s
   | j  S )N)r   istitle)r&   r    r    r!   r    r   zUserString.istitlec             C   s
   | j  S )N)r   isupper)r&   r    r    r!   r    r   zUserString.isupperc             C   s   | j |S )N)r   r   )r&   r   r    r    r!   r     r   zUserString.joinc             G   s   |  | jj|f| S )N)r[   r   ljust)r&   r  r:   r    r    r!   r    s    zUserString.ljustc             C   s   |  | j S )N)r[   r   lower)r&   r    r    r!   r    r   zUserString.lowerc             C   s   |  | j|S )N)r[   r   lstrip)r&   charsr    r    r!   r    r   zUserString.lstripc             C   s   | j |S )N)r   	partition)r&   sepr    r    r!   r    s    zUserString.partitionrz   c             C   s6   t |tr|j}t |tr |j}| | j|||S )N)rf   r   r   r[   r   )r&   oldnewmaxsplitr    r    r!   r     s
    

zUserString.replacec             C   s    t |tr|j}| j|||S )N)rf   r   r   rfind)r&   r  r  r  r    r    r!   r"    s    
zUserString.rfindc             C   s   | j |||S )N)r   rindex)r&   r  r  r  r    r    r!   r#    s    zUserString.rindexc             G   s   |  | jj|f| S )N)r[   r   rjust)r&   r  r:   r    r    r!   r$    s    zUserString.rjustc             C   s   | j |S )N)r   
rpartition)r&   r  r    r    r!   r%    s    zUserString.rpartitionc             C   s   |  | j|S )N)r[   r   rstrip)r&   r  r    r    r!   r&    s    zUserString.rstripc             C   s   | j ||S )N)r   r   )r&   r  r!  r    r    r!   r     s    zUserString.splitc             C   s   | j ||S )N)r   rsplit)r&   r  r!  r    r    r!   r'    s    zUserString.rsplitFc             C   s   | j |S )N)r   
splitlines)r&   keependsr    r    r!   r(    r   zUserString.splitlinesc             C   s   | j |||S )N)r   r   )r&   prefixr  r  r    r    r!   r     s    zUserString.startswithc             C   s   |  | j|S )N)r[   r   strip)r&   r  r    r    r!   r+    r   zUserString.stripc             C   s   |  | j S )N)r[   r   swapcase)r&   r    r    r!   r,    r   zUserString.swapcasec             C   s   |  | j S )N)r[   r   title)r&   r    r    r!   r-    r   zUserString.titlec             G   s   |  | jj| S )N)r[   r   	translate)r&   r:   r    r    r!   r.    s    zUserString.translatec             C   s   |  | j S )N)r[   r   upper)r&   r    r    r!   r/    r   zUserString.upperc             C   s   |  | j|S )N)r[   r   zfill)r&   r  r    r    r!   r0    r   zUserString.zfill)NN)r
  )N)rz   )N)Nrz   )Nrz   )F)N)Ir   r(   r)   r=   r   r]   r   r   r   r   r   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rM   maxsizer   r  r  r  r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r   r  r  r  r   	maketransr  r   r"  r#  r$  r%  r&  r   r'  r(  r   r+  r,  r-  r.  r/  r0  r    r    r    r!   r   o  s   








)6r   r   Zoperatorr   r   r   rj   Zkeywordr   r   sysrM   Zheapqr   _weakrefr   r7   Z	itertoolsr   r   r   r   r   r   Zreprlibr   rp   Z_collectionsr   ImportErrorMutableSequenceregisterr   r"   KeysViewr#   	ItemsViewr*   
ValuesViewr,   ro   r-   rI   r   r   r   r   r   rl   r	   r   r   Sequencer   r    r    r    r!   <module>   sZ   
 _ +   oCI