File tree Expand file tree Collapse file tree 2 files changed +19
-3
lines changed Expand file tree Collapse file tree 2 files changed +19
-3
lines changed Original file line number Diff line number Diff line change 26
26
get_dims ,
27
27
get_dtype ,
28
28
get_ftype ,
29
+ get_name ,
29
30
)
30
31
31
32
@@ -209,10 +210,11 @@ def eval_dataclass(dataclass: AnyDataClass[PInit]) -> None:
209
210
def get_entry (field : AnyField , value : Any ) -> Optional [AnyEntry ]:
210
211
"""Create an entry from a field and its value."""
211
212
ftype = get_ftype (field .type )
213
+ name = get_name (field .type , field .name )
212
214
213
215
if ftype is FType .ATTR or ftype is FType .NAME :
214
216
return AttrEntry (
215
- name = field . name ,
217
+ name = name ,
216
218
tag = ftype .value ,
217
219
value = value ,
218
220
type = get_annotated (field .type ),
@@ -221,14 +223,14 @@ def get_entry(field: AnyField, value: Any) -> Optional[AnyEntry]:
221
223
if ftype is FType .COORD or ftype is FType .DATA :
222
224
try :
223
225
return DataEntry (
224
- name = field . name ,
226
+ name = name ,
225
227
tag = ftype .value ,
226
228
base = get_dataclass (field .type ),
227
229
value = value ,
228
230
)
229
231
except TypeError :
230
232
return DataEntry (
231
- name = field . name ,
233
+ name = name ,
232
234
tag = ftype .value ,
233
235
dims = get_dims (field .type ),
234
236
dtype = get_dtype (field .type ),
Original file line number Diff line number Diff line change @@ -347,3 +347,17 @@ def get_ftype(tp: Any, default: FType = FType.OTHER) -> FType:
347
347
return get_annotations (tp )[0 ]
348
348
except TypeError :
349
349
return default
350
+
351
+
352
+ def get_name (tp : Any , default : Hashable = None ) -> Hashable :
353
+ """Extract a name if found or return given default."""
354
+ try :
355
+ annotations = get_annotations (tp )[1 :]
356
+ except TypeError :
357
+ return default
358
+
359
+ for annotation in annotations :
360
+ if isinstance (annotation , Hashable ):
361
+ return annotation
362
+
363
+ return default
You can’t perform that action at this time.
0 commit comments