summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/sql/base.py')
-rw-r--r--lib/sqlalchemy/sql/base.py27
1 files changed, 6 insertions, 21 deletions
diff --git a/lib/sqlalchemy/sql/base.py b/lib/sqlalchemy/sql/base.py
index 4165751ca..b5a20830d 100644
--- a/lib/sqlalchemy/sql/base.py
+++ b/lib/sqlalchemy/sql/base.py
@@ -30,6 +30,12 @@ from .. import util
from ..util import HasMemoized
from ..util import hybridmethod
+try:
+ from sqlalchemy.cyextension.util import prefix_anon_map # noqa
+except ImportError:
+ from ._py_util import prefix_anon_map # noqa
+
+
coercions = None
elements = None
type_api = None
@@ -1012,27 +1018,6 @@ class Executable(roles.StatementRole, Generative):
return self._execution_options
-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:
"""Base class for elements that are the targets of :class:`.DDLEvents`
events.