???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \9             D   @   s  d dl Z d dl mZmZ d dlZd dlZd dlZd dlZd dlZd dl	Z	yd dl
j ZW n ek
rr   d dlZY nX ejdd dkrd dlZyd dl	mZmZmZ W n4 ek
r   eejZee jZeejZY nX ddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:g4Zd;d< Zd=d> ZG d?d@ d@eZG dAdB dBedCdDZG dEdF dFedCdGZG dHdI dIedCdGZG dJdK dKedCdGZdLdM Z dNdO Z!dPdQ Z"dRdS Z#dTdU Z$G dVdW dWedCdGZ%e%dCdGZ&G dXdY dYedCdGZ'e'dCdGZ(G dZd dedCdGZ)e)d[Z*e)d\Z+e)d]Z,e)d^dCd_Z-e)d`dCd_Z.e)dadCd_Z/e)dbdCdcZ0e)d2e1eZ2ddde Z3ddfdgZ4dhdi Z5djdk Z6g Z7dldm Z8G dndo doedCdGZ9e9dCdGZ:G dpdq dqedCdGZ;e;dCdGZ<drds Z=dtdu Z>dvdw Z?G dxd dee j@ZAdZBdydz ZCG d{d
 d
eAd|ZBG d}d~ d~ZDG dd dZEG dd deAZFG dd deGeGeFdZHG dd deAZIG dd dejJeIdZJG dd dedCdGZKeKdCdGZLdd3 ZMdd ZNe	jOe	jPe	jQe	jReeefZSddd4ZTdd6 ZUdd7 ZVdd ZWdd8 ZXG dd deAZYG dd deYd|ZZej[Z[e\edrjG dd deBe- ej]dZ]ej^d e\edrG dd de]e. eBe-e0e.f ej_dZ_ej^d e\edrG dd deBe- ej`dZ`G dd de`e- ejadZaej^d ej^d G dd deBe- ejbdZbG dd debe- ejcdZcG dd' d'eZZdG dd& d&eZZeG dd% d%eZZfG dd$ d$eZZgG dd# d#eZe- ZhG dd( d(eZe- Zie\ed"rG dd" d"ebe- ejjdZjnG dd" d"eZe- ZjejkZkG dd deBe- ejldZle\edr*G dd dekebe- ele- ejmdZmej^d e\edrRG dd deme- ejndZon"G dd dekebe- ele- ejndZoG dd deoe* ejpdZpe\edrG dd deme+ eBe+e/f ejqdZqn,G dd dekebe+ ele+ eBe+e/f ejqdZqG dd deqe+e,f ejrdZre\ed"rhe\edrDG dd deje- eme- ejsdZsn"G dd dekeje- ele- ejsdZsn"G dd dekebe- ele- ejsdZsG dd dese* ejtdZtG dd deseu ejvdZvG dd- d-ewete* ewdZxG dd* d*ejyete* ejydZzG dd. d.e{epe* e{dZnG dd/ d/e|eoe- e|dZ}G dd dekebe- ej~dZ~G dd de~e+ eoe+ ejdZG dd de~eHe+e/f  eoeHe+e/f  eBe+e/f ejdZG dd! d!e~e/ ejdZe\edrG dd deBe- ejdZnG dd deBe- Ze\edÃ	r(G ddń deBe- ejdZej^dŃ nejdd dk	rDedǃ G dd+ d+eere+e,f edZG dd, d,ejere+e,f ejdZG dd) d)ejee*euf ejdZe\ed˃	rej^d˃ G dd˄ dejere+e,f ejdZe\ed1	rejZne	jZG dd1 d1ece- eBe-e0e.f edZe\ed΃
rVG dd΄ deae- eBe-e0f ejdZej^d΃ e)ddCedэZG dd deBe edZddԄ Zejdd dkZd ZdZG dd deZG dd0 d0ed|Zdd5 ZeZdZG dd deBe2 ZG dd dee1 ZG dd dee ZG dd dZed e_eejej< ede2eejddd Zede2eejdddd ZG dd dZed e_eejej< dS (      N)abstractmethodabstractproperty         )WrapperDescriptorTypeMethodWrapperTypeMethodDescriptorTypeAnyCallableClassVarGenericOptionalTupleTypeTypeVarUnionAbstractSetGenericMeta
ByteString	ContainerContextManagerHashable	ItemsViewIterableIteratorKeysViewMappingMappingViewMutableMappingMutableSequence
MutableSetSequenceSized
ValuesView
ReversibleSupportsAbsSupportsBytesSupportsComplexSupportsFloatSupportsIntSupportsRoundCounterDequeDictDefaultDictListSet	FrozenSet
NamedTuple	GeneratorAnyStrcastget_type_hintsNewTypeno_type_checkno_type_check_decoratoroverloadTextTYPE_CHECKINGc             C   s"   t jd d dkr| jS | jS d S )Nr   r   )r   r   )sysversion_info__qualname____name__)x rC   /usr/lib64/python3.6/typing.py	_qualnameg   s    rE   c             C   s&   d}| j dr"| |kr"| dd  } | S )N
_TypeAlias_ForwardRef_TypingBase_FinalTypingBase_   )rF   rG   rH   rI   )
startswith)ZnmZ	whitelistrC   rC   rD   
_trim_nameo   s    rM   c                   sF   e Zd ZdZdd fdd
Zdd Zdd Zd	d
 Zdd Z  Z	S )
TypingMetaF)_rootc               s2   |s t ddjtt|pd t j| |||S )NzCannot subclass %sz, z())	TypeErrorjoinmap
_type_reprsuper__new__)clsnamebases	namespacerO   )	__class__rC   rD   rU      s    zTypingMeta.__new__c             O   s   d S )NrC   )selfargskwdsrC   rC   rD   __init__   s    zTypingMeta.__init__c             C   s   | S )NrC   )r[   globalnslocalnsrC   rC   rD   
_eval_type   s    zTypingMeta._eval_typec             C   s   d S )NrC   )r[   tvarsrC   rC   rD   _get_type_vars   s    zTypingMeta._get_type_varsc             C   s   t t| }d| j|f S )Nz%s.%s)rM   rE   
__module__)r[   qnamerC   rC   rD   __repr__   s    zTypingMeta.__repr__)
rA   rd   r@   _is_protocolrU   r^   ra   rc   rf   __classcell__rC   rC   )rZ   rD   rN   v   s   
rN   c                   sH   e Zd ZdZdd Z fddZdd Zdd	 Zd
d Zdd Z	  Z
S )rH   __weakref__c             O   s   d S )NrC   )r[   r\   r]   rC   rC   rD   r^      s    z_TypingBase.__init__c                s@   t |dkr4t|d tr4t|d tr4td|  t j| S )Nr   r   rK   zCannot subclass %r)len
isinstancestrtuplerP   rT   rU   )rV   r\   r]   )rZ   rC   rD   rU      s
    z_TypingBase.__new__c             C   s   | S )NrC   )r[   r_   r`   rC   rC   rD   ra      s    z_TypingBase._eval_typec             C   s   d S )NrC   )r[   rb   rC   rC   rD   rc      s    z_TypingBase._get_type_varsc             C   s"   t | }tt|}d|j|f S )Nz%s.%s)typerM   rE   rd   )r[   rV   re   rC   rC   rD   rf      s    z_TypingBase.__repr__c             O   s   t dt|  d S )NzCannot instantiate %r)rP   rn   )r[   r\   r]   rC   rC   rD   __call__   s    z_TypingBase.__call__)ri   )rA   rd   r@   	__slots__r^   rU   ra   rc   rf   ro   rh   rC   rC   )rZ   rD   rH      s   rH   T)	metaclassrO   c                   s.   e Zd Zf Zdd fdd
Zdd Z  ZS )rI   F)rO   c               s0   t  j| f||}|dkr |S td|  d S )NTzCannot instantiate %r)rT   rU   rP   )rV   rO   r\   r]   r[   )rZ   rC   rD   rU      s    z_FinalTypingBase.__new__c             C   s   t t| jS )N)rM   rn   rA   )r[   rC   rC   rD   
__reduce__   s    z_FinalTypingBase.__reduce__)rA   rd   r@   rp   rU   rr   rh   rC   rC   )rZ   rD   rI      s   rI   )rO   c                   sP   e Zd ZdZ fddZdd Zd	d
 Zdd Zdd Zdd Z	dd Z
  ZS )rG   __forward_arg____forward_code____forward_evaluated____forward_value__c                st   t  j| t|ts$td|f yt|dd}W n" tk
