@@ -85,6 +85,7 @@ class Dfn:
8585 parent : str | None = None
8686 advanced : bool = False
8787 multi : bool = False
88+ ftype : str | None = None
8889 ref : Ref | None = None
8990 blocks : Blocks | None = None
9091 children : Dfns | None = None
@@ -521,6 +522,7 @@ def map(self, dfn: Dfn) -> Dfn:
521522 name = dfn .name ,
522523 advanced = dfn .advanced ,
523524 multi = dfn .multi ,
525+ ftype = dfn .ftype or (dfn .name .split ("-" , 1 )[1 ].upper () if "-" in dfn .name else None ),
524526 ref = dfn .ref ,
525527 blocks = MapV1To2 .map_blocks (dfn ),
526528 schema_version = v2 ,
@@ -557,18 +559,22 @@ def load(f, format: str = "dfn", **kwargs) -> Dfn:
557559 parent = try_parse_parent (meta ),
558560 advanced = is_advanced_package (meta ),
559561 multi = is_multi_package (meta ),
562+ ftype = name .split ("-" , 1 )[1 ].upper () if "-" in name else None ,
560563 blocks = blocks ,
561564 )
562565
563566 elif format == "toml" :
564567 data = tomli .load (f )
568+ dfn_name = data .pop ("name" , kwargs .pop ("name" , None ))
565569
566570 dfn_fields = {
567- "name" : data . pop ( "name" , kwargs . pop ( "name" , None )) ,
571+ "name" : dfn_name ,
568572 "schema_version" : Version (str (data .pop ("schema_version" , "2" ))),
569573 "parent" : data .pop ("parent" , None ),
570574 "advanced" : data .pop ("advanced" , False ),
571575 "multi" : data .pop ("multi" , False ),
576+ "ftype" : data .pop ("ftype" , None )
577+ or (dfn_name .split ("-" , 1 )[1 ].upper () if dfn_name and "-" in dfn_name else None ),
572578 "ref" : data .pop ("ref" , None ),
573579 }
574580
0 commit comments