diff options
author | Martijn Pieters <mj@zopatista.com> | 2023-04-17 19:24:57 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2023-04-18 11:38:13 -0400 |
commit | ceec98e1d4d24389b10b3a26a693e94ddb70d65e (patch) | |
tree | d22583b2a19440d67230d2f6ac1c028f74115621 /test/ext/mypy/plain_files/sql_operations.py | |
parent | 0112b3e2dc15f115f4b560bfc761e00fe1d4de24 (diff) | |
download | sqlalchemy-ceec98e1d4d24389b10b3a26a693e94ddb70d65e.tar.gz |
Define type hints for remaining column operators
Added typing information for recently added operators
:meth:`.ColumnOperators.icontains`, :meth:`.ColumnOperators.istartswith`,
:meth:`.ColumnOperators.iendswith`, and bitwise operators
:meth:`.ColumnOperators.bitwise_and`, :meth:`.ColumnOperators.bitwise_or`,
:meth:`.ColumnOperators.bitwise_xor`, :meth:`.ColumnOperators.bitwise_not`,
:meth:`.ColumnOperators.bitwise_lshift`
:meth:`.ColumnOperators.bitwise_rshift`. Pull request courtesy Martijn
Pieters.
Fixes: #9650
Closes: #9652
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/9652
Pull-request-sha: 005c56848af8cff6bb19f71541873027f141eb6e
Change-Id: I2fa06eb42ce668df9d9c760d233906f87484dd12
Diffstat (limited to 'test/ext/mypy/plain_files/sql_operations.py')
-rw-r--r-- | test/ext/mypy/plain_files/sql_operations.py | 65 |
1 files changed, 48 insertions, 17 deletions
diff --git a/test/ext/mypy/plain_files/sql_operations.py b/test/ext/mypy/plain_files/sql_operations.py index d658f3d50..95993f628 100644 --- a/test/ext/mypy/plain_files/sql_operations.py +++ b/test/ext/mypy/plain_files/sql_operations.py @@ -67,23 +67,54 @@ stmt = select(column("q")).where(lambda: column("g") > 5).where(c2 == 5) expr9 = c1.bool_op("@@")(func.to_tsquery("some & query")) -# add tests for #9148 -and_(c1.is_(q)) -and_(c1.is_not(q)) -and_(c1.isnot(q)) -and_(c1.not_in(["x"])) -and_(c1.notin_(["x"])) -and_(c1.not_like("x")) -and_(c1.notlike("x")) -and_(c1.not_ilike("x")) -and_(c1.notilike("x")) - -# issue #9451 -s1 = c1.cast(Integer) -s2 = c1.cast(Float) -s3 = c1.op("foobar")("operand").cast(DateTime) -s4 = cast(c1, Float) -s5 = cast(c1.op("foobar")("operand"), DateTime) + +def test_issue_9418() -> None: + and_(c1.is_(q)) + and_(c1.is_not(q)) + and_(c1.isnot(q)) + and_(c1.not_in(["x"])) + and_(c1.notin_(["x"])) + and_(c1.not_like("x")) + and_(c1.notlike("x")) + and_(c1.not_ilike("x")) + and_(c1.notilike("x")) + + +def test_issue_9451() -> None: + # issue #9451 + c1.cast(Integer) + c1.cast(Float) + c1.op("foobar")("operand").cast(DateTime) + cast(c1, Float) + cast(c1.op("foobar")("operand"), DateTime) + + +def test_issue_9650_char() -> None: + and_(c1.contains("x")) + and_(c1.startswith("x")) + and_(c1.endswith("x")) + and_(c1.icontains("x")) + and_(c1.istartswith("x")) + and_(c1.iendswith("x")) + + +def test_issue_9650_bitwise() -> None: + # EXPECTED_TYPE: BinaryExpression[Any] + reveal_type(c2.bitwise_and(5)) + # EXPECTED_TYPE: BinaryExpression[Any] + reveal_type(c2.bitwise_or(5)) + # EXPECTED_TYPE: BinaryExpression[Any] + reveal_type(c2.bitwise_xor(5)) + # EXPECTED_TYPE: UnaryExpression[int] + reveal_type(c2.bitwise_not()) + # EXPECTED_TYPE: BinaryExpression[Any] + reveal_type(c2.bitwise_lshift(5)) + # EXPECTED_TYPE: BinaryExpression[Any] + reveal_type(c2.bitwise_rshift(5)) + # EXPECTED_TYPE: ColumnElement[Any] + reveal_type(c2 << 5) + # EXPECTED_TYPE: ColumnElement[Any] + reveal_type(c2 >> 5) if typing.TYPE_CHECKING: |