diff options
author | Gauvain Pocentek <gauvain@pocentek.net> | 2014-08-21 13:04:00 +0200 |
---|---|---|
committer | Gauvain Pocentek <gauvain@pocentek.net> | 2014-08-21 13:04:00 +0200 |
commit | 2b5ea468c68058a2d9141ecafda02263dd1845ca (patch) | |
tree | 802812e1eff95e1f02bd3f55b739fc4498323f79 /gitlab.py | |
parent | 22812832021911dccdd93ced0ef1088441e3d227 (diff) | |
parent | ec185cf416adce98e0a3ef338720091c0e2a53fe (diff) | |
download | gitlab-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.py | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -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) |