[pypy-svn] pypy interplevel-exception-classes: signal.ItimerError at interp_level

amauryfa commits-noreply at bitbucket.org
Fri Feb 18 14:24:37 CET 2011


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: interplevel-exception-classes
Changeset: r42170:1426ed71866b
Date: 2011-02-18 14:22 +0100
http://bitbucket.org/pypy/pypy/changeset/1426ed71866b/

Log:	signal.ItimerError at interp_level

diff --git a/pypy/module/signal/__init__.py b/pypy/module/signal/__init__.py
--- a/pypy/module/signal/__init__.py
+++ b/pypy/module/signal/__init__.py
@@ -12,6 +12,7 @@
         'SIG_DFL':             'space.wrap(interp_signal.SIG_DFL)',
         'SIG_IGN':             'space.wrap(interp_signal.SIG_IGN)',
         'default_int_handler': 'interp_signal.default_int_handler',
+        'ItimerError':         'interp_signal.get_itimer_error(space)',
     }
 
     if os.name == 'posix':
@@ -26,7 +27,6 @@
             interpleveldefs[name] = 'space.wrap(interp_signal.%s)' % (name,)
 
     appleveldefs = {
-        'ItimerError': 'app_signal.ItimerError',
     }
 
     def buildloaders(cls):

diff --git a/pypy/module/signal/app_signal.py b/pypy/module/signal/app_signal.py
deleted file mode 100644
--- a/pypy/module/signal/app_signal.py
+++ /dev/null
@@ -1,2 +0,0 @@
-class ItimerError(IOError):
-    pass

diff --git a/pypy/module/signal/interp_signal.py b/pypy/module/signal/interp_signal.py
--- a/pypy/module/signal/interp_signal.py
+++ b/pypy/module/signal/interp_signal.py
@@ -313,9 +313,13 @@
     w_interval = space.wrap(double_from_timeval(val.c_it_interval))
     return space.newtuple([w_value, w_interval])
 
+class Cache:
+    def __init__(self, space):
+        self.w_itimererror = space.new_exception_class("signal.ItimerError",
+                                                       space.w_IOError)
+
 def get_itimer_error(space):
-    mod = space.getbuiltinmodule("signal")
-    return space.getattr(mod, space.wrap("ItimerError"))
+    return space.fromcache(Cache).w_itimererror
 
 @jit.dont_look_inside
 @unwrap_spec(which=int, first=float, interval=float)


More information about the Pypy-commit mailing list