@@ -88,6 +88,8 @@ def __init__(self, url, private_token=None,
88
88
self .email = email
89
89
self .password = password
90
90
self .ssl_verify = ssl_verify
91
+ # Gitlab should handle UTF-8
92
+ self .gitlab_encoding = 'UTF-8'
91
93
92
94
def auth (self ):
93
95
"""Performs an authentication using either the private token, or the
@@ -301,7 +303,7 @@ def update(self, obj):
301
303
if type (v ) in (int , str , bool ):
302
304
d [k ] = str (v )
303
305
elif type (v ) == unicode :
304
- d [k ] = str (v .encode (sys . stdout . encoding , "replace" ))
306
+ d [k ] = str (v .encode (self . gitlab_encoding , "replace" ))
305
307
306
308
try :
307
309
r = requests .put (url , d ,
@@ -444,6 +446,8 @@ def Team(self, id=None, **kwargs):
444
446
"""
445
447
return self ._getListOrObject (Team , id , ** kwargs )
446
448
449
+ def _get_display_encoding ():
450
+ return sys .stdout .encoding or sys .getdefaultencoding ()
447
451
448
452
class GitlabObject (object ):
449
453
_url = None
@@ -573,7 +577,7 @@ def _obj_to_str(obj):
573
577
s = ", " .join ([GitlabObject ._obj_to_str (x ) for x in obj ])
574
578
return "[ %s ]" % s
575
579
elif isinstance (obj , unicode ):
576
- return obj .encode (sys . stdout . encoding , "replace" )
580
+ return obj .encode (_get_display_encoding () , "replace" )
577
581
else :
578
582
return str (obj )
579
583
@@ -584,8 +588,8 @@ def pretty_print(self, depth=0):
584
588
if k == self .idAttr :
585
589
continue
586
590
v = self .__dict__ [k ]
587
- pretty_k = k .replace ('_' , '-' ). encode ( sys . stdout . encoding ,
588
- "replace" )
591
+ pretty_k = k .replace ('_' , '-' )
592
+ pretty_k = pretty_k . encode ( _get_display_encoding (), "replace" )
589
593
if isinstance (v , GitlabObject ):
590
594
if depth == 0 :
591
595
print ("%s:" % pretty_k )
0 commit comments