(self)
| 1173 | self._read_old_header(first_char) |
| 1174 | |
| 1175 | def _read_new_header(self) -> None: |
| 1176 | # The first part of the header is common to 117 - 119. |
| 1177 | self._path_or_buf.read(27) # stata_dta><header><release> |
| 1178 | self._format_version = int(self._path_or_buf.read(3)) |
| 1179 | if self._format_version not in [117, 118, 119]: |
| 1180 | raise ValueError(_version_error.format(version=self._format_version)) |
| 1181 | self._set_encoding() |
| 1182 | self._path_or_buf.read(21) # </release><byteorder> |
| 1183 | self._byteorder = ">" if self._path_or_buf.read(3) == b"MSF" else "<" |
| 1184 | self._path_or_buf.read(15) # </byteorder><K> |
| 1185 | self._nvar = ( |
| 1186 | self._read_uint16() if self._format_version <= 118 else self._read_uint32() |
| 1187 | ) |
| 1188 | self._path_or_buf.read(7) # </K><N> |
| 1189 | |
| 1190 | self._nobs = self._get_nobs() |
| 1191 | self._path_or_buf.read(11) # </N><label> |
| 1192 | self._data_label = self._get_data_label() |
| 1193 | self._path_or_buf.read(19) # </label><timestamp> |
| 1194 | self._time_stamp = self._get_time_stamp() |
| 1195 | self._path_or_buf.read(26) # </timestamp></header><map> |
| 1196 | self._path_or_buf.read(8) # 0x0000000000000000 |
| 1197 | self._path_or_buf.read(8) # position of <map> |
| 1198 | |
| 1199 | self._seek_vartypes = self._read_int64() + 16 |
| 1200 | self._seek_varnames = self._read_int64() + 10 |
| 1201 | self._seek_sortlist = self._read_int64() + 10 |
| 1202 | self._seek_formats = self._read_int64() + 9 |
| 1203 | self._seek_value_label_names = self._read_int64() + 19 |
| 1204 | |
| 1205 | # Requires version-specific treatment |
| 1206 | self._seek_variable_labels = self._get_seek_variable_labels() |
| 1207 | |
| 1208 | self._path_or_buf.read(8) # <characteristics> |
| 1209 | self._data_location = self._read_int64() + 6 |
| 1210 | self._seek_strls = self._read_int64() + 7 |
| 1211 | self._seek_value_labels = self._read_int64() + 14 |
| 1212 | |
| 1213 | self._typlist, self._dtyplist = self._get_dtypes(self._seek_vartypes) |
| 1214 | |
| 1215 | self._path_or_buf.seek(self._seek_varnames) |
| 1216 | self._varlist = self._get_varlist() |
| 1217 | |
| 1218 | self._path_or_buf.seek(self._seek_sortlist) |
| 1219 | self._srtlist = self._read_int16_count(self._nvar + 1)[:-1] |
| 1220 | |
| 1221 | self._path_or_buf.seek(self._seek_formats) |
| 1222 | self._fmtlist = self._get_fmtlist() |
| 1223 | |
| 1224 | self._path_or_buf.seek(self._seek_value_label_names) |
| 1225 | self._lbllist = self._get_lbllist() |
| 1226 | |
| 1227 | self._path_or_buf.seek(self._seek_variable_labels) |
| 1228 | self._variable_labels = self._get_variable_labels() |
| 1229 | |
| 1230 | # Get data type information, works for versions 117-119. |
| 1231 | def _get_dtypes( |
no test coverage detected