b3j0f.aop package¶
Subpackages¶
Module contents¶
Aspect Oriented Programming Library for Python
Provides tools to (un)weave and get advices, and check joinpoint status.
-
b3j0f.aop.weave(target, advices, pointcut=None, ctx=None, depth=1, public=False, pointcut_application=None, ttl=None)[source]¶ Weave advices on target with input pointcut.
Parameters: - target (callable) – target from where checking pointcut and weaving advices.
- advices – advices to weave on target.
- ctx – target ctx (class or instance).
- pointcut – condition for weaving advices on joinpointe. The condition depends on its type.
- depth (int) – class weaving depthing.
- public (bool) – (default True) weave only on public members.
- pointcut_application (routine) – routine which applies a pointcut when required. _Joinpoint().apply_pointcut by default. Such routine has to take in parameters a routine called target and its related function called function. Its result is the interception function.
- ttl (float) – time to leave for weaved advices.
Returns: the intercepted functions created from input target or a tuple with intercepted functions and ttl timer.
Return type: Raises: AdviceError if pointcut is not None, not callable neither a str.
-
b3j0f.aop.unweave(target, advices=None, pointcut=None, ctx=None, depth=1, public=False)[source]¶ Unweave advices on target with input pointcut.
Parameters: - target (callable) – target from where checking pointcut and weaving advices.
- pointcut – condition for weaving advices on joinpointe. The condition depends on its type.
- ctx – target ctx (class or instance).
- depth (int) – class weaving depthing.
- public (bool) – (default True) weave only on public members
Returns: the intercepted functions created from input target.
-
b3j0f.aop.weave_on(advices, pointcut=None, ctx=None, depth=1, ttl=None)[source]¶ Decorator for weaving advices on a callable target.
Parameters:
-
b3j0f.aop.get_advices(target, ctx=None, local=False)[source]¶ Get element advices.
Parameters: - target – target from where get advices.
- ctx – ctx from where get target.
- local (bool) – If ctx is not None or target is a method, if True (False by default) get only target advices without resolving super target advices in a super ctx.
Returns: list of advices.
Return type:
-
class
b3j0f.aop.Advice(impl, uid=None, enable=True)[source]¶ Bases:
objectAdvice class which aims to embed an advice function with disabling proprety
-
apply(joinpoint)[source]¶ Apply this advice on input joinpoint.
TODO: improve with internal methods instead of conditional test.
-
enable¶ Get self enable state. Change state if input enable is a boolean.
TODO: change of method execution instead of saving a state.
-
static
set_enable(target, enable=True, advice_ids=None)[source]¶ Enable or disable all target Advices designated by input advice_ids.
If advice_ids is None, apply (dis|en)able state to all advices.
-
uid¶
-
-
b3j0f.aop.get_intercepted(target)[source]¶ Get intercepted function and ctx from input target.
Parameters: target – target from where getting the intercepted function and ctx. Returns: target intercepted function and ctx. (None, None) if no intercepted function exist. (fn, None) if not ctx exists. Return type: tuple
-
b3j0f.aop.is_intercepted(target)[source]¶ True iif input target is intercepted.
Parameters: target – target to check such as an intercepted target. Returns: True iif input target is intercepted. Return type: bool
-
class
b3j0f.aop.Joinpoint(target=None, args=None, kwargs=None, advices=None, ctx=None, exec_ctx=None)[source]¶ Bases:
objectManage joinpoint execution with Advices.
Advices are callable objects which take in parameter a Joinpoint.
- Joinpoint provides to advices:
- the joinpoint,
- joinpoint call arguments as args and kwargs property,
- a shared context during interception such as a dictionary.
-
ARGS= 'args'¶
-
CTX= 'ctx'¶
-
EXEC_CTX= 'exec_ctx'¶
-
KWARGS= 'kwargs'¶
-
TARGET= 'target'¶
-
apply_pointcut(target, function=None, ctx=None)[source]¶ Apply pointcut on input target and returns final interception.
The poincut respects all meta properties such as: - function signature, - module path, - file path, - __dict__ reference.
-
args¶
-
ctx¶
-
exec_ctx¶
-
get_advices(target)[source]¶ Get target advices.
Parameters: target – target from where getting advices.
-
kwargs¶
-
proceed()[source]¶ Proceed this Joinpoint in calling all advices with this joinpoint as the only one parameter, and call at the end the target.
-
set_target(target, ctx=None)[source]¶ Set target.
Parameters: - target – new target to use.
- ctx (target) – target ctx if target is an class/instance attribute.
-
start(target=None, args=None, kwargs=None, advices=None, exec_ctx=None, ctx=None)[source]¶ Start to proceed this Joinpoint in initializing target, its arguments and advices. Call self.proceed at the end.
Parameters: - target (callable) – new target to use in proceeding. self.target by default.
- args (tuple) – new target args to use in proceeding. self.args by default.
- kwargs (dict) – new target kwargs to use in proceeding. self.kwargs by default.
- advices (list) – advices to use in proceeding. self advices by default.
- exec_ctx (dict) – execution context.
- target_ctx – target ctx to use in proceeding.
Returns: self.proceed()
-
target¶
-
exception
b3j0f.aop.JoinpointError[source]¶ Bases:
exceptions.ExceptionHandle Joinpoint errors