pyhrf.xmliobak.xmlbase module¶
-
class
pyhrf.xmliobak.xmlbase.
FuncWrapper
(func, params=None)¶
-
class
pyhrf.xmliobak.xmlbase.
TypedXMLHandler
(write_callback=None)¶ - Class handling the xml format with the following generic document structure :
- <root>
- <tagName ‘type’=tagType> tagContent </tagName>
</root>
The root tag is mandatory, so is the ‘type’ attribute for every other tag. This class can parse an xml string and build a dictionnary of python objects according to each tag (see parseXMLString()). Conversely, it can build the xml string corresponding to a list or dictionnary of objects (see to_xml()). This class is based on the xml.dom python module and relies on the DOM structure to parse XML. XML input/output is handled via a mapping between a type attribute of a tag and a static handling function. This class handles the following basic python types : string, int, float, array.array, list, dict. One can add other type-specific read or write handlers with the functions addDOMTagReader() and addDOMWriter().
- Reading XML:
specific handlers are added with method addDOMTagReader(stype, myReadHandler) which maps the function myReadHandler to the string stype.
- a tag reading handler must have the following prototype :
- myReadHandler(domTreeWalker):
# interpret and process tag content # return built python object
, where domTreeWalker is an instance of the _xmlplus.dom.TreeWalker.TreeWalker class.
- usefull things to use the domTreeWalker and implement a handler:
- node = domTreeWalker.currentNode -> current node in the tree parsing, of class Node, corresponding to the current tag.
- node.getAttribute(‘my attribute’) -> return the string corresponding to ‘my attribute’ in the tag definition
- node.childNodes[0].data -> the tag content data (string type), to be parse and build the python object from
- node.tagName -> the name of the tag
- node.parentNode -> the parent tag node
- Writing XML :
handlers are added with method addDOMTagWriter(pythonType, myWriteHandler), where pythonType is of python type ‘type’ and myWriteHandler a function.
- a tag writing handler must have the following prototype :
- myWriteHandler(domDocument, node, pyObj):
- where :
- domDocument is overall incapsulating structure (_xmlplus.dom.Document instance)
- node (Node instance) is the current tag node to append data to
- pyObj is the python object to convert into a ‘human-readable’ string.
usefull things to write handlers :
-
ATTRIBUTE_LABEL_META
= 'meta'¶
-
ATTRIBUTE_LABEL_PYTHON_CLASS
= 'pythonClass'¶
-
ATTRIBUTE_LABEL_PYTHON_CLASS_INIT_MODE
= 'pythonInitMode'¶
-
ATTRIBUTE_LABEL_PYTHON_FUNCTION
= 'pythonFunction'¶
-
ATTRIBUTE_LABEL_PYTHON_MODULE
= 'pythonModule'¶
-
ATTRIBUTE_LABEL_TYPE
= 'type'¶
-
TYPE_LABEL_ARRAY
= 'array'¶
-
TYPE_LABEL_BOOL
= 'bool'¶
-
TYPE_LABEL_DICT
= 'struct'¶
-
TYPE_LABEL_FLOAT
= 'double'¶
-
TYPE_LABEL_INT
= 'int'¶
-
TYPE_LABEL_KEY_VAL_PAIR
= 'dictItem'¶
-
TYPE_LABEL_LIST
= 'list'¶
-
TYPE_LABEL_NONE
= 'none'¶
-
TYPE_LABEL_ODICT
= 'ordered_struct'¶
-
TYPE_LABEL_STRING
= 'char'¶
-
TYPE_LABEL_TUPLE
= 'tuple'¶
-
TYPE_LABEL_XML_INCLUDE
= 'include'¶
-
static
arrayDOMWriter
(doc, node, arrayObj, xmlHandler)¶
-
static
arrayTagDOMReader
(walker, xmlHandler)¶
-
static
boolDOMWriter
(doc, node, boolObj, xmlHandler)¶
-
static
boolTagDOMReader
(walker, xmlHandler)¶
-
buildXMLString
(obj, label=None, pretty=False)¶
-
createDocument
()¶
-
static
dictDOMWriter
(doc, node, dictObj, xmlHandler, atype=None)¶
-
static
dictTagDOMReader
(walker, xmlHandler, init_class=None)¶
-
static
floatDOMWriter
(doc, node, floatObj, xmlHandler)¶
-
static
floatTagDOMReader
(walker, xmlHandler)¶
-
static
includeTagDOMReader
(walker, xmlHandler)¶
-
inspect_and_append_to_DOM_tree
(doc, node, obj)¶
-
inspectable
(obj)¶
-
static
intDOMWriter
(doc, node, intObj, xmlHandler)¶
-
static
intTagDOMReader
(walker, xmlHandler)¶
-
static
listDOMWriter
(doc, node, listObj, xmlHandler)¶
-
static
listTagDOMReader
(walker, xmlHandler)¶
-
mountDefaultHandlers
()¶
-
static
noneDOMWriter
(doc, node, noneObj, xmlHandler)¶
-
static
noneTagDOMReader
(walker, xmlHandler)¶
-
static
odictDOMWriter
(doc, node, dictObj, xmlHandler)¶
-
static
odictTagDOMReader
(walker, xmlHandler)¶
-
packHandlers
()¶
-
parseXMLString
(xml)¶
-
readDOMData
(walker)¶
-
rootTagDOMReader
(walker)¶
-
static
stringDOMWriter
(doc, node, stringObj, xmlHandler)¶
-
static
stringTagDOMReader
(walker, xmlHandler)¶
-
static
tupleDOMWriter
(doc, node, tupleObj, xmlHandler)¶
-
static
tupleTagDOMReader
(walker, xmlHandler)¶
-
writeDOMData
(doc, node, obj, label, comment=None, meta=None)¶
-
class
pyhrf.xmliobak.xmlbase.
XMLParamDrivenClass
(parameters=None, xmlHandler=<pyhrf.xmliobak.xmlbase.TypedXMLHandler instance>, xmlLabel=None, xmlComment=None)¶ Base “abstract” class to handle parameters with clear specification and default values. Recursive aggregation is availaible to handle aggregated variables which also require parameter specifications.
-
appendParametersToDOMTree
(doc, node)¶
-
defaultParameters
= {}¶
-
fetchDefaultParameters
()¶
-
parametersComments
= {}¶
-
parametersMeta
= {}¶
-
parametersToXml
(tagName=None, pretty=False)¶
-
updateParameters
(newp)¶
-
-
class
pyhrf.xmliobak.xmlbase.
XMLParamDrivenClassInitException
¶
-
class
pyhrf.xmliobak.xmlbase.
XMLable
(**kwargs)¶ -
get_parameters_comments
()¶
-
get_parameters_meta
()¶
-
get_parameters_to_show
()¶
-
override_init
(param_name, init_obj, init_params=None)¶
-
override_value
(param_name, value)¶
-
set_init
(init_func, init_params=None)¶
-
-
class
pyhrf.xmliobak.xmlbase.
XMLable2
¶ Bases:
object
-
check_init_func
(params=None)¶
-
get_parameters_comments
()¶
-
get_parameters_meta
()¶
-
get_parameters_to_show
()¶
-
override_param_init
(init_func, **params)¶ TODO (if needed)
-
set_init
(init_func, **init_params)¶
-
set_init_param
(param_name, param_value)¶
-
-
pyhrf.xmliobak.xmlbase.
from_xml
(s, handler=<pyhrf.xmliobak.xmlbase.TypedXMLHandler instance>)¶
-
pyhrf.xmliobak.xmlbase.
getargspec
(func)¶
-
pyhrf.xmliobak.xmlbase.
match_init_args
(c, argsDict)¶
-
pyhrf.xmliobak.xmlbase.
read_xml
(fn)¶
-
pyhrf.xmliobak.xmlbase.
to_xml
(o, handler=<pyhrf.xmliobak.xmlbase.TypedXMLHandler instance>, objName='anonymObject', pretty=False)¶
-
pyhrf.xmliobak.xmlbase.
write_xml
(obj, fn)¶