'Return a :class:`.Tuple`.
Main usage is to produce a composite IN construct::
from sqlalchemy import tuple_
tuple_(table.c.col1, table.c.col2).in_(
[(1, 2), (5, 12), (10, 19)]
.. warning::
The composite IN construct is not supported by all backends,
and is currently known to work on Postgresql and MySQL,
but not SQLite.   Unsupported backends will raise
a subclass of :class:`~sqlalchemy.exc.DBAPIError` when such
an expression is invoked.'

def __init__(self, *clauses, **kw):

    clauses = [_literal_as_binds(c) for c in clauses]
    self._type_tuple = [arg.type for arg in clauses]
    self.type = kw.pop(u'type_', (self._type_tuple[0] if self._type_tuple else type_api.NULLTYPE))
    super(Tuple, self).__init__(*clauses, **kw)
