def METHOD_NAME(self, write_cursor: DBCursor, filepath: Path, **kwargs: Any) -> None:
    """
    Information for the values that the columns can have has been obtained from sample CSVs
    May raise:
    - InputError if one of the rows is malformed
    """
    with open(filepath, encoding='utf-8-sig') as csvfile:
        data = csv.DictReader(csvfile)
        for row in data:
            try:
                self._consume_shapeshift_trade(write_cursor, row, **kwargs)
            except UnknownAsset as e:
                self.db.msg_aggregator.add_warning(
                    f'During ShapeShift CSV import found action with unknown '
                    f'asset {e.identifier}. Ignoring entry',
                )
                continue
            except DeserializationError as e:
                self.db.msg_aggregator.add_warning(
                    f'Deserialization error during ShapeShift CSV import. '
                    f'{e!s}. Ignoring entry',
                )
                continue
            except KeyError as e:
                raise InputError(f'Could not find key {e!s} in csv row {row!s}') from e