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

Unified Diff: third_party/twisted_8_1/twisted/python/hook.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/python/hook.py
diff --git a/third_party/twisted_8_1/twisted/python/hook.py b/third_party/twisted_8_1/twisted/python/hook.py
deleted file mode 100644
index 3c85ca74c04750dec1dc49d1d14795ee796e3c23..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/python/hook.py
+++ /dev/null
@@ -1,177 +0,0 @@
-
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-
-
-"""
-I define support for hookable instance methods.
-
-These are methods which you can register pre-call and post-call external
-functions to augment their functionality. People familiar with more esoteric
-languages may think of these as \"method combinations\".
-
-This could be used to add optional preconditions, user-extensible callbacks
-(a-la emacs) or a thread-safety mechanism.
-
-The four exported calls are:
-
- - L{addPre}
- - L{addPost}
- - L{removePre}
- - L{removePost}
-
-All have the signature (class, methodName, callable), and the callable they
-take must always have the signature (instance, *args, **kw) unless the
-particular signature of the method they hook is known.
-
-Hooks should typically not throw exceptions, however, no effort will be made by
-this module to prevent them from doing so. Pre-hooks will always be called,
-but post-hooks will only be called if the pre-hooks do not raise any exceptions
-(they will still be called if the main method raises an exception). The return
-values and exception status of the main method will be propogated (assuming
-none of the hooks raise an exception). Hooks will be executed in the order in
-which they are added.
-
-"""
-
-# System Imports
-import string
-
-### Public Interface
-
-class HookError(Exception):
- "An error which will fire when an invariant is violated."
-
-def addPre(klass, name, func):
- """hook.addPre(klass, name, func) -> None
-
- Add a function to be called before the method klass.name is invoked.
- """
-
- _addHook(klass, name, PRE, func)
-
-def addPost(klass, name, func):
- """hook.addPost(klass, name, func) -> None
-
- Add a function to be called after the method klass.name is invoked.
- """
- _addHook(klass, name, POST, func)
-
-def removePre(klass, name, func):
- """hook.removePre(klass, name, func) -> None
-
- Remove a function (previously registered with addPre) so that it
- is no longer executed before klass.name.
- """
-
- _removeHook(klass, name, PRE, func)
-
-def removePost(klass, name, func):
- """hook.removePre(klass, name, func) -> None
-
- Remove a function (previously registered with addPost) so that it
- is no longer executed after klass.name.
- """
- _removeHook(klass, name, POST, func)
-
-### "Helper" functions.
-
-hooked_func = """
-
-import %(module)s
-
-def %(name)s(*args, **kw):
- klazz = %(module)s.%(klass)s
- for preMethod in klazz.%(preName)s:
- preMethod(*args, **kw)
- try:
- return klazz.%(originalName)s(*args, **kw)
- finally:
- for postMethod in klazz.%(postName)s:
- postMethod(*args, **kw)
-"""
-
-_PRE = '__hook_pre_%s_%s_%s__'
-_POST = '__hook_post_%s_%s_%s__'
-_ORIG = '__hook_orig_%s_%s_%s__'
-
-
-def _XXX(k,n,s):
- "string manipulation garbage"
- x = s % (string.replace(k.__module__,'.','_'), k.__name__, n)
- return x
-
-def PRE(k,n):
- "(private) munging to turn a method name into a pre-hook-method-name"
- return _XXX(k,n,_PRE)
-
-def POST(k,n):
- "(private) munging to turn a method name into a post-hook-method-name"
- return _XXX(k,n,_POST)
-
-def ORIG(k,n):
- "(private) munging to turn a method name into an `original' identifier"
- return _XXX(k,n,_ORIG)
-
-
-def _addHook(klass, name, phase, func):
- "(private) adds a hook to a method on a class"
- _enhook(klass, name)
-
- if not hasattr(klass, phase(klass, name)):
- setattr(klass, phase(klass, name), [])
-
- phaselist = getattr(klass, phase(klass, name))
- phaselist.append(func)
-
-
-def _removeHook(klass, name, phase, func):
- "(private) removes a hook from a method on a class"
- phaselistname = phase(klass, name)
- if not hasattr(klass, ORIG(klass,name)):
- raise HookError("no hooks present!")
-
- phaselist = getattr(klass, phase(klass, name))
- try: phaselist.remove(func)
- except ValueError:
- raise HookError("hook %s not found in removal list for %s"%
- (name,klass))
-
- if not getattr(klass, PRE(klass,name)) and not getattr(klass, POST(klass, name)):
- _dehook(klass, name)
-
-def _enhook(klass, name):
- "(private) causes a certain method name to be hooked on a class"
- if hasattr(klass, ORIG(klass, name)):
- return
-
- def newfunc(*args, **kw):
- for preMethod in getattr(klass, PRE(klass, name)):
- preMethod(*args, **kw)
- try:
- return getattr(klass, ORIG(klass, name))(*args, **kw)
- finally:
- for postMethod in getattr(klass, POST(klass, name)):
- postMethod(*args, **kw)
- try:
- newfunc.func_name = name
- except TypeError:
- # Older python's don't let you do this
- pass
-
- oldfunc = getattr(klass, name).im_func
- setattr(klass, ORIG(klass, name), oldfunc)
- setattr(klass, PRE(klass, name), [])
- setattr(klass, POST(klass, name), [])
- setattr(klass, name, newfunc)
-
-def _dehook(klass, name):
- "(private) causes a certain method name no longer to be hooked on a class"
-
- if not hasattr(klass, ORIG(klass, name)):
- raise HookError("Cannot unhook!")
- setattr(klass, name, getattr(klass, ORIG(klass,name)))
- delattr(klass, PRE(klass,name))
- delattr(klass, POST(klass,name))
- delattr(klass, ORIG(klass,name))
« no previous file with comments | « third_party/twisted_8_1/twisted/python/formmethod.py ('k') | third_party/twisted_8_1/twisted/python/htmlizer.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698