# HG changeset patch # User Sigurd Meldgaard # Date 1267022783 -3600 # Node ID 71ebbf22dd7892e177decab73aaa05680d012d8b # Parent c837fa9ff823fa81ad098f0fd36b1f9ea274c135 Added the missing defer_wrapper file diff -r c837fa9ff823 -r 71ebbf22dd78 pysmcl/defer_wrapper.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pysmcl/defer_wrapper.py Wed Feb 24 15:46:23 2010 +0100 @@ -0,0 +1,32 @@ +# -*- test-case-name: twisted.test.test_defer -*- +# +# Copyright (c) 2001-2007 Twisted Matrix Laboratories. +# See LICENSE for details. + +""" +Support for results that aren't immediately available. + +Maintainer: Glyph Lefkowitz +""" + +from __future__ import nested_scopes, generators + +from twisted.python.util import unsignedID, mergeFunctionMetadata +from twisted.internet.defer import * +from twisted.internet.defer import _inlineCallbacks +import types + + +def inlineCallbacks(f): + def unwindGenerator(*args, **kwargs): + deferred = Deferred() + try: + result = f(*args, **kwargs) + except Exception, e: + deferred.errback(e) + return deferred + if isinstance(result, types.GeneratorType): + return _inlineCallbacks(None, result, deferred) + deferred.callback(result) + return deferred + return mergeFunctionMetadata(f, unwindGenerator)