@@ -126,6 +126,20 @@ def from_json(self, json, copy_attributes=list(), snake_case=True):
126126 else :
127127 self .details [key ] = value
128128
129+ def __repr__ (self ):
130+ repr_ = []
131+ for k , v in self .__dict__ .items ():
132+ if v is None :
133+ continue
134+ if (k in ("name" , "version" , "filename" , "attachment_type" )
135+ or k .endswith ("_id" )):
136+ repr_ .append (f'{ k } ={ v !r} ' )
137+ if k == "id" :
138+ repr_ .append (f'{ self .__class__ .__name__ .lower ()} _id={ v !r} ' )
139+ return (f'{ self .__class__ .__name__ } ('
140+ + ", " .join (repr_ )
141+ + ")" )
142+
129143
130144class Release (SW360Resource ):
131145 """A release is the SW360 abstraction for a single version of a component.
@@ -153,13 +167,14 @@ class Release(SW360Resource):
153167 :type kwargs: dictionary
154168 """
155169 def __init__ (self , json = None , release_id = None , component_id = None ,
156- version = None , downloadurl = None , sw360 = None , ** kwargs ):
170+ name = None , version = None , downloadurl = None , sw360 = None , ** kwargs ):
157171 self .attachments = {}
158172 self .external_ids = {}
159173 self .purls = []
160174
161- self .component_id = component_id
175+ self .name = name
162176 self .version = version
177+ self .component_id = component_id
163178 self .downloadurl = downloadurl
164179 super ().__init__ (json , release_id , sw360 = sw360 , ** kwargs )
165180
@@ -195,9 +210,8 @@ def get_component(self, sw360=None):
195210 self .sw360 = sw360
196211 return Component ().get (self .sw360 , self .component_id )
197212
198- def __repr__ (self ):
199- """Representation string."""
200- return "<Release %s %s id:%s>" % (self .name , self .version , self .id )
213+ def __str__ (self ):
214+ return f'{ self .name } { self .version } ({ self .id } )'
201215
202216
203217class Attachment (SW360Resource ):
@@ -236,9 +250,9 @@ class Attachment(SW360Resource):
236250 def __init__ (self , json = None , attachment_id = None , resources = {},
237251 filename = None , sha1 = None , attachment_type = None , sw360 = None , ** kwargs ):
238252 self .resources = resources
253+ self .attachment_type = attachment_type
239254 self .filename = filename
240255 self .sha1 = sha1
241- self .attachment_type = attachment_type
242256 self .download_link = None
243257 super ().__init__ (json , attachment_id , sw360 , ** kwargs )
244258
@@ -295,9 +309,8 @@ def download(self, target_path, filename=None):
295309 self .sw360 .download_attachment (os .path .join (target_path , filename ),
296310 self .download_link )
297311
298- def __repr__ (self ):
299- """Representation string."""
300- return "<Attachment %s id:%s>" % (self .filename , self .id )
312+ def __str__ (self ):
313+ return f'{ self .filename } ({ self .id } )'
301314
302315
303316class Component (SW360Resource ):
@@ -373,9 +386,8 @@ def get(self, sw360=None, id_=None):
373386 self .from_json (self .sw360 .get_component (self .id ))
374387 return self
375388
376- def __repr__ (self ):
377- """Representation string."""
378- return "<Component %s id:%s>" % (self .name , self .id )
389+ def __str__ (self ):
390+ return f'{ self .name } ({ self .id } )'
379391
380392
381393class Project (SW360Resource ):
@@ -453,6 +465,5 @@ def get(self, sw360=None, id_=None):
453465 self .from_json (self .sw360 .get_project (self .id ))
454466 return self
455467
456- def __repr__ (self ):
457- """Representation string."""
458- return "<Project %s id:%s>" % (self .name , self .id )
468+ def __str__ (self ):
469+ return f'{ self .name } { self .version } ({ self .id } )'
0 commit comments