def _get_block_result(chars_a, chars_b):
    """Get the first block from two character lists and compare

    If character list ``a`` begins with a digit, the :any:`_pop_digit`
    function is called on both lists to get blocks of all consecutive
    digits at the start of each list. If the length of the block
    returned when popping digits for ``b`` is zero (``b`` started with a
    letter), ``a`` is newer. If ``b`` is of nonzero length, the blocks
    are compared using :any:`_compare_blocks`.

    If character list ``a`` begins with a letter, the
    :any:`_pop_letter` function is called on both lists to get blocks
    of all consecutive letters at the start of each list. If the length
    of the block returned when popping letters for ``b`` is zero (``b``
    started with a digit), ``b`` is newer. If ``b`` is of nonzero
    length, blocks ``a`` and ``b`` are compared using
    :any:`_compare_blocks`.

    :param list chars_a: a list of characters derived from a version
        string
    :param list chars_b: a list of characters derived from a version
        string
    :return: 1 (if ``a`` is newer), 0 (if versions are equal), or
        -1 (if ``b`` is newer)
    :rtype: int
    """
    logger.debug('_get_block_result(%s, %s)', chars_a, chars_b)
    first_is_digit = chars_a[0].isdigit()
    pop_func = _pop_digits if first_is_digit else _pop_letters
    return_if_no_b = a_newer if first_is_digit else b_newer
    block_a, block_b = pop_func(chars_a), pop_func(chars_b)
    if len(block_b) == 0:
        logger.debug('blocks are equal')
        return return_if_no_b
    return _compare_blocks(block_a, block_b)
def _get_block_result ( chars_a , chars_b ) : logger . debug ( '_get_block_result(%s, %s)' , chars_a , chars_b ) first_is_digit = chars_a [ 0 ] . isdigit ( ) pop_func = _pop_digits if first_is_digit else _pop_letters return_if_no_b = a_newer if first_is_digit else b_newer block_a , block_b = pop_func ( chars_a ) , pop_func ( chars_b ) if len ( block_b ) == 0 : logger . debug ( 'blocks are equal' ) return return_if_no_b return _compare_blocks ( block_a , block_b )
Get the first block from two character lists and compare

    If character list ``a`` begins with a digit, the :any:`_pop_digit`
    function is called on both lists to get blocks of all consecutive
    digits at the start of each list. If the length of the block
    returned when popping digits for ``b`` is zero (``b`` started with a
    letter), ``a`` is newer. If ``b`` is of nonzero length, the blocks
    are compared using :any:`_compare_blocks`.

    If character list ``a`` begins with a letter, the
    :any:`_pop_letter` function is called on both lists to get blocks
    of all consecutive letters at the start of each list. If the length
    of the block returned when popping letters for ``b`` is zero (``b``
    started with a digit), ``b`` is newer. If ``b`` is of nonzero
    length, blocks ``a`` and ``b`` are compared using
    :any:`_compare_blocks`.

    :param list chars_a: a list of characters derived from a version
        string
    :param list chars_b: a list of characters derived from a version
        string
    :return: 1 (if ``a`` is newer), 0 (if versions are equal), or
        -1 (if ``b`` is newer)
    :rtype: int