B
    w2[&                 @   s  d dl Z dd ZeeZedd ZeejZeejZee j	Z
dd Zee Zdd	 Ze ZeeZe  d
d Ze ZeeZG dd dZee jZeeZeg jZeejZee jZeejZ ee!jd Z"ee Z#ye$W n: e$k
r,   e % d Z&ee&Z'ee&j(Z)dZ&[&Y nX eejZ*eej+Z,[ [[[[d!ddZ-dd Z.d"ddZ/dd Z0G dd dZ1G dd dZ2dd Z3dd  e4 D Z5dS )#    Nc               C   s   d S )N r   r   r   /root/Python-3.7.0/Lib/types.py_f   s    r   c               C   s   d S )Nr   r   r   r   r   <lambda>   s    r   c               c   s
   dV  d S )N   r   r   r   r   r   _g   s    r   c                  s   d S )Nr   r   r   r   r   _c   s    r   c               C  s
   d V  d S )Nr   r   r   r   r   _ag   s    r	   c               @   s   e Zd Zdd ZdS )_Cc             C   s   d S )Nr   )selfr   r   r   _m!   s    z_C._mN)__name__
__module____qualname__r   r   r   r   r   r
       s   r
   fromkeys   r   c             C   sJ   t |}t| ||\}}}|d k	r*|| ||k	r:||d< || ||f|S )NZ__orig_bases__)resolve_basesprepare_class)namebaseskwdsZ	exec_bodyZresolved_basesmetansr   r   r   	new_class>   s    r   c             C   s   t | }d}d}xvt| D ]j\}}t|tr.qt|ds:q|| }d}t|ts\tdq|||| || d < |t|d 7 }qW |s| S t|S )NFr   __mro_entries__Tz#__mro_entries__ must return a tupler   )	list	enumerate
isinstancetypehasattrr   tuple	TypeErrorlen)r   Z	new_basesZupdatedZshiftibaseZnew_baser   r   r   r   H   s"    




r   c             C   s~   |d kri }nt |}d|kr*|d}n|r<t|d }nt}t|trTt||}t|drp|j| |f|}ni }|||fS )N	metaclassr   __prepare__)dictpopr   r   _calculate_metar   r&   )r   r   r   r   r   r   r   r   r   ]   s    


r   c             C   sB   | }x8|D ]0}t |}t||r"q
t||r2|}q
tdq
W |S )Nzxmetaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases)r   
issubclassr!   )r   r   Zwinnerr$   Z	base_metar   r   r   r)   }   s    


r)   c               @   sH   e Zd ZdddZdddZdd Zdd	 Zd
d Zdd Zdd Z	dS )DynamicClassAttributeNc             C   s>   || _ || _|| _|p|j| _|d k| _tt|dd| _d S )N__isabstractmethod__F)fgetfsetfdel__doc__overwrite_docboolgetattrr,   )r   r-   r.   r/   docr   r   r   __init__   s    
zDynamicClassAttribute.__init__c             C   s6   |d kr| j r| S t n| jd kr,td| |S )Nzunreadable attribute)r,   AttributeErrorr-   )r   instanceZ
ownerclassr   r   r   __get__   s    
zDynamicClassAttribute.__get__c             C   s"   | j d krtd|  || d S )Nzcan't set attribute)r.   r6   )r   r7   valuer   r   r   __set__   s    
zDynamicClassAttribute.__set__c             C   s    | j d krtd|  | d S )Nzcan't delete attribute)r/   r6   )r   r7   r   r   r   
__delete__   s    
z DynamicClassAttribute.__delete__c             C   s8   | j r|jnd }t| || j| j|p(| j}| j |_ |S )N)r1   r0   r   r.   r/   )r   r-   Zfdocresultr   r   r   getter   s    zDynamicClassAttribute.getterc             C   s$   t | | j|| j| j}| j|_|S )N)r   r-   r/   r0   r1   )r   r.   r<   r   r   r   setter   s    zDynamicClassAttribute.setterc             C   s$   t | | j| j|| j}| j|_|S )N)r   r-   r.   r0   r1   )r   r/   r<   r   r   r   deleter   s    zDynamicClassAttribute.deleter)NNNN)N)
r   r   r   r5   r8   r:   r;   r=   r>   r?   r   r   r   r   r+      s   


	r+   c               @   s   e Zd Zdd Zdd Zdd Zdd Zed	d
 Zedd Z	edd Z
