U
    g                     @  sb   d dl mZ d dlZd dlZddlmZ ddlmZ dddd	Z	ddd
dZ
ddddZdS )    )annotationsN   )abc)TaskNonereturnc               
   C  sl   ddt ft ft ft ft fddd	} t }|  D ]4\}}t||sHtt||}t|s^t||  q2d S )N )gffffff
@)	Z
before_runZ	after_runZtask_spawnedZtask_scheduledZbefore_task_stepZafter_task_stepZtask_exitedZbefore_io_waitZafter_io_wait)r   tabcZ
InstrumentitemshasattrAssertionErrorgetattrcallable)attrsZ
mayonnaisemethod_nameargsmethodr	   r	   8/tmp/pip-unpacked-wheel-ks04xdmi/trio/_tests/test_abc.py'test_instrument_implements_hook_methods
   s     
r   c               
     sn   t jddG dd dtj} |  4 I d H "}t|| s<t|jg ksJtW 5 Q I d H R X |jdgksjtd S )NF)slotsc                   @  s.   e Zd ZU eeZded< ddddZdS )z)test_AsyncResource_defaults.<locals>.MyARz	list[str]recordr   r   c                   s   | j d d S )Nac)r   appendselfr	   r	   r   aclose%   s    z0test_AsyncResource_defaults.<locals>.MyAR.acloseN)	__name__
__module____qualname__r   ZFactorylistr   __annotations__r   r	   r	   r	   r   MyAR!   s   
r"   r   )r   Zdefiner
   ZAsyncResource
isinstancer   r   )r"   Zmyarr	   r	   r   test_AsyncResource_defaults    s    
r$   c               	   C  sB   G dd dt jt j } |  }tt |d  W 5 Q R X d S )Nc                   @  sL   e Zd ZdZdddddZdddddZdd	d
dZdd	ddZdS )z)test_abc_generics.<locals>.SlottedChannel)xobjectr   )valuer   c                 S  s   t d S NRuntimeErrorr   r'   r	   r	   r   send_nowait:   s    z5test_abc_generics.<locals>.SlottedChannel.send_nowaitc                   s   t d S r(   r)   r+   r	   r	   r   send=   s    z.test_abc_generics.<locals>.SlottedChannel.sendr   c                 S  s   t d S r(   r)   r   r	   r	   r   clone@   s    z/test_abc_generics.<locals>.SlottedChannel.clonec                   s   d S r(   r	   r   r	   r	   r   r   C   s    z0test_abc_generics.<locals>.SlottedChannel.acloseN)r   r   r   	__slots__r,   r-   r.   r   r	   r	   r	   r   SlottedChannel7   s
   r0   )r
   ZSendChannelZStreampytestZraisesr*   r,   )r0   Zchannelr	   r	   r   test_abc_generics/   s    r2   )
__future__r   r   r1    r   r
   Zlowlevelr   r   r$   r2   r	   r	   r	   r   <module>   s   