diff --git a/gitlab b/gitlab
index 7ddd48c54..f0aa46069 100755
--- a/gitlab
+++ b/gitlab
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
+from __future__ import print_function, division, absolute_import
+
import os
import sys
import re
diff --git a/gitlab.py b/gitlab.py
index 268fe5ce1..60740020c 100644
--- a/gitlab.py
+++ b/gitlab.py
@@ -15,6 +15,10 @@
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
+from __future__ import print_function, division, absolute_import
+
+import six
+
import json
import requests
import sys
@@ -281,7 +285,7 @@ def create(self, obj):
url = obj._url % args
url = '%s%s' % (self._url, url)
- for k, v in obj.__dict__.items():
+ for k, v in list(obj.__dict__.items()):
if type(v) == bool:
obj.__dict__[k] = 1 if v else 0
@@ -307,12 +311,12 @@ def update(self, obj):
# build a dict of data that can really be sent to server
d = {}
- for k, v in obj.__dict__.items():
+ for k, v in list(obj.__dict__.items()):
if type(v) in (int, str):
d[k] = str(v)
elif type(v) == bool:
d[k] = 1 if v else 0
- elif type(v) == unicode:
+ elif six.PY2 and type(v) == six.text_type:
d[k] = str(v.encode(self.gitlab_encoding, "replace"))
try:
@@ -462,7 +466,7 @@ def _get_display_encoding():
def _sanitize(value):
- if type(value) in (str, unicode):
+ if isinstance(value, six.string_types):
return value.replace('/', '%2F')
return value
@@ -562,7 +566,8 @@ def delete(self):
def __init__(self, gl, data=None, **kwargs):
self.gitlab = gl
- if data is None or type(data) in [int, str, unicode]:
+ if data is None or isinstance(data, six.integer_types) or\
+ isinstance(data, six.string_types):
data = self.gitlab.get(self.__class__, data, **kwargs)
self._setFromDict(data)
@@ -598,7 +603,7 @@ def _obj_to_str(obj):
elif isinstance(obj, list):
s = ", ".join([GitlabObject._obj_to_str(x) for x in obj])
return "[ %s ]" % s
- elif isinstance(obj, unicode):
+ elif six.PY2 and isinstance(obj, six.text_type):
return obj.encode(_get_display_encoding(), "replace")
else:
return str(obj)
@@ -611,7 +616,8 @@ def pretty_print(self, depth=0):
continue
v = self.__dict__[k]
pretty_k = k.replace('_', '-')
- pretty_k = pretty_k.encode(_get_display_encoding(), "replace")
+ if six.PY2:
+ pretty_k = pretty_k.encode(_get_display_encoding(), "replace")
if isinstance(v, GitlabObject):
if depth == 0:
print("%s:" % pretty_k)
diff --git a/requirements.txt b/requirements.txt
index 65d5e04b2..af8843719 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1 +1,2 @@
requests>1.0
+six
diff --git a/setup.py b/setup.py
index eeeeaf0d1..4330e6c2a 100644
--- a/setup.py
+++ b/setup.py
@@ -22,7 +22,7 @@ def get_version():
url='https://github.com/gpocentek/python-gitlab',
py_modules=['gitlab'],
scripts=['gitlab'],
- install_requires=['requests'],
+ install_requires=['requests', 'six'],
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Console',