Skip to content

Commit 6a63885

Browse files
committed
Fix TypedDict defaults
1 parent 2148a1f commit 6a63885

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

singlestoredb/functions/signature.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,11 @@ def is_union(x: Any) -> bool:
4848
return typing.get_origin(x) in _UNION_TYPES
4949

5050

51-
NO_DEFAULT = object()
51+
class NoDefaultType:
52+
pass
53+
54+
55+
NO_DEFAULT = NoDefaultType()
5256

5357

5458
array_types: Tuple[Any, ...]
@@ -664,7 +668,7 @@ def get_typeddict_schema(
664668
"""
665669
if include_default:
666670
return [
667-
(k, v, getattr(obj, 'k', NO_DEFAULT))
671+
(k, v, getattr(obj, k, NO_DEFAULT))
668672
for k, v in get_annotations(obj).items()
669673
]
670674
return list(get_annotations(obj).items())
@@ -724,8 +728,7 @@ def get_namedtuple_schema(
724728
if include_default:
725729
return [
726730
(
727-
k,
728-
v,
731+
k, v,
729732
obj._field_defaults.get(k, NO_DEFAULT),
730733
)
731734
for k, v in get_annotations(obj).items()
@@ -754,37 +757,51 @@ def get_colspec(
754757
755758
"""
756759
overrides_colspec = []
760+
757761
if overrides:
762+
763+
# Dataclass
758764
if dataclasses.is_dataclass(overrides):
759765
overrides_colspec = get_dataclass_schema(
760766
overrides, include_default=include_default,
761767
)
768+
769+
# TypedDict
762770
elif is_typeddict(overrides):
763771
overrides_colspec = get_typeddict_schema(
764772
overrides, include_default=include_default,
765773
)
774+
775+
# Named tuple
766776
elif is_namedtuple(overrides):
767777
overrides_colspec = get_namedtuple_schema(
768778
overrides, include_default=include_default,
769779
)
780+
781+
# Pydantic model
770782
elif is_pydantic(overrides):
771783
overrides_colspec = get_pydantic_schema(
772784
overrides, include_default=include_default,
773785
)
786+
787+
# List of types
774788
elif isinstance(overrides, list):
775789
if include_default:
776790
overrides_colspec = [
777791
(getattr(x, 'name', ''), x, NO_DEFAULT) for x in overrides
778792
]
779793
else:
780794
overrides_colspec = [(getattr(x, 'name', ''), x) for x in overrides]
795+
796+
# Other
781797
else:
782798
if include_default:
783799
overrides_colspec = [
784800
(getattr(overrides, 'name', ''), overrides, NO_DEFAULT),
785801
]
786802
else:
787803
overrides_colspec = [(getattr(overrides, 'name', ''), overrides)]
804+
788805
return overrides_colspec
789806

790807

0 commit comments

Comments
 (0)