@@ -152,7 +152,7 @@ def _parse_link(self, key, links_key, links_value):
152152
153153 def _parse_purls (self , purl_value ):
154154 """Parse package url strings"""
155- purls = []
155+ purls = set ()
156156 if type (purl_value ) is str :
157157 if purl_value .startswith ("[" ):
158158 # as of 2022-04, SW360 returns arrays as JSON string...
@@ -164,7 +164,7 @@ def _parse_purls(self, purl_value):
164164 if purl_string .startswith ("pkg:" ):
165165 try :
166166 purl = packageurl .PackageURL .from_string (purl_string )
167- purls .append (purl )
167+ purls .add (purl )
168168 except ValueError :
169169 pass
170170 return purls
@@ -176,8 +176,6 @@ def from_json(self, json, copy_attributes=list(), snake_case=True):
176176 attributes and JSON members. If `snake_case` is set, more Python-ish
177177 snake_case names will be used (project_type instead of projectType).
178178 """
179- # delete purl list as we add purls from different external ids below
180- self .purls = []
181179 for key , value in json .items ():
182180 if key in copy_attributes :
183181 if snake_case :
@@ -188,7 +186,7 @@ def from_json(self, json, copy_attributes=list(), snake_case=True):
188186 # 'package-url', but some use "purl", "purl.id", etc.
189187 purls = self ._parse_purls (id_value )
190188 if len (purls ):
191- self .purls += purls
189+ self .purls . update ( purls )
192190 continue
193191 self .external_ids [id_type ] = id_value
194192 else :
@@ -245,7 +243,7 @@ class Release(SW360Resource):
245243 def __init__ (self , json = None , id_ = None , parent = None , users = {},
246244 name = None , version = None , downloadurl = None , sw360 = None , ** kwargs ):
247245 self .__setattrdefault__ ("external_ids" , {})
248- self .__setattrdefault__ ("purls" , [] )
246+ self .__setattrdefault__ ("purls" , set () )
249247 self .__setattrdefault__ ("attachments" , {})
250248 self .__setattrdefault__ ("name" , name )
251249 self .__setattrdefault__ ("version" , version )
@@ -405,7 +403,7 @@ def __init__(self, json=None, id_=None, name=None, description=None,
405403 self .__setattrdefault__ ("releases" , {})
406404 self .__setattrdefault__ ("attachments" , {})
407405 self .__setattrdefault__ ("external_ids" , {})
408- self .__setattrdefault__ ("purls" , [] )
406+ self .__setattrdefault__ ("purls" , set () )
409407 self .__setattrdefault__ ("name" , name )
410408 self .__setattrdefault__ ("description" , description )
411409 self .__setattrdefault__ ("homepage" , homepage )
@@ -489,7 +487,7 @@ def __init__(self, json=None, id_=None, users={},
489487 self .__setattrdefault__ ("projects" , {})
490488 self .__setattrdefault__ ("attachments" , {})
491489 self .__setattrdefault__ ("external_ids" , {})
492- self .__setattrdefault__ ("purls" , [] )
490+ self .__setattrdefault__ ("purls" , set () )
493491 self .__setattrdefault__ ("name" , name )
494492 self .__setattrdefault__ ("version" , version )
495493 self .__setattrdefault__ ("description" , description )
0 commit comments