Parses a row of strings to a ``Transaction`` object.

        Args:
            index: The index of this row in the original CSV file. Used for
            sorting ``Transaction``s by their order of appearance.

            row: The row containing strings for [transfer_date, posted_date,
            message, money_amount, money_total].

            source_encoding: The encoding that will be used to decode strings
            to UTF-8.

            date_format: The format of dates in this row.

            thousand_sep: The thousand separator in money amounts.

            decimal_sep: The decimal separator in money amounts.

        Returns:
            A ``Transaction`` object.

def csv_row_to_transaction(index, row, source_encoding="latin1",
            date_format="%d-%m-%Y", thousand_sep=".", decimal_sep=","):
        """
        Parses a row of strings to a ``Transaction`` object.

        Args:
            index: The index of this row in the original CSV file. Used for
            sorting ``Transaction``s by their order of appearance.

            row: The row containing strings for [transfer_date, posted_date,
            message, money_amount, money_total].

            source_encoding: The encoding that will be used to decode strings
            to UTF-8.

            date_format: The format of dates in this row.

            thousand_sep: The thousand separator in money amounts.

            decimal_sep: The decimal separator in money amounts.

        Returns:
            A ``Transaction`` object.

        """
        xfer, posted, message, amount, total = row
        xfer = Parse.date(xfer)
        posted = Parse.date(posted)
        message = Parse.to_utf8(message, source_encoding)
        amount = Parse.money(amount)
        total = Parse.money(total)
        return Transaction(index, xfer, posted, message, amount, total)