"""test the inspection registry system.""" from sqlalchemy import inspect from sqlalchemy import Table, Column, Integer, MetaData from sqlalchemy.testing import fixtures from sqlalchemy.testing import is_ class TestCoreInspection(fixtures.TestBase): def test_table(self): t = Table("t", MetaData(), Column("x", Integer)) is_(inspect(t), t) assert t.is_selectable is_(t.selectable, t) def test_select(self): t = Table("t", MetaData(), Column("x", Integer)) s = t.select() is_(inspect(s), s) assert s.is_selectable is_(s.selectable, s) def test_column_expr(self): c = Column("x", Integer) is_(inspect(c), c) assert not c.is_selectable assert not hasattr(c, "selectable") def test_no_clause_element_on_clauseelement(self): # re [ticket:3802], there are in the wild examples # of looping over __clause_element__, therefore the # absence of __clause_element__ as a test for "this is the clause # element" must be maintained x = Column("foo", Integer) assert not hasattr(x, "__clause_element__")