def extra_func(space): state = space.fromcache(State) state.setup() attach_dict_strategy(space) p = lltype.malloc(DUMMY_CPYEXT_STRUCT, flavor='raw') lltype.free(p, flavor='raw') W_TypeObject(space, 'foo', [], {}).hasmro = False
def build(cache, typedef): "NOT_RPYTHON: initialization-time only." # build a W_TypeObject from this StdTypeDef from pypy.objspace.std.typeobject import W_TypeObject from pypy.objspace.std.objecttype import object_typedef space = cache.space w = space.wrap rawdict = typedef.rawdict lazyloaders = {} if isinstance(typedef, StdTypeDef): # get all the sliced multimethods multimethods = slicemultimethods(space, typedef) for name, loader in multimethods.items(): if name in rawdict: # the name specified in the rawdict has priority continue assert name not in lazyloaders, ( 'name clash: %s in %s.lazyloaders' % (name, typedef.name)) lazyloaders[name] = loader # compute the bases if typedef is object_typedef: bases_w = [] else: bases = typedef.bases or [object_typedef] bases_w = [space.gettypeobject(base) for base in bases] # wrap everything dict_w = {} for descrname, descrvalue in rawdict.items(): dict_w[descrname] = w(descrvalue) if typedef.applevel_subclasses_base is not None: overridetypedef = typedef.applevel_subclasses_base.typedef else: overridetypedef = typedef w_type = W_TypeObject(space, typedef.name, bases_w, dict_w, overridetypedef=overridetypedef) if typedef is not overridetypedef: w_type.w_doc = space.wrap(typedef.doc) if hasattr(typedef, 'flag_sequence_bug_compat'): w_type.flag_sequence_bug_compat = typedef.flag_sequence_bug_compat w_type.lazyloaders = lazyloaders return w_type
def build(cache, typedef): "NOT_RPYTHON: initialization-time only." # build a W_TypeObject from this StdTypeDef from pypy.objspace.std.typeobject import W_TypeObject from pypy.objspace.std.objecttype import object_typedef space = cache.space w = space.wrap rawdict = typedef.rawdict lazyloaders = {} if isinstance(typedef, StdTypeDef): # get all the sliced multimethods multimethods = slicemultimethods(space, typedef) for name, loader in multimethods.items(): if name in rawdict: # the name specified in the rawdict has priority continue assert name not in lazyloaders, ( 'name clash: %s in %s.lazyloaders' % (name, typedef.name)) lazyloaders[name] = loader # compute the bases if typedef is object_typedef: bases_w = [] else: base = typedef.base or object_typedef bases_w = [space.gettypeobject(base)] # wrap everything dict_w = {} for descrname, descrvalue in rawdict.items(): dict_w[descrname] = w(descrvalue) w_type = W_TypeObject(space, typedef.name, bases_w, dict_w, overridetypedef=typedef) w_type.lazyloaders = lazyloaders return w_type