diff --git a/pyproject.toml b/pyproject.toml index 74fa02c..15a5cf3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,3 +67,26 @@ init-hook='import sys; sys.path.append("src/")' testpaths = [ "tests", ] + + +[tool.coverage.run] +omit = [ + "*/tests/*", + "*/test_*.py", + "*/__init__.py" +] + +[tool.coverage.report] +exclude_lines = [ + "pragma: no cover", + "def __repr__", + "def __str__", + "raise AssertionError", + "raise NotImplementedError", + "if __name__ == .__main__.:" +] +exclude_also = [ + "def __.*__\\(", + "def __.*\\(", + "def _.*\\(", +] diff --git a/src/corelibs/json_handling/json_helper.py b/src/corelibs/json_handling/json_helper.py index 6a80d82..fe4670b 100644 --- a/src/corelibs/json_handling/json_helper.py +++ b/src/corelibs/json_handling/json_helper.py @@ -13,7 +13,7 @@ from jsonpath_ng import parse # pyright: ignore[reportMissingTypeStubs, reportU class DateTimeEncoder(JSONEncoder): """ Override the default method - cls=DateTimeEncoder + dumps(..., cls=DateTimeEncoder, ...) """ def default(self, o: Any) -> str | None: if isinstance(o, (date, datetime)): @@ -21,10 +21,10 @@ class DateTimeEncoder(JSONEncoder): return None -def default(obj: Any) -> str | None: +def default_isoformat(obj: Any) -> str | None: """ default override - default=default + dumps(..., default=default, ...) """ if isinstance(obj, (date, datetime)): return obj.isoformat() diff --git a/tests/unit/json_handling/test_json_helper.py b/tests/unit/json_handling/test_json_helper.py index 8df3276..4acb990 100644 --- a/tests/unit/json_handling/test_json_helper.py +++ b/tests/unit/json_handling/test_json_helper.py @@ -7,7 +7,7 @@ from datetime import datetime, date from typing import Any from corelibs.json_handling.json_helper import ( DateTimeEncoder, - default, + default_isoformat, json_dumps, modify_with_jsonpath ) @@ -132,30 +132,30 @@ class TestDefaultFunction: def test_default_datetime(self): """Test default function with datetime""" dt = datetime(2025, 10, 23, 15, 30, 45) - result = default(dt) + result = default_isoformat(dt) assert result == "2025-10-23T15:30:45" def test_default_date(self): """Test default function with date""" d = date(2025, 10, 23) - result = default(d) + result = default_isoformat(d) assert result == "2025-10-23" def test_default_with_microseconds(self): """Test default function with datetime including microseconds""" dt = datetime(2025, 10, 23, 15, 30, 45, 123456) - result = default(dt) + result = default_isoformat(dt) assert result == "2025-10-23T15:30:45.123456" def test_default_returns_none_for_other_types(self): """Test that default returns None for non-date/datetime objects""" - assert default("string") is None - assert default(42) is None - assert default(3.14) is None - assert default(True) is None - assert default(None) is None - assert default([1, 2, 3]) is None - assert default({"key": "value"}) is None + assert default_isoformat("string") is None + assert default_isoformat(42) is None + assert default_isoformat(3.14) is None + assert default_isoformat(True) is None + assert default_isoformat(None) is None + assert default_isoformat([1, 2, 3]) is None + assert default_isoformat({"key": "value"}) is None def test_default_as_json_default_parameter(self): """Test using default function as default parameter in json.dumps""" @@ -165,7 +165,7 @@ class TestDefaultFunction: "name": "test" } - result = json.dumps(data, default=default) + result = json.dumps(data, default=default_isoformat) decoded = json.loads(result) assert decoded["timestamp"] == "2025-10-23T15:30:45"