Author: Manuel Jacob Branch: refactor-str-types Changeset: r65786:808f2aea0f13 Date: 2013-07-29 16:00 +0200 http://bitbucket.org/pypy/pypy/changeset/808f2aea0f13/
Log: Remove string types from multi-method table. diff --git a/pypy/module/micronumpy/interp_boxes.py b/pypy/module/micronumpy/interp_boxes.py --- a/pypy/module/micronumpy/interp_boxes.py +++ b/pypy/module/micronumpy/interp_boxes.py @@ -2,9 +2,9 @@ from pypy.interpreter.error import operationerrfmt, OperationError from pypy.interpreter.gateway import interp2app, unwrap_spec from pypy.interpreter.typedef import TypeDef, GetSetProperty -from pypy.objspace.std.bytesobject import str_typedef +from pypy.objspace.std.bytesobject import W_BytesObject from pypy.objspace.std.floattype import float_typedef -from pypy.objspace.std.unicodeobject import unicode_typedef, unicode_from_object +from pypy.objspace.std.unicodeobject import W_UnicodeObject, unicode_from_object from pypy.objspace.std.inttype import int_typedef from pypy.objspace.std.complextype import complex_typedef from rpython.rlib.rarithmetic import LONG_BIT @@ -682,12 +682,12 @@ __module__ = "numpypy", ) -W_StringBox.typedef = TypeDef("string_", (str_typedef, W_CharacterBox.typedef), +W_StringBox.typedef = TypeDef("string_", (W_BytesObject.typedef, W_CharacterBox.typedef), __module__ = "numpypy", __new__ = interp2app(W_StringBox.descr__new__string_box.im_func), ) -W_UnicodeBox.typedef = TypeDef("unicode_", (unicode_typedef, W_CharacterBox.typedef), +W_UnicodeBox.typedef = TypeDef("unicode_", (W_UnicodeObject.typedef, W_CharacterBox.typedef), __module__ = "numpypy", __new__ = interp2app(W_UnicodeBox.descr__new__unicode_box.im_func), ) diff --git a/pypy/objspace/std/bytearrayobject.py b/pypy/objspace/std/bytearrayobject.py --- a/pypy/objspace/std/bytearrayobject.py +++ b/pypy/objspace/std/bytearrayobject.py @@ -1,10 +1,10 @@ """The builtin bytearray implementation""" +from pypy.interpreter.baseobjspace import W_Root from pypy.interpreter.buffer import RWBuffer from pypy.interpreter.error import OperationError, operationerrfmt from pypy.interpreter.gateway import interp2app, unwrap_spec, WrappedDefault from pypy.interpreter.signature import Signature -from pypy.objspace.std.model import W_Object, registerimplementation from pypy.objspace.std.sliceobject import W_SliceObject from pypy.objspace.std.stdtypedef import StdTypeDef from pypy.objspace.std.stringmethods import StringMethods @@ -16,7 +16,7 @@ def _make_data(s): return [s[i] for i in range(len(s))] -class W_BytearrayObject(W_Object, StringMethods): +class W_BytearrayObject(W_Root, StringMethods): def __init__(w_self, data): w_self.data = data @@ -378,7 +378,7 @@ # ____________________________________________________________ -bytearray_typedef = W_BytearrayObject.typedef = StdTypeDef( +W_BytearrayObject.typedef = StdTypeDef( "bytearray", __doc__ = '''bytearray() -> an empty bytearray bytearray(sequence) -> bytearray initialized from sequence\'s items @@ -460,7 +460,6 @@ remove = interp2app(W_BytearrayObject.descr_remove), reverse = interp2app(W_BytearrayObject.descr_reverse), ) -registerimplementation(W_BytearrayObject) init_signature = Signature(['source', 'encoding', 'errors'], None, None) init_defaults = [None, None, None] diff --git a/pypy/objspace/std/bytesobject.py b/pypy/objspace/std/bytesobject.py --- a/pypy/objspace/std/bytesobject.py +++ b/pypy/objspace/std/bytesobject.py @@ -1,12 +1,12 @@ """The builtin str implementation""" +from pypy.interpreter.baseobjspace import W_Root from pypy.interpreter.buffer import StringBuffer from pypy.interpreter.error import OperationError, operationerrfmt from pypy.interpreter.gateway import interp2app, unwrap_spec, WrappedDefault from pypy.objspace.std import newformat from pypy.objspace.std.basestringtype import basestring_typedef from pypy.objspace.std.formatting import mod_format -from pypy.objspace.std.model import W_Object, registerimplementation from pypy.objspace.std.stdtypedef import StdTypeDef from pypy.objspace.std.stringmethods import StringMethods from pypy.objspace.std.unicodeobject import (unicode_from_string, @@ -16,7 +16,7 @@ from rpython.rlib.rstring import StringBuilder, replace -class W_AbstractBytesObject(W_Object): +class W_AbstractBytesObject(W_Root): __slots__ = () def is_w(self, space, w_other): @@ -265,8 +265,6 @@ # listview_str return [s for s in value] -registerimplementation(W_BytesObject) - W_BytesObject.EMPTY = W_BytesObject('') W_BytesObject.PREBUILT = [W_BytesObject(chr(i)) for i in range(256)] del i @@ -294,7 +292,7 @@ else: return W_BytesObject(c) -str_typedef = W_BytesObject.typedef = StdTypeDef( +W_BytesObject.typedef = StdTypeDef( "str", basestring_typedef, __new__ = interp2app(W_BytesObject.descr_new), __doc__ = '''str(object) -> string diff --git a/pypy/objspace/std/model.py b/pypy/objspace/std/model.py --- a/pypy/objspace/std/model.py +++ b/pypy/objspace/std/model.py @@ -36,13 +36,9 @@ from pypy.objspace.std.inttype import int_typedef from pypy.objspace.std.floattype import float_typedef from pypy.objspace.std.complextype import complex_typedef - from pypy.objspace.std.basestringtype import basestring_typedef - from pypy.objspace.std.bytesobject import str_typedef - from pypy.objspace.std.bytearrayobject import bytearray_typedef from pypy.objspace.std.typeobject import type_typedef from pypy.objspace.std.slicetype import slice_typedef from pypy.objspace.std.longtype import long_typedef - from pypy.objspace.std.unicodeobject import unicode_typedef from pypy.objspace.std.nonetype import none_typedef self.pythontypes = [value for key, value in result.__dict__.items() if not key.startswith('_')] # don't look @@ -59,6 +55,7 @@ from pypy.objspace.std import listobject from pypy.objspace.std import dictmultiobject from pypy.objspace.std import setobject + from pypy.objspace.std import basestringtype from pypy.objspace.std import bytesobject from pypy.objspace.std import bytearrayobject from pypy.objspace.std import typeobject @@ -81,6 +78,10 @@ self.pythontypes.append(setobject.W_SetObject.typedef) self.pythontypes.append(setobject.W_FrozensetObject.typedef) self.pythontypes.append(iterobject.W_AbstractSeqIterObject.typedef) + self.pythontypes.append(basestringtype.basestring_typedef) + self.pythontypes.append(bytesobject.W_BytesObject.typedef) + self.pythontypes.append(bytearrayobject.W_BytearrayObject.typedef) + self.pythontypes.append(unicodeobject.W_UnicodeObject.typedef) # the set of implementation types self.typeorder = { @@ -88,14 +89,11 @@ boolobject.W_BoolObject: [], intobject.W_IntObject: [], floatobject.W_FloatObject: [], - bytesobject.W_BytesObject: [], - bytearrayobject.W_BytearrayObject: [], typeobject.W_TypeObject: [], sliceobject.W_SliceObject: [], longobject.W_LongObject: [], noneobject.W_NoneObject: [], complexobject.W_ComplexObject: [], - unicodeobject.W_UnicodeObject: [], pypy.interpreter.pycode.PyCode: [], pypy.interpreter.special.Ellipsis: [], } diff --git a/pypy/objspace/std/strbufobject.py b/pypy/objspace/std/strbufobject.py --- a/pypy/objspace/std/strbufobject.py +++ b/pypy/objspace/std/strbufobject.py @@ -1,12 +1,8 @@ -from pypy.objspace.std.model import registerimplementation, W_Object -from pypy.objspace.std.register_all import register_all from pypy.objspace.std.bytesobject import W_AbstractBytesObject, W_BytesObject from rpython.rlib.rstring import StringBuilder from pypy.interpreter.buffer import Buffer class W_StringBufferObject(W_AbstractBytesObject): - from pypy.objspace.std.bytesobject import str_typedef as typedef - w_str = None def __init__(self, builder): @@ -34,7 +30,7 @@ def str_w(self, space): return self.force() -registerimplementation(W_StringBufferObject) +W_StringBufferObject.typedef = W_BytesObject.typedef # ____________________________________________________________ @@ -64,4 +60,3 @@ return w_self from pypy.objspace.std import bytesobject -register_all(vars(), bytesobject) diff --git a/pypy/objspace/std/unicodeobject.py b/pypy/objspace/std/unicodeobject.py --- a/pypy/objspace/std/unicodeobject.py +++ b/pypy/objspace/std/unicodeobject.py @@ -1,13 +1,13 @@ """The builtin unicode implementation""" from pypy.interpreter import unicodehelper +from pypy.interpreter.baseobjspace import W_Root from pypy.interpreter.error import OperationError, operationerrfmt from pypy.interpreter.gateway import interp2app, unwrap_spec, WrappedDefault from pypy.module.unicodedata import unicodedb from pypy.objspace.std import newformat from pypy.objspace.std.basestringtype import basestring_typedef from pypy.objspace.std.formatting import mod_format -from pypy.objspace.std.model import W_Object, registerimplementation from pypy.objspace.std.stdtypedef import StdTypeDef from pypy.objspace.std.stringmethods import StringMethods from rpython.rlib.objectmodel import compute_hash, compute_unique_id @@ -20,7 +20,7 @@ 'unicode_from_string', 'unicode_to_decimal_w'] -class W_UnicodeObject(W_Object, StringMethods): +class W_UnicodeObject(W_Root, StringMethods): _immutable_fields_ = ['_value'] def __init__(w_self, unistr): @@ -404,7 +404,7 @@ # ____________________________________________________________ -unicode_typedef = W_UnicodeObject.typedef = StdTypeDef( +W_UnicodeObject.typedef = StdTypeDef( "unicode", basestring_typedef, __new__ = interp2app(descr_new_), __doc__ = '''unicode(string [, encoding[, errors]]) -> object @@ -483,8 +483,6 @@ interp2app(W_UnicodeObject.descr_formatter_field_name_split), ) -unitypedef = unicode_typedef - def _create_list_from_unicode(value): # need this helper function to allow the jit to look inside and inline @@ -494,8 +492,6 @@ W_UnicodeObject.EMPTY = W_UnicodeObject(u'') -registerimplementation(W_UnicodeObject) - # Helper for converting int/long def unicode_to_decimal_w(space, w_unistr): if not isinstance(w_unistr, W_UnicodeObject): _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit