summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/instrumentation.py1
-rw-r--r--lib/sqlalchemy/orm/mapper.py4
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/sqlalchemy/orm/instrumentation.py b/lib/sqlalchemy/orm/instrumentation.py
index c17f8ab8d..5a96c57cf 100644
--- a/lib/sqlalchemy/orm/instrumentation.py
+++ b/lib/sqlalchemy/orm/instrumentation.py
@@ -519,6 +519,7 @@ def __init__(%(apply_pos)s):
exec(func_text, env)
__init__ = env['__init__']
__init__.__doc__ = original__init__.__doc__
+ __init__._sa_original_init = original__init__
if func_defaults:
__init__.__defaults__ = func_defaults
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py
index 9ce848799..cd9e00b8b 100644
--- a/lib/sqlalchemy/orm/mapper.py
+++ b/lib/sqlalchemy/orm/mapper.py
@@ -1243,6 +1243,10 @@ class Mapper(InspectionAttr):
event.listen(manager, 'init', _event_on_init, raw=True)
for key, method in util.iterate_attributes(self.class_):
+ if key == '__init__' and hasattr(method, '_sa_original_init'):
+ method = method._sa_original_init
+ if isinstance(method, types.MethodType):
+ method = method.im_func
if isinstance(method, types.FunctionType):
if hasattr(method, '__sa_reconstructor__'):
self._reconstructor = method