Index: third_party/twisted_8_1/twisted/persisted/crefutil.py |
diff --git a/third_party/twisted_8_1/twisted/persisted/crefutil.py b/third_party/twisted_8_1/twisted/persisted/crefutil.py |
deleted file mode 100644 |
index 59e04fed3e13a021f2800803c3aa5657ce2d822a..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/persisted/crefutil.py |
+++ /dev/null |
@@ -1,167 +0,0 @@ |
-# -*- test-case-name: twisted.test.test_persisted -*- |
- |
-# Copyright (c) 2001-2008 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
- |
-""" |
-Utility classes for dealing with circular references. |
-""" |
- |
-from twisted.python import log, reflect |
- |
-try: |
- from new import instancemethod |
-except: |
- from org.python.core import PyMethod |
- instancemethod = PyMethod |
- |
- |
-class NotKnown: |
- def __init__(self): |
- self.dependants = [] |
- self.resolved = 0 |
- |
- def addDependant(self, mutableObject, key): |
- assert not self.resolved |
- self.dependants.append( (mutableObject, key) ) |
- |
- resolvedObject = None |
- |
- def resolveDependants(self, newObject): |
- self.resolved = 1 |
- self.resolvedObject = newObject |
- for mut, key in self.dependants: |
- mut[key] = newObject |
- if isinstance(newObject, NotKnown): |
- newObject.addDependant(mut, key) |
- |
- def __hash__(self): |
- assert 0, "I am not to be used as a dictionary key." |
- |
- |
- |
-class _Container(NotKnown): |
- """ |
- Helper class to resolve circular references on container objects. |
- """ |
- |
- def __init__(self, l, containerType): |
- """ |
- @param l: The list of object which may contain some not yet referenced |
- objects. |
- |
- @param containerType: A type of container objects (e.g., C{tuple} or |
- C{set}). |
- """ |
- NotKnown.__init__(self) |
- self.containerType = containerType |
- self.l = l |
- self.locs = range(len(l)) |
- for idx in xrange(len(l)): |
- if not isinstance(l[idx], NotKnown): |
- self.locs.remove(idx) |
- else: |
- l[idx].addDependant(self, idx) |
- if not self.locs: |
- self.resolveDependants(self.containerType(self.l)) |
- |
- |
- def __setitem__(self, n, obj): |
- """ |
- Change the value of one contained objects, and resolve references if |
- all objects have been referenced. |
- """ |
- self.l[n] = obj |
- if not isinstance(obj, NotKnown): |
- self.locs.remove(n) |
- if not self.locs: |
- self.resolveDependants(self.containerType(self.l)) |
- |
- |
- |
-class _Tuple(_Container): |
- """ |
- Manage tuple containing circular references. Deprecated: use C{_Container} |
- instead. |
- """ |
- |
- def __init__(self, l): |
- """ |
- @param l: The list of object which may contain some not yet referenced |
- objects. |
- """ |
- _Container.__init__(self, l, tuple) |
- |
- |
- |
-class _InstanceMethod(NotKnown): |
- def __init__(self, im_name, im_self, im_class): |
- NotKnown.__init__(self) |
- self.my_class = im_class |
- self.name = im_name |
- # im_self _must_ be a |
- im_self.addDependant(self, 0) |
- |
- def __call__(self, *args, **kw): |
- import traceback |
- log.msg('instance method %s.%s' % (reflect.qual(self.my_class), self.name)) |
- log.msg('being called with %r %r' % (args, kw)) |
- traceback.print_stack(file=log.logfile) |
- assert 0 |
- |
- def __setitem__(self, n, obj): |
- assert n == 0, "only zero index allowed" |
- if not isinstance(obj, NotKnown): |
- self.resolveDependants(instancemethod(self.my_class.__dict__[self.name], |
- obj, |
- self.my_class)) |
- |
-class _DictKeyAndValue: |
- def __init__(self, dict): |
- self.dict = dict |
- def __setitem__(self, n, obj): |
- if n not in (1, 0): |
- raise RuntimeError("DictKeyAndValue should only ever be called with 0 or 1") |
- if n: # value |
- self.value = obj |
- else: |
- self.key = obj |
- if hasattr(self, "key") and hasattr(self, "value"): |
- self.dict[self.key] = self.value |
- |
- |
-class _Dereference(NotKnown): |
- def __init__(self, id): |
- NotKnown.__init__(self) |
- self.id = id |
- |
- |
-from twisted.internet.defer import Deferred |
- |
-class _Catcher: |
- def catch(self, value): |
- self.value = value |
- |
-class _Defer(Deferred, NotKnown): |
- def __init__(self): |
- Deferred.__init__(self) |
- NotKnown.__init__(self) |
- self.pause() |
- |
- wasset = 0 |
- |
- def __setitem__(self, n, obj): |
- if self.wasset: |
- raise RuntimeError('setitem should only be called once, setting %r to %r' % (n, obj)) |
- else: |
- self.wasset = 1 |
- self.callback(obj) |
- |
- def addDependant(self, dep, key): |
- # by the time I'm adding a dependant, I'm *not* adding any more |
- # callbacks |
- NotKnown.addDependant(self, dep, key) |
- self.unpause() |
- resovd = self.result |
- self.resolveDependants(resovd) |