@@ -102,6 +102,20 @@ def from_json(self, json, copy_attributes=list(), snake_case=True):
102102 else :
103103 self .details [key ] = value
104104
105+ def __repr__ (self ):
106+ repr_ = []
107+ for k , v in self .__dict__ .items ():
108+ if v is None :
109+ continue
110+ if (k in ("name" , "version" , "filename" , "attachment_type" )
111+ or k .endswith ("_id" )):
112+ repr_ .append (f'{ k } ={ v !r} ' )
113+ if k == "id" :
114+ repr_ .append (f'{ self .__class__ .__name__ .lower ()} _id={ v !r} ' )
115+ return (f'{ self .__class__ .__name__ } ('
116+ + ", " .join (repr_ )
117+ + ")" )
118+
105119
106120class Release (SW360Resource ):
107121 """A release is the SW360 abstraction for a single version of a component.
@@ -129,11 +143,12 @@ class Release(SW360Resource):
129143 :type kwargs: dictionary
130144 """
131145 def __init__ (self , json = None , release_id = None , component_id = None ,
132- version = None , downloadurl = None , sw360 = None , ** kwargs ):
146+ name = None , version = None , downloadurl = None , sw360 = None , ** kwargs ):
133147 self .attachments = {}
134148
135- self .component_id = component_id
149+ self .name = name
136150 self .version = version
151+ self .component_id = component_id
137152 self .downloadurl = downloadurl
138153 super ().__init__ (json , release_id , sw360 = sw360 , ** kwargs )
139154
@@ -166,9 +181,8 @@ def get_component(self, sw360=None):
166181 self .sw360 = sw360
167182 return Component ().get (self .sw360 , self .component_id )
168183
169- def __repr__ (self ):
170- """Representation string."""
171- return "<Release %s %s id:%s>" % (self .name , self .version , self .id )
184+ def __str__ (self ):
185+ return f'{ self .name } { self .version } ({ self .id } )'
172186
173187
174188class Attachment (SW360Resource ):
@@ -207,9 +221,9 @@ class Attachment(SW360Resource):
207221 def __init__ (self , json = None , attachment_id = None , resources = {},
208222 filename = None , sha1 = None , attachment_type = None , sw360 = None , ** kwargs ):
209223 self .resources = resources
224+ self .attachment_type = attachment_type
210225 self .filename = filename
211226 self .sha1 = sha1
212- self .attachment_type = attachment_type
213227 self .download_link = None
214228 super ().__init__ (json , attachment_id , sw360 , ** kwargs )
215229
@@ -261,9 +275,8 @@ def download(self, target_path, filename=None):
261275 self .sw360 .download_attachment (os .path .join (target_path , filename ),
262276 self .download_link )
263277
264- def __repr__ (self ):
265- """Representation string."""
266- return "<Attachment %s id:%s>" % (self .filename , self .id )
278+ def __str__ (self ):
279+ return f'{ self .filename } ({ self .id } )'
267280
268281
269282class Component (SW360Resource ):
@@ -332,9 +345,8 @@ def get(self, sw360=None, id_=None):
332345 self .from_json (self .sw360 .get_component (self .id ))
333346 return self
334347
335- def __repr__ (self ):
336- """Representation string."""
337- return "<Component %s id:%s>" % (self .name , self .id )
348+ def __str__ (self ):
349+ return f'{ self .name } ({ self .id } )'
338350
339351
340352class Project (SW360Resource ):
@@ -408,6 +420,5 @@ def get(self, sw360=None, id_=None):
408420 self .from_json (self .sw360 .get_project (self .id ))
409421 return self
410422
411- def __repr__ (self ):
412- """Representation string."""
413- return "<Project %s id:%s>" % (self .name , self .id )
423+ def __str__ (self ):
424+ return f'{ self .name } { self .version } ({ self .id } )'
0 commit comments