[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