From 00954e4ebfe252da7aaaeff50603bd97c94c7129 Mon Sep 17 00:00:00 2001 From: isra17 Date: Wed, 28 Aug 2019 14:28:08 -0400 Subject: [PATCH] Allow TextClause in Index __init__ --- sqlalchemy-stubs/sql/schema.pyi | 6 +++--- test/test-data/sqlalchemy-sql-schema.test | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/sqlalchemy-stubs/sql/schema.pyi b/sqlalchemy-stubs/sql/schema.pyi index af0b620..e5141db 100644 --- a/sqlalchemy-stubs/sql/schema.pyi +++ b/sqlalchemy-stubs/sql/schema.pyi @@ -4,7 +4,7 @@ from typing import ( ) from . import visitors, functions from .base import SchemaEventTarget as SchemaEventTarget, DialectKWArgs as DialectKWArgs, ColumnCollection -from .elements import ColumnClause as ColumnClause +from .elements import ColumnClause as ColumnClause, TextClause from .selectable import TableClause as TableClause from .type_api import TypeEngine from .. import util @@ -304,8 +304,8 @@ class Index(DialectKWArgs, ColumnCollectionMixin, SchemaItem): name: str = ... unique: bool = ... info: Optional[Mapping[str, Any]] = ... - def __init__(self, name: str, *expressions: Union[Column[Any], str], unique: bool = ..., quote: Optional[bool] = ..., - info: Optional[Mapping[str, Any]] = ..., **kw: Any) -> None: ... + def __init__(self, name: str, *expressions: Union[TextClause, Column[Any], str], unique: bool = ..., + quote: Optional[bool] = ..., info: Optional[Mapping[str, Any]] = ..., **kw: Any) -> None: ... @property def bind(self) -> Optional[Union[Engine, Connection]]: ... def create(self: _I, bind: Optional[Union[Engine, Connection]] = ...) -> _I: ... diff --git a/test/test-data/sqlalchemy-sql-schema.test b/test/test-data/sqlalchemy-sql-schema.test index dd3600d..0f6e466 100644 --- a/test/test-data/sqlalchemy-sql-schema.test +++ b/test/test-data/sqlalchemy-sql-schema.test @@ -60,3 +60,17 @@ class Mytable(Base): __tablename__ = 'mytable' objid = Column(ForeignKey('othertable.objid'), index=True) [out] + +[case testTableWithIndexes] +from sqlalchemy import Column, Table, String, Integer, Index, MetaData, text, func +metadata = MetaData() +name_col = Column('name', String) +test_table = Table('test', metadata, + Column('id', Integer, primary_key=True), + name_col, + Index('idx1', 'id', 'name'), + Index('idx1', 'id', name_col), + Index('idx1', 'id', func.lower(name_col)), + Index('idx1', 'id', text("lower(name)")), +) +[out]