human
Complete this python program:
def clone_table(name, parent, meta, newcols=None, ignorecols=None, swapcols=None, ignorecons=None):
assistant
#Here is the Python program you requested.

    """Helper function that clones parent table schema onto new table.
    :param name: new table name
    :param parent: parent table to copy schema from
    :param newcols: names of new columns to be added
    :param ignorecols: names of columns to be ignored while cloning
    :param swapcols: alternative column schema
    :param ignorecons: names of constraints to be ignored
    :return: sqlalchemy.Table instance
    """
    newcols = (newcols or [])
    ignorecols = (ignorecols or [])
    swapcols = (swapcols or {})
    ignorecons = (ignorecons or [])
    cols = [c.copy() for c in parent.columns if (c.name not in ignorecols) if (c.name not in swapcols)]
    cols.extend(swapcols.values())
    cols.extend(newcols)
    new_table = sqlalchemy.Table(name, meta, *cols)
    def _is_ignorable(cons):
        if hasattr(cons, 'columns'):
            for col in ignorecols:
                if (col in cons.columns):
                    return True
        return False
    constraints = [c.copy() for c in parent.constraints if (c.name not in ignorecons) if (not _is_ignorable(c))]
    for c in constraints:
        new_table.append_constraint(c)
    new_table.create()
    return new_table