if local_table is not None:
self.local_table = coercions.expect(
- roles.StrictFromClauseRole, local_table
+ roles.StrictFromClauseRole,
+ local_table,
+ disable_inspection=True,
+ argname="local_table",
)
elif self.inherits:
# note this is a new flow as of 2.0 so that
apply_propagate_attrs: Optional[ClauseElement] = None,
argname: Optional[str] = None,
post_inspect: bool = False,
+ disable_inspection: bool = False,
**kw: Any,
) -> Any:
if (
break
if not is_clause_element:
- if impl._use_inspection:
+ if impl._use_inspection and not disable_inspection:
insp = inspection.inspect(element, raiseerr=False)
if insp is not None:
if post_inspect:
stmt = select(new_cls)
eq_(stmt.selected_columns.keys(), col_names_only)
+
+ @testing.variation(
+ "mapping_style",
+ [
+ "decl_base_fn",
+ "decl_base_base",
+ "decl_base_no_meta",
+ "map_declaratively",
+ "decorator",
+ "mapped_as_dataclass",
+ ],
+ )
+ def test_no_imperative_with_declarative_table(self, mapping_style):
+ if mapping_style.decl_base_fn:
+ Base = declarative_base()
+
+ class DecModel(Base):
+ __tablename__ = "foo"
+ id: Mapped[int] = mapped_column(primary_key=True)
+ data: Mapped[str]
+
+ elif mapping_style.decl_base_base:
+
+ class Base(DeclarativeBase):
+ pass
+
+ class DecModel(Base):
+ __tablename__ = "foo"
+ id: Mapped[int] = mapped_column(primary_key=True)
+ data: Mapped[str]
+
+ elif mapping_style.decl_base_no_meta:
+
+ class Base(DeclarativeBaseNoMeta):
+ pass
+
+ class DecModel(Base):
+ __tablename__ = "foo"
+ id: Mapped[int] = mapped_column(primary_key=True)
+ data: Mapped[str]
+
+ elif mapping_style.decorator:
+ r = registry()
+
+ @r.mapped
+ class DecModel:
+ __tablename__ = "foo"
+ id: Mapped[int] = mapped_column(primary_key=True)
+ data: Mapped[str]
+
+ elif mapping_style.map_declaratively:
+
+ class DecModel:
+ __tablename__ = "foo"
+ id: Mapped[int] = mapped_column(primary_key=True)
+ data: Mapped[str]
+
+ registry().map_declaratively(DecModel)
+ elif mapping_style.decorator:
+ r = registry()
+
+ @r.mapped
+ class DecModel:
+ __tablename__ = "foo"
+ id: Mapped[int] = mapped_column(primary_key=True)
+ data: Mapped[str]
+
+ elif mapping_style.mapped_as_dataclass:
+ r = registry()
+
+ @r.mapped_as_dataclass
+ class DecModel:
+ __tablename__ = "foo"
+ id: Mapped[int] = mapped_column(primary_key=True)
+ data: Mapped[str]
+
+ else:
+ assert False
+
+ class ImpModel:
+ id: int
+ data: str
+
+ with expect_raises_message(
+ exc.ArgumentError,
+ "FROM expression, such as a Table or alias.. object expected "
+ "for argument 'local_table'; got",
+ ):
+ registry().map_imperatively(ImpModel, DecModel)