sqlalchemy / sqlalchemy2-stubs

PEP-484 typing stubs for SQLAlchemy 1.4
MIT License
159 stars 41 forks source link

Type error when attempting to use a Literal[True] with sa.and_() #240

Open gandhis1 opened 2 years ago

gandhis1 commented 2 years ago

Relevant block of code:

sa.and_(
    tb.c.VERSION == version,
    tb.c.ISIN.in_(isins) if isins is not None else True,
    tb.c.ISIN != None,  # pylint: disable=singleton-comparison
     b.c.DATE.in_(dates))
)

Error I get from pyright is:

error: Argument of type "ColumnElement[Boolean] | Literal[True]" cannot be assigned to parameter "clauses" of type "_CLE@BooleanClauseList" in function "and_"
    Type "ColumnElement[Boolean] | Literal[True]" cannot be assigned to type "ColumnElement[Boolean]"
      "Literal[True]" is incompatible with "ColumnElement[Boolean]" (reportGeneralTypeIssues)
CaselIT commented 2 years ago

Thanks for reporting,

You can use tb.c.ISIN.is_not(None) as an alternative.