ver Mar6th
fixed bug in sheet_fuzzy option of compare_table
This commit is contained in:
@@ -12,6 +12,7 @@ import pandas as pd
|
|||||||
from openpyxl import Workbook
|
from openpyxl import Workbook
|
||||||
from openpyxl.cell.cell import Cell
|
from openpyxl.cell.cell import Cell
|
||||||
from openpyxl.worksheet.cell_range import MultiCellRange
|
from openpyxl.worksheet.cell_range import MultiCellRange
|
||||||
|
from openpyxl.utils import get_column_letter
|
||||||
from openpyxl.worksheet.datavalidation import DataValidation
|
from openpyxl.worksheet.datavalidation import DataValidation
|
||||||
from openpyxl.worksheet.worksheet import Worksheet
|
from openpyxl.worksheet.worksheet import Worksheet
|
||||||
|
|
||||||
@@ -208,8 +209,10 @@ def compare_table(result: str, expected: str = None, **options) -> float:
|
|||||||
for rl in r["rules"]:
|
for rl in r["rules"]:
|
||||||
for rng in MultiCellRange(rl["range"]):
|
for rng in MultiCellRange(rl["range"]):
|
||||||
for cdn in rng.cells:
|
for cdn in rng.cells:
|
||||||
value1: str = str(read_cell_value(*sheet1, cdn))
|
coordinate: str = "{:}{:d}".format(get_column_letter(cdn[1]), cdn[0])
|
||||||
value2: str = str(read_cell_value(*sheet2, cdn))
|
value1: str = str(read_cell_value(*sheet1, coordinate))
|
||||||
|
value2: str = str(read_cell_value(*sheet2, coordinate))
|
||||||
|
logger.debug("%s: %s vs %s", cdn, value1, value2)
|
||||||
|
|
||||||
for rplc in rl.get("normalization", []):
|
for rplc in rl.get("normalization", []):
|
||||||
value1 = value1.replace(rplc[0], rplc[1])
|
value1 = value1.replace(rplc[0], rplc[1])
|
||||||
@@ -230,11 +233,11 @@ def compare_table(result: str, expected: str = None, **options) -> float:
|
|||||||
|
|
||||||
if rl["type"]=="includes":
|
if rl["type"]=="includes":
|
||||||
metric: bool = value1 in value2
|
metric: bool = value1 in value2
|
||||||
if rl["type"]=="includes_by":
|
elif rl["type"]=="includes_by":
|
||||||
metric: bool = value2 in value1
|
metric: bool = value2 in value1
|
||||||
if rl["type"]=="fuzzy_match":
|
elif rl["type"]=="fuzzy_match":
|
||||||
metric: bool = fuzz.ratio(value1, value2) >= rl.get("threshold", 85.)
|
metric: bool = fuzz.ratio(value1, value2) >= rl.get("threshold", 85.)
|
||||||
if rl["type"]=="exact_match":
|
elif rl["type"]=="exact_match":
|
||||||
metric: bool = value1==value2
|
metric: bool = value1==value2
|
||||||
total_metric = total_metric and metric
|
total_metric = total_metric and metric
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user