vine.promises

class vine.promises.promise(fun=None, args=None, kwargs=None, callback=None, on_error=None)

Future evaluation.

This is a special implementation of promises in that it can be used both for “promise of a value” and lazy evaluation. The biggest upside for this is that everything in a promise can also be a promise, e.g. filters, callbacks and errbacks can all be promises.

Usage examples:

>>> from __future__ import print_statement  # noqa
>>> p = promise()
>>> p.then(promise(print, ('OK',)))  # noqa
>>> p.on_error = promise(print, ('ERROR',))  # noqa
>>> p(20)
OK, 20
>>> p.then(promise(print, ('hello',)))  # noqa
hello, 20


>>> p.throw(KeyError('foo'))
ERROR, KeyError('foo')


>>> p2 = promise()
>>> p2.then(print)  # noqa
>>> p2.cancel()
>>> p(30)

Example:

from vine import promise, wrap

class Protocol(object):

    def __init__(self):
        self.buffer = []

    def receive_message(self):
        return self.read_header().then(
            self.read_body).then(
                wrap(self.prepare_body))

    def read(self, size, callback=None):
        callback = callback or promise()
        tell_eventloop_to_read(size, callback)
        return callback

    def read_header(self, callback=None):
        return self.read(4, callback)

    def read_body(self, header, callback=None):
        body_size, = unpack('>L', header)
        return self.read(body_size, callback)

    def prepare_body(self, value):
        self.buffer.append(value)
args
cancel()
cancelled
failed
fun
kwargs
listeners
on_error
ready
reason
set_error_state(exc=None)
then(callback, on_error=None)
throw(exc=None)
throw1(exc)
value