diffpy.srfit.equation.visitors package¶
Submodules¶
diffpy.srfit.equation.visitors.argfinder module¶
Visitor for extracting the Argument entries in a Literal tree.
ArgFinder extracts all Arguments from a literal true.
-
class
diffpy.srfit.equation.visitors.argfinder.
ArgFinder
(getconsts=True)¶ Bases:
diffpy.srfit.equation.visitors.visitor.Visitor
ArgFinder extracts Arguments from a Literal tree.
Attributes args – The list of collected Arguments getconsts – Flag indicating whether to grab constant arguments.
-
onArgument
(arg)¶ Process an Argument node.
-
onOperator
(op)¶ Process an Operator node.
-
reset
()¶ Reset the argument set.
-
diffpy.srfit.equation.visitors.printer module¶
Printer visitor for printing the equation represented by a Literal tree.
The Printer visitor creates a one-line representation of the Literal tree, which is valid as a string equivalent of the equation.
-
class
diffpy.srfit.equation.visitors.printer.
Printer
¶ Bases:
diffpy.srfit.equation.visitors.visitor.Visitor
Printer for printing a Literal tree.
Attributes:
- eqskip – regular expression pattern for Equation objects that should
- not be expanded, but printed under their own name. Expand all equations when None.
output – The output generated by the printer.
-
eqskip
¶ Pattern for equation objects to be skipped.
Expand all equations when None.
-
onArgument
(arg)¶ Process an Argument node.
No assumption is made about the argument type.
-
onEquation
(eq)¶ Process an Equation node.
-
onOperator
(op)¶ Process an Operator node.
-
reset
()¶ Reset the out put string.
diffpy.srfit.equation.visitors.swapper module¶
Swapper for replacing a Literal in an equation with another Literals.
-
class
diffpy.srfit.equation.visitors.swapper.
Swapper
(oldlit, newlit)¶ Bases:
diffpy.srfit.equation.visitors.visitor.Visitor
Swapper for swapping out one literal for another in a literal tree.
Note that this cannot swap out a root node of a literal tree. This case must be tested for explicitly.
Attributes: newlit – The literal to be placed into the literal tree. oldlit – The literal to be replaced.
-
onArgument
(arg)¶ Process an Argument node.
Tell the parent to swap the old Argument with the replacement Literal.
-
onEquation
(eq)¶ Process an Equation node.
This looks at the equation itself as well as the root.
-
onOperator
(op)¶ Process an Operator node.
Tell the parent to swap the old Operator with the replacement Literal.
-
diffpy.srfit.equation.visitors.validator module¶
Validator visitor for validating a tree of Literals.
The Validator walks an equation tree composed of Literals and checks the validity of each equation as much as possible without evaluating it. It collects errors in a list.
The Validator checks that the input count of each Operator is equal to the output count of its arguments. It also checks that each object has the proper interface.
-
class
diffpy.srfit.equation.visitors.validator.
Validator
¶ Bases:
diffpy.srfit.equation.visitors.visitor.Visitor
Validator error for checking validity of an equation tree.
Attributes: errors – List of strings describing errors. _nin – Variable for counting the number input arguments for an
operator.-
onArgument
(arg)¶ Process an Argument node.
The Argument must be an instance of ArgumentABC from diffpy.srfit.equation.literals.abcs
-
onOperator
(op)¶ Process an Operator node.
The Operator must be an instance of OperatorABC from diffpy.srfit.equation.literals.abcs
-
reset
()¶ Click the clicker and reset non-public data.
-
diffpy.srfit.equation.visitors.visitor module¶
Base visitor class.
Visitors work with Literal trees to perform a specified action. They are designed according to the visitor pattern (http://en.wikipedia.org/wiki/Visitor_pattern).
Visitors work with the following Literal classes (diffpy.srfit.equation.literals): Argument Operator
See the Visitor class for the required methods that each Visitor must overload.
-
class
diffpy.srfit.equation.visitors.visitor.
Visitor
¶ Bases:
object
Abstract class for all visitors to a Literal tree.
See implemented visitors for examples of use.
-
onArgument
(arg)¶ Process an Argument node.
-
onEquation
(eq)¶ Process an Equation node.
Equations are specialized Operators. They don’t need to be specifically supported by a Visitor.
-
onOperator
(op)¶ Process an Operator node.
-
Module contents¶
Visitors that perform on Literal networks.
Visitors are designed to traverse and extract information from Literal networks (diffpy.srfit.equation.literals). Visitors are used to validate, print and extracting Arguments from Literal networks.
The Literal-Visitor relationship is that described by the Visitor pattern (http://en.wikipedia.org/wiki/Visitor_pattern).
-
diffpy.srfit.equation.visitors.
getArgs
(literal, getconsts=True)¶ Get the Arguments of a Literal tree.
- getconsts – If True (default), then Arguments designated as constant
- are also retrieved.
Returns a list of Arguments searched for depth-first.
-
diffpy.srfit.equation.visitors.
getExpression
(literal, eqskip=None)¶ Get math expression string from the Literal tree object.
- eqskip – regular expression pattern for Equation objects that should
- be printed under their own name. Expand all Equation objects when None.
Return string.
-
diffpy.srfit.equation.visitors.
prettyPrint
(literal)¶ Print a Literal tree.
-
diffpy.srfit.equation.visitors.
swap
(literal, oldlit, newlit)¶ Swap one literal for another in a Literal tree.
Corrections are done in-place unless literal is oldlit, in which case the return value is newlit.
Returns the literal tree with oldlit swapped for newlit.
-
diffpy.srfit.equation.visitors.
validate
(literal)¶ Validate a Literal tree.
Raises ValueError if the tree contains errors.