o
    IAfz                     @   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__)funcobj r   /usr/lib/python3.10/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   )mclsnamebases	namespacekwargsclsr   r   r   r(   i   s   zABCMeta.__new__c                 C      	 t | |S r'   )r   r.   subclassr   r   r   registern   s   
zABCMeta.registerc                 C   r/   r'   )r    )r.   instancer   r   r   __instancecheck__u      
zABCMeta.__instancecheck__c                 C   r/   r'   )r!   r0   r   r   r   __subclasscheck__y   r5   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.   r8   _abc_registry
_abc_cache_abc_negative_cache_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   r?   r'   )r$   r@   r   r   r   _abc_caches_clear   rB   zABCMeta._abc_caches_clearr'   )r   r   r   r(   r2   r4   r6   r>   rA   rC   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	frozensetrD   )r.   	abstractssclsr*   valuer   r   r   update_abstractmethods   s"   




rP   c                   @   r   )ABCr   N)r   r   r   	__slots__r   r   r   r   rQ      s    rQ   )	metaclassN)r   classmethodr   staticmethodr   propertyr   _abcr   r   r   r    r!   r"   r#   r$   ImportErrorZ_py_abcr%   r   typerP   rQ   r   r   r   r   <module>   s   ,
6&