edd ZeZe	Ze
ZeZdd Zdd ZeZdS )_GeneratorWrapperc             C   s2   || _ |jtk| _t|dd | _t|dd | _d S )Nr   r   )_GeneratorWrapper__wrapped	__class__GeneratorType_GeneratorWrapper__isgenr3   r   r   )r   Zgenr   r   r   r5      s    z_GeneratorWrapper.__init__c             C   s   | j |S )N)rA   send)r   valr   r   r   rE      s    z_GeneratorWrapper.sendc             G   s   | j j|f| S )N)rA   throw)r   Ztprestr   r   r   rG      s    z_GeneratorWrapper.throwc             C   s
   | j  S )N)rA   close)r   r   r   r   rI      s    z_GeneratorWrapper.closec             C   s   | j jS )N)rA   gi_code)r   r   r   r   rJ      s    z_GeneratorWrapper.gi_codec             C   s   | j jS )N)rA   gi_frame)r   r   r   r   rK      s    z_GeneratorWrapper.gi_framec             C   s   | j jS )N)rA   
gi_running)r   r   r   r   rL      s    z_GeneratorWrapper.gi_runningc             C   s   | j jS )N)rA   gi_yieldfrom)r   r   r   r   rM      s    z_GeneratorWrapper.gi_yieldfromc             C   s
   t | jS )N)nextrA   )r   r   r   r   __next__   s    z_GeneratorWrapper.__next__c             C   s   | j r| jS | S )N)rD   rA   )r   r   r   r   __iter__   s    z_GeneratorWrapper.__iter__N)r   r   r   r5   rE   rG   rI   propertyrJ   rK   rL   rM   cr_codecr_frame
cr_runningcr_awaitrO   rP   	__await__r   r   r   r   r@      s   r@   c                s   t stdjtkrtdd jtkrjj}|d@ r@S |d@ rj}t|j|j	|j
|j|jdB |j|j|j|j|j|j|j|j|j|j_S dd l}dd l | fdd}|S )	Nz$types.coroutine() expects a callable__code__i         r   c                 sR   | |}|j tks*|j tkr.|jjd@ r.|S t| jrNt| jsNt|S |S )NrY   )	rB   CoroutineTyperC   rJ   co_flagsr   Z	GeneratorZ	Coroutiner@   )argskwargscoro)_collections_abcfuncr   r   wrapped  s    

zcoroutine.<locals>.wrapped)callabler!   rB   FunctionTyper3   CodeTyperW   r[   co_argcountco_kwonlyargcount
co_nlocalsco_stacksizeco_code	co_constsco_namesco_varnamesco_filenameco_nameco_firstlineno	co_lnotabco_freevarsco_cellvars	functoolsr_   Zwraps)r`   r[   Zcors   ra   r   )r_   r`   r   	coroutine   s,    

rt   c             C   s    g | ]}|d d dkr|qS )Nr   _r   ).0nr   r   r   
<listcomp>'  s    rx   )r   NN)r   N)6sysr   r   rc   Z
LambdaTyperW   rd   __dict__MappingProxyTypeimplementationZSimpleNamespacer   rC   r   rZ   rI   r	   ZAsyncGeneratorTyper
   r   Z
MethodTyper"   ZBuiltinFunctionTypeappendZBuiltinMethodTypeobjectr5   ZWrapperDescriptorType__str__ZMethodWrapperTypestrjoinZMethodDescriptorTyper'   ZClassMethodDescriptorTypeZ
ModuleTyper!   exc_infotbZTracebackTypetb_frameZ	FrameTypeZGetSetDescriptorType__globals__ZMemberDescriptorTyper   r   r   r)   r+   r@   rt   globals__all__r   r   r   r   <module>   sV   







 





 :%: