Skip to content

Commit 997c3e7

Browse files
fix error handling in XSD types - finally overrides prior returns
1 parent c71fb0c commit 997c3e7

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

linkml_runtime/utils/metamodelcore.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -229,15 +229,16 @@ def __new__(cls, value: Union[str, datetime.time, datetime.datetime, Literal]) -
229229
raise ValueError(f"{value} is not a valid time")
230230
if isinstance(value, Literal):
231231
value = value.value
232+
232233
try:
233234
if not isinstance(value, datetime.time):
234235
value = datetime.time.fromisoformat(value)
235236
return datetime.time.fromisoformat(str(value)).isoformat()
236237
except (TypeError, ValueError):
237238
if is_strict():
238239
raise
239-
finally:
240-
return str(value)
240+
241+
return str(value)
241242

242243
@classmethod
243244
def is_valid(cls, value: Union[str, datetime.time, datetime.datetime, Literal]) -> bool:
@@ -260,15 +261,16 @@ def __new__(cls, value: Union[str, datetime.date, Literal]) -> str:
260261
raise ValueError(f"{value} is not a valid date")
261262
if isinstance(value, Literal):
262263
value = value.value
264+
263265
try:
264266
if not isinstance(value, datetime.date):
265267
value = datetime.date.fromisoformat(str(value))
266268
return value.isoformat()
267269
except (TypeError, ValueError):
268270
if is_strict():
269271
raise
270-
finally:
271-
return str(value)
272+
273+
return str(value)
272274

273275
@classmethod
274276
def is_valid(cls, value: Union[str, datetime.date, Literal]) -> bool:
@@ -293,15 +295,16 @@ def __new__(cls, value: Union[str, datetime.datetime, Literal]) -> str:
293295
raise ValueError(f"{value} is not a valid datetime")
294296
if isinstance(value, Literal):
295297
value = value.value
298+
296299
try:
297300
if not isinstance(value, datetime.datetime):
298301
value = datetime.datetime.fromisoformat(value) # Note that this handles non 'T' format as well
299302
return value.isoformat()
300303
except (TypeError, ValueError):
301304
if is_strict():
302305
raise
303-
finally:
304-
return str(value)
306+
307+
return str(value)
305308

306309
@classmethod
307310
def is_valid(cls, value: Union[str, datetime.datetime, Literal]) -> bool:

0 commit comments

Comments
 (0)