| Index: third_party/twisted_8_1/twisted/python/context.py | 
| diff --git a/third_party/twisted_8_1/twisted/python/context.py b/third_party/twisted_8_1/twisted/python/context.py | 
| deleted file mode 100644 | 
| index e4f7e9fd9365d32aba25a5522ae261e8f0b2a3b6..0000000000000000000000000000000000000000 | 
| --- a/third_party/twisted_8_1/twisted/python/context.py | 
| +++ /dev/null | 
| @@ -1,90 +0,0 @@ | 
| -# -*- test-case-name: twisted.test.test_context -*- | 
| -# Copyright (c) 2001-2004 Twisted Matrix Laboratories. | 
| -# See LICENSE for details. | 
| - | 
| -# | 
| - | 
| -""" | 
| -Dynamic pseudo-scoping for Python. | 
| - | 
| -Call functions with context.call({key: value}, func); func and | 
| -functions that it calls will be able to use 'context.get(key)' to | 
| -retrieve 'value'. | 
| - | 
| -This is thread-safe. | 
| -""" | 
| - | 
| -try: | 
| -    from threading import local | 
| -except ImportError: | 
| -    local = None | 
| - | 
| -from twisted.python import threadable | 
| - | 
| -defaultContextDict = {} | 
| - | 
| -setDefault = defaultContextDict.__setitem__ | 
| - | 
| -class ContextTracker: | 
| -    def __init__(self): | 
| -        self.contexts = [defaultContextDict] | 
| - | 
| -    def callWithContext(self, ctx, func, *args, **kw): | 
| -        newContext = self.contexts[-1].copy() | 
| -        newContext.update(ctx) | 
| -        self.contexts.append(newContext) | 
| -        try: | 
| -            return func(*args,**kw) | 
| -        finally: | 
| -            self.contexts.pop() | 
| - | 
| -    def getContext(self, key, default=None): | 
| -        return self.contexts[-1].get(key, default) | 
| - | 
| - | 
| -class _ThreadedContextTracker: | 
| -    def __init__(self): | 
| -        self.threadId = threadable.getThreadID | 
| -        self.contextPerThread = {} | 
| - | 
| -    def currentContext(self): | 
| -        tkey = self.threadId() | 
| -        try: | 
| -            return self.contextPerThread[tkey] | 
| -        except KeyError: | 
| -            ct = self.contextPerThread[tkey] = ContextTracker() | 
| -            return ct | 
| - | 
| -    def callWithContext(self, ctx, func, *args, **kw): | 
| -        return self.currentContext().callWithContext(ctx, func, *args, **kw) | 
| - | 
| -    def getContext(self, key, default=None): | 
| -        return self.currentContext().getContext(key, default) | 
| - | 
| - | 
| -class _TLSContextTracker(_ThreadedContextTracker): | 
| -    def __init__(self): | 
| -        self.storage = local() | 
| - | 
| -    def currentContext(self): | 
| -        try: | 
| -            return self.storage.ct | 
| -        except AttributeError: | 
| -            ct = self.storage.ct = ContextTracker() | 
| -            return ct | 
| - | 
| -if local is None: | 
| -    ThreadedContextTracker = _ThreadedContextTracker | 
| -else: | 
| -    ThreadedContextTracker = _TLSContextTracker | 
| - | 
| -def installContextTracker(ctr): | 
| -    global theContextTracker | 
| -    global call | 
| -    global get | 
| - | 
| -    theContextTracker = ctr | 
| -    call = theContextTracker.callWithContext | 
| -    get = theContextTracker.getContext | 
| - | 
| -installContextTracker(ThreadedContextTracker()) | 
|  |