[pypy-commit] pypy flowoperators: Fix FlowObjSpace.import_from()

rlamy noreply at buildbot.pypy.org
Sat Jul 6 02:47:28 CEST 2013


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: flowoperators
Changeset: r65228:fd3bd5cf5c91
Date: 2013-07-06 01:16 +0200
http://bitbucket.org/pypy/pypy/changeset/fd3bd5cf5c91/

Log:	Fix FlowObjSpace.import_from()

diff --git a/rpython/flowspace/objspace.py b/rpython/flowspace/objspace.py
--- a/rpython/flowspace/objspace.py
+++ b/rpython/flowspace/objspace.py
@@ -19,7 +19,7 @@
 from rpython.flowspace.pygraph import PyGraph
 from rpython.flowspace.specialcase import SPECIAL_CASES
 from rpython.rlib.unroll import unrolling_iterable, _unroller
-from rpython.rlib import rstackovf, rarithmetic
+from rpython.rlib import rstackovf
 from rpython.rlib.rarithmetic import is_valid_int
 
 
@@ -323,10 +323,10 @@
         assert isinstance(w_name, Constant)
         # handle sys
         if w_module in self.not_really_const:
-            const_w = self.not_really_const[w_obj]
+            const_w = self.not_really_const[w_module]
             if w_name not in const_w:
                 return self.frame.do_operation_with_implicit_exceptions('getattr',
-                                                                w_obj, w_name)
+                                                                w_module, w_name)
         try:
             return self.wrap(getattr(w_module.value, w_name.value))
         except AttributeError:
diff --git a/rpython/flowspace/test/test_objspace.py b/rpython/flowspace/test/test_objspace.py
--- a/rpython/flowspace/test/test_objspace.py
+++ b/rpython/flowspace/test/test_objspace.py
@@ -1,6 +1,6 @@
 from __future__ import with_statement
 import new
-import py, sys
+import py
 from contextlib import contextmanager
 
 from rpython.flowspace.model import Constant, mkentrymap, c_last_exception
@@ -1177,6 +1177,20 @@
         graph = self.codetest(f)
         assert 'setitem' in self.all_operations(graph)
 
+    def test_sys_getattr(self):
+        def f():
+            import sys
+            return sys.modules
+        graph = self.codetest(f)
+        assert 'getattr' in self.all_operations(graph)
+
+    def test_sys_import_from(self):
+        def f():
+            from sys import modules
+            return modules
+        graph = self.codetest(f)
+        assert 'getattr' in self.all_operations(graph)
+
 DATA = {'x': 5,
         'y': 6}
 


More information about the pypy-commit mailing list