rV   td|f Y nX || _|| _d| _	d | _
d S )Nz,Forward reference must be a string -- got %rz<string>evalz1Forward reference must be an expression -- got %rF)rT   r^   rk   rl   rP   compileSyntaxErrorrs   rt   ru   rv   )r[   argcode)rZ   rC   rD   r^      s    
z_ForwardRef.__init__c             C   sf   | j  s||k	r`|d kr*|d kr*i  }}n|d kr8|}n|d krD|}tt| j||d| _d| _ | jS )Nz*Forward references must evaluate to types.T)ru   _type_checkrw   rt   rv   )r[   r_   r`   rC   rC   rD   ra      s    
z_ForwardRef._eval_typec             C   s&   t |tstS | j|jko$| j|jkS )N)rk   rG   NotImplementedrs   rv   )r[   otherrC   rC   rD   __eq__   s    
z_ForwardRef.__eq__c             C   s   t | j| jfS )N)hashrs   rv   )r[   rC   rC   rD   __hash__   s    z_ForwardRef.__hash__c             C   s   t dd S )Nz4Forward references cannot be used with isinstance().)rP   )r[   objrC   rC   rD   __instancecheck__  s    z_ForwardRef.__instancecheck__c             C   s   t dd S )Nz4Forward references cannot be used with issubclass().)rP   )r[   rV   rC   rC   rD   __subclasscheck__  s    z_ForwardRef.__subclasscheck__c             C   s   d| j f S )Nz_ForwardRef(%r))rs   )r[   rC   rC   rD   rf   	  s    z_ForwardRef.__repr__)rs   rt   ru   rv   )rA   rd   r@   rp   r^   ra   r   r   r   r   rf   rh   rC   rC   )rZ   rD   rG      s    rG   c               @   sH   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d Z
dS )rF   rW   type_var	impl_typetype_checkerc             C   s   || _ || _|| _|| _d S )N)rW   r   r   r   )r[   rW   r   r   r   rC   rC   rD   r^     s    z_TypeAlias.__init__c             C   s   d| j t| jf S )Nz%s[%s])rW   rS   r   )r[   rC   rC   rD   rf   ,  s    z_TypeAlias.__repr__c             C   s   t | jtstd|  | jjrJt |trJt|| jjsJtd|| jf t |trj|| jk	rjtd|  | j| j|| j	| j
S )Nz#%s cannot be further parameterized.z&%s is not a valid substitution for %s.z%s cannot be re-parameterized.)rk   r   r   rP   __constraints__rn   
issubclassrZ   rW   r   r   )r[   Z	parameterrC   rC   rD   __getitem__/  s    
z_TypeAlias.__getitem__c             C   s&   t |tstS | j|jko$| j|jkS )N)rk   rF   r}   rW   r   )r[   r~   rC   rC   rD   r   ;  s    
z_TypeAlias.__eq__c             C   s   t | j| jfS )N)r   rW   r   )r[   rC   rC   rD   r   @  s    z_TypeAlias.__hash__c             C   s    t | jtstdt || jS )Nz<Parameterized type aliases cannot be used with isinstance().)rk   r   r   rP   r   )r[   r   rC   rC   rD   r   C  s    z_TypeAlias.__instancecheck__c             C   s    t | jtstdt|| jS )Nz<Parameterized type aliases cannot be used with issubclass().)rk   r   r   rP   r   r   )r[   rV   rC   rC   rD   r   I  s    z_TypeAlias.__subclasscheck__N)rW   r   r   r   )rA   rd   r@   rp   r^   rf   r   r   r   r   r   rC   rC   rC   rD   rF     s   	rF   c             C   s0   x*| D ]"}t |tst |tr|j| qW d S )N)rk   rN   rH   rc   )typesrb   trC   rC   rD   rc   P  s    
rc   c             C   s   g }t | | t|S )N)rc   rm   )r   rb   rC   rC   rD   
_type_varsV  s    
r   c             C   s$   t | tst | tr | j||S | S )N)rk   rN   rH   ra   )r   r_   r`   rC   rC   rD   ra   \  s    ra   c             C   s   | d krt d S t| tr"t| } t| tr:t | jdksTt| t tf rft|  rft|d| f  t | jdkrt| dd  st| t	r| j
ttfkrtd|  | S )N	_ClassVarz Got %.100r._Union	_Optional
__origin__z&Plain %s is not valid as type argument)r   r   )rn   rk   rl   rG   rH   rA   callablerP   getattrrN   _gorgr   	_Protocol)rz   msgrC   rC   rD   r|   b  s    
r|   c             C   s`   t | tr:t | t r:| jdkr(t| S d| jt| f S | dkrFdS t | tjrX| jS t| S )Nbuiltinsz%s.%s.z...)	rk   rn   rN   rd   rE   r   FunctionTyperA   repr)r   rC   rC   rD   rS     s    
rS   c               @   s    e Zd Zf Zdd Zdd ZdS )_Anyc             C   s   t dd S )Nz%Any cannot be used with isinstance().)rP   )r[   r   rC   rC   rD   r     s    z_Any.__instancecheck__c             C   s   t dd S )Nz%Any cannot be used with issubclass().)rP   )r[   rV   rC   rC   rD   r     s    z_Any.__subclasscheck__N)rA   rd   r@   rp   r   r   rC   rC   rC   rD   r     s   r   c               @   s    e Zd Zf Zdd Zdd ZdS )	_NoReturnc             C   s   t dd S )Nz*NoReturn cannot be used with isinstance().)rP   )r[   r   rC   rC   rD   r     s    z_NoReturn.__instancecheck__c             C   s   t dd S )Nz*NoReturn cannot be used with issubclass().)rP   )r[   rV   rC   rC   rD   r     s    z_NoReturn.__subclasscheck__N)rA   rd   r@   rp   r   r   rC   rC   rC   rD   r     s   r   c                   sJ   e Zd ZdZdddd fd	d

