geosolver.method
index
/home/rick/Programming/Python/GeoSolver/geosolver/method.py

Module for method graphs 
Copyright Rick van der Meiden, 2003, 2004
Created: 1 Nov 2003.
 
A method graph contains variables and methods. Methods are objects that
specify input and output variables and an 'execute' method. Whenever the
value of a variable is changed, one or more methods are executed to update
the value of 'upstream' variables. 
 
Changes:
23 Nov 2004 - added Error classes, updated naming and doc conventions (PEP 8, 257)

 
Classes
       
exceptions.Exception(exceptions.BaseException)
ValidityError
Method
AddMethod
AssignMethod
SetMethod
SubMethod
MethodGraph

 
class AddMethod(Method)
     Methods defined here:
__init__(self, a, b, c)
new method c := a + b
__str__(self)
execute(self, inmap)

Methods inherited from Method:
inputs(self)
return a list of input variables
 
If an attribute '_inputs' has been defined, a new list
with the contents of that attribute will be returned. 
Subclasses may choose to initialise this variable or to 
override this function.
outputs(self)
return a list of output variables
 
If an attribute '_outputs' has been defined, a new list
with the contents of that attribute will be returned. 
Subclasses may choose to initialise this variable or to 
override this function.

 
class AssignMethod(Method)
     Methods defined here:
__init__(self, a, b)
new method a := b
 
keyword arguments:
    a - variable name
    b - variable name
__str__(self)
execute(self, inmap)

Methods inherited from Method:
inputs(self)
return a list of input variables
 
If an attribute '_inputs' has been defined, a new list
with the contents of that attribute will be returned. 
Subclasses may choose to initialise this variable or to 
override this function.
outputs(self)
return a list of output variables
 
If an attribute '_outputs' has been defined, a new list
with the contents of that attribute will be returned. 
Subclasses may choose to initialise this variable or to 
override this function.

 
class Method
    Abstract method
 
Method is an object that defines input variables, output variables
and an execute method. This class should be considered abstract.
Instances (of subclasses of) Method must be non-mutable, hashable objects.
 
  Methods defined here:
execute(self, inmap)
Execute method.
 
Returns a mapping (dictionary) of output variables to values, 
given an input map, mapping input variables to values (dictionary)
The previous value of the output variable should also be in inmap.
If the method cannot be executed, it should return an empty map.
inputs(self)
return a list of input variables
 
If an attribute '_inputs' has been defined, a new list
with the contents of that attribute will be returned. 
Subclasses may choose to initialise this variable or to 
override this function.
outputs(self)
return a list of output variables
 
If an attribute '_outputs' has been defined, a new list
with the contents of that attribute will be returned. 
Subclasses may choose to initialise this variable or to 
override this function.

 
class MethodGraph
    Implementation of a method graph
 
A method graph is represented by 
a directed bi-partite graph: nodes are either varables or methods. 
Edges run from input variables to methods and from methods to ouput
variables. 
 
A method graph may not contain cycles. Every variable must be 
determined by at most one constraint.
 
Methods must be instances of (subclasses of) class Method.
Variables are basically just names, and may be any 
non-mutable, hashable object, e.g. strings.
Values associated with variables may be of any type.
 
If no value is explicitly associated with a variable, it defaults to None.
 
  Methods defined here:
__init__(self)
__str__(self)
add_method(self, met, prop=True)
Add a method.
 
Iff prop is true then this change and any pending
changes will be propagated.
add_variable(self, varname, value=None)
Add a variable, optionally with a value
clear(self)
clear methodgraph by removing all variables
execute(self, met)
Execute a method and proagate changes. Method must be in Methodgraph
get(self, varname)
get the value of a variable
methods(self)
return a list of methods
propagate(self)
Propagate any pending changes.
 
Changes are propagated until no changes are left or until
no more changes can be propagated. This method is called
from set() and add_method() by default. However, if the
user so chooses, the methods will not call propagate, and
the user should call this fucntion at a convenient time.
rem_method(self, met)
Remove a method
rem_variable(self, varname)
Remove a variable and all methods on that variable
set(self, varname, value, prop=True)
Set the value of a variable.
 
Iff prop is true then this change and any pending
changes will be propagated.
variables(self)
return a list of variables

 
class SetMethod(Method)
     Methods defined here:
__init__(self, var, value)
new method var := value
 
keyword arguments:
    var - variable name
    value - any object to be associated with var
__str__(self)
execute(self, inmap)

Methods inherited from Method:
inputs(self)
return a list of input variables
 
If an attribute '_inputs' has been defined, a new list
with the contents of that attribute will be returned. 
Subclasses may choose to initialise this variable or to 
override this function.
outputs(self)
return a list of output variables
 
If an attribute '_outputs' has been defined, a new list
with the contents of that attribute will be returned. 
Subclasses may choose to initialise this variable or to 
override this function.

 
class SubMethod(Method)
     Methods defined here:
__init__(self, a, b, c)
new method c := a - b
__str__(self)
execute(self, inmap)

Methods inherited from Method:
inputs(self)
return a list of input variables
 
If an attribute '_inputs' has been defined, a new list
with the contents of that attribute will be returned. 
Subclasses may choose to initialise this variable or to 
override this function.
outputs(self)
return a list of output variables
 
If an attribute '_outputs' has been defined, a new list
with the contents of that attribute will be returned. 
Subclasses may choose to initialise this variable or to 
override this function.

 
class ValidityError(exceptions.Exception)
    Error indicating operation violated MethodGraph validity
 
 
Method resolution order:
ValidityError
exceptions.Exception
exceptions.BaseException
__builtin__.object

Methods defined here:
__init__(self, message)
Constructor for ValidityError
 
arguments:
    message - message to be displayed
__str__(self)

Data descriptors defined here:
__weakref__
list of weak references to the object (if defined)

Data and other attributes inherited from exceptions.Exception:
__new__ = <built-in method __new__ of type object at 0x8145ea0>
T.__new__(S, ...) -> a new object with type S, a subtype of T

Methods inherited from exceptions.BaseException:
__delattr__(...)
x.__delattr__('name') <==> del x.name
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__reduce__(...)
__repr__(...)
x.__repr__() <==> repr(x)
__setattr__(...)
x.__setattr__('name', value) <==> x.name = value
__setstate__(...)

Data descriptors inherited from exceptions.BaseException:
__dict__
args
message
exception message

 
Functions
       
test()