@@ -88,6 +88,8 @@ def __init__(self, url, private_token=None,
8888 self .email = email
8989 self .password = password
9090 self .ssl_verify = ssl_verify
91+ # Gitlab should handle UTF-8
92+ self .gitlab_encoding = 'UTF-8'
9193
9294 def auth (self ):
9395 """Performs an authentication using either the private token, or the
@@ -301,7 +303,7 @@ def update(self, obj):
301303 if type (v ) in (int , str , bool ):
302304 d [k ] = str (v )
303305 elif type (v ) == unicode :
304- d [k ] = str (v .encode (sys . stdout . encoding , "replace" ))
306+ d [k ] = str (v .encode (self . gitlab_encoding , "replace" ))
305307
306308 try :
307309 r = requests .put (url , d ,
@@ -444,6 +446,8 @@ def Team(self, id=None, **kwargs):
444446 """
445447 return self ._getListOrObject (Team , id , ** kwargs )
446448
449+ def _get_display_encoding ():
450+ return sys .stdout .encoding or sys .getdefaultencoding ()
447451
448452class GitlabObject (object ):
449453 _url = None
@@ -573,7 +577,7 @@ def _obj_to_str(obj):
573577 s = ", " .join ([GitlabObject ._obj_to_str (x ) for x in obj ])
574578 return "[ %s ]" % s
575579 elif isinstance (obj , unicode ):
576- return obj .encode (sys . stdout . encoding , "replace" )
580+ return obj .encode (_get_display_encoding () , "replace" )
577581 else :
578582 return str (obj )
579583
@@ -584,8 +588,8 @@ def pretty_print(self, depth=0):
584588 if k == self .idAttr :
585589 continue
586590 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" )
589593 if isinstance (v , GitlabObject ):
590594 if depth == 0 :
591595 print ("%s:" % pretty_k )
0 commit comments