Coverage for src\genesis\parsers\merge_fill.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-26 14:20 +0800

1from __future__ import annotations 

2 

3from typing import Any 

4 

5 

6def forward_fill( 

7 matrix: list[list[Any]], 

8 merged_ranges: list[tuple[int, int, int, int]], 

9) -> list[list[Any]]: 

10 """合并单元格:用左上角主格值填充范围内全部单元格。""" 

11 out = [list(row) for row in matrix] 

12 for (min_row, min_col, max_row, max_col) in merged_ranges: 

13 # 防御:合并范围 1-based,非法(<1)或越界时跳过该范围 

14 if not out or min_row < 1 or min_col < 1: 

15 continue 

16 if min_row > len(out) or min_col > len(out[min_row - 1]): 

17 continue 

18 main_value = out[min_row - 1][min_col - 1] 

19 for r in range(min_row, min(max_row, len(out)) + 1): 

20 row = out[r - 1] 

21 for c in range(min_col, min(max_col, len(row)) + 1): 

22 row[c - 1] = main_value 

23 return out