diff --git a/src/analytics_query_analyzer/timebounds_analyzer.py b/src/analytics_query_analyzer/timebounds_analyzer.py index 10e188f..bed1e92 100644 --- a/src/analytics_query_analyzer/timebounds_analyzer.py +++ b/src/analytics_query_analyzer/timebounds_analyzer.py @@ -29,9 +29,7 @@ def __init__( self.current_date_provider = current_date_provider or date.today def analyze(self, expression: exp.Expression) -> list[TimeboundsRow]: - return _flatten_timebounds( - _stringify_results(self._analyze_internal(expression)) - ) + return _flatten_timebounds(self._analyze_internal(expression)) def _analyze_internal(self, expression: exp.Expression) -> TimeboundsResults: if isinstance(expression, exp.Union): @@ -631,20 +629,8 @@ def _normalize_iso_date(value: str) -> date | None: return None -def _stringify_results( - results: TimeboundsResults, -) -> dict[str, dict[str, str | None]]: - output: dict[str, dict[str, str | None]] = {} - for key, bounds in results.items(): - output[key] = { - "lower": bounds["lower"].isoformat() if bounds["lower"] else None, - "upper": bounds["upper"].isoformat() if bounds["upper"] else None, - } - return output - - def _flatten_timebounds( - results: dict[str, dict[str, str | None]], + results: TimeboundsResults, ) -> list[TimeboundsRow]: rows: list[TimeboundsRow] = [] for full_path, bounds in results.items(): diff --git a/src/analytics_query_analyzer/types.py b/src/analytics_query_analyzer/types.py index a59eff4..91e914e 100644 --- a/src/analytics_query_analyzer/types.py +++ b/src/analytics_query_analyzer/types.py @@ -1,3 +1,4 @@ +from datetime import date from typing import TypedDict @@ -9,5 +10,5 @@ class ReferenceRow(TypedDict): class TimeboundsRow(ReferenceRow): - lower: str | None - upper: str | None + lower: date | None + upper: date | None diff --git a/tests/test_analyze_with_timebounds_bigquery.py b/tests/test_analyze_with_timebounds_bigquery.py index acba3f5..0889ec9 100644 --- a/tests/test_analyze_with_timebounds_bigquery.py +++ b/tests/test_analyze_with_timebounds_bigquery.py @@ -1,3 +1,5 @@ +from datetime import date + import pytest from sqlglot import dialects @@ -45,7 +47,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -75,7 +77,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -106,7 +108,7 @@ "table": "orders", "column": "ordered_at", "lower": None, - "upper": "2026-01-01", + "upper": date(2026, 1, 1), }, { "database": "production", @@ -136,7 +138,7 @@ "table": "orders", "column": "ordered_at", "lower": None, - "upper": "2026-01-01", + "upper": date(2026, 1, 1), }, { "database": "production", @@ -165,8 +167,8 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", - "upper": "2026-01-01", + "lower": date(2026, 1, 1), + "upper": date(2026, 1, 1), }, { "database": "production", @@ -195,8 +197,8 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", - "upper": "2026-01-01", + "lower": date(2026, 1, 1), + "upper": date(2026, 1, 1), }, { "database": "production", @@ -226,8 +228,8 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", - "upper": "2026-01-02", + "lower": date(2026, 1, 1), + "upper": date(2026, 1, 2), }, { "database": "production", @@ -257,7 +259,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-02-01", + "lower": date(2026, 2, 1), "upper": None, }, { @@ -287,7 +289,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -317,7 +319,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -347,7 +349,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -378,7 +380,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -408,7 +410,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -438,7 +440,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -469,7 +471,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -500,7 +502,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -531,7 +533,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -562,7 +564,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -592,7 +594,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -623,7 +625,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -654,7 +656,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-06", + "lower": date(2026, 1, 6), "upper": None, }, { @@ -685,7 +687,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-02-28", + "lower": date(2026, 2, 28), "upper": None, }, { @@ -716,7 +718,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-02-01", + "lower": date(2026, 2, 1), "upper": None, }, { @@ -746,7 +748,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -777,7 +779,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -808,7 +810,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -838,7 +840,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -869,7 +871,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -900,7 +902,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -931,7 +933,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -962,7 +964,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -993,7 +995,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-02", + "lower": date(2026, 1, 2), "upper": None, }, { @@ -1024,7 +1026,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2025-12-01", + "lower": date(2025, 12, 1), "upper": None, }, { @@ -1115,7 +1117,7 @@ "table": "orders", "column": "ordered_at", "lower": None, - "upper": "2026-01-01", + "upper": date(2026, 1, 1), }, { "database": "production", @@ -1145,7 +1147,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-02", + "lower": date(2026, 1, 2), "upper": None, }, { @@ -1176,7 +1178,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1268,7 +1270,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1299,8 +1301,8 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", - "upper": "2026-01-02", + "lower": date(2026, 1, 1), + "upper": date(2026, 1, 2), }, { "database": "production", @@ -1330,7 +1332,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1370,7 +1372,7 @@ "schema": "shop", "table": "events", "column": "event_at", - "lower": "2026-01-02", + "lower": date(2026, 1, 2), "upper": None, }, { @@ -1402,7 +1404,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1425,7 +1427,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, } ], @@ -1440,8 +1442,8 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", - "upper": "2026-01-02", + "lower": date(2026, 1, 1), + "upper": date(2026, 1, 2), } ], }, @@ -1456,8 +1458,8 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", - "upper": "2026-01-02", + "lower": date(2026, 1, 1), + "upper": date(2026, 1, 2), } ], }, @@ -1471,7 +1473,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, } ], @@ -1487,7 +1489,7 @@ "table": "orders", "column": "ordered_at", "lower": None, - "upper": "2026-01-01", + "upper": date(2026, 1, 1), }, { "database": "production", @@ -1525,7 +1527,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1548,7 +1550,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, } ], @@ -1563,7 +1565,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, } ], @@ -1578,7 +1580,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, } ], @@ -1594,14 +1596,14 @@ "table": "events", "column": "event_at", "lower": None, - "upper": "2026-01-02", + "upper": date(2026, 1, 2), }, { "database": "production", "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, ], @@ -1645,7 +1647,7 @@ def test_current_date_provider(): "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1683,7 +1685,7 @@ def test_current_datetime_provider(): "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1721,7 +1723,7 @@ def test_current_timestamp_provider(): "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { diff --git a/tests/test_analyze_with_timebounds_redshift.py b/tests/test_analyze_with_timebounds_redshift.py index 144e38a..c5959c9 100644 --- a/tests/test_analyze_with_timebounds_redshift.py +++ b/tests/test_analyze_with_timebounds_redshift.py @@ -1,3 +1,5 @@ +from datetime import date + import pytest from sqlglot import dialects @@ -45,7 +47,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -75,7 +77,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -106,7 +108,7 @@ "table": "orders", "column": "ordered_at", "lower": None, - "upper": "2026-01-01", + "upper": date(2026, 1, 1), }, { "database": "production", @@ -136,7 +138,7 @@ "table": "orders", "column": "ordered_at", "lower": None, - "upper": "2026-01-01", + "upper": date(2026, 1, 1), }, { "database": "production", @@ -165,8 +167,8 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", - "upper": "2026-01-01", + "lower": date(2026, 1, 1), + "upper": date(2026, 1, 1), }, { "database": "production", @@ -195,8 +197,8 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", - "upper": "2026-01-01", + "lower": date(2026, 1, 1), + "upper": date(2026, 1, 1), }, { "database": "production", @@ -226,8 +228,8 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", - "upper": "2026-01-02", + "lower": date(2026, 1, 1), + "upper": date(2026, 1, 2), }, { "database": "production", @@ -257,7 +259,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-02-01", + "lower": date(2026, 2, 1), "upper": None, }, { @@ -288,7 +290,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -318,7 +320,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -348,7 +350,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -379,7 +381,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -410,7 +412,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -441,7 +443,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -472,7 +474,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -503,7 +505,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -534,7 +536,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -565,7 +567,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -595,7 +597,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -626,7 +628,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -657,7 +659,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -688,7 +690,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-06", + "lower": date(2026, 1, 6), "upper": None, }, { @@ -719,7 +721,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-06", + "lower": date(2026, 1, 6), "upper": None, }, { @@ -750,7 +752,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-02-28", + "lower": date(2026, 2, 28), "upper": None, }, { @@ -781,7 +783,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-02-01", + "lower": date(2026, 2, 1), "upper": None, }, { @@ -811,7 +813,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -842,7 +844,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -873,7 +875,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -903,7 +905,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -933,7 +935,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -964,7 +966,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -995,7 +997,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1026,7 +1028,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1057,7 +1059,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-02", + "lower": date(2026, 1, 2), "upper": None, }, { @@ -1088,7 +1090,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2025-12-01", + "lower": date(2025, 12, 1), "upper": None, }, { @@ -1179,7 +1181,7 @@ "table": "orders", "column": "ordered_at", "lower": None, - "upper": "2026-01-01", + "upper": date(2026, 1, 1), }, { "database": "production", @@ -1209,7 +1211,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-02", + "lower": date(2026, 1, 2), "upper": None, }, { @@ -1240,7 +1242,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1332,7 +1334,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1363,8 +1365,8 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", - "upper": "2026-01-02", + "lower": date(2026, 1, 1), + "upper": date(2026, 1, 2), }, { "database": "production", @@ -1394,7 +1396,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1434,7 +1436,7 @@ "schema": "shop", "table": "events", "column": "event_at", - "lower": "2026-01-02", + "lower": date(2026, 1, 2), "upper": None, }, { @@ -1466,7 +1468,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1489,7 +1491,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, } ], @@ -1504,8 +1506,8 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", - "upper": "2026-01-02", + "lower": date(2026, 1, 1), + "upper": date(2026, 1, 2), } ], }, @@ -1520,8 +1522,8 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", - "upper": "2026-01-02", + "lower": date(2026, 1, 1), + "upper": date(2026, 1, 2), } ], }, @@ -1535,7 +1537,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, } ], @@ -1551,7 +1553,7 @@ "table": "orders", "column": "ordered_at", "lower": None, - "upper": "2026-01-01", + "upper": date(2026, 1, 1), }, { "database": "production", @@ -1589,7 +1591,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1612,7 +1614,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, } ], @@ -1627,7 +1629,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, } ], @@ -1642,7 +1644,7 @@ "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, } ], @@ -1658,14 +1660,14 @@ "table": "events", "column": "event_at", "lower": None, - "upper": "2026-01-02", + "upper": date(2026, 1, 2), }, { "database": "production", "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, ], @@ -1709,7 +1711,7 @@ def test_current_date_provider(): "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1747,7 +1749,7 @@ def test_current_datetime_provider(): "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, { @@ -1785,7 +1787,7 @@ def test_current_timestamp_provider(): "schema": "shop", "table": "orders", "column": "ordered_at", - "lower": "2026-01-01", + "lower": date(2026, 1, 1), "upper": None, }, {