]> jfr.im git - z_archive/twitter.git/commitdiff
Use Six's method to determine when running under Python 3.
authorBen Sturmfels <redacted>
Sat, 29 Nov 2014 23:52:11 +0000 (10:52 +1100)
committerBen Sturmfels <redacted>
Sat, 29 Nov 2014 23:52:11 +0000 (10:52 +1100)
oauth.py guesses whether it is running under Python 3 by the existance of urllib.parse.urllib_parse and urllib.parse.urlencode. The code then uses urlencode's safe parameter if it believes it's running under Python 3. Unfortunately the guess fails when using Future, a library for writing clean Python 3 code that is backwards compatible with Python 2, since Future manipulates some builtins.

This change applies the version test that isn't confused by the use of Futures. It's the same test used by the Six library.

twitter/oauth.py

index dcc062c79100fa328b4d642fe45a637a2a2685b7..d43f753d572565900ca4eb51efd6b4bfd2b8fc43 100644 (file)
@@ -41,17 +41,18 @@ code it all goes like this::
 
 from __future__ import print_function
 
-from time import time
 from random import getrandbits
+import sys
+from time import time
+
+PY3 = sys.version_info[0] == 3
 
 try:
     import urllib.parse as urllib_parse
     from urllib.parse import urlencode
-    PY3 = True
 except ImportError:
     import urllib2 as urllib_parse
     from urllib import urlencode
-    PY3 = False
 
 import hashlib
 import hmac