diff --git a/googleapiclient/channel.py b/googleapiclient/channel.py index 702186b6845..7d0feb9482b 100644 --- a/googleapiclient/channel.py +++ b/googleapiclient/channel.py @@ -64,6 +64,13 @@ from oauth2client import util import six +# Oauth2client < 3 has the positional helper in 'util', >= 3 has it +# in '_helpers'. +try: + from oauth2client import util +except ImportError: + from oauth2client import _helpers as util + # The unix time epoch starts at midnight 1970. EPOCH = datetime.datetime.utcfromtimestamp(0) diff --git a/googleapiclient/discovery.py b/googleapiclient/discovery.py index ecb75fa48d5..8609e3aaa41 100644 --- a/googleapiclient/discovery.py +++ b/googleapiclient/discovery.py @@ -69,8 +69,15 @@ from googleapiclient.model import RawModel from googleapiclient.schema import Schemas from oauth2client.client import GoogleCredentials -from oauth2client.util import _add_query_parameter -from oauth2client.util import positional + +# Oauth2client < 3 has the positional helper in 'util', >= 3 has it +# in '_helpers'. +try: + from oauth2client.util import _add_query_parameter + from oauth2client.util import positional +except ImportError: + from oauth2client._helpers import _add_query_parameter + from oauth2client._helpers import positional # The client library requires a version of httplib2 that supports RETRIES. diff --git a/googleapiclient/errors.py b/googleapiclient/errors.py index 3d44de70062..1b79d2fe049 100644 --- a/googleapiclient/errors.py +++ b/googleapiclient/errors.py @@ -23,7 +23,12 @@ import json -from oauth2client import util +# Oauth2client < 3 has the positional helper in 'util', >= 3 has it +# in '_helpers'. +try: + from oauth2client import util +except ImportError: + from oauth2client import _helpers as util class Error(Exception): diff --git a/googleapiclient/http.py b/googleapiclient/http.py index 1e168c19b81..14580f0c2b5 100644 --- a/googleapiclient/http.py +++ b/googleapiclient/http.py @@ -55,6 +55,13 @@ from email.mime.nonmultipart import MIMENonMultipart from email.parser import FeedParser +# Oauth2client < 3 has the positional helper in 'util', >= 3 has it +# in '_helpers'. +try: + from oauth2client import util +except ImportError: + from oauth2client import _helpers as util + from googleapiclient import mimeparse from googleapiclient.errors import BatchError from googleapiclient.errors import HttpError @@ -63,7 +70,6 @@ from googleapiclient.errors import UnexpectedBodyError from googleapiclient.errors import UnexpectedMethodError from googleapiclient.model import JsonModel -from oauth2client import util LOGGER = logging.getLogger(__name__) diff --git a/googleapiclient/schema.py b/googleapiclient/schema.py index ecb3f8bf19c..9feaf28ac71 100644 --- a/googleapiclient/schema.py +++ b/googleapiclient/schema.py @@ -65,7 +65,12 @@ import copy -from oauth2client import util +# Oauth2client < 3 has the positional helper in 'util', >= 3 has it +# in '_helpers'. +try: + from oauth2client import util +except ImportError: + from oauth2client import _helpers as util class Schemas(object): diff --git a/setup.py b/setup.py index 7dd6a0ab726..b4edba6ae4a 100644 --- a/setup.py +++ b/setup.py @@ -64,7 +64,7 @@ def _DetectBadness(): install_requires = [ 'httplib2>=0.8,<1', - 'oauth2client', + 'oauth2client>=1.5.0,<4.0.0', 'six>=1.6.1,<2', 'uritemplate>=0.6,<1', ] diff --git a/tox.ini b/tox.ini index 44f21da36d4..a87dad38b0e 100644 --- a/tox.ini +++ b/tox.ini @@ -1,10 +1,11 @@ [tox] -envlist = py{26,27,33,34}-oauth2client{1,2} +envlist = py{26,27,33,34}-oauth2client{1,2,3} [testenv] deps = oauth2client1: oauth2client<2 oauth2client2: oauth2client>=2,<=3 + oauth2client3: oauth2client>=3,<=4 keyring mox pyopenssl