| 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())
|
|
|