Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(251)

Unified Diff: third_party/twisted_8_1/twisted/flow/wrap.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/twisted_8_1/twisted/flow/web.py ('k') | third_party/twisted_8_1/twisted/im.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/twisted_8_1/twisted/flow/wrap.py
diff --git a/third_party/twisted_8_1/twisted/flow/wrap.py b/third_party/twisted_8_1/twisted/flow/wrap.py
deleted file mode 100644
index 3a55d41f9cdfdc830f83643e34952d693a27242d..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/flow/wrap.py
+++ /dev/null
@@ -1,217 +0,0 @@
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-#
-# Author: Clark Evans (cce@clarkevans.com)
-#
-
-""" flow.wrap
-
- This module provides the wrap() function in the flow module and
- the private classes used for its implementation.
-"""
-
-from base import *
-from twisted.python.failure import Failure
-from twisted.internet.defer import Deferred
-
-class _String(Stage):
- """ Wrapper for a string object; don't create directly use flow.wrap
-
- This is probably the simplest stage of all. It is a
- constant list of one item. See wrap for an example.
-
- """
- def __init__(self, str):
- Stage.__init__(self)
- self.results.append(str)
- self.stop = True
- def _yield(self):
- pass
-
-class _List(Stage):
- """ Wrapper for lists and tuple objects; don't create directly
-
- A simple stage, which admits the usage of instructions,
- such as Cooperate() within the list. This would be
- much simpler without logic to handle instructions.
-
- """
- def __init__(self, seq):
- Stage.__init__(self)
- self._seq = list(seq)
- def _yield(self):
- seq = self._seq
- while seq:
- result = seq.pop(0)
- if isinstance(result, Instruction):
- return result
- self.results.append(result)
- self.stop = True
-
-class _DeferredInstruction(CallLater):
- def __init__(self, deferred):
- self.deferred = deferred
- def callLater(self, callable):
- self.deferred.addBoth(callable)
-
-class _Iterable(Stage):
- """ Wrapper for iterable objects, pass in a next() function
-
- This wraps functions (or bound methods). Execution starts with
- the initial function. If the return value is a Stage, then
- control passes on to that stage for the next round of execution.
- If the return value is Cooperate, then the chain of Stages is
- put on hold, and this return value travels all the way up the
- call stack so that the underlying mechanism can sleep, or
- perform other tasks, etc. All other non-Instruction return
- values, Failure objects included, are passed back to the
- previous stage via self.result
-
- All exceptions signal the end of the Stage. StopIteration
- means to stop without providing a result, while all other
- exceptions provide a Failure self.result followed by stoppage.
-
- """
- def __init__(self, iterable, *trap):
- Stage.__init__(self, *trap)
- self._iterable = iter(iterable)
- self._next = None
-
- def _yield(self):
- """ executed during a yield statement """
- if self.results or self.stop or self.failure:
- return
- while True:
- next = self._next
- if next:
- instruction = next._yield()
- if instruction:
- return instruction
- self._next = None
- try:
- result = self._iterable.next()
- if isinstance(result, Instruction):
- if isinstance(result, Stage):
- self._next = result
- continue
- return result
- if isinstance(result, Deferred):
- if result.called:
- continue
- return _DeferredInstruction(result)
- self.results.append(result)
- except StopIteration:
- self.stop = True
- except Failure, fail:
- self.failure = fail
- except:
- self.failure = Failure()
- return
-
-class _Deferred(Stage):
- """ Wraps a Deferred object into a stage; create with flow.wrap
-
- This stage provides a callback 'catch' for errback and
- callbacks. If not called, then this returns an Instruction
- which will let the reactor execute other operations, such
- as the producer for this deferred.
-
- """
- def __init__(self, deferred, *trap):
- Stage.__init__(self, *trap)
- self._called = False
- deferred.addCallbacks(self._callback, self._errback)
- self._cooperate = _DeferredInstruction(deferred)
-
- def _callback(self, res):
- self._called = True
- self.results = [res]
-
- def _errback(self, fail):
- self._called = True
- self.failure = fail
-
- def _yield(self):
- if self.results or self.stop or self.failure:
- return
- if not self._called:
- return self._cooperate
- if self._called:
- self.stop = True
- return
-
-def wrap(obj, *trap):
- """
- Wraps various objects for use within a flow
-
- The following example illustrates many different ways in which regular
- objects can be wrapped by the flow module to behave in a cooperative
- manner.
-
- For example::
-
- # required imports
- from __future__ import generators
- from twisted.flow import flow
- from twisted.internet import reactor, defer
-
- # save this function, it is used everwhere
- def printFlow(source):
- def printer(source):
- source = flow.wrap(source)
- while True:
- yield source
- print source.next()
- d = flow.Deferred(printer(source))
- d.addCallback(lambda _: reactor.stop())
- reactor.run()
-
- source = "string"
- printFlow(source)
-
- source = ["one",flow.Cooperate(1),"two"]
- printFlow(source)
-
- def source():
- yield "aeye"
- yield flow.Cooperate()
- yield "capin"
- printFlow(source)
-
- source = Deferred()
- reactor.callLater(1, lambda: source.callback("howdy"))
- printFlow(source)
-
- """
- if isinstance(obj, Stage):
- if trap:
- # merge trap list
- trap = list(trap)
- for ex in obj._trap:
- if ex not in trap:
- trap.append(ex)
- obj._trap = tuple(trap)
- return obj
-
- if callable(obj):
- obj = obj()
-
- typ = type(obj)
-
- if typ is type([]) or typ is type(tuple()):
- return _List(obj)
-
- if typ is type(''):
- return _String(obj)
-
- if isinstance(obj, Deferred):
- return _Deferred(obj, *trap)
-
- try:
- return _Iterable(obj, *trap)
- except TypeError:
- pass
-
- raise ValueError, "A wrapper is not available for %r" % (obj,)
-
« no previous file with comments | « third_party/twisted_8_1/twisted/flow/web.py ('k') | third_party/twisted_8_1/twisted/im.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698