'Construct a new :class:`.Bundle`.
e.g.::
bn = Bundle("mybundle", MyClass.x, MyClass.y)
for row in session.query(bn).filter(bn.c.x == 5).filter(bn.c.y == 4):
print(row.mybundle.x, row.mybundle.y)
:param name: name of the bundle.
:param \*exprs: columns or SQL expressions comprising the bundle.
:param single_entity=False: if True, rows for this :class:`.Bundle`
can be returned as a "single entity" outside of any enclosing tuple
in the same manner as a mapped entity.'

def __init__(self, name, *exprs, **kw):

    self.name = self._label = name
    self.exprs = exprs
    self.c = self.columns = ColumnCollection()
    self.columns.update(((getattr(col, 'key', col._label), col) for col in exprs))
    self.single_entity = kw.pop('single_entity', self.single_entity)
