<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def delete(table, session, conds):
 """Performs a hard delete on a row, which means the row is deleted from the Savage table as well as the archive table. :param table: the model class which inherits from :class:`~savage.models.user_table.SavageModelMixin` and specifies the model of the user table from which we are querying :param session: a sqlalchemy session with connections to the database :param conds: a list of dictionary of key value pairs where keys are columns in the table and values are values the column should take on. If specified, this query will only return rows where the columns meet all the conditions. The columns specified in this dictionary must be exactly the unique columns that versioning pivots around. """

    with session.begin_nested():
        archive_conds_list = _get_conditions_list(table, conds)
        session.execute(
            sa.delete(table.ArchiveTable, whereclause=_get_conditions(archive_conds_list))
        )
        conds_list = _get_conditions_list(table, conds, archive=False)
        session.execute(
            sa.delete(table, whereclause=_get_conditions(conds_list))
        )