Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions src/recx/results.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,20 @@
logger = logging.getLogger(__name__)


def df2str(
df: pd.DataFrame,
max_rows: int | None = None,
) -> str:
args = []
args += ["display.min_rows", max_rows]
args += ["display.max_rows", max_rows]
args += ["display.max_columns", None]
args += ["display.width", 10000]

with pd.option_context(*args):
return df.__str__()


class CheckResult:
"""
Result of an individual column (or index) check.
Expand Down Expand Up @@ -42,7 +56,7 @@ def __init__(
column: str | None = None,
check_args: dict | None = None,
min_dots: int = 5,
disp_rows: int = 10,
disp_rows: int = 20,
):
self.failed_rows = failed_rows
self.column = column
Expand Down Expand Up @@ -138,7 +152,7 @@ def log_one_liner(self, width: int):

def failures_str(self) -> str:
# These are the rows we want to display to the user.
disp = str(self.failed_rows.tail(self.disp_rows))
disp = df2str(self.failed_rows, max_rows=self.disp_rows)
title = self.mini_signature()
subtitle = f"Showing up to {self.disp_rows} rows"

Expand Down
20 changes: 20 additions & 0 deletions tests/fixtures/frames.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,26 @@ def abs_tol_frames():
return baseline, candidate


# Larger frames designed for tolerance sorting tests
@pytest.fixture
def abs_tol_frames_large():
dates = pd.date_range(start="2024-01-01", periods=1000, freq="D")
values = list(range(1000))
baseline = pd.DataFrame(
{
"date": dates,
"B": values,
}
).set_index("date")
candidate = pd.DataFrame(
{
"date": dates,
"B": values[::-1],
}
).set_index("date")
return baseline, candidate


@pytest.fixture
def equal_nan_frames():
baseline = pd.DataFrame({"A": [1.0, None]})
Expand Down
14 changes: 14 additions & 0 deletions tests/integration/test_rec.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,17 @@ def test_check_missin_indices(multi_index_frames):

# Should pass because we are not checking for missing indices
assert result.passed()


def test_summary_runs_without_error(abs_tol_frames_large):
b, c = abs_tol_frames_large
rec = Rec(
columns={
"B": AbsTolCheck(tol=0.5, sort="desc"),
},
align_date_col="date",
)
result = rec.run(b, c)

assert not result.passed()
result.summary()
Loading