class documentation

Parser for flash headers

A flash file can contain up to three headers, though usually only one.

Class Raw No class docstring; 3/3 properties, 0/1 class variable, 1/1 method documented
Class Method get_extension Determines the header's file extension given a targeted model
Class Method get_type Gets the subclass corresponding to a type ID, type name, or file extension if one is registered
Class Method open Creates a new header from a file given a filename
Static Method next_header_length Helper function to determine the length of the next flash header in a bytestream
Method __init__ Creates an empty flash header with specified meta and data values
Method __len__ No summary
Method binary_flag Whether this flash header's data is in binary (0x00) or Intel (0x01) format
Method bytes No summary
Method calc_data The data stored in the flash header
Method data The data stored in the flash header as either raw binary or Intel blocks
Method date The date attached to the flash header as a 3-tuple
Method device_type The (first) device targeted by the flash header
Method devices The devices targeted by the flash header
Method export Exports this header to a TIFlashFile with a specified name
Method load_bytes Loads a byte string or bytestream into this header
Method load_from_file Loads this header from a file given a file pointer and offset
Method magic The file magic for the flash header
Method name The name or basecode attached to the flash header
Method object_type The object type of the flash header
Method product_id The product ID for the header
Method revision The revision of the flash header
Method save Saves this header to the current directory given a filename and targeted model
Method summary No summary
Method type_id The (first) type ID of the flash header
Class Variable extensions The file extension used for this header per-model
Instance Variable raw Undocumented
Property calc_data_size The length of the data stored in the flash header, measured in chars
Property checksum The checksum for the flash header
Property name_length The length of the name or basecode attached to the flash header
Method __init_subclass__ Undocumented
Class Variable _type_ids Undocumented
Instance Variable _has_checksum Undocumented

Inherited from TIComponent:

Class Method get Converts bytes -> TIComponent
Class Method register Registers a subtype with this class for coercion
Class Method set Converts TIComponent -> bytes
Method __bool__ No summary
Method __bytes__ No summary
Method __copy__ No summary
Method __eq__ Determines if two components are the same type and have the same bytes
Method __format__ Undocumented
Method __str__ No summary
Method clear Clears this component's data
Method coerce Coerces this component to a subclass if possible using the component's type ID
Method dict No summary
Method json No summary
Method load_dict Loads this component from a JSON dictionary representation
Method load_json Loads this component from a JSON dictionary representation
Method load_string Loads this component from a string representation
Method string No summary
Method update Updates this component's metadata
Property is_empty Whether this component's data is empty
Class Variable _type_id Undocumented

Inherited from Dock (via TIComponent):

Method load Loads data into an instance by delegating to Loader methods based on the input's type
Class Variable loaders Undocumented
def get_extension(cls, model: TIModel = TI_84PCE) -> str: (source)

Determines the header's file extension given a targeted model

Parameters
model:TIModelA model to target (defaults to TI_84PCE)
Returns
strThe header's file extension for that model
def get_type(cls, *, type_id: int = None, name: str = None, extension: str = None) -> type[Self] | None: (source)

Gets the subclass corresponding to a type ID, type name, or file extension if one is registered

Parameters
type_id:intThe type ID to search by, or
name:strThe type name to search by, or
extension:strThe file extension to search by
Returns
type[Self] | NoneA subclass of this component with corresponding type ID or extension, or None
def open(cls, filename: str) -> Self: (source)

Creates a new header from a file given a filename

Parameters
filename:strA filename to open
Returns
SelfThe (first) header stored in the file
def next_header_length(stream: BinaryIO) -> int: (source)

Helper function to determine the length of the next flash header in a bytestream

Parameters
stream:BinaryIOA bytestream
Returns
intThe length of the next header in the bytestream
def __init__(self, init=None, *, magic: str = '**TIFL**', revision: str = '0.0', binary_format: bool = False, object_type: int = 136, date: tuple[int, int, int] = (0, 0, 0), name: str = 'UNNAMED', device_type: int | DeviceType = DeviceType.TI_83P, product_id: int = 0, data: bytes = b':00000001FF'): (source)

