From ae867bf0cbdbb935742d8cb22e1b76136b77965c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20Ha=CC=88cker?= Date: Tue, 23 Mar 2021 11:46:18 -0400 Subject: [PATCH] Use compat.exec_() Fixed a bug where python 2.7.5 (default on CentOS 7) wasn't able to import sqlalchemy, because on this version of Python ``exec "statement"`` and ``exec("statement")`` do not behave the same way. The compatibility ``exec_()`` function was used instead. Fixes: #6069 Closes: #6112 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/6112 Pull-request-sha: 4e951f9278eb462d1432a92b7bad93b973e4e2a5 Change-Id: I34e00250e874368e83c3e992be80e989a3c4f054 --- doc/build/changelog/unreleased_14/6069.rst | 8 ++++++++ lib/sqlalchemy/sql/lambdas.py | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 doc/build/changelog/unreleased_14/6069.rst diff --git a/doc/build/changelog/unreleased_14/6069.rst b/doc/build/changelog/unreleased_14/6069.rst new file mode 100644 index 0000000000..6cebdf44a8 --- /dev/null +++ b/doc/build/changelog/unreleased_14/6069.rst @@ -0,0 +1,8 @@ +.. change:: + :tags: bug, orm + :tickets: 6069 + + Fixed a bug where python 2.7.5 (default on CentOS 7) wasn't able to import + sqlalchemy, because on this version of Python ``exec "statement"`` and + ``exec("statement")`` do not behave the same way. The compatibility + ``exec_()`` function was used instead. \ No newline at end of file diff --git a/lib/sqlalchemy/sql/lambdas.py b/lib/sqlalchemy/sql/lambdas.py index 2b77b8743f..ebf576c8f2 100644 --- a/lib/sqlalchemy/sql/lambdas.py +++ b/lib/sqlalchemy/sql/lambdas.py @@ -25,6 +25,7 @@ from .. import exc from .. import inspection from .. import util from ..util import collections_abc +from ..util import compat _closure_per_cache_key = util.LRUCache(1000) @@ -1064,7 +1065,7 @@ class AnalyzedFunction(object): code += " return %s\n" % ", ".join("i%d" % i for i in argrange) code += " return closure.__closure__" vars_ = {"o%d" % i: cell_values[i] for i in argrange} - exec(code, vars_, vars_) + compat.exec_(code, vars_, vars_) closure = vars_["make_cells"]() func = type(f)( -- 2.47.2