Table of Contents

Module: hook Twisted-0.19.0/twisted/python/hook.py

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:

  • addPre

  • addPost

  • removePre

  • 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.

Imported modules   
import reflect
import string
Functions   
ORIG
POST
PRE
_XXX
_addHook
_dehook
_enhook
_removeHook
addPost
addPre
removePost
removePre
  ORIG 
ORIG ( k,  n )

(private) munging to turn a method name into an `original' identifier

  POST 
POST ( k,  n )

(private) munging to turn a method name into a post-hook-method-name

  PRE 
PRE ( k,  n )

(private) munging to turn a method name into a pre-hook-method-name

  _XXX 
_XXX (
        k,
        n,
        s,
        )

string manipulation garbage

  _addHook 
_addHook (
        klass,
        name,
        phase,
        func,
        )

(private) adds a hook to a method on a class

  _dehook 
_dehook ( klass,  name )

(private) causes a certain method name no longer to be hooked on a class

Exceptions   
HookError( "Cannot unhook!" )
  _enhook 
_enhook ( klass,  name )

(private) causes a certain method name to be hooked on a class

  _removeHook 
_removeHook (
        klass,
        name,
        phase,
        func,
        )

(private) removes a hook from a method on a class

Exceptions   
HookError( "no hooks present!" )
HookError("hook %s not found in removal list for %s" %( name, klass ) )
  addPost 
addPost (
        klass,
        name,
        func,
        )

hook.addPost(klass, name, func) -> None

Add a function to be called before the method klass.name is invoked.

  addPre 
addPre (
        klass,
        name,
        func,
        )

hook.addPre(klass, name, func) -> None

Add a function to be called before the method klass.name is invoked.

  removePost 
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.

  removePre 
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.

Classes   
HookError

An error which will fire when an invariant is violated.


Table of Contents

This document was automatically generated on Sun Jul 14 19:53:11 2002 by HappyDoc version 2.0