pymor.algorithms.rules
¶
Module Contents¶
- class pymor.algorithms.rules.RuleTable(use_caching=False)[source]¶
Bases:
pymor.core.base.BasicObject
Define algorithm by a table of match conditions and corresponding actions.
RuleTable
manages a table ofrules
, stored in therules
attributes, which can beapplied
to given objects.A new table is created by subclassing
RuleTable
and defining new methods which are decorated withmatch_class
,match_generic
or anotherrule
subclass. The order of the method definitions determines the order in which the definedrules
are applied.Parameters
- use_caching
If
True
, cache results ofapply
.
Methods
- noindex:
Sequentially apply rules to given object.
Apply rules to all children of the given object.
Add a conditional breakpoint for objects of given name.
Add a conditional breakpoint for given object.
Determine children of given object.
- noindex:
Replace children of object according to rule table.
- apply(obj)[source]¶
Sequentially apply rules to given object.
This method iterates over all rules of the given
RuleTable
. For eachrule
, it is checked if itmatches
the given object. IfFalse
, the nextrule
in the table is considered. IfTrue
the correspondingaction
is executed withobj
as parameter. If execution ofaction
raisesRuleNotMatchingError
, the rule is considered as not matching, and execution continues with evaluation of the next rule. Otherwise, execution is stopped and the return value ofaction
is returned to the caller.If no
rule
matches, aNoMatchingRuleError
is raised.Parameters
- obj
The object to apply the
RuleTable
to.
Returns
Return value of the action of the first matching
rule
in the table.Raises
- NoMatchingRuleError
No
rule
could be applied to the given object.
- apply_children(obj, children=None)[source]¶
Apply rules to all children of the given object.
This method calls
apply
to each child of the given object. The children of the object are either provided by thechildren
parameter or automatically inferred by theget_children
method.Parameters
- obj
The object to apply the
RuleTable
to.- children
None
or a list of attribute names defining the children to consider.
Returns
Result of : meth:
apply
for all given children.
- classmethod breakpoint_for_name(name)[source]¶
Add a conditional breakpoint for objects of given name.
Break execution in
apply
, when being applied to an object with a certain name.Parameters
- name
name
of the object for which to add the conditional breakpoint.
- classmethod breakpoint_for_obj(obj)[source]¶
Add a conditional breakpoint for given object.
Break execution in
apply
, when being applied to a certain object.Parameters
- obj
Object for which to add the conditional breakpoint.
- classmethod get_children(obj)[source]¶
Determine children of given object.
This method returns a list of the names of all attributes
a
, for which one of the following is true:
- replace_children(obj, children=None)[source]¶
Replace children of object according to rule table.
Same as
apply_children
, but additionally callsobj.with_
to replace the children ofobj
with the result of the correspondingapply
call.
- class pymor.algorithms.rules.RuleTableMeta(name, bases, namespace)[source]¶
Bases:
pymor.core.base.UberMeta
Meta class for
RuleTable
.
- class pymor.algorithms.rules.match_class(*classes)[source]¶
Bases:
match_class_base
rule
that matches when obj is instance of one of the given classes.
- class pymor.algorithms.rules.match_class_all(*classes)[source]¶
Bases:
match_class_base
rule
that matches when each item of obj is instance of one of the given classes.
- class pymor.algorithms.rules.match_class_any(*classes)[source]¶
Bases:
match_class_base
rule
that matches when any item of obj is instance of one of the given classes.
- class pymor.algorithms.rules.match_generic(condition, condition_description=None)[source]¶
Bases:
rule
rule
with matching condition given by an arbitrary function.Parameters
- condition
Function of one argument which checks if given object matches condition.
- condition_description
Optional string describing the condition implemented by
condition
.
- class pymor.algorithms.rules.rule[source]¶
Decorator to make a method a rule in a given
RuleTable
.The decorated function will become the
action
to perform in case the rulematches
. Matching conditions are specified by subclassing and overriding thematches
method.If an action is decorated by multiple rules, all these rules must match for the action to apply.
Methods
Returns True if given object matches the condition.