dropbox / sqlalchemy-stubs

Mypy plugin and stubs for SQLAlchemy
Apache License 2.0
570 stars 101 forks source link

sqlalchemy.dialects.postgresql.array([1, 2]) incorrectly rejected #188

Open andersk opened 3 years ago

andersk commented 3 years ago

This valid example from the SQLAlchemy documentation fails to type check:

from sqlalchemy.dialects.postgresql import array
from sqlalchemy.dialects import postgresql
from sqlalchemy import select, func

stmt = select([
                array([1,2]) + array([3,4,5])
            ])

print(stmt.compile(dialect=postgresql.dialect()))
$ python3 example.py
SELECT ARRAY[%(param_1)s, %(param_2)s] || ARRAY[%(param_3)s, %(param_4)s, %(param_5)s] AS anon_1

$ cat mypy.ini
[mypy]
plugins = sqlmypy

$ mypy example.py
example.py:6: error: No overload variant of "array" matches argument type "List[int]"
example.py:6: note: Possible overload variant:
example.py:6: note:     def array(self, clause: ColumnElement[Any], *clauses: ColumnElement[Any], **kw: Any) -> array
example.py:6: note:     <2 more non-matching overloads not shown>
Found 1 error in 1 file (checked 1 source file)

$ pip freeze
mypy==0.790
mypy-extensions==0.4.3
SQLAlchemy==1.3.20
sqlalchemy-stubs==0.3
typed-ast==1.4.1
typing-extensions==3.7.4.3