@@ -152,11 +152,12 @@ def _init_table(cls, sub_cls):
152
152
for each_cls in sub_cls .__mro__ [::- 1 ]:
153
153
for k , v in getattr (each_cls , '__namespace__' ,
154
154
each_cls .__dict__ ).items ():
155
- if callable (v ) and getattr (v , '__declared_attr__' , False ):
156
- if k == '__tablename__' :
157
- table_name = v (sub_cls )
158
- continue
155
+ declared_callable_attr = callable (v ) and \
156
+ getattr (v , '__declared_attr__' , False )
157
+ if k != '__tablename__' and declared_callable_attr :
159
158
v = updates [k ] = v (sub_cls )
159
+ elif k == '__tablename__' :
160
+ table_name = v (sub_cls ) if declared_callable_attr else v
160
161
if isinstance (v , sa .Column ):
161
162
v = v .copy ()
162
163
if not v .name :
@@ -166,9 +167,6 @@ def _init_table(cls, sub_cls):
166
167
updates [k ] = sub_cls .__attr_factory__ (k , v )
167
168
elif isinstance (v , (sa .Index , sa .Constraint )):
168
169
inspected_args .append (v )
169
- if getattr (sub_cls , '__tablename__' , None ) and \
170
- not callable (getattr (sub_cls , '__tablename__' )):
171
- table_name = getattr (sub_cls , '__tablename__' )
172
170
if table_name is None :
173
171
return
174
172
sub_cls ._column_name_map = column_name_map
0 commit comments