3333if  TYPE_CHECKING :  # pragma: no cover 
3434    from  ..model .bom  import  Bom 
3535    from  ..model .bom_ref  import  BomRef 
36-     from  ..model .contact  import  OrganizationalContact , OrganizationalEntity 
36+     from  ..model .contact  import  OrganizationalContact , OrganizationalEntity , PostalAddress 
37+     from  ..model .definition  import  Level , Requirement , Standard 
3738    from  ..model .license  import  License 
3839    from  .json  import  Json  as  JsonOutputter 
3940    from  .xml  import  Xml  as  XmlOutputter 
@@ -175,7 +176,7 @@ def from_bom(cls, bom: 'Bom', prefix: str = 'BomRef') -> 'BomRefDiscriminator':
175176        components  =  tuple (bom ._get_all_components ())
176177        services  =  tuple (bom .services )
177178        vulnerabilities  =  tuple (bom .vulnerabilities )
178-         orgs : list ['OrganizationalEntity' ] =  list (filter (lambda  o : o  is  not   None , chain (  # type:ignore[arg-type] 
179+         orgs : tuple ['OrganizationalEntity' , ... ] =  tuple (filter (lambda  o : o  is  not   None , chain (  # type:ignore[arg-type] 
179180            (bom .metadata .manufacture , bom .metadata .manufacturer , bom .metadata .supplier ),
180181            chain .from_iterable ((c .manufacturer , c .supplier ,) for  c  in  components ),
181182            (s .provider  for  s  in  services ),
@@ -187,20 +188,29 @@ def from_bom(cls, bom: 'Bom', prefix: str = 'BomRef') -> 'BomRefDiscriminator':
187188            chain .from_iterable (v .credits .individuals  for  v  in  vulnerabilities  if  v .credits ),
188189            chain .from_iterable (o .contacts  for  o  in  orgs ),
189190        )
191+         addresses : Iterable ['PostalAddress' ] =  (o .address  for  o  in  orgs  if  o .address  is  not   None )
190192        licenses : Iterable ['License' ] =  chain (
191193            bom .metadata .licenses ,
192194            chain .from_iterable (c .licenses  for  c  in  components ),
193195            chain .from_iterable (c .evidence .licenses  for  c  in  components  if  c .evidence  is  not   None ),
194196            chain .from_iterable (s .licenses  for  s  in  services ),
195197        )
198+         standards : tuple ['Standard' , ...] =  () \
199+             if  bom .definitions  is  None  \
200+             else  tuple (bom .definitions .standards )
201+         requirements : Iterable ['Requirement' ] =  chain .from_iterable (s .requirements  for  s  in  standards )
202+         levels : Iterable ['Level' ] =  chain .from_iterable (s .levels  for  s  in  standards )
196203        return  cls (
197204            (i .bom_ref  for  i  in  chain (
198205                components ,
199206                services ,
200207                vulnerabilities ,
201208                orgs ,
202209                contacts ,
203-                 ( o . address   for   o   in   orgs   if   o . address   is   not   None ) ,
210+                 addresses ,
204211                licenses ,
212+                 standards ,
213+                 requirements ,
214+                 levels ,
205215            )),
206216            prefix )
0 commit comments