X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/26ee3a06e28e16b71367183581a4f3b10ee4e832..d8746da256e827b700aaf173669bd5bbc97025c7:/wxPython/samples/ide/activegrid/util/objutils.py diff --git a/wxPython/samples/ide/activegrid/util/objutils.py b/wxPython/samples/ide/activegrid/util/objutils.py index 97bd2f79e0..9658aa2a2a 100644 --- a/wxPython/samples/ide/activegrid/util/objutils.py +++ b/wxPython/samples/ide/activegrid/util/objutils.py @@ -14,98 +14,7 @@ import logging import traceback import sys import os -import xmlmarshaller - -AG_TYPE_MAPPING = { "ag:append" : "activegrid.model.processmodel.AppendOperation", - "ag:body" : "activegrid.model.processmodel.Body", - "ag:copy" : "activegrid.model.processmodel.CopyOperation", - "ag:cssRule" : "activegrid.model.processmodel.CssRule", - "ag:datasource" : "activegrid.data.dataservice.DataSource", - "ag:debug" : "activegrid.model.processmodel.DebugOperation", - "ag:deployment" : "activegrid.server.deployment.Deployment", - "ag:glue" : "activegrid.model.processmodel.Glue", - "ag:hr" : "activegrid.model.processmodel.HorizontalRow", - "ag:image" : "activegrid.model.processmodel.Image", - "ag:inputs" : "activegrid.model.processmodel.Inputs", - "ag:label" : "activegrid.model.processmodel.Label", - "ag:processmodel": "activegrid.model.processmodel.ProcessModel", - "ag:processmodelref" : "activegrid.server.deployment.ProcessModelRef", - "ag:query" : "activegrid.model.processmodel.Query", - "ag:schemaOptions" : "activegrid.model.schema.SchemaOptions", - "ag:schemaref" : "activegrid.server.deployment.SchemaRef", - "ag:set" : "activegrid.model.processmodel.SetOperation", - "ag:text" : "activegrid.model.processmodel.Text", - "ag:title" : "activegrid.model.processmodel.Title", - "ag:view" : "activegrid.model.processmodel.View", - "bpws:case" : "activegrid.model.processmodel.BPELCase", - "bpws:catch" : "activegrid.model.processmodel.BPELCatch", - "bpws:faultHandlers" : "activegrid.model.processmodel.BPELFaultHandlers", - "bpws:invoke" : "activegrid.model.processmodel.BPELInvoke", - "bpws:onMessage" : "activegrid.model.processmodel.BPELOnMessage", - "bpws:otherwise" : "activegrid.model.processmodel.BPELOtherwise", - "bpws:pick" : "activegrid.model.processmodel.BPELPick", - "bpws:process" : "activegrid.model.processmodel.BPELProcess", - "bpws:receive" : "activegrid.model.processmodel.BPELReceive", - "bpws:reply" : "activegrid.model.processmodel.BPELReply", - "bpws:scope" : "activegrid.model.processmodel.BPELScope", - "bpws:sequence" : "activegrid.model.processmodel.BPELSequence", - "bpws:switch" : "activegrid.model.processmodel.BPELSwitch", - "bpws:terminate" : "activegrid.model.processmodel.BPELTerminate", - "bpws:variable" : "activegrid.model.processmodel.BPELVariable", - "bpws:variables" : "activegrid.model.processmodel.BPELVariables", - "bpws:while" : "activegrid.model.processmodel.BPELWhile", - "wsdl:message" : "activegrid.model.processmodel.WSDLMessage", - "wsdl:part" : "activegrid.model.processmodel.WSDLPart", - "xforms:group" : "activegrid.model.processmodel.XFormsGroup", - "xforms:input" : "activegrid.model.processmodel.XFormsInput", - "xforms:label" : "activegrid.model.processmodel.XFormsLabel", - "xforms:output" : "activegrid.model.processmodel.XFormsOutput", - "xforms:secret" : "activegrid.model.processmodel.XFormsSecret", - "xforms:submit" : "activegrid.model.processmodel.XFormsSubmit", - "xs:all" : "activegrid.model.schema.XsdSequence", - "xs:complexType" : "activegrid.model.schema.XsdComplexType", - "xs:element" : "activegrid.model.schema.XsdElement", - "xs:field" : "activegrid.model.schema.XsdKeyField", - "xs:key" : "activegrid.model.schema.XsdKey", - "xs:keyref" : "activegrid.model.schema.XsdKeyRef", - "xs:schema" : "activegrid.model.schema.Schema", - "xs:selector" : "activegrid.model.schema.XsdKeySelector", - "xs:sequence" : "activegrid.model.schema.XsdSequence", - "projectmodel" : "activegrid.tool.ProjectEditor.ProjectModel", - } - -def defaultLoad(fileObject, knownTypes=None): - xml = fileObject.read() - loadedObject = defaultUnmarshal(xml, knownTypes=knownTypes) - if hasattr(fileObject, 'name'): - loadedObject.fileName = os.path.abspath(fileObject.name) - loadedObject.initialize() - return loadedObject - -def defaultUnmarshal(xml, knownTypes=None): - if not knownTypes: knownTypes = AG_TYPE_MAPPING - return xmlmarshaller.unmarshal(xml, knownTypes=knownTypes) - -def defaultSave(fileObject, objectToSave, prettyPrint=True, knownTypes=None, withEncoding=1, encoding='utf-8'): - xml = defaultMarshal(objectToSave, prettyPrint=prettyPrint, knownTypes=knownTypes, withEncoding=withEncoding, encoding=encoding) - fileObject.write(xml) - fileObject.flush() - -def defaultMarshal(objectToSave, prettyPrint=True, knownTypes=None, withEncoding=1, encoding='utf-8'): - if not knownTypes: knownTypes = AG_TYPE_MAPPING - return xmlmarshaller.marshal(objectToSave, prettyPrint=prettyPrint, knownTypes=knownTypes, withEncoding=withEncoding, encoding=encoding) - -def clone(objectToClone, knownTypes=None, encoding='utf-8'): - if not knownTypes: knownTypes = AG_TYPE_MAPPING - xml = xmlmarshaller.marshal(objectToClone, prettyPrint=True, knownTypes=knownTypes, encoding=encoding) - clonedObject = xmlmarshaller.unmarshal(xml, knownTypes=knownTypes) - if hasattr(objectToClone, 'fileName'): - clonedObject.fileName = objectToClone.fileName - try: - clonedObject.initialize() - except AttributeError: - pass - return clonedObject +from types import * def classForName(className): pathList = className.split('.') @@ -115,31 +24,6 @@ def classForName(className): code = code.__dict__[name] return code -def hasattrignorecase(object, name): - namelow = name.lower() - for attr in dir(object): - if attr.lower() == namelow: - return True - for attr in dir(object): - if attr.lower() == '_' + namelow: - return True - return False - -def setattrignorecase(object, name, value): - namelow = name.lower() - for attr in object.__dict__: - if attr.lower() == namelow: - object.__dict__[attr] = value - return - object.__dict__[name] = value - -def getattrignorecase(object, name): - namelow = name.lower() - for attr in object.__dict__: - if attr.lower() == namelow: - return object.__dict__[attr] - return object.__dict__[name] - def hasPropertyValue(obj, attr): hasProp = False try: @@ -159,7 +43,7 @@ def hasPropertyValue(obj, attr): return hasProp def toDiffableString(value): - s = repr(value) + s = str(value) ds = "" i = s.find(" at 0x") start = 0 @@ -171,19 +55,51 @@ def toDiffableString(value): start = j i = s.find(" at 0x", start) return ds + s[start:] - + +def toString(value, options=0): + if ((options & PRINT_OBJ_DIFFABLE) > 0): + return toDiffableString(value) + return value + +def toTypeString(obj): + if (isinstance(obj, BooleanType)): + return "bool" + elif (isinstance(obj, UnicodeType)): + return "unicode" + elif (isinstance(obj, basestring)): + return "string" + elif (isinstance(obj, IntType)): + return "int" + elif (isinstance(obj, FloatType)): + return "float" + elif (type(obj) == ListType): + return "list" + elif (isinstance(obj, DictType)): + return "dict" + elif (isinstance(obj, TupleType)): + return "tuple" + elif (isinstance(obj, InstanceType)): + return type(obj) + else: + return type(obj) + PRINT_OBJ_GETATTR = 1 PRINT_OBJ_HIDE_INTERNAL = 2 PRINT_OBJ_COMPACT = 4 PRINT_OBJ_NONONE = 8 +PRINT_OBJ_DIFFABLE = 16 PRINT_OBJ_INTERNAL = 512 def printObject(out, object, name="", indent=0, flags=0, exclude=None, maxIndent=30): if ((maxIndent != None) and (indent > maxIndent)): - print >> out, " "*indent, name, str(object) + print >> out, " "*indent, "%s: %s" % (name, toString(str(object), flags)), + if ((flags & PRINT_OBJ_INTERNAL) == 0): + print >> out return True finalNewLine = False printed = True +## if (exclude == None): +## exclude = [] if ((flags & PRINT_OBJ_COMPACT) > 0): if (exclude and object in exclude): return @@ -191,7 +107,7 @@ def printObject(out, object, name="", indent=0, flags=0, exclude=None, maxIndent if ((flags & PRINT_OBJ_INTERNAL) == 0): finalNewLine = True flags |= PRINT_OBJ_INTERNAL - if (object == None): + if (object is None): if (flags & PRINT_OBJ_NONONE) == 0: print >> out, " "*indent, name, " = None", else: @@ -201,21 +117,21 @@ def printObject(out, object, name="", indent=0, flags=0, exclude=None, maxIndent finalNewLine = False printed = False elif (isinstance(object, (list, tuple))): - if (exclude and object in exclude): - print >> out, " "*indent, name, " : ", type(object), " of length = ", len(object), " (already printed)", - elif (exclude and name in exclude): - print >> out, " "*indent, name, " : ", type(object), " of length = ", len(object), " (excluded)", + if ((exclude != None) and object in exclude): + print >> out, " "*indent, name, " : ", toTypeString(object), " of length = ", len(object), " (already printed)", + elif ((exclude != None) and name in exclude): + print >> out, " "*indent, name, " : ", toTypeString(object), " of length = ", len(object), " (excluded)", else: - if (exclude != None): exclude.append(object) - print >> out, " "*indent, name, " : ", type(object), " of length = %i" % len(object), + if ((exclude != None) and (len(object) > 0)): exclude.append(object) + print >> out, " "*indent, name, " : ", toTypeString(object), " of length = %d" % len(object), for i, o in enumerate(object): print >> out - printObject(out, o, name="[%i]" % i, indent=indent+2, flags=flags, exclude=exclude, maxIndent=maxIndent) + printObject(out, o, name="[%d]" % i, indent=indent+2, flags=flags, exclude=exclude, maxIndent=maxIndent) elif (isinstance(object, dict)): - if (exclude and object in exclude): - print >> out, " "*indent, name, " : ", type(object), " (already printed)", + if ((exclude != None) and object in exclude): + print >> out, " "*indent, name, " : ", toTypeString(object), " (already printed)", else: - if (exclude != None): exclude.append(object) + if ((exclude != None) and (len(object) > 0)): exclude.append(object) if (len(name) > 0): print >> out, " "*indent, name, if ((flags & PRINT_OBJ_COMPACT) == 0): @@ -226,25 +142,29 @@ def printObject(out, object, name="", indent=0, flags=0, exclude=None, maxIndent print >> out keys = object.keys() keys.sort() - for n in keys: - if ((n != None) and (not n.startswith("_") or ((flags & PRINT_OBJ_HIDE_INTERNAL) == 0))): - if printObject(out, object[n], name=n, indent=indent+2, flags=flags, exclude=exclude, maxIndent=maxIndent): - if ((flags & PRINT_OBJ_COMPACT) == 0): - print >> out - else: - print >> out, ",", + for key in keys: + if (key != None): + n = key + if (not (isinstance(n, basestring))): + n = str(n) + if ((not n.startswith("_") or ((flags & PRINT_OBJ_HIDE_INTERNAL) == 0))): + if printObject(out, object[key], name=n, indent=indent+2, flags=(flags | PRINT_OBJ_INTERNAL), exclude=exclude, maxIndent=maxIndent): + if ((flags & PRINT_OBJ_COMPACT) == 0): + print >> out + else: + print >> out, ",", print >> out, " "*indent, "}", elif (hasattr(object, "__dict__")): - if (exclude and object in exclude): - print >> out, " "*indent, name, " : ", type(object), " (already printed) = ", toDiffableString(object), + if ((exclude != None) and object in exclude): + print >> out, " "*indent, name, " : ", toTypeString(object), " (already printed) = ", toDiffableString(object), else: if (exclude != None): exclude.append(object) - if (name.startswith("_")): - print >> out, " "*indent, name, " : ", type(object), - elif (exclude and object.__dict__ in exclude): - print >> out, " "*indent, name, " : ", type(object), " (already printed)", + if (name.startswith("_")): ## and ((flags & PRINT_OBJ_HIDE_INTERNAL) > 0)): + print >> out, " "*indent, name, " : ", toTypeString(object), + elif ((exclude != None) and object.__dict__ in exclude): + print >> out, " "*indent, name, " : ", toTypeString(object), " (already printed)", else: - print >> out, " "*indent, name, " : ", type(object), + print >> out, " "*indent, name, " : ", toTypeString(object), if ((flags & PRINT_OBJ_GETATTR) == 0): if ((flags & PRINT_OBJ_COMPACT) == 0): print >> out @@ -259,14 +179,19 @@ def printObject(out, object, name="", indent=0, flags=0, exclude=None, maxIndent elif (indent < 0): print >> out, object, elif isinstance(object, basestring): - if (exclude and name in exclude): - print >> out, " "*indent, name, " : ", type(object), " of length = ", len(object), " (excluded)", + if ((exclude != None) and name in exclude): + print >> out, " "*indent, name, " : ", toTypeString(object), " of length = ", len(object), " (excluded)", elif (len(object) > 100): - print >> out, " "*indent, name, ":", type(object), "[%i] = %s...%s" % (len(object), object[:50], object[-50:]), + print >> out, " "*indent, name, ":", toTypeString(object), "[%d] = %s...%s" % (len(object), object[:50], object[-50:]), else: - print >> out, " "*indent, name, ":", type(object), "=", str(object), + print >> out, " "*indent, name, ":", toTypeString(object), "=", str(object), +## elif (isinstance(object, float)): +## val = str(object) +## if (len(val) > 17): +## val = val[:17] +## print >> out, " "*indent, name, ":", type(object), "=", val, else: - print >> out, " "*indent, name, ":", type(object), "=", str(object), + print >> out, " "*indent, name, ":", toTypeString(object), "=", str(object), if (finalNewLine): print >> out return printed