(start, config_lines, initial_indent)
return False, idx
Sometimes object are not expected to document every parameter and contain all the description at the top.
    This is valid, therefore we should not recurse and analyze what's next after the whole object. Returns whether or
    not to recurse as long a pointer to the next same-level element (not sub-object)
Sometimes object are not expected to document every parameter and contain all the description at the top.
    This is valid, therefore we should not recurse and analyze what's next after the whole object. Returns whether or
    not to recurse as long a pointer to the next same-level element (not sub-object)
Sometimes object are not expected to document every parameter and contain all the description at the top . This is valid therefore we should not recurse and analyze what s next after the whole object . Returns whether or not to recurse as long a pointer to the next same - level element ( not sub - object )
def _should_recurse(start, config_lines, initial_indent):
    """Sometimes object are not expected to document every parameter and contain all the description at the top.
    This is valid, therefore we should not recurse and analyze what's next after the whole object. Returns whether or
    not to recurse as long a pointer to the next same-level element (not sub-object)
    """
    idx = start + 1
    end = len(config_lines)

    # First get indent of the first member
    while idx < end:
        current_line = config_lines[idx]
        if is_blank(current_line) or current_line[initial_indent:].startswith('# '):
            idx += 1
            continue
        break
    else:
        # Reached EOF
        return False, idx

    current_line = config_lines[idx]
    first_member_indent = get_indent(current_line)

    if first_member_indent <= initial_indent:
        # We reached the end of object without any data
        return False, idx

    # Second check if there is description inside the object
    while idx < end:
        current_line = config_lines[idx]
        if is_blank(current_line):
            idx += 1
            continue
        if get_indent(current_line) <= initial_indent:
            # We reached end of object
            return False, idx
        if current_line.startswith(' ' * first_member_indent + "## @param"):
            # We found some description with the correct indentation. Let's recurse in that object
            return True, None
        idx += 1

    return False, idx
def _should_recurse ( start , config_lines , initial_indent ) : idx = start + 1 end = len ( config_lines ) # First get indent of the first member while idx < end : current_line = config_lines [ idx ] if is_blank ( current_line ) or current_line [ initial_indent : ] . startswith ( '# ' ) : idx += 1 continue break else : # Reached EOF return False , idx current_line = config_lines [ idx ] first_member_indent = get_indent ( current_line ) if first_member_indent <= initial_indent : # We reached the end of object without any data return False , idx # Second check if there is description inside the object while idx < end : current_line = config_lines [ idx ] if is_blank ( current_line ) : idx += 1 continue if get_indent ( current_line ) <= initial_indent : # We reached end of object return False , idx if current_line . startswith ( ' ' * first_member_indent + "## @param" ) : # We found some description with the correct indentation. Let's recurse in that object return True , None idx += 1 return False , idx