Author: Alex Gaynor <[email protected]>
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
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit