mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-07 01:10:52 -04:00
1e278de4cc
Applied on top of a pure run of black -l 79 in I7eda77fed3d8e73df84b3651fd6cfcfe858d4dc9, this set of changes resolves all remaining flake8 conditions for those codes we have enabled in setup.cfg. Included are resolutions for all remaining flake8 issues including shadowed builtins, long lines, import order, unused imports, duplicate imports, and docstring issues. Change-Id: I4f72d3ba1380dd601610ff80b8fb06a2aff8b0fe
111 lines
3.2 KiB
Python
111 lines
3.2 KiB
Python
from sqlalchemy import and_
|
|
from sqlalchemy import bindparam
|
|
from sqlalchemy import Column
|
|
from sqlalchemy import Integer
|
|
from sqlalchemy import MetaData
|
|
from sqlalchemy import or_
|
|
from sqlalchemy import String
|
|
from sqlalchemy import Table
|
|
from sqlalchemy.sql import operators
|
|
from sqlalchemy.sql import util as sql_util
|
|
from sqlalchemy.sql.elements import ClauseList
|
|
from sqlalchemy.sql.elements import ColumnElement
|
|
from sqlalchemy.testing import eq_
|
|
from sqlalchemy.testing import fixtures
|
|
from sqlalchemy.testing import is_false
|
|
from sqlalchemy.testing import is_true
|
|
|
|
|
|
class CompareClausesTest(fixtures.TestBase):
|
|
def setup(self):
|
|
m = MetaData()
|
|
self.a = Table("a", m, Column("x", Integer), Column("y", Integer))
|
|
|
|
self.b = Table("b", m, Column("y", Integer), Column("z", Integer))
|
|
|
|
def test_compare_clauselist_associative(self):
|
|
|
|
l1 = and_(self.a.c.x == self.b.c.y, self.a.c.y == self.b.c.z)
|
|
|
|
l2 = and_(self.a.c.y == self.b.c.z, self.a.c.x == self.b.c.y)
|
|
|
|
l3 = and_(self.a.c.x == self.b.c.z, self.a.c.y == self.b.c.y)
|
|
|
|
is_true(l1.compare(l1))
|
|
is_true(l1.compare(l2))
|
|
is_false(l1.compare(l3))
|
|
|
|
def test_compare_clauselist_not_associative(self):
|
|
|
|
l1 = ClauseList(
|
|
self.a.c.x, self.a.c.y, self.b.c.y, operator=operators.sub
|
|
)
|
|
|
|
l2 = ClauseList(
|
|
self.b.c.y, self.a.c.x, self.a.c.y, operator=operators.sub
|
|
)
|
|
|
|
is_true(l1.compare(l1))
|
|
is_false(l1.compare(l2))
|
|
|
|
def test_compare_clauselist_assoc_different_operator(self):
|
|
|
|
l1 = and_(self.a.c.x == self.b.c.y, self.a.c.y == self.b.c.z)
|
|
|
|
l2 = or_(self.a.c.y == self.b.c.z, self.a.c.x == self.b.c.y)
|
|
|
|
is_false(l1.compare(l2))
|
|
|
|
def test_compare_clauselist_not_assoc_different_operator(self):
|
|
|
|
l1 = ClauseList(
|
|
self.a.c.x, self.a.c.y, self.b.c.y, operator=operators.sub
|
|
)
|
|
|
|
l2 = ClauseList(
|
|
self.a.c.x, self.a.c.y, self.b.c.y, operator=operators.div
|
|
)
|
|
|
|
is_false(l1.compare(l2))
|
|
|
|
def test_compare_binds(self):
|
|
b1 = bindparam("foo", type_=Integer())
|
|
b2 = bindparam("foo", type_=Integer())
|
|
b3 = bindparam("bar", type_=Integer())
|
|
b4 = bindparam("foo", type_=String())
|
|
|
|
def c1():
|
|
return 5
|
|
|
|
def c2():
|
|
return 6
|
|
|
|
b5 = bindparam("foo", type_=Integer(), callable_=c1)
|
|
b6 = bindparam("foo", type_=Integer(), callable_=c2)
|
|
b7 = bindparam("foo", type_=Integer(), callable_=c1)
|
|
|
|
b8 = bindparam("foo", type_=Integer, value=5)
|
|
b9 = bindparam("foo", type_=Integer, value=6)
|
|
|
|
is_false(b1.compare(b5))
|
|
is_true(b5.compare(b7))
|
|
is_false(b5.compare(b6))
|
|
is_true(b1.compare(b2))
|
|
|
|
# currently not comparing "key", as we often have to compare
|
|
# anonymous names. however we should really check for that
|
|
is_true(b1.compare(b3))
|
|
|
|
is_false(b1.compare(b4))
|
|
is_false(b1.compare(b8))
|
|
is_false(b8.compare(b9))
|
|
is_true(b8.compare(b8))
|
|
|
|
|
|
class MiscTest(fixtures.TestBase):
|
|
def test_column_element_no_visit(self):
|
|
class MyElement(ColumnElement):
|
|
pass
|
|
|
|
eq_(sql_util.find_tables(MyElement(), check_columns=True), [])
|