o
    >cz                     @   s   	 d d Z G dd deZG dd deZG dd deZzdd	lmZm	Z	m
Z
mZmZmZmZmZ W n eyG   dd
lmZmZ de_Y n	w G dd deZdd ZG dd dedZdS )c                 C   s   	 d| _ | S NT)__isabstractmethod__)Zfuncobj r   W/Volumes/Data/workspace/med-macos-weekly/build/ExtProjs/pyncpp/python/source/Lib/abc.pyabstractmethod   s   r   c                       "   e Zd Z	 dZ fddZ  ZS )abstractclassmethodTc                       d|_ t | d S r   r   super__init__selfcallable	__class__r   r   r   +      zabstractclassmethod.__init____name__
__module____qualname__r   r   __classcell__r   r   r   r   r          r   c                       r   )abstractstaticmethodTc                    r   r   r	   r   r   r   r   r   ?   r   zabstractstaticmethod.__init__r   r   r   r   r   r   0   r   r   c                   @      e Zd Z	 dZdS )abstractpropertyTN)r   r   r   r   r   r   r   r   r   D   s    r       )get_cache_token	_abc_init_abc_register_abc_instancecheck_abc_subclasscheck	_get_dump_reset_registry_reset_caches)ABCMetar   abcc                       sP   e Zd Z	  fddZdd Zdd Zdd Zdd
dZdd Zdd Z	  Z
S )r$   c                    s&   t  j| |||fi |}t| |S N)r
   __new__r   )ZmclsnamebasesZ	namespacekwargsclsr   r   r   r'   i   s   zABCMeta.__new__c                 C      	 t | |S r&   )r   r+   Zsubclassr   r   r   registern   s   
zABCMeta.registerc                 C   r,   r&   )r   )r+   Zinstancer   r   r   __instancecheck__u      
zABCMeta.__instancecheck__c                 C   r,   r&   )r    r-   r   r   r   __subclasscheck__y   r0   zABCMeta.__subclasscheck__Nc                 C   s   	 t d| j d| j |d t dt  |d t| \}}}}t d||d t d||d t d||d t d||d d S )	NzClass: .)filezInv. counter: z_abc_registry: z_abc_cache: z_abc_negative_cache: z_abc_negative_cache_version: )printr   r   r   r!   )r+   r3   Z_abc_registryZ
_abc_cacheZ_abc_negative_cacheZ_abc_negative_cache_versionr   r   r   _dump_registry}   s   

zABCMeta._dump_registryc                 C      	 t |  d S r&   )r"   r+   r   r   r   _abc_registry_clear      zABCMeta._abc_registry_clearc                 C   r6   r&   )r#   r7   r   r   r   _abc_caches_clear   r9   zABCMeta._abc_caches_clearr&   )r   r   r   r'   r.   r/   r1   r5   r8   r:   r   r   r   r   r   r$   \   s    
r$   c                 C   s   	 t | ds| S t }| jD ]}t|ddD ]}t| |d }t|ddr)|| qq| j D ]\}}t|ddr?|| q0t|| _| S )N__abstractmethods__r   r   F)	hasattrset	__bases__getattradd__dict__items	frozensetr;   )r+   Z	abstractsZsclsr(   valuer   r   r   update_abstractmethods   s"   




rE   c                   @   r   )ABCr   N)r   r   r   	__slots__r   r   r   r   rF      s    rF   )	metaclassN)r   classmethodr   staticmethodr   propertyr   Z_abcr   r   r   r   r    r!   r"   r#   ImportErrorZ_py_abcr$   r   typerE   rF   r   r   r   r   <module>   s   ,
6&