def create_serialized_user_object(self, obj): klass = self.project.find_object(Class, class_name(obj), module_name(obj)) if klass: serialized = UserObject(obj, klass) klass.add_user_object(serialized) return serialized
def __init__(self, obj, serialize): CompositeObject.__init__(self, obj) self.args = map(serialize, obj.args) self.constructor_format = "%s(%%s)" % class_name(obj) self.imports = set() if class_of(obj) in BUILTIN_ENVIRONMENT_ERROR_TYPES and obj.filename is not None: self.args.append(serialize(obj.filename))
def get_type_name(obj): """ >>> get_type_name([]) 'list' >>> get_type_name({}) 'dict' May contain dots, if type is not builtin. >>> get_type_name(lambda: None) 'types.FunctionType' """ mapping = {array.array: 'array.array', types.FunctionType: 'types.FunctionType', types.GeneratorType: 'types.GeneratorType'} objtype = type(obj) return mapping.get(objtype, class_name(obj))
def __repr__(self): return "%s(definition=%s, input=%r, output=%r, exception=%r, side_effects=[..(%d)..])" % \ (class_name(self), self.definition.name, self.input, self.output, self.exception, len(self.side_effects))
def add_subcall(self, call): if call.caller is not None: raise TypeError("This %s of %s already has a caller." % \ (class_name(call), call.definition.name)) call.caller = self self.subcalls.append(call)