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

Unified Diff: third_party/twisted_8_1/twisted/flow/base.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
Index: third_party/twisted_8_1/twisted/flow/base.py
diff --git a/third_party/twisted_8_1/twisted/flow/base.py b/third_party/twisted_8_1/twisted/flow/base.py
deleted file mode 100644
index aa8cc4cdec3659b6235cd5b391117e7511678db1..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/flow/base.py
+++ /dev/null
@@ -1,213 +0,0 @@
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-#
-# Author: Clark Evans (cce@clarkevans.com)
-#
-"""
-flow.base
-
-This module contains the core exceptions and base classes in the flow module.
-See flow.flow for more detailed information
-"""
-
-import twisted.python.compat
-from twisted.internet import reactor
-import time
-
-#
-# Exceptions used within flow
-#
-class Unsupported(NotImplementedError):
- """ Indicates that the given stage does not know what to do
- with the flow instruction that was returned.
- """
- def __init__(self, inst):
- msg = "Unsupported flow instruction: %s " % repr(inst)
- TypeError.__init__(self,msg)
-
-class NotReadyError(RuntimeError):
- """ Raised when a stage has not been subject to a yield """
- pass
-
-#
-# Abstract/Base Classes
-#
-
-class Instruction:
- """ Has special meaning when yielded in a flow """
- pass
-
-class Controller:
- """
- Flow controller
-
- At the base of every flow, is a controller class which interprets the
- instructions, especially the CallLater instructions. This is primarly just
- a marker class to denote which classes consume Instruction events. If a
- controller cannot handle a particular instruction, it raises the
- Unsupported exception.
- """
- pass
-
-class CallLater(Instruction):
- """
- Instruction to support callbacks
-
- This is the instruction which is returned during the yield of the _Deferred
- and Callback stage. The underlying flow driver should call the 'callLater'
- function with the callable to be executed after each callback.
- """
- def callLater(self, callable):
- pass
-
-class Cooperate(CallLater):
- """
- Requests that processing be paused so other tasks can resume
-
- Yield this object when the current chain would block or periodically during
- an intensive processing task. The flow mechanism uses these objects to
- signal that the current processing chain should be paused and resumed
- later. This allows other delayed operations to be processed, etc. Usage
- is quite simple::
-
- # within some generator wrapped by a Controller
- yield Cooperate(1) # yield for a second or more
-
- """
- def __init__(self, timeout = 0):
- self.timeout = timeout
- def callLater(self, callable):
- reactor.callLater(self.timeout, callable)
-
-class Stage(Instruction):
- """
- Abstract base defining protocol for iterator/generators in a flow
-
- This is the primary component in the flow system, it is an iterable object
- which must be passed to a yield statement before each call to next().
- Usage::
-
- iterable = DerivedStage( ... , SpamError, EggsError))
- yield iterable
- for result in iterable:
- # handle good result, or SpamError or EggsError
- yield iterable
-
- Alternatively, when inside a generator, the next() method can be used
- directly. In this case, if no results are available, StopIteration is
- raised, and if left uncaught, will nicely end the generator. Of course,
- unexpected failures are raised. This technique is especially useful when
- pulling from more than one stage at a time. For example::
-
- def someGenerator():
- iterable = SomeStage( ... , SpamError, EggsError)
- while True:
- yield iterable
- result = iterable.next()
- # handle good result or SpamError or EggsError
-
- For many generators, the results become available in chunks of rows. While
- the default value is to get one row at a time, there is a 'chunked'
- property which allows them to be returned via the next() method as many
- rows rather than row by row. For example::
-
- iterable = DerivedStage(...)
- iterable.chunked = True
- for results in iterable:
- for result in results:
- # handle good result
- yield iterable
-
- For those wishing more control at the cost of a painful experience, the
- following member variables can be used to great effect::
-
- - results: This is a list of results produced by the generator, they
- can be fetched one by one using next() or in a group
- together. If no results were produced, then this is an
- empty list. These results should be removed from the list
- after they are read; or, after reading all of the results
- set to an empty list
-
- - stop: This is true if the underlying generator has finished execution
- (raised a StopIteration or returned). Note that several
- results may exist, and stop may be true.
-
- - failure: If the generator produced an exception, then it is wrapped
- as a Failure object and put here. Note that several results
- may have been produced before the failure. To ensure that
- the failure isn't accidently reported twice, it is
- adviseable to set stop to True.
-
- The order in which these member variables is used is *critical* for
- proper adherance to the flow protocol. First, all successful
- results should be handled. Second, the iterable should be checked
- to see if it is finished. Third, a failure should be checked;
- while handling a failure, either the loop should be exited, or
- the iterable's stop member should be set. For example::
-
- iterable = SomeStage(...)
- while True:
- yield iterable
- if iterable.results:
- for result in iterable.results:
- # handle good result
- iterable.results = []
- if iterable.stop:
- break
- if iterable.failure:
- iterable.stop = True
- # handle iterable.failure
- break
- """
- def __init__(self, *trap):
- self._trap = trap
- self.stop = False
- self.failure = None
- self.results = []
- self.chunked = False
-
- def __iter__(self):
- return self
-
- def next(self):
- """
- return current result
-
- This is the primary function to be called to retrieve the current
- result. It complies with the iterator protocol by raising
- StopIteration when the stage is complete. It also raises an exception
- if it is called before the stage is yielded.
- """
- if self.results:
- if self.chunked:
- ret = self.results
- self.results = []
- return ret
- else:
- return self.results.pop(0)
- if self.stop:
- raise StopIteration()
-
- if self.failure:
- self.stop = True
-
- cr = self.failure.check(*self._trap)
-
- if cr:
- return cr
-
- self.failure.raiseException()
-
- raise NotReadyError("Must 'yield' this object before calling next()")
-
- def _yield(self):
- """
- executed during a yield statement by previous stage
-
- This method is private within the scope of the flow module, it is used
- by one stage in the flow to ask a subsequent stage to produce its
- value. The result of the yield is then stored in self.result and is an
- instance of Failure if a problem occurred.
- """
- raise NotImplementedError
« no previous file with comments | « third_party/twisted_8_1/twisted/flow/_version.py ('k') | third_party/twisted_8_1/twisted/flow/controller.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698