Parcourir la source

Move Python version checking to a separate module

Add a new module with methods for checking the Python version.

Instead of handling Python3 imports with try...except blocks, first
check the python version and then import the relevant modules.  This
makes the code a bit cleaner and will result in less diff when/if we
remove support for Python < 3 later.

Use the same mechanism to handle `input` vs. `raw_input` and add
suppression of pylint warnings caused by redefinition of the built-in
method `input`.

Change-Id: Ia403e525b88d77640a741ac50382146e7d635924
Also-by: Chirayu Desai <cdesai@cyanogenmod.org>
Signed-off-by: Chirayu Desai <cdesai@cyanogenmod.org>
David Pursehouse il y a 12 ans
Parent
commit
59bbb580e3
10 fichiers modifiés avec 62 ajouts et 49 suppressions
  1. 4 5
      git_config.py
  2. 7 8
      main.py
  3. 5 5
      manifest_xml.py
  4. 4 3
      project.py
  5. 19 0
      pyversion.py
  6. 3 5
      repo
  7. 4 4
      subcmds/init.py
  8. 6 5
      subcmds/status.py
  9. 6 11
      subcmds/sync.py
  10. 4 3
      subcmds/upload.py

+ 4 - 5
git_config.py

@@ -25,14 +25,13 @@ try:
 except ImportError:
   import dummy_threading as _threading
 import time
-try:
-  import urllib2
-except ImportError:
-  # For python3
+
+from pyversion import is_python3
+if is_python3():
   import urllib.request
   import urllib.error
 else:
-  # For python2
+  import urllib2
   import imp
   urllib = imp.new_module('urllib')
   urllib.request = urllib2

+ 7 - 8
main.py

@@ -22,13 +22,12 @@ import optparse
 import os
 import sys
 import time
-try:
-  import urllib2
-except ImportError:
-  # For python3
+
+from pyversion import is_python3
+if is_python3():
   import urllib.request
 else:
-  # For python2
+  import urllib2
   urllib = imp.new_module('urllib')
   urllib.request = urllib2
 
@@ -50,10 +49,10 @@ from pager import RunPager
 
 from subcmds import all_commands
 
-try:
+if not is_python3():
+  # pylint:disable=W0622
   input = raw_input
-except NameError:
-  pass
+  # pylint:enable=W0622
 
 global_options = optparse.OptionParser(
                  usage="repo [-p|--paginate|--no-pager] COMMAND [ARGS]"

+ 5 - 5
manifest_xml.py

@@ -18,16 +18,16 @@ import itertools
 import os
 import re
 import sys
-try:
-  # For python3
+import xml.dom.minidom
+
+from pyversion import is_python3
+if is_python3():
   import urllib.parse
-except ImportError:
-  # For python2
+else:
   import imp
   import urlparse
   urllib = imp.new_module('urllib')
   urllib.parse = urlparse
-import xml.dom.minidom
 
 from git_config import GitConfig
 from git_refs import R_HEADS, HEAD

+ 4 - 3
project.py

@@ -36,10 +36,11 @@ from trace import IsTrace, Trace
 
 from git_refs import GitRefs, HEAD, R_HEADS, R_TAGS, R_PUB, R_M
 
-try:
+from pyversion import is_python3
+if not is_python3():
+  # pylint:disable=W0622
   input = raw_input
-except NameError:
-  pass
+  # pylint:enable=W0622
 
 def _lwrite(path, content):
   lock = '%s.lock' % path

+ 19 - 0
pyversion.py

@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2013 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import sys
+
+def is_python3():
+  return sys.version_info[0] == 3

+ 3 - 5
repo

@@ -117,15 +117,13 @@ import re
 import stat
 import subprocess
 import sys
-try:
-  import urllib2
-except ImportError:
-  # For python3
+
+if sys.version_info[0] == 3:
   import urllib.request
   import urllib.error
 else:
-  # For python2
   import imp
+  import urllib2
   urllib = imp.new_module('urllib')
   urllib.request = urllib2
   urllib.error = urllib2

+ 4 - 4
subcmds/init.py

@@ -19,11 +19,11 @@ import platform
 import re
 import shutil
 import sys
-try:
-  # For python3
+
+from pyversion import is_python3
+if is_python3():
   import urllib.parse
-except ImportError:
-  # For python2
+else:
   import imp
   import urlparse
   urllib = imp.new_module('urllib')

+ 6 - 5
subcmds/status.py

@@ -21,12 +21,13 @@ except ImportError:
   import dummy_threading as _threading
 
 import glob
-try:
-  # For python2
-  import StringIO as io
-except ImportError:
-  # For python3
+
+from pyversion import is_python3
+if is_python3():
   import io
+else:
+  import StringIO as io
+
 import itertools
 import os
 import sys

+ 6 - 11
subcmds/sync.py

@@ -24,22 +24,17 @@ import socket
 import subprocess
 import sys
 import time
-try:
-  # For python3
+
+from pyversion import is_python3
+if is_python3():
   import urllib.parse
-except ImportError:
-  # For python2
+  import xmlrpc.client
+else:
   import imp
   import urlparse
+  import xmlrpclib
   urllib = imp.new_module('urllib')
   urllib.parse = urlparse
-try:
-  # For python3
-  import xmlrpc.client
-except ImportError:
-  # For python2
-  import imp
-  import xmlrpclib
   xmlrpc = imp.new_module('xmlrpc')
   xmlrpc.client = xmlrpclib
 

+ 4 - 3
subcmds/upload.py

@@ -23,10 +23,11 @@ from editor import Editor
 from error import HookError, UploadError
 from project import RepoHook
 
-try:
+from pyversion import is_python3
+if not is_python3():
+  # pylint:disable=W0622
   input = raw_input
-except NameError:
-  pass
+  # pylint:enable=W0622
 
 UNUSUAL_COMMIT_THRESHOLD = 5