[Twisted-Python] Flow: better synchronous exceptions [patch]
Clark C. Evans
cce at clarkevans.com
Mon Jun 23 23:42:39 MDT 2003
Thank you for applying this patch, it is a big improvement.
Also, to summarize our IRC chat:
1. You think it is about time to move flow into twisted and
Glyph/Itamar support this move; great.
2. You like the idea of adding it as a top level,
twisted.flow.* module; this means breaking flow.py
into several chunks.
3. For the public stages and controllers, flow.py could be broken
down into the facility that they use: twisted.flow.thread,
twisted.flow.defer
4. The core of flow, 'wrap' function and its private stages, could
be put into flow/flow.py; it is a bit redundant, but we could
not think of another option.
5. We didn't discuss where the abstract interfaces, "Stage", and
"Callback" should go. Perhaps flow.interface?
6. We didn't discuss other public stages that are not directly
associated with a facility, such as Zip. Perhaps these could
be put into flow.misc or flow.tools?
7. Most importantly (for me), due to the redundancy of flow/flow.py
I'd like to ask glyph if a limited form of __init__.py import
could be used in the case of a module/module.py mechansim so
that the public objects in module.py could be imported into the
module itself. ie, in flow/__init__.py having:
"from flow import wrap, Cooperate"
Thank you so much.
Clark
On Mon, Jun 23, 2003 at 10:46:21PM -0400, Christopher Armstrong wrote:
| Here's a patch that changes semantics of Stage.next. Currently,
| if a Deferred errbacks with an exception that you haven't
| explicitly trapped, Stage.next will raise the Failure object
| (via the failure's trap method). I've changed this so it rather
| does `raise type(failure.value), failure.value, failure.tb'.
|
| What this means is that you can write code like this:
|
| d = flow.wrap(getDeferred())
| yield d
| try:
| result = d.next()
| except ParticularError, e:
| traceback.print_exc()
More information about the Twisted-Python
mailing list