@@ -102,6 +102,20 @@ def from_json(self, json, copy_attributes=list(), snake_case=True):
102
102
else :
103
103
self .details [key ] = value
104
104
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
+
105
119
106
120
class Release (SW360Resource ):
107
121
"""A release is the SW360 abstraction for a single version of a component.
@@ -129,11 +143,12 @@ class Release(SW360Resource):
129
143
:type kwargs: dictionary
130
144
"""
131
145
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 ):
133
147
self .attachments = {}
134
148
135
- self .component_id = component_id
149
+ self .name = name
136
150
self .version = version
151
+ self .component_id = component_id
137
152
self .downloadurl = downloadurl
138
153
super ().__init__ (json , release_id , sw360 = sw360 , ** kwargs )
139
154
@@ -166,9 +181,8 @@ def get_component(self, sw360=None):
166
181
self .sw360 = sw360
167
182
return Component ().get (self .sw360 , self .component_id )
168
183
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 } )'
172
186
173
187
174
188
class Attachment (SW360Resource ):
@@ -207,9 +221,9 @@ class Attachment(SW360Resource):
207
221
def __init__ (self , json = None , attachment_id = None , resources = {},
208
222
filename = None , sha1 = None , attachment_type = None , sw360 = None , ** kwargs ):
209
223
self .resources = resources
224
+ self .attachment_type = attachment_type
210
225
self .filename = filename
211
226
self .sha1 = sha1
212
- self .attachment_type = attachment_type
213
227
self .download_link = None
214
228
super ().__init__ (json , attachment_id , sw360 , ** kwargs )
215
229
@@ -261,9 +275,8 @@ def download(self, target_path, filename=None):
261
275
self .sw360 .download_attachment (os .path .join (target_path , filename ),
262
276
self .download_link )
263
277
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 } )'
267
280
268
281
269
282
class Component (SW360Resource ):
@@ -332,9 +345,8 @@ def get(self, sw360=None, id_=None):
332
345
self .from_json (self .sw360 .get_component (self .id ))
333
346
return self
334
347
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 } )'
338
350
339
351
340
352
class Project (SW360Resource ):
@@ -408,6 +420,5 @@ def get(self, sw360=None, id_=None):
408
420
self .from_json (self .sw360 .get_project (self .id ))
409
421
return self
410
422
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