Zdd Zdd Zdd Zdd Z  Z	S )r   rA   	__bound__r   __covariant____contravariant__NF)bound	covariantcontravariantc               s   t  j|f||||d || _|r2|r2tdt|| _t|| _|rZ|d k	rZtd|rrt|dkrrtdd t	 fdd|D | _
|rt|d	| _nd | _d S )
N)r   r   r   z"Bivariant types are not supported.z-Constraints cannot be combined with bound=...rK   z"A single constraint is not allowedz:TypeVar(name, constraint, ...): constraints must be types.c             3   s   | ]}t | V  qd S )N)r|   ).0r   )r   rC   rD   	<genexpr>   s    z#TypeVar.__init__.<locals>.<genexpr>zBound must be a type.)rT   r^   rA   
ValueErrorboolr   r   rP   rj   rm   r   r|   r   )r[   rW   r   r   r   Zconstraints)rZ   )r   rD   r^     s     

zTypeVar.__init__c             C   s   | |kr|j |  d S )N)append)r[   rb   rC   rC   rD   rc     s    zTypeVar._get_type_varsc             C   s&   | j rd}n| jrd}nd}|| j S )N+-~)r   r   rA   )r[   prefixrC   rC   rD   rf   
  s    zTypeVar.__repr__c             C   s   t dd S )Nz0Type variables cannot be used with isinstance().)rP   )r[   instancerC   rC   rD   r     s    zTypeVar.__instancecheck__c             C   s   t dd S )Nz0Type variables cannot be used with issubclass().)rP   )r[   rV   rC   rC   rD   r     s    zTypeVar.__subclasscheck__)rA   r   r   r   r   )
rA   rd   r@   rp   r^   rc   rf   r   r   rh   rC   rC   )rZ   rD   r     s   * 	TKTVTT_co)r   V_coVT_coT_contra)r   c             C   sd   |d krg }t | dr0t| ttfr0| j||S t| tr`x$t|D ]\}}| |krD|| S qDW | S )N
_subs_tree)hasattrrk   r   rH   r   r   	enumerate)rz   rb   r\   iZtvarrC   rC   rD   _replace_arg)  s    
r   c       	      C   s   | j d kr| S | j }g }x|j d k	r6|j| |j }qW g }x | jD ]}|jt||| qDW x8|D ]0}g }x"|jD ]}|jt||j| qtW |}qdW |S )N)r   r   __args__r   __parameters__)	rV   rb   r\   ZcurrentZ
orig_chain	tree_argsrz   ZoclsZnew_tree_argsrC   rC   rD   r   D  s     



r   c                s  g }xn| D ]f}t |tr0|jtkr0|j|j q
t |trft|dkrf|d tkrf|j|dd   q
|j| q
W t	| t t|k rg }x(|D ] }| kr|j|  j
| qW |}t	| x>|D ]6t tsqtfdd h D r̈ j
 qW t fdd|D S )Nr   rK   c             3   s6   | ].}t |to|jd k	st |to,t |V  qd S )N)rk   r   r   rn   r   )r   Zt2)t1rC   rD   r     s   
z'_remove_dups_flatten.<locals>.<genexpr>c             3   s   | ]}| kr|V  qd S )NrC   )r   r   )
all_paramsrC   rD   r     s    )rk   r   r   r   extendr   rm   rj   r   setremovern   any)
parametersparamspZ
new_paramsr   rC   )r   r   rD   _remove_dups_flattene  s.    
"



r   c             C   sX   | j stdt|  t|}t| j }||krTtd||kr@dndt| ||f d S )Nz%s is not a generic classz0Too %s parameters for %s; actual %s, expected %sZmanyZfew)r   rP   r   rj   )rV   r   ZalenZelenrC   rC   rD   _check_generic  s    
r   c                s4   t j  tj j t j fdd}|S )Nc                 s*   y
 | |S  t k
r   Y nX | |S )N)rP   )r\   r]   )cachedfuncrC   rD   inner  s
    
z_tp_cache.<locals>.inner)	functools	lru_cache	_cleanupsr   cache_clearwraps)r   r   rC   )r   r   rD   	_tp_cache  s    r   c                   s   e Zd ZdZddd fdd	Zd
d Zdd Z fddZ fddZe	dd Z
d ddZdd Zdd Zdd Zdd Z  ZS )!r   r   r   r   __tree_hash__NF)rO   c               s   t  j| ||f|d|i}|d krHd |_d |_d |_ttd|_|S t|t	sZt
d|tkr~t|}t|dkr~|d S t||_||_||_|j }t|t	rtt||_n
t||_|S )NrO   r   zExpected parameters=<tuple>rK   r   )r   )rT   rU   r   r   r   r   	frozensetr   rk   rm   rP   r   r   rj   r   r   )rV   r   originrO   r\   r[   Z	subs_tree)rZ   rC   rD   rU     s*    



z_Union.__new__c                s^   | j d kr| S t fdd| j D }t| j }|| j krN|| jkrN| S | j||ddS )Nc             3   s   | ]}t | V  qd S )N)ra   )r   r   )r_   r`   rC   rD   r     s    z$_Union._eval_type.<locals>.<genexpr>T)rO   )r   rm   ra   r   rZ   )r[   r_   r`   ev_args	ev_originrC   )r_   r`   rD   ra     s    
z_Union._eval_typec             C   s   | j r| jrt| j| d S )N)r   r   rc   )r[   rb   rC   rC   rD   rc     s    z_Union._get_type_varsc                s<   | j d krt j S | j }t|ts.t|S |d j|S )Nr   )r   rT   rf   r   rk   rm   r   
_tree_repr)r[   tree)rZ   rC   rD   rf     s    


