[pypy-svn] rev 2086 - in pypy/trunk/src/pypy: interpreter module module/test

rocco at codespeak.net rocco at codespeak.net
Sun Oct 26 20:42:32 CET 2003


Author: rocco
Date: Sun Oct 26 20:42:31 2003
New Revision: 2086

Modified:
   pypy/trunk/src/pypy/interpreter/baseobjspace.py
   pypy/trunk/src/pypy/module/sysmodule.py
   pypy/trunk/src/pypy/module/test/test_sysmodule.py
Log:
Add builtin_module_names attribute to sys, and adjust module loading to populate it.

Modified: pypy/trunk/src/pypy/interpreter/baseobjspace.py
==============================================================================
--- pypy/trunk/src/pypy/interpreter/baseobjspace.py	(original)
+++ pypy/trunk/src/pypy/interpreter/baseobjspace.py	Sun Oct 26 20:42:31 2003
@@ -53,14 +53,14 @@
         # an almost functional 'builtin' attribute on the space
         self.builtin._initcompiledbuiltins()
 
-        self.sys._setmodule(self.w_builtin)
+        self.sys._setbuiltinmodule(self.w_builtin)
 
     def make_sys(self):
         assert not hasattr(self, 'sys')
         from pypy.module import sysmodule
         self.sys = sysmodule.Sys(self)
         self.w_sys = self.wrap(self.sys)
-        self.sys._setmodule(self.w_sys)
+        self.sys._setbuiltinmodule(self.w_sys)
 
     # XXX get rid of this. 
     def get_builtin_module(self, name):

Modified: pypy/trunk/src/pypy/module/sysmodule.py
==============================================================================
--- pypy/trunk/src/pypy/module/sysmodule.py	(original)
+++ pypy/trunk/src/pypy/module/sysmodule.py	Sun Oct 26 20:42:31 2003
@@ -19,6 +19,7 @@
         appdir = os.path.join(pypydir, 'pypy', 'appspace')
         self.w_path = space.newlist([appdir] + [p for p in cpy_sys.path if p!= pypydir])
         self.w_modules = space.newdict([])
+        self.w_builtin_module_names = space.newlist([])
         ExtModule.__init__(self, space)
 
     stdout = cpy_sys.stdout
@@ -30,6 +31,15 @@
         w_name = self.space.getattr(w_module, self.space.wrap('__name__'))
         self.space.setitem(self.w_modules, w_name, w_module)
 
+    def _setbuiltinmodule(self, w_module):
+        """ put a module into modules list and builtin_module_names """
+        w_name = self.space.getattr(w_module, self.space.wrap('__name__'))
+        append = self.space.getattr(self.w_builtin_module_names,
+                               self.space.wrap('append'))
+        self.space.call(append, self.space.newtuple((w_name,)),
+                        self.space.newdict([]))
+        self.space.setitem(self.w_modules, w_name, w_module)
+        
     def displayhook(self, w_x):
         space = self.space
         w = space.wrap

Modified: pypy/trunk/src/pypy/module/test/test_sysmodule.py
==============================================================================
--- pypy/trunk/src/pypy/module/test/test_sysmodule.py	(original)
+++ pypy/trunk/src/pypy/module/test/test_sysmodule.py	Sun Oct 26 20:42:31 2003
@@ -25,6 +25,33 @@
     def test_name_exists(self):
         import sys
         self.failUnless(hasattr(sys, '__name__'), "sys.__name__ gone missing")
+    def test_builtin_module_names_exists(self):
+        import sys
+        self.failUnless(hasattr(sys, 'builtin_module_names'),
+                        "sys.builtin_module_names gone missing")        
+    def test_sys_in_modules(self):
+        import sys
+        modules = sys.modules
+        self.failUnless('sys' in modules, "An entry for sys "
+                                        "is not in sys.modules.")
+        sys2 = sys.modules['sys']
+        self.failUnless(sys is sys2, "import sys is not sys.modules[sys].") 
+    def test_builtin_in_modules(self):
+        import sys
+        modules = sys.modules
+        self.failUnless('__builtin__' in modules, "An entry for __builtin__ "
+                                                    "is not in sys.modules.")
+        import __builtin__
+        builtin2 = sys.modules['__builtin__']
+        self.failUnless(__builtin__ is builtin2, "import __builtin__ "
+                                            "is not sys.modules[__builtin__].")
+    def test_builtin_module_names(self):
+        import sys
+        names = sys.builtin_module_names
+        self.failUnless('sys' in names,
+                        "sys is not listed as a builtin module.")
+        self.failUnless('__builtin__' in names,
+                        "__builtin__ is not listed as a builtin module.")
 
 if __name__ == '__main__':
     test.main()


More information about the Pypy-commit mailing list