[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