def stitch_block_rows(block_list):
    '''
    Stitches blocks together into a single block rowwise. These blocks are 2D tables usually
    generated from tableproc. The final block will be of dimensions (sum(num_rows), max(num_cols)).
    '''
    stitched = list(itertools.chain(*block_list))
    max_length = max(len(row) for row in stitched)
    for row in stitched:
        if len(row) < max_length:
            row += [None] * (max_length - len(row))
    return stitched