'Generator, yields dicts for nodes found as described in the options.
Args:
filename: Filename to read.
bulkload_state: Passed bulkload_state.
Yields:
Neutral dict, one per row in the CSV file.'

def generate_import_record(self, filename, bulkload_state):

    self.bulkload_state = bulkload_state
    input_stream = open(filename)
    input_stream = utf8_recoder(input_stream, self.csv_encoding)
    self.dict_generator = csv.DictReader(input_stream, self.column_list, **self.import_options)
    discard_line = (self.skip_import_header_row and (not self.from_header))
    line_number = 0
    for input_dict in self.dict_generator:
        line_number = (line_number + 1)
        if discard_line:
            discard_line = False
            continue
        decoded_dict = {}
        for (key, value) in input_dict.iteritems():
            if (key == None):
                raise bulkloader_errors.InvalidImportData(('Got    more    values    in    row    than    headers    on    line    %d.' % line_number))
            if (not self.column_list):
                key = unicode(key, 'utf-8')
            if value:
                value = unicode(value, 'utf-8')
            decoded_dict[key] = value
        (yield decoded_dict)
