@@ -126,6 +126,20 @@ def from_json(self, json, copy_attributes=list(), snake_case=True):
126
126
else :
127
127
self .details [key ] = value
128
128
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
+
129
143
130
144
class Release (SW360Resource ):
131
145
"""A release is the SW360 abstraction for a single version of a component.
@@ -153,13 +167,14 @@ class Release(SW360Resource):
153
167
:type kwargs: dictionary
154
168
"""
155
169
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 ):
157
171
self .attachments = {}
158
172
self .external_ids = {}
159
173
self .purls = []
160
174
161
- self .component_id = component_id
175
+ self .name = name
162
176
self .version = version
177
+ self .component_id = component_id
163
178
self .downloadurl = downloadurl
164
179
super ().__init__ (json , release_id , sw360 = sw360 , ** kwargs )
165
180
@@ -195,9 +210,8 @@ def get_component(self, sw360=None):
195
210
self .sw360 = sw360
196
211
return Component ().get (self .sw360 , self .component_id )
197
212
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 } )'
201
215
202
216
203
217
class Attachment (SW360Resource ):
@@ -236,9 +250,9 @@ class Attachment(SW360Resource):
236
250
def __init__ (self , json = None , attachment_id = None , resources = {},
237
251
filename = None , sha1 = None , attachment_type = None , sw360 = None , ** kwargs ):
238
252
self .resources = resources
253
+ self .attachment_type = attachment_type
239
254
self .filename = filename
240
255
self .sha1 = sha1
241
- self .attachment_type = attachment_type
242
256
self .download_link = None
243
257
super ().__init__ (json , attachment_id , sw360 , ** kwargs )
244
258
@@ -295,9 +309,8 @@ def download(self, target_path, filename=None):
295
309
self .sw360 .download_attachment (os .path .join (target_path , filename ),
296
310
self .download_link )
297
311
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 } )'
301
314
302
315
303
316
class Component (SW360Resource ):
@@ -373,9 +386,8 @@ def get(self, sw360=None, id_=None):
373
386
self .from_json (self .sw360 .get_component (self .id ))
374
387
return self
375
388
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 } )'
379
391
380
392
381
393
class Project (SW360Resource ):
@@ -453,6 +465,5 @@ def get(self, sw360=None, id_=None):
453
465
self .from_json (self .sw360 .get_project (self .id ))
454
466
return self
455
467
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