@@ -68,6 +68,20 @@ class DateTimeProperty(Property):
6868 _type_string : ClassVar [str ] = "datetime"
6969 constructor_template : ClassVar [str ] = "datetime_property.pyi"
7070
71+ def transform (self ) -> str :
72+ return f"{ self .python_name ()} .isoformat()"
73+
74+
75+ @dataclass
76+ class DateProperty (Property ):
77+ """ A property of type datetime.date """
78+
79+ _type_string : ClassVar [str ] = "date"
80+ constructor_template : ClassVar [str ] = "date_property.pyi"
81+
82+ def transform (self ) -> str :
83+ return f"{ self .python_name ()} .isoformat()"
84+
7185
7286@dataclass
7387class FloatProperty (Property ):
@@ -232,12 +246,14 @@ def property_from_dict(name: str, required: bool, data: Dict[str, Any]) -> Prope
232246 if "$ref" in data :
233247 return RefProperty (name = name , required = required , reference = Reference .from_ref (data ["$ref" ]), default = None )
234248 if data ["type" ] == "string" :
235- if "format" not in data :
236- return StringProperty (
237- name = name , default = data .get ("default" ), required = required , pattern = data .get ("pattern" ),
238- )
239- elif data ["format" ] == "date-time" :
240- return DateTimeProperty (name = name , required = required , default = data .get ("default" ))
249+ if "format" in data :
250+ if data .get ("format" ) == "date-time" :
251+ return DateTimeProperty (name = name , required = required , default = data .get ("default" ))
252+ elif data .get ("format" ) == "date" :
253+ return DateProperty (name = name , required = required , default = data .get ("default" ))
254+ else :
255+ raise ValueError (f'Unsupported string format:{ data ["format" ]} ' )
256+ return StringProperty (name = name , default = data .get ("default" ), required = required , pattern = data .get ("pattern" ),)
241257 elif data ["type" ] == "number" :
242258 return FloatProperty (name = name , default = data .get ("default" ), required = required )
243259 elif data ["type" ] == "integer" :
0 commit comments