Fix inconsistent indentation
The repo coding style is to indent at 2 characters, but there are
many places where this is not followed.
Enable pylint warning "W0311: Bad indentation" and make sure all
indentation is at multiples of 2 characters.
Change-Id: I68f0f64470789ce2429ab11104d15d380a63e6a8
diff --git a/.pylintrc b/.pylintrc
index 9f81ee1..72dccd7 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -53,7 +53,7 @@
enable=RP0004
# Disable the message(s) with the given id(s).
-disable=R0903,R0912,R0913,R0914,R0915,W0141,C0111,C0103,C0323,C0322,C0324,W0603,W0703,R0911,C0301,C0302,R0902,R0904,W0142,W0212,E1101,E1103,R0201,W0201,W0122,W0232,W0311,RP0001,RP0003,RP0101,RP0002,RP0401,RP0701,RP0801
+disable=R0903,R0912,R0913,R0914,R0915,W0141,C0111,C0103,C0323,C0322,C0324,W0603,W0703,R0911,C0301,C0302,R0902,R0904,W0142,W0212,E1101,E1103,R0201,W0201,W0122,W0232,RP0001,RP0003,RP0101,RP0002,RP0401,RP0701,RP0801
[REPORTS]
diff --git a/color.py b/color.py
index 33bc877..d856313 100644
--- a/color.py
+++ b/color.py
@@ -40,47 +40,47 @@
# backslash is not anomalous
def is_color(s):
- return s in COLORS
+ return s in COLORS
def is_attr(s):
- return s in ATTRS
+ return s in ATTRS
def _Color(fg = None, bg = None, attr = None):
- fg = COLORS[fg]
- bg = COLORS[bg]
- attr = ATTRS[attr]
+ fg = COLORS[fg]
+ bg = COLORS[bg]
+ attr = ATTRS[attr]
- if attr >= 0 or fg >= 0 or bg >= 0:
- need_sep = False
- code = "\033[" #pylint: disable=W1401
+ if attr >= 0 or fg >= 0 or bg >= 0:
+ need_sep = False
+ code = "\033[" #pylint: disable=W1401
- if attr >= 0:
- code += chr(ord('0') + attr)
- need_sep = True
+ if attr >= 0:
+ code += chr(ord('0') + attr)
+ need_sep = True
- if fg >= 0:
- if need_sep:
- code += ';'
- need_sep = True
+ if fg >= 0:
+ if need_sep:
+ code += ';'
+ need_sep = True
- if fg < 8:
- code += '3%c' % (ord('0') + fg)
- else:
- code += '38;5;%d' % fg
+ if fg < 8:
+ code += '3%c' % (ord('0') + fg)
+ else:
+ code += '38;5;%d' % fg
- if bg >= 0:
- if need_sep:
- code += ';'
- need_sep = True
+ if bg >= 0:
+ if need_sep:
+ code += ';'
+ need_sep = True
- if bg < 8:
- code += '4%c' % (ord('0') + bg)
- else:
- code += '48;5;%d' % bg
- code += 'm'
- else:
- code = ''
- return code
+ if bg < 8:
+ code += '4%c' % (ord('0') + bg)
+ else:
+ code += '48;5;%d' % bg
+ code += 'm'
+ else:
+ code = ''
+ return code
class Coloring(object):
diff --git a/git_config.py b/git_config.py
index 6bb9200..108438f 100644
--- a/git_config.py
+++ b/git_config.py
@@ -303,10 +303,10 @@
for line in d.rstrip('\0').split('\0'): # pylint: disable=W1401
# Backslash is not anomalous
if '\n' in line:
- key, val = line.split('\n', 1)
+ key, val = line.split('\n', 1)
else:
- key = line
- val = None
+ key = line
+ val = None
if key in c:
c[key].append(val)
diff --git a/main.py b/main.py
index 87e9c34..b525987 100755
--- a/main.py
+++ b/main.py
@@ -275,17 +275,17 @@
return req
def _AddPasswordFromUserInput(handler, msg, req):
- # If repo could not find auth info from netrc, try to get it from user input
- url = req.get_full_url()
- user, password = handler.passwd.find_user_password(None, url)
- if user is None:
- print(msg)
- try:
- user = raw_input('User: ')
- password = getpass.getpass()
- except KeyboardInterrupt:
- return
- handler.passwd.add_password(None, url, user, password)
+ # If repo could not find auth info from netrc, try to get it from user input
+ url = req.get_full_url()
+ user, password = handler.passwd.find_user_password(None, url)
+ if user is None:
+ print(msg)
+ try:
+ user = raw_input('User: ')
+ password = getpass.getpass()
+ except KeyboardInterrupt:
+ return
+ handler.passwd.add_password(None, url, user, password)
class _BasicAuthHandler(urllib.request.HTTPBasicAuthHandler):
def http_error_401(self, req, fp, code, msg, headers):
diff --git a/manifest_xml.py b/manifest_xml.py
index bb93bca..1b95456 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -67,7 +67,7 @@
# urljoin will get confused if there is no scheme in the base url
# ie, if manifestUrl is of the form <hostname:port>
if manifestUrl.find(':') != manifestUrl.find('/') - 1:
- manifestUrl = 'gopher://' + manifestUrl
+ manifestUrl = 'gopher://' + manifestUrl
url = urlparse.urljoin(manifestUrl, url)
return re.sub(r'^gopher://', '', url)
@@ -349,24 +349,24 @@
nodes = []
for node in manifest.childNodes: # pylint:disable=W0631
# We only get here if manifest is initialised
- if node.nodeName == 'include':
- name = self._reqatt(node, 'name')
- fp = os.path.join(include_root, name)
- if not os.path.isfile(fp):
- raise ManifestParseError, \
- "include %s doesn't exist or isn't a file" % \
- (name,)
- try:
- nodes.extend(self._ParseManifestXml(fp, include_root))
- # should isolate this to the exact exception, but that's
- # tricky. actual parsing implementation may vary.
- except (KeyboardInterrupt, RuntimeError, SystemExit):
- raise
- except Exception as e:
- raise ManifestParseError(
- "failed parsing included manifest %s: %s", (name, e))
- else:
- nodes.append(node)
+ if node.nodeName == 'include':
+ name = self._reqatt(node, 'name')
+ fp = os.path.join(include_root, name)
+ if not os.path.isfile(fp):
+ raise ManifestParseError, \
+ "include %s doesn't exist or isn't a file" % \
+ (name,)
+ try:
+ nodes.extend(self._ParseManifestXml(fp, include_root))
+ # should isolate this to the exact exception, but that's
+ # tricky. actual parsing implementation may vary.
+ except (KeyboardInterrupt, RuntimeError, SystemExit):
+ raise
+ except Exception as e:
+ raise ManifestParseError(
+ "failed parsing included manifest %s: %s", (name, e))
+ else:
+ nodes.append(node)
return nodes
def _ParseManifest(self, node_list):
@@ -404,9 +404,9 @@
if node.nodeName == 'manifest-server':
url = self._reqatt(node, 'url')
if self._manifest_server is not None:
- raise ManifestParseError(
- 'duplicate manifest-server in %s' %
- (self.manifestFile))
+ raise ManifestParseError(
+ 'duplicate manifest-server in %s' %
+ (self.manifestFile))
self._manifest_server = url
for node in itertools.chain(*node_list):
diff --git a/project.py b/project.py
index 22ac9ef..6507241 100644
--- a/project.py
+++ b/project.py
@@ -585,14 +585,14 @@
return self._userident_email
def _LoadUserIdentity(self):
- u = self.bare_git.var('GIT_COMMITTER_IDENT')
- m = re.compile("^(.*) <([^>]*)> ").match(u)
- if m:
- self._userident_name = m.group(1)
- self._userident_email = m.group(2)
- else:
- self._userident_name = ''
- self._userident_email = ''
+ u = self.bare_git.var('GIT_COMMITTER_IDENT')
+ m = re.compile("^(.*) <([^>]*)> ").match(u)
+ if m:
+ self._userident_name = m.group(1)
+ self._userident_email = m.group(2)
+ else:
+ self._userident_name = ''
+ self._userident_email = ''
def GetRemote(self, name):
"""Get the configuration for a single remote.
@@ -1381,14 +1381,14 @@
tag_name = None
def CheckForSha1():
- try:
- # if revision (sha or tag) is not present then following function
- # throws an error.
- self.bare_git.rev_parse('--verify', '%s^0' % self.revisionExpr)
- return True
- except GitError:
- # There is no such persistent revision. We have to fetch it.
- return False
+ try:
+ # if revision (sha or tag) is not present then following function
+ # throws an error.
+ self.bare_git.rev_parse('--verify', '%s^0' % self.revisionExpr)
+ return True
+ except GitError:
+ # There is no such persistent revision. We have to fetch it.
+ return False
if current_branch_only:
if ID_RE.match(self.revisionExpr) is not None:
diff --git a/subcmds/sync.py b/subcmds/sync.py
index a64f2c4..df64ab0 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -197,62 +197,62 @@
help=SUPPRESS_HELP)
def _FetchHelper(self, opt, project, lock, fetched, pm, sem, err_event):
- """Main function of the fetch threads when jobs are > 1.
+ """Main function of the fetch threads when jobs are > 1.
- Args:
- opt: Program options returned from optparse. See _Options().
- project: Project object for the project to fetch.
- lock: Lock for accessing objects that are shared amongst multiple
- _FetchHelper() threads.
- fetched: set object that we will add project.gitdir to when we're done
- (with our lock held).
- pm: Instance of a Project object. We will call pm.update() (with our
- lock held).
- sem: We'll release() this semaphore when we exit so that another thread
- can be started up.
- err_event: We'll set this event in the case of an error (after printing
- out info about the error).
- """
- # We'll set to true once we've locked the lock.
- did_lock = False
+ Args:
+ opt: Program options returned from optparse. See _Options().
+ project: Project object for the project to fetch.
+ lock: Lock for accessing objects that are shared amongst multiple
+ _FetchHelper() threads.
+ fetched: set object that we will add project.gitdir to when we're done
+ (with our lock held).
+ pm: Instance of a Project object. We will call pm.update() (with our
+ lock held).
+ sem: We'll release() this semaphore when we exit so that another thread
+ can be started up.
+ err_event: We'll set this event in the case of an error (after printing
+ out info about the error).
+ """
+ # We'll set to true once we've locked the lock.
+ did_lock = False
- # Encapsulate everything in a try/except/finally so that:
- # - We always set err_event in the case of an exception.
- # - We always make sure we call sem.release().
- # - We always make sure we unlock the lock if we locked it.
+ # Encapsulate everything in a try/except/finally so that:
+ # - We always set err_event in the case of an exception.
+ # - We always make sure we call sem.release().
+ # - We always make sure we unlock the lock if we locked it.
+ try:
try:
- try:
- start = time.time()
- success = project.Sync_NetworkHalf(
- quiet=opt.quiet,
- current_branch_only=opt.current_branch_only,
- clone_bundle=not opt.no_clone_bundle)
- self._fetch_times.Set(project, time.time() - start)
+ start = time.time()
+ success = project.Sync_NetworkHalf(
+ quiet=opt.quiet,
+ current_branch_only=opt.current_branch_only,
+ clone_bundle=not opt.no_clone_bundle)
+ self._fetch_times.Set(project, time.time() - start)
- # Lock around all the rest of the code, since printing, updating a set
- # and Progress.update() are not thread safe.
- lock.acquire()
- did_lock = True
+ # Lock around all the rest of the code, since printing, updating a set
+ # and Progress.update() are not thread safe.
+ lock.acquire()
+ did_lock = True
- if not success:
- print('error: Cannot fetch %s' % project.name, file=sys.stderr)
- if opt.force_broken:
- print('warn: --force-broken, continuing to sync',
- file=sys.stderr)
- else:
- raise _FetchError()
+ if not success:
+ print('error: Cannot fetch %s' % project.name, file=sys.stderr)
+ if opt.force_broken:
+ print('warn: --force-broken, continuing to sync',
+ file=sys.stderr)
+ else:
+ raise _FetchError()
- fetched.add(project.gitdir)
- pm.update()
- except _FetchError:
- err_event.set()
- except:
- err_event.set()
- raise
- finally:
- if did_lock:
- lock.release()
- sem.release()
+ fetched.add(project.gitdir)
+ pm.update()
+ except _FetchError:
+ err_event.set()
+ except:
+ err_event.set()
+ raise
+ finally:
+ if did_lock:
+ lock.release()
+ sem.release()
def _Fetch(self, projects, opt):
fetched = set()
@@ -379,36 +379,36 @@
if path not in new_project_paths:
# If the path has already been deleted, we don't need to do it
if os.path.exists(self.manifest.topdir + '/' + path):
- project = Project(
- manifest = self.manifest,
- name = path,
- remote = RemoteSpec('origin'),
- gitdir = os.path.join(self.manifest.topdir,
- path, '.git'),
- worktree = os.path.join(self.manifest.topdir, path),
- relpath = path,
- revisionExpr = 'HEAD',
- revisionId = None,
- groups = None)
+ project = Project(
+ manifest = self.manifest,
+ name = path,
+ remote = RemoteSpec('origin'),
+ gitdir = os.path.join(self.manifest.topdir,
+ path, '.git'),
+ worktree = os.path.join(self.manifest.topdir, path),
+ relpath = path,
+ revisionExpr = 'HEAD',
+ revisionId = None,
+ groups = None)
- if project.IsDirty():
- print('error: Cannot remove project "%s": uncommitted changes'
- 'are present' % project.relpath, file=sys.stderr)
- print(' commit changes, then run sync again',
- file=sys.stderr)
- return -1
- else:
- print('Deleting obsolete path %s' % project.worktree,
- file=sys.stderr)
- shutil.rmtree(project.worktree)
- # Try deleting parent subdirs if they are empty
- project_dir = os.path.dirname(project.worktree)
- while project_dir != self.manifest.topdir:
- try:
- os.rmdir(project_dir)
- except OSError:
- break
- project_dir = os.path.dirname(project_dir)
+ if project.IsDirty():
+ print('error: Cannot remove project "%s": uncommitted changes'
+ 'are present' % project.relpath, file=sys.stderr)
+ print(' commit changes, then run sync again',
+ file=sys.stderr)
+ return -1
+ else:
+ print('Deleting obsolete path %s' % project.worktree,
+ file=sys.stderr)
+ shutil.rmtree(project.worktree)
+ # Try deleting parent subdirs if they are empty
+ project_dir = os.path.dirname(project.worktree)
+ while project_dir != self.manifest.topdir:
+ try:
+ os.rmdir(project_dir)
+ except OSError:
+ break
+ project_dir = os.path.dirname(project_dir)
new_project_paths.sort()
fd = open(file_path, 'w')
diff --git a/subcmds/upload.py b/subcmds/upload.py
index a6ada33..219c509 100644
--- a/subcmds/upload.py
+++ b/subcmds/upload.py
@@ -312,23 +312,23 @@
# Check if there are local changes that may have been forgotten
if branch.project.HasChanges():
- key = 'review.%s.autoupload' % branch.project.remote.review
- answer = branch.project.config.GetBoolean(key)
+ key = 'review.%s.autoupload' % branch.project.remote.review
+ answer = branch.project.config.GetBoolean(key)
- # if they want to auto upload, let's not ask because it could be automated
- if answer is None:
- sys.stdout.write('Uncommitted changes in ' + branch.project.name + ' (did you forget to amend?). Continue uploading? (y/N) ')
- a = sys.stdin.readline().strip().lower()
- if a not in ('y', 'yes', 't', 'true', 'on'):
- print("skipping upload", file=sys.stderr)
- branch.uploaded = False
- branch.error = 'User aborted'
- continue
+ # if they want to auto upload, let's not ask because it could be automated
+ if answer is None:
+ sys.stdout.write('Uncommitted changes in ' + branch.project.name + ' (did you forget to amend?). Continue uploading? (y/N) ')
+ a = sys.stdin.readline().strip().lower()
+ if a not in ('y', 'yes', 't', 'true', 'on'):
+ print("skipping upload", file=sys.stderr)
+ branch.uploaded = False
+ branch.error = 'User aborted'
+ continue
# Check if topic branches should be sent to the server during upload
if opt.auto_topic is not True:
- key = 'review.%s.uploadtopic' % branch.project.remote.review
- opt.auto_topic = branch.project.config.GetBoolean(key)
+ key = 'review.%s.uploadtopic' % branch.project.remote.review
+ opt.auto_topic = branch.project.config.GetBoolean(key)
branch.UploadForReview(people, auto_topic=opt.auto_topic, draft=opt.draft)
branch.uploaded = True
@@ -355,11 +355,11 @@
print()
for branch in todo:
- if branch.uploaded:
- print('[OK ] %-15s %s' % (
- branch.project.relpath + '/',
- branch.name),
- file=sys.stderr)
+ if branch.uploaded:
+ print('[OK ] %-15s %s' % (
+ branch.project.relpath + '/',
+ branch.name),
+ file=sys.stderr)
if have_errors:
sys.exit(1)
diff --git a/tests/test_git_config.py b/tests/test_git_config.py
index 5b1770e..3d4b997 100644
--- a/tests/test_git_config.py
+++ b/tests/test_git_config.py
@@ -4,49 +4,49 @@
import git_config
def fixture(*paths):
- """Return a path relative to test/fixtures.
- """
- return os.path.join(os.path.dirname(__file__), 'fixtures', *paths)
+ """Return a path relative to test/fixtures.
+ """
+ return os.path.join(os.path.dirname(__file__), 'fixtures', *paths)
class GitConfigUnitTest(unittest.TestCase):
- """Tests the GitConfig class.
+ """Tests the GitConfig class.
+ """
+ def setUp(self):
+ """Create a GitConfig object using the test.gitconfig fixture.
"""
- def setUp(self):
- """Create a GitConfig object using the test.gitconfig fixture.
- """
- config_fixture = fixture('test.gitconfig')
- self.config = git_config.GitConfig(config_fixture)
+ config_fixture = fixture('test.gitconfig')
+ self.config = git_config.GitConfig(config_fixture)
- def test_GetString_with_empty_config_values(self):
- """
- Test config entries with no value.
+ def test_GetString_with_empty_config_values(self):
+ """
+ Test config entries with no value.
- [section]
- empty
+ [section]
+ empty
- """
- val = self.config.GetString('section.empty')
- self.assertEqual(val, None)
+ """
+ val = self.config.GetString('section.empty')
+ self.assertEqual(val, None)
- def test_GetString_with_true_value(self):
- """
- Test config entries with a string value.
+ def test_GetString_with_true_value(self):
+ """
+ Test config entries with a string value.
- [section]
- nonempty = true
+ [section]
+ nonempty = true
- """
- val = self.config.GetString('section.nonempty')
- self.assertEqual(val, 'true')
+ """
+ val = self.config.GetString('section.nonempty')
+ self.assertEqual(val, 'true')
- def test_GetString_from_missing_file(self):
- """
- Test missing config file
- """
- config_fixture = fixture('not.present.gitconfig')
- config = git_config.GitConfig(config_fixture)
- val = config.GetString('empty')
- self.assertEqual(val, None)
+ def test_GetString_from_missing_file(self):
+ """
+ Test missing config file
+ """
+ config_fixture = fixture('not.present.gitconfig')
+ config = git_config.GitConfig(config_fixture)
+ val = config.GetString('empty')
+ self.assertEqual(val, None)
if __name__ == '__main__':
- unittest.main()
+ unittest.main()