typing.NamedTuple.field_types removed in favor of __annotations__

Summary:
typing.NamedTuple was simplified in 3.10
These two fields were the same in 3.8,  so this should be a no-op

#buildmore

Reviewed By: bottler

Differential Revision: D45373526

fbshipit-source-id: 2b26156f5f65b7be335133e9e705730f7254260d
This commit is contained in:
Jason Fried 2023-05-08 13:53:16 -07:00 committed by Facebook GitHub Bot
parent 092400f1e7
commit 23cd19fbc7

View File

@ -204,7 +204,7 @@ def _dataclass_list_from_dict_list(dlist, typeannot):
# otherwise, we dispatch by the type of the provided annotation to convert to # otherwise, we dispatch by the type of the provided annotation to convert to
if issubclass(cls, tuple) and hasattr(cls, "_fields"): # namedtuple if issubclass(cls, tuple) and hasattr(cls, "_fields"): # namedtuple
# For namedtuple, call the function recursively on the lists of corresponding keys # For namedtuple, call the function recursively on the lists of corresponding keys
types = cls._field_types.values() types = cls.__annotations__.values()
dlist_T = zip(*dlist) dlist_T = zip(*dlist)
res_T = [ res_T = [
_dataclass_list_from_dict_list(key_list, tp) _dataclass_list_from_dict_list(key_list, tp)
@ -270,7 +270,7 @@ def _dataclass_from_dict(d, typeannot):
cls = get_origin(typeannot) or typeannot cls = get_origin(typeannot) or typeannot
if issubclass(cls, tuple) and hasattr(cls, "_fields"): # namedtuple if issubclass(cls, tuple) and hasattr(cls, "_fields"): # namedtuple
types = cls._field_types.values() types = cls.__annotations__.values()
return cls(*[_dataclass_from_dict(v, tp) for v, tp in zip(d, types)]) return cls(*[_dataclass_from_dict(v, tp) for v, tp in zip(d, types)])
elif issubclass(cls, (list, tuple)): elif issubclass(cls, (list, tuple)):
types = get_args(typeannot) types = get_args(typeannot)