def retry_to_w_long(space, parser, base=0): parser.rewind() try: return string_to_w_long(space, None, base=base, parser=parser) except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg))
def descr__new__(space, w_longtype, w_x=0, w_base=NoneNotWrapped): from pypy.objspace.std.longobject import W_LongObject w_value = w_x # 'x' is the keyword argument name in CPython if w_base is None: # check for easy cases if isinstance(w_value, W_LongObject): pass elif space.is_true(space.isinstance(w_value, space.w_str)): try: w_value = string_to_w_long(space, space.str_w(w_value)) except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg)) elif space.is_true(space.isinstance(w_value, space.w_unicode)): try: from unicodeobject import unicode_to_decimal_w w_value = string_to_w_long(space, unicode_to_decimal_w(space, w_value)) except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg))
def descr__new__(space, w_longtype, w_x=0, w_base=NoneNotWrapped): from pypy.objspace.std.longobject import W_LongObject w_value = w_x # 'x' is the keyword argument name in CPython if w_base is None: # check for easy cases if isinstance(w_value, W_LongObject): pass elif space.is_true(space.isinstance(w_value, space.w_str)): try: w_value = string_to_w_long(space, space.str_w(w_value)) except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg)) elif space.is_true(space.isinstance(w_value, space.w_unicode)): try: if space.config.objspace.std.withropeunicode: from pypy.objspace.std.ropeunicodeobject import unicode_to_decimal_w else: from pypy.objspace.std.unicodeobject import unicode_to_decimal_w w_value = string_to_w_long( space, unicode_to_decimal_w(space, w_value)) except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg))
space.wrap("value can't be converted to long")) else: base = space.int_w(w_base) if space.is_true(space.isinstance(w_value, space.w_unicode)): from pypy.objspace.std.unicodeobject import unicode_to_decimal_w s = unicode_to_decimal_w(space, w_value) else: try: s = space.str_w(w_value) except OperationError, e: raise OperationError(space.w_TypeError, space.wrap("long() can't convert non-string " "with explicit base")) try: w_value = string_to_w_long(space, s, base) except ParseStringError, e: raise OperationError(space.w_ValueError, space.wrap(e.msg)) w_obj = space.allocate_instance(W_LongObject, w_longtype) W_LongObject.__init__(w_obj, w_value.num) return w_obj # ____________________________________________________________ long_typedef = StdTypeDef("long", __doc__ = '''long(x[, base]) -> integer Convert a string or number to a long integer, if possible. A floating point argument will be truncated towards zero (this does not include a