def extract_app(self, arch):
    '\n\t\tReturn an `App` object from this TAB. You must specify the desired\n\t\tMCU architecture so the correct binary can be retrieved.\n\t\t'
    binary_tarinfo = self.tab.getmember('{}.bin'.format(arch))
    binary = self.tab.extractfile(binary_tarinfo).read()
    tbfh = TBFHeader(binary)
    if tbfh.is_valid():
        name_or_params = tbfh.get_app_name()
        if isinstance(name_or_params, str):
            name = name_or_params
        else:
            start = name_or_params[0]
            end = (start + name_or_params[1])
            name = binary[start:end].decode('utf-8')
        if (tbfh.get_app_size() < len(binary)):
            raise TockLoaderException('Invalid TAB, the app binary is longer than its defined total_size')
        return App(tbfh, None, name, binary)
    else:
        raise TockLoaderException('Invalid TBF found in app in TAB')
Return an `App` object from this TAB. You must specify the desired
MCU architecture so the correct binary can be retrieved.
def extract_app(self, arch):
    '\n\t\tReturn an `App` object from this TAB. You must specify the desired\n\t\tMCU architecture so the correct binary can be retrieved.\n\t\t'
    binary_tarinfo = self.tab.getmember('{}.bin'.format(arch))
    binary = self.tab.extractfile(binary_tarinfo).read()
    tbfh = TBFHeader(binary)
    if tbfh.is_valid():
        name_or_params = tbfh.get_app_name()
        if isinstance(name_or_params, str):
            name = name_or_params
        else:
            start = name_or_params[0]
            end = (start + name_or_params[1])
            name = binary[start:end].decode('utf-8')
        if (tbfh.get_app_size() < len(binary)):
            raise TockLoaderException('Invalid TAB, the app binary is longer than its defined total_size')
        return App(tbfh, None, name, binary)
    else:
        raise TockLoaderException('Invalid TBF found in app in TAB')