Creates an empty flash header with specified meta and data values

Parameters
initValues to initialize the header's data (defaults to None)
magic:strFile magic at the start of the header (defaults to **TIFL**)
revision:strThe header's revision number (defaults to 0.0)
binary_format:boolWhether the header's data is stored in binary format (defaults to False)
object_type:intThe header's object type (defaults to $88)
date:tuple[int, int, int]The header's stored date as a tuple (dd, mm, yyyy) (defaults to null)
name:strThe name of the headers (defaults to UNNAMED)
device_type:int | DeviceTypeThe device type of the header (defaults to $73, the 83+ series)
product_id:intThe targeted model's product ID (defaults to $00)
data:bytesThe header's data (defaults to empty)
def __len__(self) -> int: (source)
Returns
intThe total length of this header's bytes
@Section(1, Bits[:])
def binary_flag(self) -> int: (source)

Whether this flash header's data is in binary (0x00) or Intel (0x01) format

def bytes(self) -> bytes: (source)
Returns
bytesThe bytes contained in this header
def calc_data(self) -> bytearray: (source)

The data stored in the flash header

The data stored in the flash header as either raw binary or Intel blocks

If binary_flag == $01, the data is returned as list[TIFlashBlock]. Otherwise, the data is returned as bytes.

def date(self) -> tuple[int, int, int]: (source)

The date attached to the flash header as a 3-tuple

def device_type(self) -> DeviceType: (source)

The (first) device targeted by the flash header

The devices targeted by the flash header

Each device is a (device_type, type_id) tuple. The type_id should be constant throughout. Only licenses may be expected to have more than one device.

def export(self, *, name: str = None) -> TIFlashFile: (source)

Exports this header to a TIFlashFile with a specified name

Parameters
name:strThe name of the flash file (defaults to this header's name)
Returns
TIFlashFileA TIFlashFile containing this header
def load_bytes(self, data: bytes | BytesIO): (source)

Loads a byte string or bytestream into this header

Parameters
data:bytes | BytesIOThe bytes to load
def load_from_file(self, file: BinaryIO, *, offset: int = 0): (source)

Loads this header from a file given a file pointer and offset

Parameters
file:BinaryIOA binary file to read from
offset:intThe offset of the header to read
def magic(self) -> str: (source)

The file magic for the flash header

def name(self) -> str: (source)

The name or basecode attached to the flash header

@Section(1, Bits[:])
def object_type(self) -> int: (source)

The object type of the flash header

@Section(1, Bits[:])
def product_id(self) -> int: (source)

The product ID for the header

While used to identify the model the var was created on, it has no actual functional ramifications. Furthermore, it does not constitute a 1-to-1 mapping to distinct models.

def revision(self) -> int: (source)

The revision of the flash header

def save(self, filename: str = None, *, model: TIModel = TI_84PCE): (source)

Saves this header to the current directory given a filename and targeted model

Parameters
filename:strA filename to save to (defaults to the header's name and extension)
model:TIModelA model to target (defaults to TI_84PCE)
def summary(self) -> str: (source)
Returns
strA text summary of this component
@View(devices, Bits[:], class_attr=True)[1:2]
def type_id(self) -> int: (source)

The (first) type ID of the flash header

The file extension used for this header per-model

Undocumented

calc_data_size: int = (source)

The length of the data stored in the flash header, measured in chars

The checksum for the flash header

This is equal to the lower 2 bytes of the sum of all bytes in the header.

name_length: int = (source)

The length of the name or basecode attached to the flash header

def __init_subclass__(cls, /, register: bool = False, override: int = None, **kwargs): (source)

Undocumented

_type_ids: dict[int, type[Self]] = (source)

Undocumented

_has_checksum: bool = (source)

Undocumented