diff options
author | mike bayer <mike_mp@zzzcomputing.com> | 2020-03-30 13:06:04 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2020-03-30 13:06:04 +0000 |
commit | 73f7f85d9da7ebe8811d180f113714bfd8283662 (patch) | |
tree | d47758d99e82d1f773670a3986251cab5961f023 /lib/sqlalchemy/sql/base.py | |
parent | 7b42cb5669578cec014ece650ce3d2c6051400f0 (diff) | |
parent | a65d5c250e9fd7090311ef12f28d7d959c6c738e (diff) | |
download | sqlalchemy-73f7f85d9da7ebe8811d180f113714bfd8283662.tar.gz |
Merge "Add a third labeling mode for SELECT statements"
Diffstat (limited to 'lib/sqlalchemy/sql/base.py')
-rw-r--r-- | lib/sqlalchemy/sql/base.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql/base.py b/lib/sqlalchemy/sql/base.py index 682ef891c..974ca6ddb 100644 --- a/lib/sqlalchemy/sql/base.py +++ b/lib/sqlalchemy/sql/base.py @@ -638,6 +638,27 @@ class Executable(Generative): return None +class prefix_anon_map(dict): + """A map that creates new keys for missing key access. + + Considers keys of the form "<ident> <name>" to produce + new symbols "<name>_<index>", where "index" is an incrementing integer + corresponding to <name>. + + Inlines the approach taken by :class:`sqlalchemy.util.PopulateDict` which + is otherwise usually used for this type of operation. + + """ + + def __missing__(self, key): + (ident, derived) = key.split(" ", 1) + anonymous_counter = self.get(derived, 1) + self[derived] = anonymous_counter + 1 + value = derived + "_" + str(anonymous_counter) + self[key] = value + return value + + class SchemaEventTarget(object): """Base class for elements that are the targets of :class:`.DDLEvents` events. |