class documentation

Base class for all var entries

A var file is made of one or more entries, each of which contain the data of the familiar var types.

Even though most var files have just one entry, an entry does NOT constitute a complete var file. All var files require an attached header and other metadata.

Use TIEntry.export to create a new TIVarFile containing the entry, with an optional custom header. Use TIEntry.save to export and save the entry in a var file in the current directory.

Class Raw No class docstring; 3/3 properties, 0/1 class variable, 1/1 method documented
Class Method get_extension Determines the file extension for a targeted model based on its contents
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 entry from a file given a filename
Static Method next_entry_length Helper function to determine the length of the next entry in a bytestream
Method __init__ Creates an empty entry with specified meta and data values
Method __iter__ No summary
Method __len__ No summary
Method archive Archives this entry
Method archived Whether the entry is archived
Method bytes The bytes contained in this entry, without any var file header or metadata.
Method clear Clears this entry's data
Method dict No summary
Method export Exports this entry to a TIVarFile with a specified name and header
Method get_min_os Determines the minimum OS that supports this entry's data
Method get_version Determines the version byte corresponding to given data for this entry type
Method load_bytes Loads a byte string or bytestream into this entry
Method load_data_section Loads the data of this entry from a bytestream
Method load_dict Loads this component from a JSON dictionary representation
Method load_from_file Loads this entry from a file given a file pointer and offset
Method meta_length The length of the meta section of the entry
Method name The name of the entry
Method save Saves this entry as a var file in the current directory given a filename and optional header and targeted model
Method summary No summary
Method supported_by Determines whether a given model supports this entry
Method type_id The type ID of the entry
Method unarchive Unarchives this entry
Method version The version number of the entry
Class Variable base_meta_length Undocumented
Class Variable extension The base file extension used for this entry
Class Variable flash_meta_length Undocumented
Class Variable flash_only Whether this entry only supports flash chips
Class Variable leading_data_bytes Bytes that always begin this entry's data
Class Variable leading_name_byte Byte that always begins the name of this entry
Class Variable min_calc_data_length The minimum length of this entry's data
Class Variable versions The possible versions of this entry
Instance Variable raw Undocumented
Property calc_data_length The length of the data section of the entry
Property flash_bytes The flash bytes of this entry if they exist
Property for_flash Whether this entry supports flash chips
Property meta The meta section of this entry
Method __init_subclass__ Undocumented
Class Variable _type_ids 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 calc_data The data section of the component which is loaded on-calc
Method coerce Coerces this component to a subclass if possible using the component's type ID
Method data The component's user data
Method json No summary
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 file extension for a targeted model based on its contents

Parameters
model:TIModelThe model to target (defaults to TI_84PCE)
Returns
strThe file's extension
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 entry from a file given a filename

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

Helper function to determine the length of the next entry in a bytestream

Parameters
stream:BinaryIOA bytestream
Returns
intThe length of the next entry in the bytestream
def __init__(self, init=None, *, name: str = 'UNNAMED', version: int = None, archived: bool = None, data: bytes = None): (source)

Creates an empty entry with specified meta and data values

Parameters
initValues to initialize the entry's data (defaults to None)
name:strThe name of the entry (defaults to a valid default name)
version:intThe entry's version (defaults to None)
archived:boolWhether the entry is archived (defaults to entry's default state on-calc)
data:bytesThe entry's data (defaults to empty)
def __iter__(self) -> Iterator: (source)
Returns
IteratorIf this entry is a container or collection, an iterator over its elements
def __len__(self) -> int: (source)
Returns
intThe total length of this entry's bytes
def archive(self): (source)

Archives this entry

def archived(self, value) -> bool: (source)

Whether the entry is archived

Only flash files support this section, and is thus not present if meta_length < 13.

def bytes(self) -> bytes: (source)

The bytes contained in this entry, without any var file header or metadata.

These bytes do NOT constitute a complete var file. Use .export and .save to save a var file.

Returns
bytesThe bytes contained in this entry
def export(self, *, name: str = None, header: TIHeader = None, model: TIModel = TI_84PCE) -> TIVarFile: (source)

Exports this entry to a TIVarFile with a specified name and header

Parameters
name:strThe name of the var (defaults to this entry's name)
header:TIHeaderA TIHeader to attach (defaults to an empty header)
model:TIModelA TIModel to target (defaults to TI_84PCE)
Returns
TIVarFileA TIVarFile containing this entry and the specified header
def get_version(self) -> int: (source)

Determines the version byte corresponding to given data for this entry type

Entries which could contain non-backwards compatible data are assigned a version byte. If an entry's version exceeds the "version" of a calculator, transfer to the calculator will fail.

Returns
intThe version byte for this entry
def load_bytes(self, data: bytes | BytesIO): (source)

Loads a byte string or bytestream into this entry

Parameters
data:bytes | BytesIOThe bytes to load
def load_data_section(self, data: BytesIO): (source)

Loads the data of this entry from a bytestream

Parameters
data:BytesIOThe source bytes
def load_dict(self, dct: dict, **kwargs): (source)

Loads this component from a JSON dictionary representation

Parameters
dct:dictThe dict to load
**kwargsUndocumented
def load_from_file(self, file: BinaryIO, *, offset: int = 0): (source)

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

Parameters
file:BinaryIOA binary file to read from
offset:intThe offset of the entry to read
def meta_length(self, value) -> int: (source)

The length of the meta section of the entry

The possible meta lengths are 11 (without flash) or 13 (with flash).

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

Saves this entry as a var file in the current directory given a filename and optional header and targeted model

Parameters
filename:strA filename to save to (defaults to the var's name and extension)
header:TIHeaderA TIHeader to attach (defaults to an empty header)
model:TIModelA TIModel to target (defaults to TI_84PCE)
def supported_by(self, model: TIModel) -> bool: (source)

Determines whether a given model supports this entry

Parameters
model:TIModelThe model to check support for
Returns
boolWhether model supports this entry
@Section(1, Bits[:], class_attr=True)
def type_id(self) -> int: (source)

The type ID of the entry

The type determines how the contents of the data section of the entry are interpreted.

def unarchive(self): (source)

Unarchives this entry

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

The version number of the entry

The version is used to determine model compatibility where necessary. Only flash files support this section, and is thus not present if meta_length < 13.

base_meta_length: int = (source)

Undocumented

flash_meta_length: int = (source)

Undocumented

leading_data_bytes: bytes = (source)

Bytes that always begin this entry's data

min_calc_data_length: int = (source)

The minimum length of this entry's data

If an entry's data is fixed in size, this value is necessarily the length of the data

Undocumented

calc_data_length: int = (source)

The length of the data section of the entry

The flash bytes of this entry if they exist

Whether this entry supports flash chips

The meta section of this entry

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

Undocumented

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

Undocumented