when nodata header line is missing line:
self._loadHeaderLine(self._nextLine, self._key_nodata, type("a"), True)
returns None but you check self._nodata != "" that would always return True, so first line of data is skipped and this causes last row not being loaded (full of None), then "-m nn" fails to run with misleading error:
def _loadHeader(self):
# Mandatory header
self._set_ncols(self._loadHeaderLine(self._file.readline(), self._key_ncols, type(1)))
self._set_nrows(self._loadHeaderLine(self._file.readline(), self._key_nrows, type(1)))
self._xll = self._loadHeaderLine(self._file.readline(), self._key_xll, type(1.0))
self._yll = self._loadHeaderLine(self._file.readline(), self._key_yll, type(1.0))
self._set_size( self._loadHeaderLine(self._file.readline(), self._key_size, type(1.0)))
# Optional headers
self._nextLine = self._file.readline()
self._nodata = self._loadHeaderLine(self._nextLine, self._key_nodata, type("a"), True)
if self._nodata != "" :
self._nextLine = self._file.readline()