'Let some of the bucket drain.
The L{Bucket} drains at the rate specified by the class
variable C{rate}.
@returns: C{True} if the bucket is empty after this drip.
@returntype: C{bool}'

def drip(self):

    if (self.parentBucket is not None):
        self.parentBucket.drip()
    if (self.rate is None):
        self.content = 0
    else:
        now = time()
        deltaTime = (now - self.lastDrip)
        deltaTokens = (deltaTime * self.rate)
        self.content = max(0, (self.content - deltaTokens))
        self.lastDrip = now
    return (self.content == 0)
