summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/util.py
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2019-09-30 15:32:18 +0000
committerGerrit Code Review <gerrit@bbpush.zzzcomputing.com>2019-09-30 15:32:18 +0000
commitff1124444e88260184ea807a7cbb16a1f6ee0ff4 (patch)
tree30b9afc4875cead27be166669ca4a0de5bd3e908 /lib/sqlalchemy/sql/util.py
parent9f3539b1745cbb287a1338812872d27cde4ebf24 (diff)
parent6ddb62a8ba66b19afd41b967911ce5982250856e (diff)
downloadsqlalchemy-ff1124444e88260184ea807a7cbb16a1f6ee0ff4.tar.gz
Merge "Simplify _ColumnEntity, related"
Diffstat (limited to 'lib/sqlalchemy/sql/util.py')
-rw-r--r--lib/sqlalchemy/sql/util.py16
1 files changed, 6 insertions, 10 deletions
diff --git a/lib/sqlalchemy/sql/util.py b/lib/sqlalchemy/sql/util.py
index fe83b163c..3c7f904de 100644
--- a/lib/sqlalchemy/sql/util.py
+++ b/lib/sqlalchemy/sql/util.py
@@ -364,23 +364,19 @@ def surface_selectables_only(clause):
stack.append(elem.table)
-def surface_column_elements(clause, include_scalar_selects=True):
- """traverse and yield only outer-exposed column elements, such as would
- be addressable in the WHERE clause of a SELECT if this element were
- in the columns clause."""
+def extract_first_column_annotation(column, annotation_name):
+ filter_ = (FromGrouping, SelectBase)
- filter_ = (FromGrouping,)
- if not include_scalar_selects:
- filter_ += (SelectBase,)
-
- stack = deque([clause])
+ stack = deque([column])
while stack:
elem = stack.popleft()
- yield elem
+ if annotation_name in elem._annotations:
+ return elem._annotations[annotation_name]
for sub in elem.get_children():
if isinstance(sub, filter_):
continue
stack.append(sub)
+ return None
def selectables_overlap(left, right):