add string duration -> timedelta #35

Merged
fredsonnenwald merged 1 commits from add-duration into main 2025-08-19 02:05:08 +00:00
2 changed files with 15 additions and 2 deletions

View File

@@ -4,7 +4,7 @@ from jambo.types.type_parser_options import TypeParserOptions
from pydantic import EmailStr, HttpUrl, IPvAnyAddress from pydantic import EmailStr, HttpUrl, IPvAnyAddress
from typing_extensions import Unpack from typing_extensions import Unpack
from datetime import date, datetime, time from datetime import date, datetime, time, timedelta
class StringTypeParser(GenericTypeParser): class StringTypeParser(GenericTypeParser):
@@ -28,6 +28,7 @@ class StringTypeParser(GenericTypeParser):
"date": date, "date": date,
"time": time, "time": time,
"date-time": datetime, "date-time": datetime,
"duration": timedelta,
} }
format_pattern_mapping = { format_pattern_mapping = {

View File

@@ -2,7 +2,7 @@ from jambo.parser import StringTypeParser
from pydantic import EmailStr, HttpUrl, IPvAnyAddress from pydantic import EmailStr, HttpUrl, IPvAnyAddress
from datetime import date, datetime, time from datetime import date, datetime, time, timedelta
from unittest import TestCase from unittest import TestCase
@@ -197,3 +197,15 @@ class TestStringTypeParser(TestCase):
type_parsing, type_validator = parser.from_properties("placeholder", properties) type_parsing, type_validator = parser.from_properties("placeholder", properties)
self.assertEqual(type_parsing, datetime) self.assertEqual(type_parsing, datetime)
def test_string_parser_with_timedelta_format(self):
parser = StringTypeParser()
properties = {
"type": "string",
"format": "duration",
}
type_parsing, type_validator = parser.from_properties("placeholder", properties)
self.assertEqual(type_parsing, timedelta)