Author: Amaury Forgeot d'Arc <[email protected]>
Branch: py3k
Changeset: r59377:3dd28126a751
Date: 2012-12-09 19:59 +0100
http://bitbucket.org/pypy/pypy/changeset/3dd28126a751/

Log:    Adapt %#o format (alternate form of %o) to python3: prefix is now
        always 0o.

diff --git a/pypy/objspace/std/formatting.py b/pypy/objspace/std/formatting.py
--- a/pypy/objspace/std/formatting.py
+++ b/pypy/objspace/std/formatting.py
@@ -87,15 +87,11 @@
     def fmt_o(self, w_value):
         "oct formatting"
         r = oct_num_helper(self.space, w_value)
-        keep_zero = False
         if self.f_alt:
-            if r == '0':
-                keep_zero = True
-            elif r.startswith('-'):
-                r = '-0' + r[1:]
-            else:
-                r = '0' + r
-        self.std_wp_int(r, keep_zero=keep_zero)
+            prefix = '0o'
+        else:
+            prefix = ''
+        self.std_wp_int(r, prefix, keep_zero=True)
 
     fmt_i = fmt_d
     fmt_u = fmt_d
diff --git a/pypy/objspace/std/test/test_stringformat.py 
b/pypy/objspace/std/test/test_stringformat.py
--- a/pypy/objspace/std/test/test_stringformat.py
+++ b/pypy/objspace/std/test/test_stringformat.py
@@ -108,24 +108,24 @@
         assert '1C' == '%X' % n
         assert '0X1C' == '%#X' % n
         assert '10' == '%o' % m
-        assert '010' == '%#o' % m
-        assert '-010' == '%#o' % -m
+        assert '0o10' == '%#o' % m
+        assert '-0o10' == '%#o' % -m
         assert '0' == '%o' % z
-        assert '0' == '%#o' % z
+        assert '0o0' == '%#o' % z
 
         n = 23
         f = 5
         assert '-0x017' == '%#06x' % -n
-        assert '' == '%.0o' % z
-        assert '0' == '%#.0o' % z
+        assert '0' == '%.0o' % z
+        assert '0o0' == '%#.0o' % z
         assert '5' == '%.0o' % f
-        assert '05' == '%#.0o' % f
+        assert '0o5' == '%#.0o' % f
         assert '000' == '%.3o' % z
-        assert '000' == '%#.3o' % z
+        assert '0o000' == '%#.3o' % z
         assert '005' == '%.3o' % f
-        assert '005' == '%#.3o' % f
+        assert '0o005' == '%#.3o' % f
         assert '27' == '%.2o' % n
-        assert '027' == '%#.2o' % n
+        assert '0o27' == '%#.2o' % n
 
     def test_format_list(self):
         l = [1,2]
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to