B
    ÐH/\”
  ã               @   s`   d dl mZmZmZ d dlmZ d dlmZ ddlm	Z	 ddl
mZ dd„ ZG d	d
„ d
e	ƒZdS )é    )Úabsolute_importÚprint_functionÚdivision)Úwraps)Ú_get_hubé   )ÚQuietHub)Úget_switch_expectedc                s   t ˆ ƒ‡ fdd„ƒ}|S )Nc                sÎ   t tƒ dd ƒ}t | ddƒ| _|d k	rHt | dd ƒ}| jdkrH|rHt|ƒ| _ˆ | f|ž|Ž}|d k	rÊ| jd k	rÊtƒ j| }| jdkrž|dksŒt‚|sÊtd| ƒ‚n,| jdkrº|rÊtd	| ƒ‚ntd
| jf ƒ‚|S )NÚswitch_countÚswitch_expectedTÚfullnameÚdefaultr   z%s did not switchFz%s switched but not expected toz%Invalid value for switch_expected: %r)Úgetattrr   r   r	   r
   ÚAssertionError)ÚselfÚargsÚkwargsZinitial_switch_countr   Úresultr
   )Úmethod© ú7lib/python3.7/site-packages/gevent/testing/switching.pyÚwrapper   s$    


z(wrap_switch_count_check.<locals>.wrapper)r   )r   r   r   )r   r   Úwrap_switch_count_check   s    r   c               @   s   e Zd ZdZdd„ ZdS )ÚCountingHubr   c             G   s   |  j d7  _ tj| f|žŽ S )Nr   )r
   r   Úswitch)r   r   r   r   r   r   =   s    zCountingHub.switchN)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r   r   r   9   s   r   N)Z
__future__r   r   r   Ú	functoolsr   Z
gevent.hubr   Zhubr   Zpatched_tests_setupr	   r   r   r   r   r   r   Ú<module>   s   