Author: Alex Gaynor <alex.gay...@gmail.com> Branch: Changeset: r45754:5a66b387f79e Date: 2011-07-19 20:27 -0700 http://bitbucket.org/pypy/pypy/changeset/5a66b387f79e/
Log: Fix formatting of numarray's str and repr to be fancy when translated. diff --git a/pypy/module/micronumpy/interp_numarray.py b/pypy/module/micronumpy/interp_numarray.py --- a/pypy/module/micronumpy/interp_numarray.py +++ b/pypy/module/micronumpy/interp_numarray.py @@ -2,7 +2,9 @@ from pypy.interpreter.error import OperationError, operationerrfmt from pypy.interpreter.gateway import interp2app, unwrap_spec from pypy.interpreter.typedef import TypeDef, GetSetProperty +from pypy.objspace.std.floatobject import float2string as float2string_orig from pypy.rlib import jit +from pypy.rlib.rfloat import DTSF_STR_PRECISION from pypy.rpython.lltypesystem import lltype from pypy.tool.sourcetools import func_with_new_name import math @@ -55,6 +57,9 @@ def minimum(v1, v2): return min(v1, v2) +def float2string(x): + return float2string_orig(x, 'g', DTSF_STR_PRECISION) + class BaseArray(Wrappable): def __init__(self): self.invalidates = [] @@ -441,14 +446,20 @@ def _getnums(self, comma): if self.find_size() > 1000: - nums = [str(self.getitem(index)) for index \ - in range(3)] + nums = [ + float2string(self.getitem(index)) + for index in range(3) + ] nums.append("..." + "," * comma) - nums.extend([str(self.getitem(index)) for index \ - in range(self.find_size() - 3, self.find_size())]) + nums.extend([ + float2string(self.getitem(index)) + for index in range(self.find_size() - 3, self.find_size()) + ]) else: - nums = [str(self.getitem(index)) for index \ - in range(self.find_size())] + nums = [ + float2string(self.getitem(index)) + for index in range(self.find_size()) + ] return nums def _repr(self, space): @@ -498,14 +509,20 @@ def _getnums(self, comma): if self.find_size() > 1000: - nums = [str(self.getitem(index)) for index \ - in range(3)] + nums = [ + float2string(self.getitem(index)) + for index in range(3) + ] nums.append("..." + "," * comma) - nums.extend([str(self.getitem(index)) for index \ - in range(self.find_size() - 3, self.find_size())]) + nums.extend([ + float2string(self.getitem(index)) + for index in range(self.find_size() - 3, self.find_size()) + ]) else: - nums = [str(self.getitem(index)) for index \ - in range(self.find_size())] + nums = [ + float2string(self.getitem(index)) + for index in range(self.find_size()) + ] return nums def _repr(self, space): diff --git a/pypy/objspace/std/floatobject.py b/pypy/objspace/std/floatobject.py --- a/pypy/objspace/std/floatobject.py +++ b/pypy/objspace/std/floatobject.py @@ -133,8 +133,7 @@ else: return space.wrap("0x%sp%s%d" % (s, sign, exp)) -def float2string(space, w_float, code, precision): - x = w_float.floatval +def float2string(x, code, precision): # we special-case explicitly inf and nan here if isfinite(x): s = formatd(x, code, precision, DTSF_ADD_DOT_0) @@ -145,13 +144,13 @@ s = "-inf" else: # isnan(x): s = "nan" - return space.wrap(s) + return s def repr__Float(space, w_float): - return float2string(space, w_float, 'r', 0) + return space.wrap(float2string(w_float.floatval, 'r', 0)) def str__Float(space, w_float): - return float2string(space, w_float, 'g', DTSF_STR_PRECISION) + return space.wrap(float2string(w_float.floatval, 'g', DTSF_STR_PRECISION)) def format__Float_ANY(space, w_float, w_spec): return newformat.run_formatter(space, w_spec, "format_float", w_float) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit