[pypy-svn] r77027 - in pypy/branch/fast-forward/pypy/module/sys: . test

afa at codespeak.net afa at codespeak.net
Sun Sep 12 22:04:34 CEST 2010


Author: afa
Date: Sun Sep 12 22:04:32 2010
New Revision: 77027

Modified:
   pypy/branch/fast-forward/pypy/module/sys/__init__.py
   pypy/branch/fast-forward/pypy/module/sys/system.py
   pypy/branch/fast-forward/pypy/module/sys/test/test_sysmodule.py
Log:
implement sys.long_info


Modified: pypy/branch/fast-forward/pypy/module/sys/__init__.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/sys/__init__.py	(original)
+++ pypy/branch/fast-forward/pypy/module/sys/__init__.py	Sun Sep 12 22:04:32 2010
@@ -75,6 +75,7 @@
         'getfilesystemencoding' : 'interp_encoding.getfilesystemencoding',
 
         'float_info'            : 'system.get_float_info(space)',
+        'long_info'             : 'system.get_long_info(space)',
         }
 
     if sys.platform == 'win32':

Modified: pypy/branch/fast-forward/pypy/module/sys/system.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/sys/system.py	(original)
+++ pypy/branch/fast-forward/pypy/module/sys/system.py	Sun Sep 12 22:04:32 2010
@@ -1,6 +1,7 @@
 """Information about the current system."""
 from pypy.interpreter import gateway
-from pypy.rlib import rfloat
+from pypy.rlib import rfloat, rbigint
+from pypy.rpython.lltypesystem import rffi
 
 
 app = gateway.applevel("""
@@ -20,6 +21,11 @@
     epsilon = structseqfield(8)
     radix = structseqfield(9)
     rounds = structseqfield(10)
+
+class long_info:
+    __metaclass__ = structseqtype
+    bits_per_digit = structseqfield(0)
+    sizeof_digit = structseqfield(1)
 """)
 
 
@@ -39,3 +45,14 @@
     ]
     w_float_info = app.wget(space, "float_info")
     return space.call_function(w_float_info, space.newtuple(info_w))
+
+def get_long_info(space):
+    assert rbigint.SHIFT == 31
+    bits_per_digit = rbigint.SHIFT
+    sizeof_digit = rffi.sizeof(rffi.ULONG)
+    info_w = [
+        space.wrap(bits_per_digit),
+        space.wrap(sizeof_digit),
+    ]
+    w_long_info = app.wget(space, "long_info")
+    return space.call_function(w_long_info, space.newtuple(info_w))

Modified: pypy/branch/fast-forward/pypy/module/sys/test/test_sysmodule.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/sys/test/test_sysmodule.py	(original)
+++ pypy/branch/fast-forward/pypy/module/sys/test/test_sysmodule.py	Sun Sep 12 22:04:32 2010
@@ -129,6 +129,11 @@
         assert isinstance(fi.radix, int)
         assert isinstance(fi.rounds, int)
 
+    def test_long_info(self):
+        import sys
+        li = sys.long_info
+        assert isinstance(li.bits_per_digit, int)
+        assert isinstance(li.sizeof_digit, int)
 
 class AppTestSysModulePortedFromCPython:
 



More information about the Pypy-commit mailing list