def _tzsp_guess_next_tag(payload):
    """
    :return: class representing the next tag, Raw on error, None on missing payload  # noqa: E501
    """

    if not payload:
        warning('missing payload')
        return None

    tag_type = orb(payload[0])

    try:
        tag_class_definition = _TZSP_TAG_CLASSES[tag_type]

    except KeyError:

        return _tzsp_handle_unknown_tag(payload, tag_type)

    if type(tag_class_definition) is not dict:
        return tag_class_definition

    try:
        length = orb(payload[1])
    except IndexError:
        length = None

    if not length:
        warning('no tag length given - packet to short')
        return Raw

    try:
        return tag_class_definition[length]
    except KeyError:
        warning('invalid tag length {} for tag type {}'.format(length, tag_type))  # noqa: E501
        return Raw
def _tzsp_guess_next_tag ( payload ) : if not payload : warning ( 'missing payload' ) return None tag_type = orb ( payload [ 0 ] ) try : tag_class_definition = _TZSP_TAG_CLASSES [ tag_type ] except KeyError : return _tzsp_handle_unknown_tag ( payload , tag_type ) if type ( tag_class_definition ) is not dict : return tag_class_definition try : length = orb ( payload [ 1 ] ) except IndexError : length = None if not length : warning ( 'no tag length given - packet to short' ) return Raw try : return tag_class_definition [ length ] except KeyError : warning ( 'invalid tag length {} for tag type {}' . format ( length , tag_type ) ) return Raw
:return: class representing the next tag, Raw on error, None on missing payload  # noqa: E501