@@ -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