
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \"  ã               @   sr   d dl mZ dd„ ZG dd„ deƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ de	ƒZ
G dd„ de
d�Zdd„ ZdS )é    )ÚWeakSetc             C   s
   d| _ | S )NT)Ú__isabstractmethod__)Úfuncobj© r   ú/usr/lib64/python3.6/abc.pyÚabstractmethod	   s    r   c                   s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚabstractclassmethodTc                s   d|_ tƒ j|ƒ d S )NT)r   ÚsuperÚ__init__)ÚselfÚcallable)Ú	__class__r   r   r
   0   s    zabstractclassmethod.__init__)Ú__name__Ú
__module__Ú__qualname__r   r
   Ú__classcell__r   r   )r   r   r      s   r   c                   s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚabstractstaticmethodTc                s   d|_ tƒ j|ƒ d S )NT)r   r	   r
   )r   r   )r   r   r   r
   H   s    zabstractstaticmethod.__init__)r   r   r   r   r
   r   r   r   )r   r   r   5   s   r   c               @   s   e Zd ZdZdS )ÚabstractpropertyTN)r   r   r   r   r   r   r   r   r   M   s   r   c                   sB   e Zd ZdZ‡ fdd„Zdd„ Zddd„Zd	d
„ Zdd„ Z‡  Z	S )ÚABCMetar   c       	         sž   t ƒ j| |||f|Ž}dd„ |jƒ D ƒ}xF|D ]>}x8t|dtƒ ƒD ]&}t||d ƒ}t|ddƒrB|j|ƒ qBW q.W t|ƒ|_tƒ |_	tƒ |_
tƒ |_tj|_|S )Nc             S   s    h | ]\}}t |d dƒr|’qS )r   F)Úgetattr)Ú.0ÚnameÚvaluer   r   r   ú	<setcomp>‡   s   z"ABCMeta.__new__.<locals>.<setcomp>Ú__abstractmethods__r   F)r	   Ú__new__Úitemsr   ÚsetÚaddÚ	frozensetr   r   Ú_abc_registryÚ
_abc_cacheÚ_abc_negative_cacher   Ú_abc_invalidation_counterÚ_abc_negative_cache_version)	Úmclsr   ÚbasesÚ	namespaceÚkwargsÚclsÚ	abstractsÚbaser   )r   r   r   r   „   s    

zABCMeta.__new__c             C   sP   t |tƒstdƒ‚t|| ƒr |S t| |ƒr2tdƒ‚| jj|ƒ t jd7  _|S )NzCan only register classesz'Refusing to create an inheritance cycleé   )	Ú
isinstanceÚtypeÚ	TypeErrorÚ
issubclassÚRuntimeErrorr    r   r   r#   )r)   Úsubclassr   r   r   Úregister—   s    


zABCMeta.registerNc             C   s|   t d| j| jf |d� t dtj |d� xLt| jƒD ]>}|jdƒr6t| |ƒ}t	|t
ƒr`t|ƒ}t d||f |d� q6W d S )NzClass: %s.%s)ÚfilezInv.counter: %sÚ_abc_z%s: %r)Úprintr   r   r   r#   ÚsortedÚ__dict__Ú
startswithr   r-   r   r   )r)   r4   r   r   r   r   r   Ú_dump_registry©   s    


zABCMeta._dump_registryc                sb   |j }|ˆ jkrdS t|ƒ}||krHˆ jtjkr>|ˆ jkr>dS ˆ j|ƒS t‡ fdd„||hD ƒƒS )NTFc             3   s   | ]}ˆ j |ƒV  qd S )N)Ú__subclasscheck__)r   Úc)r)   r   r   ú	<genexpr>Â   s    z,ABCMeta.__instancecheck__.<locals>.<genexpr>)	r   r!   r.   r$   r   r#   r"   r;   Úany)r)   Úinstancer2   Úsubtyper   )r)   r   Ú__instancecheck__´   s    


zABCMeta.__instancecheck__c             C   sô   || j krdS | jtjk r,tƒ | _tj| _n|| jkr:dS | j|ƒ}|tk	rn|r^| j j|ƒ n| jj|ƒ |S | t	|df ƒkrŽ| j j|ƒ dS x(| j
D ]}t||ƒr–| j j|ƒ dS q–W x*| jƒ D ]}t||ƒrÂ| j j|ƒ dS qÂW | jj|ƒ dS )NTFÚ__mro__)r!   r$   r   r#   r   r"   Ú__subclasshook__ÚNotImplementedr   r   r    r0   Ú__subclasses__)r)   r2   ÚokÚrclsÚsclsr   r   r   r;   Ä   s4    





zABCMeta.__subclasscheck__)N)
r   r   r   r#   r   r3   r:   rA   r;   r   r   r   )r   r   r   m   s   
r   c               @   s   e Zd ZdS )ÚABCN)r   r   r   r   r   r   r   rI   ì   s   rI   )Ú	metaclassc               C   s   t jS )N)r   r#   r   r   r   r   Úget_cache_tokenó   s    rK   N)Ú_weakrefsetr   r   Úclassmethodr   Ústaticmethodr   Úpropertyr   r.   r   rI   rK   r   r   r   r   Ú<module>   s    