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

Reply via email to