z_Union.__repr__c                s`   g }xB|dd  D ]2}t |ts0|jt| q|j|d j| qW t j ddj|  S )NrK   r   z[%s]z, )rk   rm   r   rS   r   rT   rf   rQ   )r[   r   arg_listrz   )rZ   rC   rD   r     s    
z_Union._tree_reprc                sl   |f krt dt|ts |f}| jd kr0d nd t fdd|D }| tk	r\t| | | j|| ddS )Nz Cannot take a Union of no types.z)Union[arg, ...]: each arg must be a type.z*Parameters to generic types must be types.c             3   s   | ]}t | V  qd S )N)r|   )r   r   )r   rC   rD   r      s    z%_Union.__getitem__.<locals>.<genexpr>T)r   rO   )rP   rk   rm   r   r   r   rZ   )r[   r   rC   )r   rD   r     s    


z_Union.__getitem__c             C   s>   | t krt S t| ||}t|}t|dkr4|d S t f| S )NrK   r   )r   r   r   rj   )r[   rb   r\   r   rC   rC   rD   r   %  s    z_Union._subs_treec             C   s6   t |tr| j|jkS | tk	r*| j |kS | |kS d S )N)rk   r   r   r   r   )r[   r~   rC   rC   rD   r   .  s
    
z_Union.__eq__c             C   s   | j S )N)r   )r[   rC   rC   rD   r   6  s    z_Union.__hash__c             C   s   t dd S )Nz(Unions cannot be used with isinstance().)rP   )r[   r   rC   rC   rD   r   9  s    z_Union.__instancecheck__c             C   s   t dd S )Nz(Unions cannot be used with issubclass().)rP   )r[   rV   rC   rC   rD   r   <  s    z_Union.__subclasscheck__)r   r   r   r   )NN)NN)rA   rd   r@   rp   rU   ra   rc   rf   r   r   r   r   r   r   r   r   rh   rC   rC   )rZ   rD   r     s   ,
	
	r   c               @   s   e Zd Zf Zedd ZdS )r   c             C   s   t |d}t|td f S )Nz#Optional[t] requires a single type.)r|   r   rn   )r[   rz   rC   rC   rD   r   K  s    
z_Optional.__getitem__N)rA   rd   r@   rp   r   r   rC   rC   rC   rD   r   C  s   r   c             C   sJ   t }x@t| jd d D ]*\}}t|tr|jtkr| j|d  }qW |S )NrK   )objectr   __mro__rk   r   r   r   )rV   Znext_in_mror   crC   rC   rD   _next_in_mroT  s
    r   c                s,   t  jtjr fdd}n fdd}|S )Nc                sZ    j j| }|tk	r|S  j | jkr(dS x, j j D ]}t|trDq4t| |r4dS q4W tS )NT)	__extra____subclasshook__r}   r   __subclasses__rk   r   r   )subclassresscls)rV   rC   rD   __extrahook__k  s    

z)_make_subclasshook.<locals>.__extrahook__c                s    j rt|  j rdS tS )NT)r   r   r}   )r   )rV   rC   rD   r   y  s    )rk   r   abcABCMeta)rV   r   rC   )rV   rD   _make_subclasshookb  s    r   c             C   s2   t | }d|kr.x|d D ]}|j|d  qW |S )Nrp   )dictpop)ZdctZ	dict_copyZslotrC   rC   rD   _no_slots_copy  s
    r   c                   s   e Zd Zd  fdd	Zedd Zejdd Zedd Zejd	d Zd
d Zdd Z	 fddZ
 fddZd!ddZdd Zdd Zedd Z fddZdd Z fddZ  ZS )"r   Nc	                sX  |d k	r
nt |}d }	xF|D ]>}
|
tkr0tdt|
tr|
jtkr|	d k	rTtd|
j}	qW |	d krl|}	nPt|}t|	 | kstddj fdd|D djdd |	D f |	}|}|d k	rt	|t
jkr||kr|f| }tdd |D }td	d |D r td
d |D }|j|||s2d n|jd t j| |||dd}tt|jd|sj|n|j ||_|rtdd |D nd |_t||_|d kr||_d|kr|st|jdddkrt||_t|t
jr|j|_|j|_n|d k	r|j|_|j|_|r2t|dr2|j|_|rDt|j ntt|j  |_!|S )Nz!Cannot inherit from plain Genericz0Cannot inherit from Generic[...] multiple types.z6Some type variables (%s) are not listed in Generic[%s]z, c             3   s   | ]}| krt |V  qd S )N)rl   )r   r   )gvarsetrC   rD   r     s    z&GenericMeta.__new__.<locals>.<genexpr>c             s   s   | ]}t |V  qd S )N)rl   )r   grC   rC   rD   r     s    c             s   s"   | ]}t |tr|jn|V  qd S )N)rk   r   r   )r   brC   rC   rD   r     s    c             s   s    | ]}t |to|tk	V  qd S )N)rk   r   r   )r   r   rC   rC   rD   r     s    c             s   s   | ]}|t k	r|V  qd S )N)r   )r   r   rC   rC   rD   r     s    )r   r   r   T)rO   r   c             s   s*   | ]"}|t krd n|tkrf n|V  qdS ).N)_TypingEllipsis_TypingEmpty)r   arC   rC   rD   r     s   r   rA    r   r@   )"r   r   rP   rk   r   r   r   r   rQ   rn   r   r   rm   r   updater   rT   rU   __setattr__r   r   __next_in_mro____orig_bases__r   r   r   _abc_registry
_abc_cacher   r@   r   r   r   r   )rV   rW   rX   rY   rb   r\   r   extra
orig_basesZgvarsbaseZtvarsetZinitial_basesr[   )rZ   )r   rD   rU     sj    









zGenericMeta.__new__c             C   s   t | jtjr| jjS | jjS )N)rk   r   r   r   _abc_negative_cacher   _abc_generic_negative_cache)r[   rC   rC   rD   r     s    zGenericMeta._abc_negative_cachec             C   s,   | j d kr(t| jtjr"|| j_n|| _d S )N)r   rk   r   r   r   r   r   )r[   valuerC   rC   rD   r     s    

c             C   s   t | jtjr| jjS | jjS )N)rk   r   r   r   _abc_negative_cache_versionr   #_abc_generic_negative_cache_version)r[   rC   rC   rD   r   	  s    z'GenericMeta._abc_negative_cache_versionc             C   s,   | j d kr(t| jtjr"|| j_n|| _d S )N)r   rk   r   r   r   r   r   )r[   r   rC   rC   rD   r     s    

c             C   s   | j r| jrt| j| d S )N)r   r   rc   )r[   rb   rC   rC   rD   rc     s    zGenericMeta._get_type_varsc          
      s   | j r| j j nd }| jr8t fdd| jD nd }|| j krT|| jkrT| S | j| j| jt| j|rtt	|nd ||| j
| jdS )Nc             3   s   | ]}t | V  qd S )N)ra   )r   r   )r_   r`   rC   rD   r     s    z)GenericMeta._eval_type.<locals>.<genexpr>)rb   r\   r   r   r   )r   ra   r   rm   rZ   rA   	__bases__r   __dict__r   r   r   )r[   r_   r`   r   r   rC   )r_   r`   rD   ra     s    $zGenericMeta._eval_typec                s"   | j d krt j S | j| j S )N)r   rT   rf   r   r   )r[   )rZ   rC   rD   rf   +  s    

zGenericMeta.__repr__c                st   g }xV|dd  D ]F}|f kr*|j d qt|tsD|j t| q|j |d j| qW t j ddj|  S )NrK   z()r   z[%s]z, )r   rk   rm   rS   r   rT   rf   rQ   )r[   r   r   rz   )rZ   rC   rD   r   0  s    
zGenericMeta._tree_reprc             C   s*   | j d kr| S t| ||}| jft| S )N)r   r   r   rm   )r[   rb   r\   r   rC   rC   rD   r   ;  s    
zGenericMeta._subs_treec             C   s6   t |tstS | jd ks"|jd kr*| |kS | j|jkS )N)rk   r   r}   r   r   )r[   r~   rC   rC   rD   r   A  s
    
zGenericMeta.__eq__c             C   s   | j S )N)r   )r[   rC   rC   rD   r   H  s    zGenericMeta.__hash__c          
      s6  t |ts|f}| r0| jtk	r0tdt|  d t fdd|D }| tkrtdd |D sltdtt	|t|krtd|}|}nb| tt
fkrt|}|}nH| tkr|}|}n6| jttfkrtdt|  nt| | t|}|}| jd kr| fnf }| j| j|| j t| j||| | j| jd	S )
Nz)Parameter list to %s[...] cannot be emptyz*Parameters to generic types must be types.c             3   s   | ]}t | V  qd S )N)r|   )r   r   )r   rC   rD   r   S  s    z*GenericMeta.__getitem__.<locals>.<genexpr>c             s   s   | ]}t |tV  qd S )N)rk   r   )r   r   rC   rC   rD   r   V  s    z5Parameters to Generic[...] must all be type variablesz-Parameters to Generic[...] must all be uniquez'Cannot subscript already-subscripted %s)rb   r\   r   r   r   )rk   rm   r   r   rP   rE   r   allrj   r   r   r   r   r   r   r   rZ   rA   r   r   r   r   r   )r[   r   rb   r\   ZprependrC   )r   rD   r   K  sJ    

zGenericMeta.__getitem__c                sJ   | j d k	r*tjdjd dkr&tddS | tkr>td|  t j|S )	NrK   rA   r   r   zCParameterized generics cannot be used with class or instance checksFz5Class %r cannot be used with class or instance checks)r   r   )r   r>   	_getframe	f_globalsrP   r   rT   r   )r[   rV   )rZ   rC   rD   r   y  s    
zGenericMeta.__subclasscheck__c             C   s   t |j| S )N)r   rZ   )r[   r   rC   rC   rD   r     s    zGenericMeta.__instancecheck__c                sT   |j dr|jds(|j ds(| jd kr<tt| j|| ntt| jj|| d S )N___abc_)rL   endswithr   rT   r   r   )r[   attrr   )rZ   rC   rD   r     s
    

zGenericMeta.__setattr__)NNNNN)NN)rA   rd   r@   rU   propertyr   setterr   rc   ra   rf   r   r   r   r   r   r   r   r   r   rh   rC   rC   )rZ   rD   r     s    `
.c             O   s   |j d kr@| jtjkr,|jtjk	r,| j|S | j|f||S nl|j}| jtjkrj|jtjk	rj| j|}n| j|f||}y
||_W n tk
r   Y nX |j|| |S d S )N)r   rU   r   r^   r   Z__orig_class__AttributeError)Zbase_clsrV   r\   r]   r   r   rC   rC   rD   _generic_new  s     


r
  c               @   s   e Zd Zf Zdd ZdS )r   c             O   s&   | j tkrtdt| j| f||S )NzHType Generic cannot be instantiated; it can be used only as a base class)r   r   rP   r
  r   )rV   r\   r]   rC   rC   rD   rU     s    
zGeneric.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r     s   )rq   c               @   s   e Zd ZdS )r   N)rA   rd   r@   rC   rC   rC   rD   r     s   r   c               @   s   e Zd ZdS )r   N)rA   rd   r@   rC   rC   rC   rD   r     s   r   c                   s0   e Zd Ze fddZdd Zdd Z  ZS )	TupleMetac                s   | j d k	s| jtk	r t j|S |f kr6t jtfS t|tsF|f}t|dkr|d dkrd t	|d  }t j|t
fS d t fdd|D }t j|S )	Nr   rK   .z Tuple[t, ...]: t must be a type.r   z*Tuple[t0, t1, ...]: each t must be a type.c             3   s   | ]}t | V  qd S )N)r|   )r   r   )r   rC   rD   r     s    z(TupleMeta.__getitem__.<locals>.<genexpr>)r   r   r   rT   r   r   rk   rm   rj   r|   r   )r[   r   r   )rZ   )r   rD   r     s    
zTupleMeta.__getitem__c             C   s    | j d krt|tS tdd S )Nz5Parameterized Tuple cannot be used with isinstance().)r   rk   rm   rP   )r[   r   rC   rC   rD   r     s    

zTupleMeta.__instancecheck__c             C   s    | j d krt|tS tdd S )Nz5Parameterized Tuple cannot be used with issubclass().)r   r   rm   rP   )r[   rV   rC   rC   rD   r     s    

zTupleMeta.__subclasscheck__)rA   rd   r@   r   r   r   r   rh   rC   rC   )rZ   rD   r    s   r  c               @   s   e Zd Zf Zdd ZdS )r   c             O   s$   | j tkrtdtt| f||S )Nz6Type Tuple cannot be instantiated; use tuple() instead)r   r   rP   r
  rm   )rV   r\   r]   rC   rC   rD   rU     s    
zTuple.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r     s   
)r   rq   c                   sD   e Zd Z fddZ fddZ fddZe fddZ  ZS )	CallableMetac                s"   | j d krt j S | j| j S )N)r   rT   rf   r   r   )r[   )rZ   rC   rD   rf     s    

zCallableMeta.__repr__c                s   | j tk	rt j|S g }xB|dd  D ]2}t|tsF|jt| q(|j|d j| q(W |d dkrt|d d|d   S t|d ddj	|d d |d f  S )	NrK   r   z...z	[..., %s]z
[[%s], %s]z, r   r   )
r   r   rT   r   rk   rm   r   rS   r   rQ   )r[   r   r   rz   )rZ   rC   rD   r     s    


zCallableMeta._tree_reprc                s   | j d k	s| jtk	r t j|S t|t s8t|dkr@td|\}}|t	krZt	|f}n$t|t
srtd|f t||f}| j|S )Nr   z6Callable must be used as Callable[[arg, ...], result].z8Callable[args, result]: args must be a list. Got %.100r.)r   r   r   rT   r   rk   rm   rj   rP   Ellipsislist__getitem_inner__)r[   r   r\   result)rZ   rC   rD   r   *  s    


zCallableMeta.__getitem__c                s^   |\}}d t | }|tkr.t jt|fS d t fdd|D }||f }t j|S )Nz.Callable[args, result]: result must be a type.z6Callable[[arg, ...], result]: each arg must be a type.c             3   s   | ]}t | V  qd S )N)r|   )r   rz   )r   rC   rD   r   F  s    z1CallableMeta.__getitem_inner__.<locals>.<genexpr>)r|   r  rT   r   r   rm   )r[   r   r\   r  )rZ   )r   rD   r  >  s    

zCallableMeta.__getitem_inner__)	rA   rd   r@   rf   r   r   r   r  rh   rC   rC   )rZ   rD   r    s   r  c               @   s   e Zd Zf Zdd ZdS )r   c             O   s&   | j tkrtdt| j| f||S )NzIType Callable cannot be instantiated; use a non-abstract subclass instead)r   r   rP   r
  r   )rV   r\   r]   rC   rC   rD   rU   X  s    
zCallable.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r   K  s   c                   sJ   e Zd ZdZdddZdd Zdd Z fd	d
Zdd Zdd Z	  Z
S )r   __type__Nc             K   s
   || _ d S )N)r  )r[   tpr]   rC   rC   rD   r^   r  s    z_ClassVar.__init__c             C   sP   t | }| jd kr4|t|dj|jdd  ddS tdj|jdd  d S )Nz{} accepts only single type.rK   T)rO   z {} cannot be further subscripted)rn   r  r|   formatrA   rP   )r[   itemrV   rC   rC   rD   r   u  s    
z_ClassVar.__getitem__c             C   s,   t | j||}|| jkr| S t| |ddS )NT)rO   )ra   r  rn   )r[   r_   r`   Znew_tprC   rC   rD   ra   ~  s    
z_ClassVar._eval_typec                s,   t  j }| jd k	r(|djt| j7 }|S )Nz[{}])rT   rf   r  r  rS   )r[   r)rZ   rC   rD   rf     s    

z_ClassVar.__repr__c             C   s   t t| j| jfS )N)r   rn   rA   r  )r[   rC   rC   rD   r     s    z_ClassVar.__hash__c             C   s,   t |tstS | jd k	r$| j|jkS | |kS )N)rk   r   r}   r  )r[   r~   rC   rC   rD   r     s
    

z_ClassVar.__eq__)r  )N)rA   rd   r@   rp   r^   r   ra   rf   r   r   rh   rC   rC   )rZ   rD   r   _  s   
	r   c             C   s   |S )NrC   )typvalrC   rC   rD   r6     s    c       
      C   s   y
| j }W n tk
r   i S X |j}|j}|d | }| jp@f }| j}|rTt|ni }|t| }x&t||d  |D ]\}}	|	||< qxW |S )N)	__code__r	  co_argcountco_varnames__defaults____kwdefaults__r   rj   zip)
r   r{   Z	pos_countZ	arg_namesdefaultsZ
kwdefaultsr   Z
pos_offsetrW   r   rC   rC   rD   _get_defaults  s    

r  c       
      C   s  t | dd ri S t| tri }xt| jD ]z}|d krFtj|j j}n|}|jj	di }xJ|j
 D ]>\}}|d krztd }t|trt|}t|||}|||< qbW q*W |S |d krt| tjr| j}nt | di }|d kr|}n|d kr|}t | dd }|d kr"t| tri S tdj| t| }	t|}xp|j
 D ]d\}}|d krVtd }t|trjt|}t|||}||	kr|	| d krt| }|||< q<W |S )N__no_type_check____annotations____globals__z1{!r} is not a module, class, method, or function.)r   rk   rn   reversedr   r>   modulesrd   r   getitemsrl   rG   ra   r   
