Nitpicky, but no-spaces-in-keyword arguments again, and also, except in special circumstances, lines should be limited to 79 characters.  See PEP 8.  We're not perfect elsewhere, so no need to fix this specifically, just a heads up.  You use vim, right?  Checkout `set colorcolumn=80`.  In this case, it should look like:
```
  def read_headers(
      self, import_map, row, required_headers=[], optional_headers=[]):
    ignored_columns = []
```

Note how the arguments are indented further than the following line.