diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-12-06 23:47:21 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-12-06 23:47:21 +0000 |
| commit | 943abbce79e558358d30a33f3b4bb9be07b8ca27 (patch) | |
| tree | 4c51270c2e6b113dbe470f9815695b2822e6f58c /lib/sqlalchemy/sql/visitors.py | |
| parent | ea9db10daff35d7cacc2a97b1f2226af7b12a070 (diff) | |
| download | sqlalchemy-943abbce79e558358d30a33f3b4bb9be07b8ca27.tar.gz | |
- removed creepy exec call for now
- removed unnecessary isinstance() from class_mapper()
- removed unnecessary and py3k incompatible "dictionary sort" from association table delete
Diffstat (limited to 'lib/sqlalchemy/sql/visitors.py')
| -rw-r--r-- | lib/sqlalchemy/sql/visitors.py | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/sqlalchemy/sql/visitors.py b/lib/sqlalchemy/sql/visitors.py index e6edce5e8..5d1d53cf8 100644 --- a/lib/sqlalchemy/sql/visitors.py +++ b/lib/sqlalchemy/sql/visitors.py @@ -20,6 +20,7 @@ http://techspot.zzzeek.org/?p=19 . from collections import deque import re from sqlalchemy import util +import operator __all__ = ['VisitableType', 'Visitable', 'ClauseVisitor', 'CloningVisitor', 'ReplacingCloningVisitor', 'iterate', @@ -43,15 +44,14 @@ class VisitableType(type): # for use by the compiler visit_name = cls.__dict__["__visit_name__"] if isinstance(visit_name, str): - func_text = "def _compiler_dispatch(self, visitor, **kw):\n"\ - " return visitor.visit_%s(self, **kw)" % visit_name + getter = operator.attrgetter("visit_%s" % visit_name) + def _compiler_dispatch(self, visitor, **kw): + return getter(visitor)(self, **kw) else: - func_text = "def _compiler_dispatch(self, visitor, **kw):\n"\ - " return getattr(visitor, 'visit_%s' % self.__visit_name__)(self, **kw)" + def _compiler_dispatch(self, visitor, **kw): + return getattr(visitor, 'visit_%s' % self.__visit_name__)(self, **kw) - env = locals().copy() - exec func_text in env - cls._compiler_dispatch = env['_compiler_dispatch'] + cls._compiler_dispatch = _compiler_dispatch super(VisitableType, cls).__init__(clsname, bases, dict) |
