MCPcopy Create free account
hub / github.com/pytorch/executorch / from_bytes

Method from_bytes

exir/_serialize/_program.py:195–230  ·  view source on GitHub ↗

Tries to read an extended header from the provided data. Does not validate that the header is well-formed. Callers should use is_valid(). Args: data: The data to read from. Returns: The contents of the extended header. Raises:

(data: bytes)

Source from the content-addressed store, hash-verified

193
194 @staticmethod
195 def from_bytes(data: bytes) -> "_ExtendedHeader":
196 """Tries to read an extended header from the provided data.
197
198 Does not validate that the header is well-formed. Callers should
199 use is_valid().
200
201 Args:
202 data: The data to read from.
203 Returns:
204 The contents of the extended header.
205 Raises:
206 ValueError: If not enough data is provided.
207 """
208 if len(data) < _ExtendedHeader.EXPECTED_LENGTH:
209 raise ValueError(
210 f"Not enough data for extended header: {len(data)} "
211 + f"< {_ExtendedHeader.EXPECTED_LENGTH}"
212 )
213
214 magic = data[0:4]
215 length = int.from_bytes(data[4:8], byteorder=_HEADER_BYTEORDER)
216 program_size = int.from_bytes(data[8:16], byteorder=_HEADER_BYTEORDER)
217 segment_base_offset = int.from_bytes(data[16:24], byteorder=_HEADER_BYTEORDER)
218 segment_data_size = (
219 int.from_bytes(data[24:32], byteorder=_HEADER_BYTEORDER)
220 if length > _ExtendedHeader.MINIMUM_LENGTH
221 else 0
222 )
223
224 return _ExtendedHeader(
225 magic=magic,
226 length=length,
227 program_size=program_size,
228 segment_base_offset=segment_base_offset,
229 segment_data_size=segment_data_size,
230 )
231
232 def is_valid(self) -> bool:
233 """Returns true if the extended header appears to be well-formed."""

Calls 1

_ExtendedHeaderClass · 0.85