ModuleType_allowed_typesrP   r  r  r   r   )
r   r_   r`   Zhintsr   Zbase_globalsZannrW   r   r  rC   rC   rD   r7     sV    



c             C   s   t | tr|| jj }x0| jj D ]"\}}|| j| f kr |j| q W x4|j D ](}t |tj	rfd|_
t |trPt| qPW y
d| _
W n tk
r   Y nX | S )NT)rk   rn   r   copyr&  r   r   valuesr   r   r   r9   rP   )rz   Z	arg_attrsr  r  r   rC   rC   rD   r9     s    	



c                s   t j  fdd}|S )Nc                 s    | |}t |}|S )N)r9   )r\   r]   r   )	decoratorrC   rD   wrapped_decorator/  s    
z2no_type_check_decorator.<locals>.wrapped_decorator)r   r   )r+  r,  rC   )r+  rD   r:   (  s    c              O   s   t dd S )NzYou should not call an overloaded function. A series of @overload-decorated functions outside a stub module should always be followed by an implementation that is not @overload-ed.)NotImplementedError)r\   r]   rC   rC   rD   _overload_dummy8  s    r.  c             C   s   t S )N)r.  )r   rC   rC   rD   r;   A  s    c                   s,   e Zd Z fddZdd Zdd Z  ZS )_ProtocolMetac                s"   t | jkrt j|S tdd S )Nz+Protocols cannot be used with isinstance().)r   r   rT   r   rP   )r[   r   )rZ   rC   rD   r   e  s    
z_ProtocolMeta.__instancecheck__c                sL   | j s
tS | tkrdS | j }x(|D ]  t fdd|jD s$dS q$W dS )NTc             3   s   | ]} |j kV  qd S )N)r   )r   d)r  rC   rD   r   w  s    z2_ProtocolMeta.__subclasscheck__.<locals>.<genexpr>F)rg   r}   r   _get_protocol_attrsr   r   )r[   rV   attrsrC   )r  rD   r   j  s    
z_ProtocolMeta.__subclasscheck__c             C   s,  g }x.| j D ]$}t|ddr|jdkr|j| qW t } x|D  ]}x|jj D ]}x| j D ]&}||k	r`||jkr`t|dd r`P q`W |jd rT|dkrT|dkrT|dkrT|dkrT|dkrT|d	krT|d
krT|dkrT|dkrT|dkrT|dkrT|dkrT|dkrT|dkrT|dkrT|dkrT|j| qTW qBW |S )Nrg   Fr   r  __abstractmethods__r!  ri   r   r   r   rp   r1  r   r   r   r   r   r   rd   )	r   r   rA   r   r   r   keysrL   add)r[   Zprotocol_basesr   r2  r   r  rC   rC   rD   r1  {  s<    z!_ProtocolMeta._get_protocol_attrs)rA   rd   r@   r   r   r1  rh   rC   rC   )rZ   rD   r/  ^  s   r/  c               @   s   e Zd Zf ZdZdS )r   TN)rA   rd   r@   rp   rg   rC   rC   rC   rD   r     s   r   	Awaitablec               @   s   e Zd Zf ZdS )r6  N)rA   rd   r@   rp   rC   rC   rC   rD   r6    s   )r   	Coroutinec               @   s   e Zd Zf ZdS )r7  N)rA   rd   r@   rp   rC   rC   rC   rD   r7    s   AsyncIterablec               @   s   e Zd Zf ZdS )r8  N)rA   rd   r@   rp   rC   rC   rC   rD   r8    s   c               @   s   e Zd Zf ZdS )AsyncIteratorN)rA   rd   r@   rp   rC   rC   rC   rD   r9    s   r9  c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r     s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r     s   c               @   s"   e Zd Zf ZeedddZdS )r*   )returnc             C   s   d S )NrC   )r[   rC   rC   rD   __int__  s    zSupportsInt.__int__N)rA   rd   r@   rp   r   intr;  rC   rC   rC   rD   r*     s   c               @   s"   e Zd Zf ZeedddZdS )r)   )r:  c             C   s   d S )NrC   )r[   rC   rC   rD   	__float__  s    zSupportsFloat.__float__N)rA   rd   r@   rp   r   floatr=  rC   rC   rC   rD   r)     s   c               @   s"   e Zd Zf ZeedddZdS )r(   )r:  c             C   s   d S )NrC   )r[   rC   rC   rD   __complex__  s    zSupportsComplex.__complex__N)rA   rd   r@   rp   r   complexr?  rC   rC   rC   rD   r(     s   c               @   s"   e Zd Zf ZeedddZdS )r'   )r:  c             C   s   d S )NrC   )r[   rC   rC   rD   	__bytes__  s    zSupportsBytes.__bytes__N)rA   rd   r@   rp   r   bytesrA  rC   rC   rC   rD   r'     s   c               @   s"   e Zd Zf ZeedddZdS )r&   )r:  c             C   s   d S )NrC   )r[   rC   rC   rD   __abs__  s    zSupportsAbs.__abs__N)rA   rd   r@   rp   r   r   rC  rC   rC   rC   rD   r&     s   c               @   s&   e Zd Zf ZedeedddZdS )r+   r   )ndigitsr:  c             C   s   d S )NrC   )r[   rD  rC   rC   rD   	__round__  s    zSupportsRound.__round__N)r   )rA   rd   r@   rp   r   r<  r   rE  rC   rC   rC   rD   r+     s   c               @   s   e Zd Zf ZdS )r%   N)rA   rd   r@   rp   rC   rC   rC   rD   r%   
  s   c               @   s"   e Zd Zf ZeddddZdS )r%   zIterator[T_co])r:  c             C   s   d S )NrC   )r[   rC   rC   rD   __reversed__  s    zReversible.__reversed__N)rA   rd   r@   rp   r   rF  rC   rC   rC   rD   r%     s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r     s   
Collectionc               @   s   e Zd Zf ZdS )rG  N)rA   rd   r@   rp   rC   rC   rC   rD   rG    s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   '  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   +  s   c               @   s   e Zd Zf ZdS )r!   N)rA   rd   r@   rp   rC   rC   rC   rD   r!   0  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   6  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   :  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   ?  s   c               @   s   e Zd Zf ZdS )r"   N)rA   rd   r@   rp   rC   rC   rC   rD   r"   E  s   c               @   s   e Zd Zf ZdS )r"   N)rA   rd   r@   rp   rC   rC   rC   rD   r"   I  s   c               @   s   e Zd Zf ZdS )r"   N)rA   rd   r@   rp   rC   rC   rC   rD   r"   M  s   c               @   s   e Zd Zf ZdS )r    N)rA   rd   r@   rp   rC   rC   rC   rD   r    R  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   V  s   c               @   s   e Zd Zf Zdd ZdS )r0   c             O   s$   | j tkrtdtt| f||S )Nz4Type List cannot be instantiated; use list() instead)r   r0   rP   r
  r  )rV   r\   r]   rC   rC   rD   rU   ^  s    
zList.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r0   Z  s   c               @   s   e Zd Zf Zdd ZdS )r-   c             O   s*   | j tkrtj||S ttj| f||S )N)r   r-   collectionsdequer
  )rV   r\   r]   rC   rC   rD   rU   i  s    
zDeque.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r-   e  s   c               @   s   e Zd Zf Zdd ZdS )r1   c             O   s$   | j tkrtdtt| f||S )Nz2Type Set cannot be instantiated; use set() instead)r   r1   rP   r
  r   )rV   r\   r]   rC   rC   rD   rU   s  s    
zSet.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r1   o  s   c               @   s   e Zd Zf Zdd ZdS )r2   c             O   s$   | j tkrtdtt| f||S )Nz>Type FrozenSet cannot be instantiated; use frozenset() instead)r   r2   rP   r
  r   )rV   r\   r]   rC   rC   rD   rU   }  s    
zFrozenSet.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r2   z  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r     s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r     s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r     s   c               @   s   e Zd Zf ZdS )r$   N)rA   rd   r@   rp   rC   rC   rC   rD   r$     s   AbstractContextManagerc               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r     s   c               @   s2   e Zd Zf Zdd Zejdd Zedd Z	dS )r   c             C   s   | S )NrC   )r[   rC   rC   rD   	__enter__  s    zContextManager.__enter__c             C   s   d S )NrC   )r[   exc_type	exc_value	tracebackrC   rC   rD   __exit__  s    zContextManager.__exit__c             C   s8   | t kr4tdd |jD r4tdd |jD r4dS tS )Nc             s   s   | ]}d |j kV  qdS )rK  N)r   )r   BrC   rC   rD   r     s    z2ContextManager.__subclasshook__.<locals>.<genexpr>c             s   s   | ]}d |j kV  qdS )rO  N)r   )r   rP  rC   rC   rD   r     s    T)r   r   r   r}   )rV   CrC   rC   rD   r     s
    zContextManager.__subclasshook__N)
rA   rd   r@   rp   rK  r   r   rO  classmethodr   rC   rC   rC   rD   r     s   AbstractAsyncContextManagerc               @   s   e Zd Zf ZdS )AsyncContextManagerN)rA   rd   r@   rp   rC   rC   rC   rD   rT    s   rT     a  
class AsyncContextManager(Generic[T_co]):
    __slots__ = ()

    async def __aenter__(self):
        return self

    @abc.abstractmethod
    async def __aexit__(self, exc_type, exc_value, traceback):
        return None

    @classmethod
    def __subclasshook__(cls, C):
        if cls is AsyncContextManager:
            if sys.version_info[:2] >= (3, 6):
                return _collections_abc._check_methods(C, "__aenter__", "__aexit__")
            if (any("__aenter__" in B.__dict__ for B in C.__mro__) and
                    any("__aexit__" in B.__dict__ for B in C.__mro__)):
                return True
        return NotImplemented

__all__.append('AsyncContextManager')
c               @   s   e Zd Zf Zdd ZdS )r.   c             O   s$   | j tkrtdtt| f||S )Nz4Type Dict cannot be instantiated; use dict() instead)r   r.   rP   r
  r   )rV   r\   r]   rC   rC   rD   rU     s    
zDict.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r.     s   c               @   s   e Zd Zf Zdd ZdS )r/   c             O   s*   | j tkrtj||S ttj| f||S )N)r   r/   rH  defaultdictr
  )rV   r\   r]   rC   rC   rD   rU     s    
zDefaultDict.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r/     s   c               @   s   e Zd Zf Zdd ZdS )r,   c             O   s*   | j tkrtj||S ttj| f||S )N)r   r,   rH  r
  )rV   r\   r]   rC   rC   rD   rU     s    
zCounter.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r,     s   ChainMapc               @   s   e Zd Zf Zdd ZdS )rW  c             O   s*   | j tkrtj||S ttj| f||S )N)r   rW  rH  r
  )rV   r\   r]   rC   rC   rD   rU     s    
zChainMap.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   rW    s   c               @   s   e Zd Zf Zdd ZdS )r4   c             O   s$   | j tkrtdtt| f||S )Nz@Type Generator cannot be instantiated; create a subclass instead)r   r4   rP   r
  _G_base)rV   r\   r]   rC   rC   rD   rU     s    
zGenerator.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r4     s   AsyncGeneratorc               @   s   e Zd Zf ZdS )rY  N)rA   rd   r@   rp   rC   rC   rC   rD   rY    s   CT_co)r   r   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   $  s   c                sv   d  fdd|D }t j| dd |D }t j| |_|_ytjdjjdd|_	W n t
tfk
rp   Y nX |S )NzDNamedTuple('Name', [(f0, t0), (f1, t1), ...]); each t must be a typec                s   g | ]\}}|t | fqS rC   )r|   )r   nr   )r   rC   rD   
<listcomp>A  s    z!_make_nmtuple.<locals>.<listcomp>c             S   s   g | ]\}}|qS rC   rC   )r   r[  r   rC   rC   rD   r\  B  s    r   rA   __main__)rH  
namedtupleOrderedDictr!  _field_typesr>   r  r  r%  rd   r	  r   )rW   r   nm_tplrC   )r   rD   _make_nmtuple?  s    rb  rU   r^   rp   __getnewargs___fields_field_defaultsr`  _make_replace_asdict_sourcerd   rA   r@   r!  c                   s   e Zd Z fddZ  ZS )NamedTupleMetac                s  |j ddrt j| |||S ts*td|j di }t||j }g }i }xP|D ]H}||krz|| }	|j|	 |	||< qR|rRtdj|dj	|j
 dqRW tj||j_t||j_||_xD|D ]<}
|
tkrtd|
 q|
tko|
|jkrt||
||
  qW |S )	NrO   Fz<Class syntax for NamedTuple is only supported in Python 3.6+r!  zXNon-default namedtuple field {field_name} cannot follow default field(s) {default_names}z, )
field_nameZdefault_namesz&Cannot overwrite NamedTuple attribute )r%  rT   rU   _PY36rP   rb  r&  r   r  rQ   r4  rH  r_  r!  rm   r  re  _prohibitedr	  _specialrd  setattr)rV   typenamerX   nsr   ra  r  Zdefaults_dictrk  Zdefault_valuekey)rZ   rC   rD   rU   Y  s4    



