ó
¾?Tc           @   s%  d  Z  d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m	 Z	 d d l
 m Z m Z m Z m Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d „  Z d „  Z d e f d „  ƒ  YZ e d d „ Z e j d d ƒ d „  ƒ Z e j d „  ƒ Z d „  Z d S(   s   py.test configiÿÿÿÿN(   t   sleep(   t   deque(   t   TIMEOUT(   t   handlert   BaseComponentt   Debuggert   Managert   Watcherc           B   sG   e  Z d  „  Z e d d d d ƒ d „  ƒ Z d „  Z d	 d d „ Z RS(
   c         C   s   t  j ƒ  |  _ t ƒ  |  _ d  S(   N(   t	   threadingt   Lockt   _lockR   t   events(   t   self(    (    s.   /home/prologic/work/circuits/tests/conftest.pyt   init   s    t   channelt   *t   priorityg33333?@c         O   s$   |  j   |  j j | ƒ Wd  QXd  S(   N(   R
   R   t   append(   R   t   eventt   argst   kwargs(    (    s.   /home/prologic/work/circuits/tests/conftest.pyt	   _on_event   s    
c         C   s   |  j  j ƒ  d  S(   N(   R   t   clear(   R   (    (    s.   /home/prologic/work/circuits/tests/conftest.pyR      s    g      @c         C   sÃ   z» x´ t  t | t ƒ ƒ D]œ } | d  k rf |  j , x$ |  j D] } | j | k r@ t Sq@ WWd  QXnF |  j ; x3 |  j D]( } | j | k rz | | j k rz t Sqz WWd  QXt	 t ƒ q WWd  Xd  S(   N(
   t   ranget   intR   t   NoneR
   R   t   namet   Truet   channelsR    (   R   R   R   t   timeoutt   iR   (    (    s.   /home/prologic/work/circuits/tests/conftest.pyt   wait!   s    

N(   t   __name__t
   __module__R   R   R   R   R   R   (    (    (    s.   /home/prologic/work/circuits/tests/conftest.pyR      s   		t   Flagc           B   s   e  Z e Z RS(    (   R    R!   t   Falset   status(    (    (    s.   /home/prologic/work/circuits/tests/conftest.pyR"   6   s   c         G   sU   t  } d  } xB |  j | ƒ D]1 } | sC t } |  j | | Œ } n  t d ƒ q W| S(   Ngš™™™™™¹?(   R#   R   t	   waitEventR   t   fireR    (   t   managerR   t
   event_nameR   t   firedt   valuet   r(    (    s.   /home/prologic/work/circuits/tests/conftest.pyt   call_event_from_name:   s    c         G   s   t  |  | | j | Œ S(   N(   R,   R   (   R'   R   R   (    (    s.   /home/prologic/work/circuits/tests/conftest.pyt
   call_eventE   s    t	   WaitEventc           B   s    e  Z d d  d „ Z d „  Z RS(   g      @c            s   | d  k r! t | d d  ƒ } n  | |  _ | |  _ t ƒ  ‰  t | d | ƒ‡  f d †  ƒ } |  j j | ƒ |  _ ˆ  |  _ d  S(   NR   c            s   t  ˆ  _ d  S(   N(   R   R$   (   R   R   R   (   t   flag(    s.   /home/prologic/work/circuits/tests/conftest.pyt   on_eventT   s    (   R   t   getattrR   R'   R"   R   t
   addHandlerR/   (   R   R'   R   R   R   R0   (    (   R/   s.   /home/prologic/work/circuits/tests/conftest.pyt   __init__K   s    			!c         C   s]   zB x; t  t |  j t ƒ ƒ D]  } |  j j r3 t St t ƒ q WWd  |  j j	 |  j
 ƒ Xd  S(   N(   R   R   R   R   R/   R$   R   R    R'   t   removeHandlerR   (   R   R   (    (    s.   /home/prologic/work/circuits/tests/conftest.pyR   [   s     N(   R    R!   R   R3   R   (    (    (    s.   /home/prologic/work/circuits/tests/conftest.pyR.   I   s   g      @c         C   s€   d d l  m } xi t t | | ƒ ƒ D]Q } t | t j ƒ rU | |  | ƒ rn t Sn t |  | ƒ | k rn t St	 | ƒ q' Wd  S(   Niÿÿÿÿ(   R   (
   t   circuits.core.managerR   R   R   t
   isinstancet   collectionst   CallableR   R1   R    (   t   objt   attrR*   R   R   R   (    (    s.   /home/prologic/work/circuits/tests/conftest.pyt   wait_fore   s    t   scopet   sessionc            sˆ   t  ƒ  ‰  ‡  f d †  } |  j | ƒ t ˆ  d ƒ } ˆ  j ƒ  | j ƒ  sP t ‚ |  j j j rh t	 } n t
 } t d | ƒ j ˆ  ƒ ˆ  S(   Nc              s   ˆ  j  ƒ  d  S(   N(   t   stop(    (   R'   (    s.   /home/prologic/work/circuits/tests/conftest.pyt	   finalizert   s    t   startedR   (   R   t   addfinalizerR.   t   startR   t   AssertionErrort   configt   optiont   verboseR   R#   R   t   register(   t   requestR?   t   waiterRF   (    (   R'   s.   /home/prologic/work/circuits/tests/conftest.pyR'   p   s    	
	c            s5   t  ƒ  j ˆ  ƒ ‰ ‡  ‡ f d †  } |  j | ƒ ˆ S(   Nc             s'   t  ˆ  d ƒ }  ˆ j ƒ  |  j ƒ  d  S(   Nt   unregistered(   R.   t
   unregisterR   (   RI   (   R'   t   watcher(    s.   /home/prologic/work/circuits/tests/conftest.pyR?   ‹   s    
(   R   RG   RA   (   RH   R'   R?   (    (   R'   RL   s.   /home/prologic/work/circuits/tests/conftest.pyRL   ‡   s    c           C   sJ   t  d t f d t f d t f d t j f d t j d  f d t f f ƒ S(   NR.   R;   R-   t   PLATFORMt   PYVERi   R,   (   t   dictR.   R;   R-   t   syst   platformt   version_infoR,   (    (    (    s.   /home/prologic/work/circuits/tests/conftest.pyt   pytest_namespace•   s    			(   t   __doc__t   pytestRP   R   R7   t   timeR    R   R5   R   t   circuitsR   R   R   R   R   t   objectR"   R,   R-   R.   R   R;   t   fixtureR'   RL   RS   (    (    (    s.   /home/prologic/work/circuits/tests/conftest.pyt   <module>   s"   "#		