
O'^c           @@  s@   d  Z  d d l m Z d d l m Z d e f d     YZ d S(   si   
    kombu.transport.virtual.scheduling
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Consumer utilities.

i    (   t   absolute_import(   t   countt	   FairCyclec           B@  s>   e  Z d  Z e d  Z d   Z d   Z d   Z d   Z RS(   sb   Consume from a set of resources, where each resource gets
    an equal chance to be consumed from.c         C@  s(   | |  _  | |  _ | |  _ d |  _ d  S(   Ni    (   t   funt	   resourcest	   predicatet   pos(   t   selfR   R   R   (    (    sD   /tmp/pip-unpacked-wheel-UAnTfW/kombu/transport/virtual/scheduling.pyt   __init__   s    			c         C@  sg   x` y' |  j  |  j } |  j d 7_ | SWq t k
 r^ d |  _ |  j  s_ |  j    q_ q Xq Wd  S(   Ni   i    (   R   R   t
   IndexErrorR   (   R   t   resource(    (    sD   /tmp/pip-unpacked-wheel-UAnTfW/kombu/transport/virtual/scheduling.pyt   _next   s    		c         K@  sw   xp t  d  D]b } |  j   } y |  j | |  | f SWq |  j k
 rn | t |  j  d k ro   qo q Xq Wd  S(   Ni    i   (   R   R   R   R   t   lenR   (   R   t   kwargst   triedR
   (    (    sD   /tmp/pip-unpacked-wheel-UAnTfW/kombu/transport/virtual/scheduling.pyt   get"   s    c         C@  s   d  S(   N(    (   R   (    (    sD   /tmp/pip-unpacked-wheel-UAnTfW/kombu/transport/virtual/scheduling.pyt   close,   s    c         C@  s   d j  d |  d t |  j   S(   Ns/   <FairCycle: {self.pos}/{size} {self.resources}>R   t   size(   t   formatR   R   (   R   (    (    sD   /tmp/pip-unpacked-wheel-UAnTfW/kombu/transport/virtual/scheduling.pyt   __repr__/   s    	(	   t   __name__t
   __module__t   __doc__t	   ExceptionR   R   R   R   R   (    (    (    sD   /tmp/pip-unpacked-wheel-UAnTfW/kombu/transport/virtual/scheduling.pyR      s   		
	N(   R   t
   __future__R    t	   itertoolsR   t   objectR   (    (    (    sD   /tmp/pip-unpacked-wheel-UAnTfW/kombu/transport/virtual/scheduling.pyt   <module>   s   