diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2019-09-30 15:32:18 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2019-09-30 15:32:18 +0000 |
| commit | ff1124444e88260184ea807a7cbb16a1f6ee0ff4 (patch) | |
| tree | 30b9afc4875cead27be166669ca4a0de5bd3e908 /lib/sqlalchemy/sql/coercions.py | |
| parent | 9f3539b1745cbb287a1338812872d27cde4ebf24 (diff) | |
| parent | 6ddb62a8ba66b19afd41b967911ce5982250856e (diff) | |
| download | sqlalchemy-ff1124444e88260184ea807a7cbb16a1f6ee0ff4.tar.gz | |
Merge "Simplify _ColumnEntity, related"
Diffstat (limited to 'lib/sqlalchemy/sql/coercions.py')
| -rw-r--r-- | lib/sqlalchemy/sql/coercions.py | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/sqlalchemy/sql/coercions.py b/lib/sqlalchemy/sql/coercions.py index a7a856bba..95aee0468 100644 --- a/lib/sqlalchemy/sql/coercions.py +++ b/lib/sqlalchemy/sql/coercions.py @@ -57,7 +57,7 @@ def expect(role, element, **kw): else: resolved = element - if issubclass(resolved.__class__, impl._role_class): + if impl._role_class in resolved.__class__.__mro__: if impl._post_coercion: resolved = impl._post_coercion(resolved, **kw) return resolved @@ -102,13 +102,16 @@ class RoleImpl(object): def _resolve_for_clause_element(self, element, argname=None, **kw): original_element = element - is_clause_element = False + is_clause_element = hasattr(element, "__clause_element__") - while hasattr(element, "__clause_element__") and not isinstance( - element, (elements.ClauseElement, schema.SchemaItem) - ): - element = element.__clause_element__() - is_clause_element = True + if is_clause_element: + while not isinstance( + element, (elements.ClauseElement, schema.SchemaItem) + ): + try: + element = element.__clause_element__() + except AttributeError: + break if not is_clause_element: if self._use_inspection: |
