@@ -19,9 +19,9 @@ def __init__(self, file_name, config, logger, board=None):
1919        if  self .board  is  None :
2020            self .board  =  pcbnew .LoadBoard (self .file_name )  # type: pcbnew.BOARD 
2121        if  hasattr (self .board , 'GetModules' ):
22-             self .footprints  =  list (self .board .GetModules ())
22+             self .footprints  =  list (self .board .GetModules ())   # type: list[pcbnew.MODULE] 
2323        else :
24-             self .footprints  =  list (self .board .GetFootprints ())
24+             self .footprints  =  list (self .board .GetFootprints ())   # type: list[pcbnew.FOOTPRINT] 
2525        self .font_parser  =  FontParser ()
2626
2727    def  get_extra_field_data (self , file_name ):
@@ -109,7 +109,7 @@ def get_arc_angles(self, d):
109109        return  round (a1 , 2 ), round (a2 , 2 )
110110
111111    def  parse_shape (self , d ):
112-         # type: (pcbnew.PCB_SHAPE) -> dict or  None 
112+         # type: (pcbnew.PCB_SHAPE) -> dict |  None 
113113        shape  =  {
114114            pcbnew .S_SEGMENT : "segment" ,
115115            pcbnew .S_CIRCLE : "circle" ,
@@ -413,10 +413,17 @@ def get_all_drawings(self):
413413            drawings .append (("val" , f .Value ()))
414414            for  d  in  f .GraphicalItems ():
415415                drawings .append ((d .GetClass (), d ))
416+             if  hasattr (f , "GetFields" ):
417+                 fields  =  f .GetFields () # type: list[pcbnew.PCB_FIELD] 
418+                 for  field  in  fields :
419+                     if  field .IsReference () or  field .IsValue ():
420+                         continue 
421+                     drawings .append ((field .GetClass (), field ))
422+ 
416423        return  drawings 
417424
418425    def  parse_pad (self , pad ):
419-         # type: (pcbnew.PAD) -> dict or  None 
426+         # type: (pcbnew.PAD) -> dict |  None 
420427        layers_set  =  list (pad .GetLayerSet ().Seq ())
421428        layers  =  []
422429        if  pcbnew .F_Cu  in  layers_set :
@@ -497,7 +504,7 @@ def parse_pad(self, pad):
497504    def  parse_footprints (self ):
498505        # type: () -> list 
499506        footprints  =  []
500-         for  f  in  self .footprints :   # type: pcbnew.FOOTPRINT 
507+         for  f  in  self .footprints :
501508            ref  =  f .GetReference ()
502509
503510            # bounding box 
@@ -619,8 +626,9 @@ def parse_tracks(self, tracks):
619626        }
620627
621628    def  parse_zones (self , zones ):
629+         # type: (list[pcbnew.ZONE]) -> dict 
622630        result  =  {pcbnew .F_Cu : [], pcbnew .B_Cu : []}
623-         for  zone  in  zones :   # type: pcbnew.ZONE 
631+         for  zone  in  zones :
624632            if  (not  zone .IsFilled () or 
625633                    hasattr (zone , 'GetIsKeepout' ) and  zone .GetIsKeepout () or 
626634                    hasattr (zone , 'GetIsRuleArea' ) and  zone .GetIsRuleArea ()):
0 commit comments