[pypy-svn] r69853 - pypy/trunk/pypy/module/oracle

afa at codespeak.net afa at codespeak.net
Wed Dec 2 18:06:29 CET 2009


Author: afa
Date: Wed Dec  2 18:06:28 2009
New Revision: 69853

Modified:
   pypy/trunk/pypy/module/oracle/__init__.py
   pypy/trunk/pypy/module/oracle/interp_error.py
Log:
Don't import other library modules at compile-time, they may instanciate prebuilt constants
that the translator won't be able to render.


Modified: pypy/trunk/pypy/module/oracle/__init__.py
==============================================================================
--- pypy/trunk/pypy/module/oracle/__init__.py	(original)
+++ pypy/trunk/pypy/module/oracle/__init__.py	Wed Dec  2 18:06:28 2009
@@ -23,8 +23,6 @@
         'CLOB': 'interp_variable.VT_CLOB',
         'OBJECT': 'interp_variable.VT_Object',
         'Variable': 'interp_variable.W_Variable',
-        'Timestamp': 'interp_error.get(space).w_DateTimeType',
-        'Date': 'interp_error.get(space).w_DateType',
         'SessionPool': 'interp_pool.W_SessionPool',
     }
 
@@ -38,3 +36,17 @@
                    ProgrammingError Warning""".split():
         appleveldefs[name] = "app_oracle.%s" % (name,)
 
+    def startup(self, space):
+        from pypy.module.oracle.interp_error import get
+        state = get(space)
+        (state.w_DecimalType,
+         state.w_DateTimeType, state.w_DateType, state.w_TimedeltaType,
+         ) = space.fixedview(space.appexec([], """():
+             import decimal, datetime
+             return (decimal.Decimal,
+                     datetime.datetime, datetime.date, datetime.timedelta)
+        """))
+        space.setattr(space.wrap(self),
+                      space.wrap("Timestamp"), state.w_DateTimeType)
+        space.setattr(space.wrap(self),
+                      space.wrap("Date"), state.w_DateType)

Modified: pypy/trunk/pypy/module/oracle/interp_error.py
==============================================================================
--- pypy/trunk/pypy/module/oracle/interp_error.py	(original)
+++ pypy/trunk/pypy/module/oracle/interp_error.py	Wed Dec  2 18:06:28 2009
@@ -24,16 +24,6 @@
         self.w_Variable = get('Variable')
         self.w_Connection = get('Connection')
 
-        w_import = space.builtin.get('__import__')
-        w_decimal = space.call(w_import, space.newlist(
-            [space.wrap('decimal')]))
-        self.w_DecimalType = space.getattr(w_decimal, space.wrap("Decimal"))
-        w_datetime = space.call(w_import, space.newlist(
-            [space.wrap('datetime')]))
-        self.w_DateTimeType = space.getattr(w_datetime, space.wrap("datetime"))
-        self.w_DateType = space.getattr(w_datetime, space.wrap("date"))
-        self.w_TimedeltaType = space.getattr(w_datetime, space.wrap("timedelta"))
-
         from pypy.module.oracle.interp_variable import all_variable_types
         self.variableTypeByPythonType = {}
         for varType in all_variable_types:



More information about the Pypy-commit mailing list