summaryrefslogtreecommitdiff
path: root/gitlab.py
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain@pocentek.net>2014-08-21 13:04:00 +0200
committerGauvain Pocentek <gauvain@pocentek.net>2014-08-21 13:04:00 +0200
commit2b5ea468c68058a2d9141ecafda02263dd1845ca (patch)
tree802812e1eff95e1f02bd3f55b739fc4498323f79 /gitlab.py
parent22812832021911dccdd93ced0ef1088441e3d227 (diff)
parentec185cf416adce98e0a3ef338720091c0e2a53fe (diff)
downloadgitlab-2b5ea468c68058a2d9141ecafda02263dd1845ca.tar.gz
Merge pull request #27 from cdleonard/master
Fix encoding errors on display and update with redirected output
Diffstat (limited to 'gitlab.py')
-rw-r--r--gitlab.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/gitlab.py b/gitlab.py
index b5d088c..4ab1156 100644
--- a/gitlab.py
+++ b/gitlab.py
@@ -88,6 +88,8 @@ class Gitlab(object):
self.email = email
self.password = password
self.ssl_verify = ssl_verify
+ # Gitlab should handle UTF-8
+ self.gitlab_encoding = 'UTF-8'
def auth(self):
"""Performs an authentication using either the private token, or the
@@ -301,7 +303,7 @@ class Gitlab(object):
if type(v) in (int, str, bool):
d[k] = str(v)
elif type(v) == unicode:
- d[k] = str(v.encode(sys.stdout.encoding, "replace"))
+ d[k] = str(v.encode(self.gitlab_encoding, "replace"))
try:
r = requests.put(url, d,
@@ -444,6 +446,8 @@ class Gitlab(object):
"""
return self._getListOrObject(Team, id, **kwargs)
+def _get_display_encoding():
+ return sys.stdout.encoding or sys.getdefaultencoding()
class GitlabObject(object):
_url = None
@@ -573,7 +577,7 @@ class GitlabObject(object):
s = ", ".join([GitlabObject._obj_to_str(x) for x in obj])
return "[ %s ]" % s
elif isinstance(obj, unicode):
- return obj.encode(sys.stdout.encoding, "replace")
+ return obj.encode(_get_display_encoding(), "replace")
else:
return str(obj)
@@ -584,8 +588,8 @@ class GitlabObject(object):
if k == self.idAttr:
continue
v = self.__dict__[k]
- pretty_k = k.replace('_', '-').encode(sys.stdout.encoding,
- "replace")
+ pretty_k = k.replace('_', '-')
+ pretty_k = pretty_k.encode(_get_display_encoding(), "replace")
if isinstance(v, GitlabObject):
if depth == 0:
print("%s:" % pretty_k)