zNamedTupleMeta.__new__)rA   rd   r@   rU   rh   rC   rC   )rZ   rD   rj  W  s   rj  c               @   s   e Zd ZdZdddZdS )r3   TNc             K   s:   |rt  rtd|d kr$|j }n|r0tdt||S )Nz>Keyword syntax for NamedTuple is only supported in Python 3.6+zIEither list of fields or keywords can be provided to NamedTuple, not both)rl  rP   r&  rb  )r[   rp  ZfieldskwargsrC   rC   rD   rU     s    

zNamedTuple.__new__)N)rA   rd   r@   rO   rU   rC   rC   rC   rD   r3   y  s   c             C   s   dd }| |_ ||_|S )Nc             S   s   | S )NrC   )rB   rC   rC   rD   new_type  s    zNewType.<locals>.new_type)rA   Z__supertype__)rW   r  rt  rC   rC   rD   r8     s    Fc               @   s  e Zd Zf ZeedddZeedddZeddddZ	ee
dd	d
ZeedddZeddddZee
dddZed6eedddZee
dddZed8eedddZed:eee dddZed;eeeddd Zee
dd!d"Zeedd#d$Zed<eed%d&d'Zee
dd(d)Zeeed*d+d,Zeee dd-d.d/Zed0dd1d2Zeddd3d4ZdS )=IO)r:  c             C   s   d S )NrC   )r[   rC   rC   rD   mode  s    zIO.modec             C   s   d S )NrC   )r[   rC   rC   rD   rW     s    zIO.nameNc             C   s   d S )NrC   )r[   rC   rC   rD   close  s    zIO.closec             C   s   d S )NrC   )r[   rC   rC   rD   closed  s    z	IO.closedc             C   s   d S )NrC   )r[   rC   rC   rD   fileno  s    z	IO.filenoc             C   s   d S )NrC   )r[   rC   rC   rD   flush  s    zIO.flushc             C   s   d S )NrC   )r[   rC   rC   rD   isatty  s    z	IO.isattyrK   )r[  r:  c             C   s   d S )NrC   )r[   r[  rC   rC   rD   read  s    zIO.readc             C   s   d S )NrC   )r[   rC   rC   rD   readable  s    zIO.readable)limitr:  c             C   s   d S )NrC   )r[   r~  rC   rC   rD   readline  s    zIO.readline)hintr:  c             C   s   d S )NrC   )r[   r  rC   rC   rD   	readlines  s    zIO.readlinesr   )offsetwhencer:  c             C   s   d S )NrC   )r[   r  r  rC   rC   rD   seek  s    zIO.seekc             C   s   d S )NrC   )r[   rC   rC   rD   seekable	  s    zIO.seekablec             C   s   d S )NrC   )r[   rC   rC   rD   tell	  s    zIO.tell)sizer:  c             C   s   d S )NrC   )r[   r  rC   rC   rD   truncate	  s    zIO.truncatec             C   s   d S )NrC   )r[   rC   rC   rD   writable	  s    zIO.writable)sr:  c             C   s   d S )NrC   )r[   r  rC   rC   rD   write	  s    zIO.write)linesr:  c             C   s   d S )NrC   )r[   r  rC   rC   rD   
writelines	  s    zIO.writelinesz
IO[AnyStr]c             C   s   d S )NrC   )r[   rC   rC   rD   rK  	  s    zIO.__enter__c             C   s   d S )NrC   )r[   rn   r   rN  rC   rC   rD   rO  	  s    zIO.__exit__r   )r   r   )r   r   )r   )r   )N)rA   rd   r@   rp   r   rl   rv  rW   r   rw  r   rx  r<  ry  rz  r{  r5   r|  r}  r  r0   r  r  r  r  r  r  r  r  rK  rO  rC   rC   rC   rD   ru    sR   ru  c               @   s>   e Zd Zf Zeeeef edddZ	ed dddZ
dS )BinaryIO)r  r:  c             C   s   d S )NrC   )r[   r  rC   rC   rD   r  )	  s    zBinaryIO.write)r:  c             C   s   d S )NrC   )r[   rC   rC   rD   rK  -	  s    zBinaryIO.__enter__N)rA   rd   r@   rp   r   r   rB  	bytearrayr<  r  rK  rC   rC   rC   rD   r  $	  s
   r  c               @   s   e Zd Zf ZeedddZeedddZee	e dddZ
eeddd	Zeedd
dZed dddZdS )TextIO)r:  c             C   s   d S )NrC   )r[   rC   rC   rD   buffer7	  s    zTextIO.bufferc             C   s   d S )NrC   )r[   rC   rC   rD   encoding;	  s    zTextIO.encodingc             C   s   d S )NrC   )r[   rC   rC   rD   errors?	  s    zTextIO.errorsc             C   s   d S )NrC   )r[   rC   rC   rD   line_bufferingC	  s    zTextIO.line_bufferingc             C   s   d S )NrC   )r[   rC   rC   rD   newlinesG	  s    zTextIO.newlinesc             C   s   d S )NrC   )r[   rC   rC   rD   rK  K	  s    zTextIO.__enter__N)rA   rd   r@   rp   r   r  r  rl   r  r   r  r   r  r
   r  r   rK  rC   rC   rC   rD   r  2	  s   r  c               @   s"   e Zd ZdddgZeZeZeZdS )ioru  r  r  N)rA   rd   r@   __all__ru  r  r  rC   rC   rC   rD   r  P	  s   
r  z.ioPatternr   c             C   s   | j S )N)pattern)r   rC   rC   rD   <lambda>^	  s    r  Matchc             C   s   | j jS )N)rer  )mrC   rC   rD   r  `	  s    c               @   s   e Zd ZddgZeZeZdS )r  r  r  N)rA   rd   r@   r  r  r  rC   rC   rC   rD   r  c	  s   r  z.re)r   r   )NN)NN)r   rU  )r   r   )rU   r^   rp   rc  rd  re  r`  rf  rg  rh  ri  )rd   rA   r@   r!  )r   r   r   rH  
contextlibr   r  Z	stdlib_rer>   r   collections.abcZcollections_abcImportErrorr?   _collections_abcr   r   r	   rn   r   r^   __str__rl   rQ   r  rE   rM   rN   rH   rI   rG   rF   rc   r   ra   r|   rS   r   r
   r   ZNoReturnr   r   r   r   r   r   r   r   rB  r5   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r   r   r  rm   r   r  r   r   r   r6   r  r   BuiltinFunctionType
MethodTyper'  r(  r7   r9   r:   r.  r;   r/  r   r   r   r6  r   r7  r8  r9  r   r   r*   r)   r(   r'   r&   r+   r%   r#   r   rG  r1   r   r!   r   r   r"   r    r<  r   r  r0   rI  r-   r   r   r2   r   r   r   r$   rJ  r   rS  rT  execr   r.   rV  r/   r,   rW  r4   rX  GeneratorTyperY  rZ  r   rb  rl  rm  rn  rj  r3   r8   r<   r=   ru  r  r  r  rA   r$  rx   r  matchr  rC   rC   rC   rD   <module>   s  
*%5C

W
!) 

  "96


R	D








"









"





  "(`	



