whitespace and linelen cleanup
This commit is contained in:
		@@ -7,15 +7,15 @@ class Semaphore(object):
 | 
			
		||||
    :meth:`release` resources as needed. Attempting to :meth:`acquire` when
 | 
			
		||||
    *count* is zero suspends the calling greenthread until *count* becomes
 | 
			
		||||
    nonzero again.
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    This is API-compatible with :class:`threading.Semaphore`.
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    It is a context manager, and thus can be used in a with block::
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
      sem = Semaphore(2)
 | 
			
		||||
      with sem:
 | 
			
		||||
        do_some_stuff()
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
    If not specified, *value* defaults to 1.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
@@ -27,7 +27,8 @@ class Semaphore(object):
 | 
			
		||||
        self._waiters = set()
 | 
			
		||||
 | 
			
		||||
    def __repr__(self):
 | 
			
		||||
        params = (self.__class__.__name__, hex(id(self)), self.counter, len(self._waiters))
 | 
			
		||||
        params = (self.__class__.__name__, hex(id(self)),
 | 
			
		||||
                  self.counter, len(self._waiters))
 | 
			
		||||
        return '<%s at %s c=%s _w[%s]>' % params
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
@@ -35,30 +36,31 @@ class Semaphore(object):
 | 
			
		||||
        return '<%s c=%s _w[%s]>' % params
 | 
			
		||||
 | 
			
		||||
    def locked(self):
 | 
			
		||||
        """ Returns true if a call to acquire would block."""
 | 
			
		||||
        """Returns true if a call to acquire would block."""
 | 
			
		||||
        return self.counter <= 0
 | 
			
		||||
 | 
			
		||||
    def bounded(self):
 | 
			
		||||
        """ Returns False; for consistency with :class:`~eventlet.semaphore.CappedSemaphore`."""
 | 
			
		||||
        """Returns False; for consistency with
 | 
			
		||||
        :class:`~eventlet.semaphore.CappedSemaphore`."""
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
    def acquire(self, blocking=True):
 | 
			
		||||
        """Acquire a semaphore.
 | 
			
		||||
 | 
			
		||||
        When invoked without arguments: if the internal counter is larger than 
 | 
			
		||||
        zero on entry, decrement it by one and return immediately. If it is zero 
 | 
			
		||||
        on entry, block, waiting until some other thread has called release() to 
 | 
			
		||||
        make it larger than zero. This is done with proper interlocking so that 
 | 
			
		||||
        if multiple acquire() calls are blocked, release() will wake exactly one 
 | 
			
		||||
        of them up. The implementation may pick one at random, so the order in 
 | 
			
		||||
        which blocked threads are awakened should not be relied on. There is no 
 | 
			
		||||
        When invoked without arguments: if the internal counter is larger than
 | 
			
		||||
        zero on entry, decrement it by one and return immediately. If it is zero
 | 
			
		||||
        on entry, block, waiting until some other thread has called release() to
 | 
			
		||||
        make it larger than zero. This is done with proper interlocking so that
 | 
			
		||||
        if multiple acquire() calls are blocked, release() will wake exactly one
 | 
			
		||||
        of them up. The implementation may pick one at random, so the order in
 | 
			
		||||
        which blocked threads are awakened should not be relied on. There is no
 | 
			
		||||
        return value in this case.
 | 
			
		||||
    
 | 
			
		||||
        When invoked with blocking set to true, do the same thing as when called 
 | 
			
		||||
 | 
			
		||||
        When invoked with blocking set to true, do the same thing as when called
 | 
			
		||||
        without arguments, and return true.
 | 
			
		||||
    
 | 
			
		||||
        When invoked with blocking set to false, do not block. If a call without 
 | 
			
		||||
        an argument would block, return false immediately; otherwise, do the 
 | 
			
		||||
 | 
			
		||||
        When invoked with blocking set to false, do not block. If a call without
 | 
			
		||||
        an argument would block, return false immediately; otherwise, do the
 | 
			
		||||
        same thing as when called without arguments, and return true."""
 | 
			
		||||
        if not blocking and self.locked():
 | 
			
		||||
            return False
 | 
			
		||||
@@ -76,11 +78,11 @@ class Semaphore(object):
 | 
			
		||||
        self.acquire()
 | 
			
		||||
 | 
			
		||||
    def release(self, blocking=True):
 | 
			
		||||
        """Release a semaphore, incrementing the internal counter by one. When 
 | 
			
		||||
        it was zero on entry and another thread is waiting for it to become 
 | 
			
		||||
        """Release a semaphore, incrementing the internal counter by one. When
 | 
			
		||||
        it was zero on entry and another thread is waiting for it to become
 | 
			
		||||
        larger than zero again, wake up that thread.
 | 
			
		||||
        
 | 
			
		||||
        The *blocking* argument is for consistency with CappedSemaphore and is 
 | 
			
		||||
 | 
			
		||||
        The *blocking* argument is for consistency with CappedSemaphore and is
 | 
			
		||||
        ignored"""
 | 
			
		||||
        self.counter += 1
 | 
			
		||||
        if self._waiters:
 | 
			
		||||
@@ -98,12 +100,12 @@ class Semaphore(object):
 | 
			
		||||
    @property
 | 
			
		||||
    def balance(self):
 | 
			
		||||
        """An integer value that represents how many new calls to
 | 
			
		||||
        :meth:`acquire` or :meth:`release` would be needed to get the counter to 
 | 
			
		||||
        0.  If it is positive, then its value is the number of acquires that can 
 | 
			
		||||
        happen before the next acquire would block.  If it is negative, it is 
 | 
			
		||||
        the negative of the number of releases that would be required in order 
 | 
			
		||||
        to make the counter 0 again (one more release would push the counter to 
 | 
			
		||||
        1 and unblock acquirers).  It takes into account how many greenthreads 
 | 
			
		||||
        :meth:`acquire` or :meth:`release` would be needed to get the counter to
 | 
			
		||||
        0.  If it is positive, then its value is the number of acquires that can
 | 
			
		||||
        happen before the next acquire would block.  If it is negative, it is
 | 
			
		||||
        the negative of the number of releases that would be required in order
 | 
			
		||||
        to make the counter 0 again (one more release would push the counter to
 | 
			
		||||
        1 and unblock acquirers).  It takes into account how many greenthreads
 | 
			
		||||
        are currently blocking in :meth:`acquire`.
 | 
			
		||||
        """
 | 
			
		||||
        # positive means there are free items
 | 
			
		||||
@@ -113,45 +115,45 @@ class Semaphore(object):
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BoundedSemaphore(Semaphore):
 | 
			
		||||
    """A bounded semaphore checks to make sure its current value doesn't exceed 
 | 
			
		||||
    its initial value. If it does, ValueError is raised. In most situations 
 | 
			
		||||
    semaphores are used to guard resources with limited capacity. If the 
 | 
			
		||||
    """A bounded semaphore checks to make sure its current value doesn't exceed
 | 
			
		||||
    its initial value. If it does, ValueError is raised. In most situations
 | 
			
		||||
    semaphores are used to guard resources with limited capacity. If the
 | 
			
		||||
    semaphore is released too many times it's a sign of a bug. If not given,
 | 
			
		||||
    *value* defaults to 1."""
 | 
			
		||||
    def __init__(self, value=1):
 | 
			
		||||
        super(BoundedSemaphore, self).__init__(value)
 | 
			
		||||
        self.original_counter = value
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    def release(self, blocking=True):
 | 
			
		||||
        """Release a semaphore, incrementing the internal counter by one. If
 | 
			
		||||
        the counter would exceed the initial value, raises ValueError.  When 
 | 
			
		||||
        it was zero on entry and another thread is waiting for it to become 
 | 
			
		||||
        the counter would exceed the initial value, raises ValueError.  When
 | 
			
		||||
        it was zero on entry and another thread is waiting for it to become
 | 
			
		||||
        larger than zero again, wake up that thread.
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        The *blocking* argument is for consistency with :class:`CappedSemaphore`
 | 
			
		||||
        and is ignored"""
 | 
			
		||||
        if self.counter >= self.original_counter:
 | 
			
		||||
            raise ValueError, "Semaphore released too many times"
 | 
			
		||||
        return super(BoundedSemaphore, self).release(blocking)
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
class CappedSemaphore(object):
 | 
			
		||||
    """A blockingly bounded semaphore.
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    Optionally initialize with a resource *count*, then :meth:`acquire` and
 | 
			
		||||
    :meth:`release` resources as needed. Attempting to :meth:`acquire` when
 | 
			
		||||
    *count* is zero suspends the calling greenthread until count becomes nonzero
 | 
			
		||||
    again.  Attempting to :meth:`release` after *count* has reached *limit*
 | 
			
		||||
    suspends the calling greenthread until *count* becomes less than *limit*
 | 
			
		||||
    again.
 | 
			
		||||
    
 | 
			
		||||
    This has the same API as :class:`threading.Semaphore`, though its 
 | 
			
		||||
    semantics and behavior differ subtly due to the upper limit on calls 
 | 
			
		||||
 | 
			
		||||
    This has the same API as :class:`threading.Semaphore`, though its
 | 
			
		||||
    semantics and behavior differ subtly due to the upper limit on calls
 | 
			
		||||
    to :meth:`release`.  It is **not** compatible with
 | 
			
		||||
    :class:`threading.BoundedSemaphore` because it blocks when reaching *limit* 
 | 
			
		||||
    :class:`threading.BoundedSemaphore` because it blocks when reaching *limit*
 | 
			
		||||
    instead of raising a ValueError.
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    It is a context manager, and thus can be used in a with block::
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
      sem = CappedSemaphore(2)
 | 
			
		||||
      with sem:
 | 
			
		||||
        do_some_stuff()
 | 
			
		||||
@@ -167,38 +169,40 @@ class CappedSemaphore(object):
 | 
			
		||||
        self.upper_bound = Semaphore(limit-count)
 | 
			
		||||
 | 
			
		||||
    def __repr__(self):
 | 
			
		||||
        params = (self.__class__.__name__, hex(id(self)), self.balance, self.lower_bound, self.upper_bound)
 | 
			
		||||
        params = (self.__class__.__name__, hex(id(self)),
 | 
			
		||||
                  self.balance, self.lower_bound, self.upper_bound)
 | 
			
		||||
        return '<%s at %s b=%s l=%s u=%s>' % params
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        params = (self.__class__.__name__, self.balance, self.lower_bound, self.upper_bound)
 | 
			
		||||
        params = (self.__class__.__name__, self.balance,
 | 
			
		||||
                  self.lower_bound, self.upper_bound)
 | 
			
		||||
        return '<%s b=%s l=%s u=%s>' % params
 | 
			
		||||
 | 
			
		||||
    def locked(self):
 | 
			
		||||
        """Returns true if a call to acquire would block."""
 | 
			
		||||
        return self.lower_bound.locked()
 | 
			
		||||
 | 
			
		||||
    def bounded(self):        
 | 
			
		||||
    def bounded(self):
 | 
			
		||||
        """Returns true if a call to release would block."""
 | 
			
		||||
        return self.upper_bound.locked()
 | 
			
		||||
 | 
			
		||||
    def acquire(self, blocking=True):
 | 
			
		||||
        """Acquire a semaphore.
 | 
			
		||||
 | 
			
		||||
        When invoked without arguments: if the internal counter is larger than 
 | 
			
		||||
        zero on entry, decrement it by one and return immediately. If it is zero 
 | 
			
		||||
        on entry, block, waiting until some other thread has called release() to 
 | 
			
		||||
        make it larger than zero. This is done with proper interlocking so that 
 | 
			
		||||
        if multiple acquire() calls are blocked, release() will wake exactly one 
 | 
			
		||||
        of them up. The implementation may pick one at random, so the order in 
 | 
			
		||||
        which blocked threads are awakened should not be relied on. There is no 
 | 
			
		||||
        When invoked without arguments: if the internal counter is larger than
 | 
			
		||||
        zero on entry, decrement it by one and return immediately. If it is zero
 | 
			
		||||
        on entry, block, waiting until some other thread has called release() to
 | 
			
		||||
        make it larger than zero. This is done with proper interlocking so that
 | 
			
		||||
        if multiple acquire() calls are blocked, release() will wake exactly one
 | 
			
		||||
        of them up. The implementation may pick one at random, so the order in
 | 
			
		||||
        which blocked threads are awakened should not be relied on. There is no
 | 
			
		||||
        return value in this case.
 | 
			
		||||
    
 | 
			
		||||
        When invoked with blocking set to true, do the same thing as when called 
 | 
			
		||||
 | 
			
		||||
        When invoked with blocking set to true, do the same thing as when called
 | 
			
		||||
        without arguments, and return true.
 | 
			
		||||
    
 | 
			
		||||
        When invoked with blocking set to false, do not block. If a call without 
 | 
			
		||||
        an argument would block, return false immediately; otherwise, do the 
 | 
			
		||||
 | 
			
		||||
        When invoked with blocking set to false, do not block. If a call without
 | 
			
		||||
        an argument would block, return false immediately; otherwise, do the
 | 
			
		||||
        same thing as when called without arguments, and return true."""
 | 
			
		||||
        if not blocking and self.locked():
 | 
			
		||||
            return False
 | 
			
		||||
@@ -218,7 +222,7 @@ class CappedSemaphore(object):
 | 
			
		||||
    def release(self, blocking=True):
 | 
			
		||||
        """Release a semaphore.  In this class, this behaves very much like
 | 
			
		||||
        an :meth:`acquire` but in the opposite direction.
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        Imagine the docs of :meth:`acquire` here, but with every direction
 | 
			
		||||
        reversed.  When calling this method, it will block if the internal
 | 
			
		||||
        counter is greater than or equal to *limit*."""
 | 
			
		||||
@@ -237,11 +241,11 @@ class CappedSemaphore(object):
 | 
			
		||||
    @property
 | 
			
		||||
    def balance(self):
 | 
			
		||||
        """An integer value that represents how many new calls to
 | 
			
		||||
        :meth:`acquire` or :meth:`release` would be needed to get the counter to 
 | 
			
		||||
        0.  If it is positive, then its value is the number of acquires that can 
 | 
			
		||||
        happen before the next acquire would block.  If it is negative, it is 
 | 
			
		||||
        the negative of the number of releases that would be required in order 
 | 
			
		||||
        to make the counter 0 again (one more release would push the counter to 
 | 
			
		||||
        1 and unblock acquirers).  It takes into account how many greenthreads 
 | 
			
		||||
        :meth:`acquire` or :meth:`release` would be needed to get the counter to
 | 
			
		||||
        0.  If it is positive, then its value is the number of acquires that can
 | 
			
		||||
        happen before the next acquire would block.  If it is negative, it is
 | 
			
		||||
        the negative of the number of releases that would be required in order
 | 
			
		||||
        to make the counter 0 again (one more release would push the counter to
 | 
			
		||||
        1 and unblock acquirers).  It takes into account how many greenthreads
 | 
			
		||||
        are currently blocking in :meth:`acquire` and :meth:`release`."""
 | 
			
		||||
        return self.lower_bound.balance - self.upper_bound.balance
 | 
			
		||||
        return self.lower_bound.balance - self.upper_bound.balance
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user