Change print statements to work in python3
This is part of a series of changes to introduce Python3 support.
Change-Id: I373be5de7141aa127d7debdbce1df39148dbec32
diff --git a/editor.py b/editor.py
index 489c6cd..883a1a8 100644
--- a/editor.py
+++ b/editor.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import os
import re
import sys
@@ -53,10 +54,10 @@
return e
if os.getenv('TERM') == 'dumb':
- print >>sys.stderr,\
+ print(
"""No editor specified in GIT_EDITOR, core.editor, VISUAL or EDITOR.
Tried to fall back to vi but terminal is dumb. Please configure at
-least one of these before using this command."""
+least one of these before using this command.""", file=sys.stderr)
sys.exit(1)
return 'vi'
@@ -67,7 +68,7 @@
Args:
data : the text to edit
-
+
Returns:
new value of edited text; None if editing did not succeed
"""
diff --git a/git_command.py b/git_command.py
index e5e28f3..d347dd6 100644
--- a/git_command.py
+++ b/git_command.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import os
import sys
import subprocess
@@ -92,7 +93,7 @@
ver_str[len('git version '):].strip().split('-')[0].split('.')[0:3]
))
else:
- print >>sys.stderr, 'fatal: "%s" unsupported' % ver_str
+ print('fatal: "%s" unsupported' % ver_str, file=sys.stderr)
sys.exit(1)
return _git_version
@@ -111,7 +112,7 @@
return True
if fail:
need = '.'.join(map(str, min_version))
- print >>sys.stderr, 'fatal: git %s or later required' % need
+ print('fatal: git %s or later required' % need, file=sys.stderr)
sys.exit(1)
return False
diff --git a/git_config.py b/git_config.py
index f60893e..6bb9200 100644
--- a/git_config.py
+++ b/git_config.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import cPickle
import os
import re
@@ -463,9 +464,8 @@
p = subprocess.Popen(command)
except Exception as e:
_ssh_master = False
- print >>sys.stderr, \
- '\nwarn: cannot enable ssh control master for %s:%s\n%s' \
- % (host,port, str(e))
+ print('\nwarn: cannot enable ssh control master for %s:%s\n%s'
+ % (host,port, str(e)), file=sys.stderr)
return False
_master_processes.append(p)
diff --git a/main.py b/main.py
index 9fbccfb..87e9c34 100755
--- a/main.py
+++ b/main.py
@@ -14,6 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import getpass
import imp
import netrc
@@ -98,15 +99,14 @@
if name == 'help':
name = 'version'
else:
- print >>sys.stderr, 'fatal: invalid usage of --version'
+ print('fatal: invalid usage of --version', file=sys.stderr)
return 1
try:
cmd = self.commands[name]
except KeyError:
- print >>sys.stderr,\
- "repo: '%s' is not a repo command. See 'repo help'."\
- % name
+ print("repo: '%s' is not a repo command. See 'repo help'." % name,
+ file=sys.stderr)
return 1
cmd.repodir = self.repodir
@@ -114,9 +114,8 @@
Editor.globalConfig = cmd.manifest.globalConfig
if not isinstance(cmd, MirrorSafeCommand) and cmd.manifest.IsMirror:
- print >>sys.stderr, \
- "fatal: '%s' requires a working directory"\
- % name
+ print("fatal: '%s' requires a working directory" % name,
+ file=sys.stderr)
return 1
copts, cargs = cmd.OptionParser.parse_args(argv)
@@ -142,22 +141,21 @@
minutes, seconds = divmod(remainder, 60)
if gopts.time:
if hours == 0:
- print >>sys.stderr, 'real\t%dm%.3fs' \
- % (minutes, seconds)
+ print('real\t%dm%.3fs' % (minutes, seconds), file=sys.stderr)
else:
- print >>sys.stderr, 'real\t%dh%dm%.3fs' \
- % (hours, minutes, seconds)
+ print('real\t%dh%dm%.3fs' % (hours, minutes, seconds),
+ file=sys.stderr)
except DownloadError as e:
- print >>sys.stderr, 'error: %s' % str(e)
+ print('error: %s' % str(e), file=sys.stderr)
return 1
except ManifestInvalidRevisionError as e:
- print >>sys.stderr, 'error: %s' % str(e)
+ print('error: %s' % str(e), file=sys.stderr)
return 1
except NoSuchProjectError as e:
if e.name:
- print >>sys.stderr, 'error: project %s not found' % e.name
+ print('error: project %s not found' % e.name, file=sys.stderr)
else:
- print >>sys.stderr, 'error: no project in current directory'
+ print('error: no project in current directory', file=sys.stderr)
return 1
return result
@@ -183,7 +181,7 @@
repo_path = '~/bin/repo'
if not ver:
- print >>sys.stderr, 'no --wrapper-version argument'
+ print('no --wrapper-version argument', file=sys.stderr)
sys.exit(1)
exp = _CurrentWrapperVersion()
@@ -193,25 +191,25 @@
exp_str = '.'.join(map(str, exp))
if exp[0] > ver[0] or ver < (0, 4):
- print >>sys.stderr, """
+ print("""
!!! A new repo command (%5s) is available. !!!
!!! You must upgrade before you can continue: !!!
cp %s %s
-""" % (exp_str, _MyWrapperPath(), repo_path)
+""" % (exp_str, _MyWrapperPath(), repo_path), file=sys.stderr)
sys.exit(1)
if exp > ver:
- print >>sys.stderr, """
+ print("""
... A new repo command (%5s) is available.
... You should upgrade soon:
cp %s %s
-""" % (exp_str, _MyWrapperPath(), repo_path)
+""" % (exp_str, _MyWrapperPath(), repo_path), file=sys.stderr)
def _CheckRepoDir(repo_dir):
if not repo_dir:
- print >>sys.stderr, 'no --repo-dir argument'
+ print('no --repo-dir argument', file=sys.stderr)
sys.exit(1)
def _PruneOptions(argv, opt):
@@ -281,7 +279,7 @@
url = req.get_full_url()
user, password = handler.passwd.find_user_password(None, url)
if user is None:
- print msg
+ print(msg)
try:
user = raw_input('User: ')
password = getpass.getpass()
@@ -388,10 +386,10 @@
finally:
close_ssh()
except KeyboardInterrupt:
- print >>sys.stderr, 'aborted by user'
+ print('aborted by user', file=sys.stderr)
result = 1
except ManifestParseError as mpe:
- print >>sys.stderr, 'fatal: %s' % mpe
+ print('fatal: %s' % mpe, file=sys.stderr)
result = 1
except RepoChangedException as rce:
# If repo changed, re-exec ourselves.
@@ -401,8 +399,8 @@
try:
os.execv(__file__, argv)
except OSError as e:
- print >>sys.stderr, 'fatal: cannot restart repo after upgrade'
- print >>sys.stderr, 'fatal: %s' % e
+ print('fatal: cannot restart repo after upgrade', file=sys.stderr)
+ print('fatal: %s' % e, file=sys.stderr)
result = 128
sys.exit(result)
diff --git a/manifest_xml.py b/manifest_xml.py
index 3198724..bb93bca 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import itertools
import os
import re
@@ -306,8 +307,9 @@
local = os.path.join(self.repodir, LOCAL_MANIFEST_NAME)
if os.path.exists(local):
- print >>sys.stderr, 'warning: %s is deprecated; put local manifests in %s instead' % \
- (LOCAL_MANIFEST_NAME, LOCAL_MANIFESTS_DIR_NAME)
+ print('warning: %s is deprecated; put local manifests in %s instead'
+ % (LOCAL_MANIFEST_NAME, LOCAL_MANIFESTS_DIR_NAME),
+ file=sys.stderr)
nodes.append(self._ParseManifestXml(local, self.repodir))
local_dir = os.path.abspath(os.path.join(self.repodir, LOCAL_MANIFESTS_DIR_NAME))
@@ -317,7 +319,7 @@
try:
nodes.append(self._ParseManifestXml(local_file, self.repodir))
except ManifestParseError as e:
- print >>sys.stderr, '%s' % str(e)
+ print('%s' % str(e), file=sys.stderr)
except OSError:
pass
diff --git a/pager.py b/pager.py
index 888b108..c621141 100755
--- a/pager.py
+++ b/pager.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import os
import select
import sys
@@ -49,7 +50,7 @@
_BecomePager(pager)
except Exception:
- print >>sys.stderr, "fatal: cannot start pager '%s'" % pager
+ print("fatal: cannot start pager '%s'" % pager, file=sys.stderr)
sys.exit(255)
def _SelectPager(globalConfig):
diff --git a/project.py b/project.py
index f72b1c8..20a8dca 100644
--- a/project.py
+++ b/project.py
@@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import traceback
import errno
import filecmp
@@ -50,7 +51,7 @@
def _error(fmt, *args):
msg = fmt % args
- print >>sys.stderr, 'error: %s' % msg
+ print('error: %s' % msg, file=sys.stderr)
def not_rev(r):
return '^' + r
@@ -683,9 +684,9 @@
if not os.path.isdir(self.worktree):
if output_redir == None:
output_redir = sys.stdout
- print >>output_redir, ''
- print >>output_redir, 'project %s/' % self.relpath
- print >>output_redir, ' missing (run "repo sync")'
+ print(file=output_redir)
+ print('project %s/' % self.relpath, file=output_redir)
+ print(' missing (run "repo sync")', file=output_redir)
return
self.work_git.update_index('-q',
@@ -785,7 +786,7 @@
out.project('project %s/' % self.relpath)
out.nl()
has_diff = True
- print line[:-1]
+ print(line[:-1])
p.Wait()
@@ -1586,7 +1587,8 @@
# returned another error with the HTTP error code being 400 or above.
# This return code only appears if -f, --fail is used.
if not quiet:
- print >> sys.stderr, "Server does not provide clone.bundle; ignoring."
+ print("Server does not provide clone.bundle; ignoring.",
+ file=sys.stderr)
return False
if os.path.exists(tmpPath):
diff --git a/repo b/repo
index e06a5d5..9fcfc1b 100755
--- a/repo
+++ b/repo
@@ -2,6 +2,7 @@
## repo default configuration
##
+from __future__ import print_function
REPO_URL='https://gerrit.googlesource.com/git-repo'
REPO_REV='stable'
@@ -215,16 +216,15 @@
if branch.startswith('refs/heads/'):
branch = branch[len('refs/heads/'):]
if branch.startswith('refs/'):
- print >>sys.stderr, "fatal: invalid branch name '%s'" % branch
+ print("fatal: invalid branch name '%s'" % branch, file=sys.stderr)
raise CloneFailure()
if not os.path.isdir(repodir):
try:
os.mkdir(repodir)
except OSError as e:
- print >>sys.stderr, \
- 'fatal: cannot make %s directory: %s' % (
- repodir, e.strerror)
+ print('fatal: cannot make %s directory: %s'
+ % (repodir, e.strerror), file=sys.stderr)
# Don't faise CloneFailure; that would delete the
# name. Instead exit immediately.
#
@@ -248,8 +248,8 @@
_Checkout(dst, branch, rev, opt.quiet)
except CloneFailure:
if opt.quiet:
- print >>sys.stderr, \
- 'fatal: repo init failed; run without --quiet to see why'
+ print('fatal: repo init failed; run without --quiet to see why',
+ file=sys.stderr)
raise
@@ -258,12 +258,12 @@
try:
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
except OSError as e:
- print >>sys.stderr
- print >>sys.stderr, "fatal: '%s' is not available" % GIT
- print >>sys.stderr, 'fatal: %s' % e
- print >>sys.stderr
- print >>sys.stderr, 'Please make sure %s is installed'\
- ' and in your path.' % GIT
+ print(file=sys.stderr)
+ print("fatal: '%s' is not available" % GIT, file=sys.stderr)
+ print('fatal: %s' % e, file=sys.stderr)
+ print(file=sys.stderr)
+ print('Please make sure %s is installed and in your path.' % GIT,
+ file=sys.stderr)
raise CloneFailure()
ver_str = proc.stdout.read().strip()
@@ -271,14 +271,14 @@
proc.wait()
if not ver_str.startswith('git version '):
- print >>sys.stderr, 'error: "%s" unsupported' % ver_str
+ print('error: "%s" unsupported' % ver_str, file=sys.stderr)
raise CloneFailure()
ver_str = ver_str[len('git version '):].strip()
ver_act = tuple(map(int, ver_str.split('.')[0:3]))
if ver_act < MIN_GIT_VERSION:
need = '.'.join(map(str, MIN_GIT_VERSION))
- print >>sys.stderr, 'fatal: git %s or later required' % need
+ print('fatal: git %s or later required' % need, file=sys.stderr)
raise CloneFailure()
@@ -305,18 +305,16 @@
try:
os.mkdir(home_dot_repo)
except OSError as e:
- print >>sys.stderr, \
- 'fatal: cannot make %s directory: %s' % (
- home_dot_repo, e.strerror)
+ print('fatal: cannot make %s directory: %s'
+ % (home_dot_repo, e.strerror), file=sys.stderr)
sys.exit(1)
if not os.path.isdir(gpg_dir):
try:
os.mkdir(gpg_dir, stat.S_IRWXU)
except OSError as e:
- print >>sys.stderr, \
- 'fatal: cannot make %s directory: %s' % (
- gpg_dir, e.strerror)
+ print('fatal: cannot make %s directory: %s' % (gpg_dir, e.strerror),
+ file=sys.stderr)
sys.exit(1)
env = os.environ.copy()
@@ -329,16 +327,16 @@
stdin = subprocess.PIPE)
except OSError as e:
if not quiet:
- print >>sys.stderr, 'warning: gpg (GnuPG) is not available.'
- print >>sys.stderr, 'warning: Installing it is strongly encouraged.'
- print >>sys.stderr
+ print('warning: gpg (GnuPG) is not available.', file=sys.stderr)
+ print('warning: Installing it is strongly encouraged.', file=sys.stderr)
+ print(file=sys.stderr)
return False
proc.stdin.write(MAINTAINER_KEYS)
proc.stdin.close()
if proc.wait() != 0:
- print >>sys.stderr, 'fatal: registering repo maintainer keys failed'
+ print('fatal: registering repo maintainer keys failed', file=sys.stderr)
sys.exit(1)
print
@@ -382,7 +380,7 @@
def _Fetch(url, local, src, quiet):
if not quiet:
- print >>sys.stderr, 'Get %s' % url
+ print('Get %s' % url, file=sys.stderr)
cmd = [GIT, 'fetch']
if quiet:
@@ -431,16 +429,16 @@
except urllib.error.HTTPError as e:
if e.code == 404:
return False
- print >>sys.stderr, 'fatal: Cannot get %s' % url
- print >>sys.stderr, 'fatal: HTTP error %s' % e.code
+ print('fatal: Cannot get %s' % url, file=sys.stderr)
+ print('fatal: HTTP error %s' % e.code, file=sys.stderr)
raise CloneFailure()
except urllib.error.URLError as e:
- print >>sys.stderr, 'fatal: Cannot get %s' % url
- print >>sys.stderr, 'fatal: error %s' % e.reason
+ print('fatal: Cannot get %s' % url, file=sys.stderr)
+ print('fatal: error %s' % e.reason, file=sys.stderr)
raise CloneFailure()
try:
if not quiet:
- print >>sys.stderr, 'Get %s' % url
+ print('Get %s' % url, file=sys.stderr)
while True:
buf = r.read(8192)
if buf == '':
@@ -464,24 +462,23 @@
try:
os.mkdir(local)
except OSError as e:
- print >>sys.stderr, \
- 'fatal: cannot make %s directory: %s' \
- % (local, e.strerror)
+ print('fatal: cannot make %s directory: %s' % (local, e.strerror),
+ file=sys.stderr)
raise CloneFailure()
cmd = [GIT, 'init', '--quiet']
try:
proc = subprocess.Popen(cmd, cwd = local)
except OSError as e:
- print >>sys.stderr
- print >>sys.stderr, "fatal: '%s' is not available" % GIT
- print >>sys.stderr, 'fatal: %s' % e
- print >>sys.stderr
- print >>sys.stderr, 'Please make sure %s is installed'\
- ' and in your path.' % GIT
+ print(file=sys.stderr)
+ print("fatal: '%s' is not available" % GIT, file=sys.stderr)
+ print('fatal: %s' % e, file=sys.stderr)
+ print(file=sys.stderr)
+ print('Please make sure %s is installed and in your path.' % GIT,
+ file=sys.stderr)
raise CloneFailure()
if proc.wait() != 0:
- print >>sys.stderr, 'fatal: could not create %s' % local
+ print('fatal: could not create %s' % local, file=sys.stderr)
raise CloneFailure()
_InitHttp()
@@ -509,21 +506,18 @@
proc.stderr.close()
if proc.wait() != 0 or not cur:
- print >>sys.stderr
- print >>sys.stderr,\
- "fatal: branch '%s' has not been signed" \
- % branch
+ print(file=sys.stderr)
+ print("fatal: branch '%s' has not been signed" % branch, file=sys.stderr)
raise CloneFailure()
m = re.compile(r'^(.*)-[0-9]{1,}-g[0-9a-f]{1,}$').match(cur)
if m:
cur = m.group(1)
if not quiet:
- print >>sys.stderr
- print >>sys.stderr, \
- "info: Ignoring branch '%s'; using tagged release '%s'" \
- % (branch, cur)
- print >>sys.stderr
+ print(file=sys.stderr)
+ print("info: Ignoring branch '%s'; using tagged release '%s'"
+ % (branch, cur), file=sys.stderr)
+ print(file=sys.stderr)
env = os.environ.copy()
env['GNUPGHOME'] = gpg_dir.encode()
@@ -541,10 +535,10 @@
proc.stderr.close()
if proc.wait() != 0:
- print >>sys.stderr
- print >>sys.stderr, out
- print >>sys.stderr, err
- print >>sys.stderr
+ print(file=sys.stderr)
+ print(out, file=sys.stderr)
+ print(err, file=sys.stderr)
+ print(file=sys.stderr)
raise CloneFailure()
return '%s^0' % cur
@@ -611,7 +605,7 @@
def _Usage():
- print >>sys.stderr,\
+ print(
"""usage: repo COMMAND [ARGS]
repo is not yet installed. Use "repo init" to install it here.
@@ -622,7 +616,7 @@
help Display detailed help on a command
For access to the full online help, install repo ("repo init").
-"""
+""", file=sys.stderr)
sys.exit(1)
@@ -632,25 +626,23 @@
init_optparse.print_help()
sys.exit(0)
else:
- print >>sys.stderr,\
- "error: '%s' is not a bootstrap command.\n"\
- ' For access to online help, install repo ("repo init").'\
- % args[0]
+ print("error: '%s' is not a bootstrap command.\n"
+ ' For access to online help, install repo ("repo init").'
+ % args[0], file=sys.stderr)
else:
_Usage()
sys.exit(1)
def _NotInstalled():
- print >>sys.stderr,\
-'error: repo is not installed. Use "repo init" to install it here.'
+ print('error: repo is not installed. Use "repo init" to install it here.',
+ file=sys.stderr)
sys.exit(1)
def _NoCommands(cmd):
- print >>sys.stderr,\
-"""error: command '%s' requires repo to be installed first.
- Use "repo init" to install it here.""" % cmd
+ print("""error: command '%s' requires repo to be installed first.
+ Use "repo init" to install it here.""" % cmd, file=sys.stderr)
sys.exit(1)
@@ -687,7 +679,7 @@
proc.stderr.close()
if proc.wait() != 0:
- print >>sys.stderr, 'fatal: %s has no current branch' % gitdir
+ print('fatal: %s has no current branch' % gitdir, file=sys.stderr)
sys.exit(1)
@@ -736,8 +728,8 @@
try:
os.execv(repo_main, me)
except OSError as e:
- print >>sys.stderr, "fatal: unable to start %s" % repo_main
- print >>sys.stderr, "fatal: %s" % e
+ print("fatal: unable to start %s" % repo_main, file=sys.stderr)
+ print("fatal: %s" % e, file=sys.stderr)
sys.exit(148)
diff --git a/subcmds/abandon.py b/subcmds/abandon.py
index e17ab2b..b94ccdd 100644
--- a/subcmds/abandon.py
+++ b/subcmds/abandon.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import sys
from command import Command
from git_command import git
@@ -36,7 +37,7 @@
nb = args[0]
if not git.check_ref_format('heads/%s' % nb):
- print >>sys.stderr, "error: '%s' is not a valid name" % nb
+ print("error: '%s' is not a valid name" % nb, file=sys.stderr)
sys.exit(1)
nb = args[0]
@@ -58,13 +59,13 @@
if err:
for p in err:
- print >>sys.stderr,\
- "error: %s/: cannot abandon %s" \
- % (p.relpath, nb)
+ print("error: %s/: cannot abandon %s" % (p.relpath, nb),
+ file=sys.stderr)
sys.exit(1)
elif not success:
- print >>sys.stderr, 'error: no project has branch %s' % nb
+ print('error: no project has branch %s' % nb, file=sys.stderr)
sys.exit(1)
else:
- print >>sys.stderr, 'Abandoned in %d project(s):\n %s' % (
- len(success), '\n '.join(p.relpath for p in success))
+ print('Abandoned in %d project(s):\n %s'
+ % (len(success), '\n '.join(p.relpath for p in success)),
+ file=sys.stderr)
diff --git a/subcmds/branches.py b/subcmds/branches.py
index a7ba3d6..06d45ab 100644
--- a/subcmds/branches.py
+++ b/subcmds/branches.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import sys
from color import Coloring
from command import Command
@@ -107,7 +108,7 @@
names.sort()
if not names:
- print >>sys.stderr, ' (no branches)'
+ print(' (no branches)', file=sys.stderr)
return
width = 25
diff --git a/subcmds/checkout.py b/subcmds/checkout.py
index bfbe992..cbbca10 100644
--- a/subcmds/checkout.py
+++ b/subcmds/checkout.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import sys
from command import Command
from progress import Progress
@@ -55,10 +56,9 @@
if err:
for p in err:
- print >>sys.stderr,\
- "error: %s/: cannot checkout %s" \
- % (p.relpath, nb)
+ print("error: %s/: cannot checkout %s" % (p.relpath, nb),
+ file=sys.stderr)
sys.exit(1)
elif not success:
- print >>sys.stderr, 'error: no project has branch %s' % nb
+ print('error: no project has branch %s' % nb, file=sys.stderr)
sys.exit(1)
diff --git a/subcmds/cherry_pick.py b/subcmds/cherry_pick.py
index 7a6d4c2..0cefec1 100644
--- a/subcmds/cherry_pick.py
+++ b/subcmds/cherry_pick.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import re
import sys
from command import Command
@@ -46,13 +47,13 @@
capture_stdout = True,
capture_stderr = True)
if p.Wait() != 0:
- print >>sys.stderr, p.stderr
+ print(p.stderr, file=sys.stderr)
sys.exit(1)
sha1 = p.stdout.strip()
p = GitCommand(None, ['cat-file', 'commit', sha1], capture_stdout=True)
if p.Wait() != 0:
- print >>sys.stderr, "error: Failed to retrieve old commit message"
+ print("error: Failed to retrieve old commit message", file=sys.stderr)
sys.exit(1)
old_msg = self._StripHeader(p.stdout)
@@ -62,8 +63,8 @@
capture_stderr = True)
status = p.Wait()
- print >>sys.stdout, p.stdout
- print >>sys.stderr, p.stderr
+ print(p.stdout, file=sys.stdout)
+ print(p.stderr, file=sys.stderr)
if status == 0:
# The cherry-pick was applied correctly. We just need to edit the
@@ -76,16 +77,14 @@
capture_stderr = True)
p.stdin.write(new_msg)
if p.Wait() != 0:
- print >>sys.stderr, "error: Failed to update commit message"
+ print("error: Failed to update commit message", file=sys.stderr)
sys.exit(1)
else:
- print >>sys.stderr, """\
-NOTE: When committing (please see above) and editing the commit message,
-please remove the old Change-Id-line and add:
-"""
- print >>sys.stderr, self._GetReference(sha1)
- print >>sys.stderr
+ print('NOTE: When committing (please see above) and editing the commit'
+ 'message, please remove the old Change-Id-line and add:')
+ print(self._GetReference(sha1), file=stderr)
+ print(file=stderr)
def _IsChangeId(self, line):
return CHANGE_ID_RE.match(line)
diff --git a/subcmds/download.py b/subcmds/download.py
index 0abe90d..6aa54af 100644
--- a/subcmds/download.py
+++ b/subcmds/download.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import re
import sys
@@ -68,23 +69,23 @@
for project, change_id, ps_id in self._ParseChangeIds(args):
dl = project.DownloadPatchSet(change_id, ps_id)
if not dl:
- print >>sys.stderr, \
- '[%s] change %d/%d not found' \
- % (project.name, change_id, ps_id)
+ print('[%s] change %d/%d not found'
+ % (project.name, change_id, ps_id),
+ file=sys.stderr)
sys.exit(1)
if not opt.revert and not dl.commits:
- print >>sys.stderr, \
- '[%s] change %d/%d has already been merged' \
- % (project.name, change_id, ps_id)
+ print('[%s] change %d/%d has already been merged'
+ % (project.name, change_id, ps_id),
+ file=sys.stderr)
continue
if len(dl.commits) > 1:
- print >>sys.stderr, \
- '[%s] %d/%d depends on %d unmerged changes:' \
- % (project.name, change_id, ps_id, len(dl.commits))
+ print('[%s] %d/%d depends on %d unmerged changes:' \
+ % (project.name, change_id, ps_id, len(dl.commits)),
+ file=sys.stderr)
for c in dl.commits:
- print >>sys.stderr, ' %s' % (c)
+ print(' %s' % (c), file=sys.stderr)
if opt.cherrypick:
project._CherryPick(dl.commit)
elif opt.revert:
diff --git a/subcmds/forall.py b/subcmds/forall.py
index b633b7d..49e725c 100644
--- a/subcmds/forall.py
+++ b/subcmds/forall.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import fcntl
import re
import os
@@ -183,7 +184,7 @@
if not os.path.exists(cwd):
if (opt.project_header and opt.verbose) \
or not opt.project_header:
- print >>sys.stderr, 'skipping %s/' % project.relpath
+ print('skipping %s/' % project.relpath, file=sys.stderr)
continue
if opt.project_header:
diff --git a/subcmds/grep.py b/subcmds/grep.py
index b067629..fa5f876 100644
--- a/subcmds/grep.py
+++ b/subcmds/grep.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import sys
from color import Coloring
from command import PagedCommand
@@ -178,8 +179,7 @@
have_rev = False
if opt.revision:
if '--cached' in cmd_argv:
- print >>sys.stderr,\
- 'fatal: cannot combine --cached and --revision'
+ print('fatal: cannot combine --cached and --revision', file=sys.stderr)
sys.exit(1)
have_rev = True
cmd_argv.extend(opt.revision)
@@ -230,13 +230,13 @@
out.nl()
else:
for line in r:
- print line
+ print(line)
if have_match:
sys.exit(0)
elif have_rev and bad_rev:
for r in opt.revision:
- print >>sys.stderr, "error: can't search revision %s" % r
+ print("error: can't search revision %s" % r, file=sys.stderr)
sys.exit(1)
else:
sys.exit(1)
diff --git a/subcmds/help.py b/subcmds/help.py
index 375d04d..57fb3cc 100644
--- a/subcmds/help.py
+++ b/subcmds/help.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import re
import sys
from formatter import AbstractFormatter, DumbWriter
@@ -31,10 +32,8 @@
"""
def _PrintAllCommands(self):
- print 'usage: repo COMMAND [ARGS]'
- print """
-The complete list of recognized repo commands are:
-"""
+ print('usage: repo COMMAND [ARGS]')
+ print('The complete list of recognized repo commands are:')
commandNames = self.commands.keys()
commandNames.sort()
@@ -49,17 +48,14 @@
summary = command.helpSummary.strip()
except AttributeError:
summary = ''
- print fmt % (name, summary)
- print """
-See 'repo help <command>' for more information on a specific command.
-"""
+ print(fmt % (name, summary))
+ print("See 'repo help <command>' for more information on a"
+ 'specific command.')
def _PrintCommonCommands(self):
- print 'usage: repo COMMAND [ARGS]'
- print """
-The most commonly used repo commands are:
-"""
- commandNames = [name
+ print('usage: repo COMMAND [ARGS]')
+ print('The most commonly used repo commands are:')
+ commandNames = [name
for name in self.commands.keys()
if self.commands[name].common]
commandNames.sort()
@@ -75,11 +71,10 @@
summary = command.helpSummary.strip()
except AttributeError:
summary = ''
- print fmt % (name, summary)
- print """
-See 'repo help <command>' for more information on a specific command.
-See 'repo help --all' for a complete list of recognized commands.
-"""
+ print(fmt % (name, summary))
+ print(
+"See 'repo help <command>' for more information on a specific command.\n"
+"See 'repo help --all' for a complete list of recognized commands.")
def _PrintCommandHelp(self, cmd):
class _Out(Coloring):
@@ -162,7 +157,7 @@
try:
cmd = self.commands[name]
except KeyError:
- print >>sys.stderr, "repo: '%s' is not a repo command." % name
+ print("repo: '%s' is not a repo command." % name, file=sys.stderr)
sys.exit(1)
cmd.manifest = self.manifest
diff --git a/subcmds/init.py b/subcmds/init.py
index 99007d6..7aaa7f1 100644
--- a/subcmds/init.py
+++ b/subcmds/init.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import os
import platform
import re
@@ -123,12 +124,12 @@
if is_new:
if not opt.manifest_url:
- print >>sys.stderr, 'fatal: manifest url (-u) is required.'
+ print('fatal: manifest url (-u) is required.', file=sys.stderr)
sys.exit(1)
if not opt.quiet:
- print >>sys.stderr, 'Get %s' \
- % GitConfig.ForUser().UrlInsteadOf(opt.manifest_url)
+ print('Get %s' % GitConfig.ForUser().UrlInsteadOf(opt.manifest_url),
+ file=sys.stderr)
m._InitGitDir()
if opt.manifest_branch:
@@ -159,7 +160,7 @@
elif opt.platform in all_platforms:
groups.extend(platformize(opt.platform))
elif opt.platform != 'none':
- print >>sys.stderr, 'fatal: invalid platform flag'
+ print('fatal: invalid platform flag', file=sys.stderr)
sys.exit(1)
groups = [x for x in groups if x]
@@ -175,12 +176,13 @@
if is_new:
m.config.SetString('repo.mirror', 'true')
else:
- print >>sys.stderr, 'fatal: --mirror not supported on existing client'
+ print('fatal: --mirror not supported on existing client',
+ file=sys.stderr)
sys.exit(1)
if not m.Sync_NetworkHalf(is_new=is_new):
r = m.GetRemote(m.remote.name)
- print >>sys.stderr, 'fatal: cannot obtain manifest %s' % r.url
+ print('fatal: cannot obtain manifest %s' % r.url, file=sys.stderr)
# Better delete the manifest git dir if we created it; otherwise next
# time (when user fixes problems) we won't go through the "is_new" logic.
@@ -197,19 +199,19 @@
if is_new or m.CurrentBranch is None:
if not m.StartBranch('default'):
- print >>sys.stderr, 'fatal: cannot create default in manifest'
+ print('fatal: cannot create default in manifest', file=sys.stderr)
sys.exit(1)
def _LinkManifest(self, name):
if not name:
- print >>sys.stderr, 'fatal: manifest name (-m) is required.'
+ print('fatal: manifest name (-m) is required.', file=sys.stderr)
sys.exit(1)
try:
self.manifest.Link(name)
except ManifestParseError as e:
- print >>sys.stderr, "fatal: manifest '%s' not available" % name
- print >>sys.stderr, 'fatal: %s' % str(e)
+ print("fatal: manifest '%s' not available" % name, file=sys.stderr)
+ print('fatal: %s' % str(e), file=sys.stderr)
sys.exit(1)
def _Prompt(self, prompt, value):
@@ -231,22 +233,22 @@
mp.config.SetString('user.name', gc.GetString('user.name'))
mp.config.SetString('user.email', gc.GetString('user.email'))
- print ''
- print 'Your identity is: %s <%s>' % (mp.config.GetString('user.name'),
- mp.config.GetString('user.email'))
- print 'If you want to change this, please re-run \'repo init\' with --config-name'
+ print()
+ print('Your identity is: %s <%s>' % (mp.config.GetString('user.name'),
+ mp.config.GetString('user.email')))
+ print('If you want to change this, please re-run \'repo init\' with --config-name')
return False
def _ConfigureUser(self):
mp = self.manifest.manifestProject
while True:
- print ''
+ print()
name = self._Prompt('Your Name', mp.UserName)
email = self._Prompt('Your Email', mp.UserEmail)
- print ''
- print 'Your identity is: %s <%s>' % (name, email)
+ print()
+ print('Your identity is: %s <%s>' % (name, email))
sys.stdout.write('is this correct [y/N]? ')
a = sys.stdin.readline().strip().lower()
if a in ('yes', 'y', 't', 'true'):
@@ -274,8 +276,8 @@
self._on = True
out = _Test()
- print ''
- print "Testing colorized output (for 'repo diff', 'repo status'):"
+ print()
+ print("Testing colorized output (for 'repo diff', 'repo status'):")
for c in ['black','red','green','yellow','blue','magenta','cyan']:
out.write(' ')
@@ -319,14 +321,16 @@
else:
init_type = ''
- print ''
- print 'repo %shas been initialized in %s' % (init_type, self.manifest.topdir)
+ print()
+ print('repo %shas been initialized in %s'
+ % (init_type, self.manifest.topdir))
current_dir = os.getcwd()
if current_dir != self.manifest.topdir:
- print 'If this is not the directory in which you want to initialize repo, please run:'
- print ' rm -r %s/.repo' % self.manifest.topdir
- print 'and try again.'
+ print('If this is not the directory in which you want to initialize'
+ 'repo, please run:')
+ print(' rm -r %s/.repo' % self.manifest.topdir)
+ print('and try again.')
def Execute(self, opt, args):
git_require(MIN_GIT_VERSION, fail=True)
diff --git a/subcmds/list.py b/subcmds/list.py
index 6058a75..0d5c27f 100644
--- a/subcmds/list.py
+++ b/subcmds/list.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import re
from command import Command, MirrorSafeCommand
@@ -64,7 +65,7 @@
lines.append("%s : %s" % (_getpath(project), project.name))
lines.sort()
- print '\n'.join(lines)
+ print('\n'.join(lines))
def FindProjects(self, args):
result = []
diff --git a/subcmds/manifest.py b/subcmds/manifest.py
index 5592a37..5ceeb12 100644
--- a/subcmds/manifest.py
+++ b/subcmds/manifest.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import os
import sys
@@ -69,7 +70,7 @@
peg_rev_upstream = opt.peg_rev_upstream)
fd.close()
if opt.output_file != '-':
- print >>sys.stderr, 'Saved manifest to %s' % opt.output_file
+ print('Saved manifest to %s' % opt.output_file, file=sys.stderr)
def Execute(self, opt, args):
if args:
@@ -79,6 +80,6 @@
self._Output(opt)
return
- print >>sys.stderr, 'error: no operation to perform'
- print >>sys.stderr, 'error: see repo help manifest'
+ print('error: no operation to perform', file=sys.stderr)
+ print('error: see repo help manifest', file=sys.stderr)
sys.exit(1)
diff --git a/subcmds/overview.py b/subcmds/overview.py
index a509bd9..9e6100b 100644
--- a/subcmds/overview.py
+++ b/subcmds/overview.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
from color import Coloring
from command import PagedCommand
@@ -70,11 +71,11 @@
commits = branch.commits
date = branch.date
- print '%s %-33s (%2d commit%s, %s)' % (
+ print('%s %-33s (%2d commit%s, %s)' % (
branch.name == project.CurrentBranch and '*' or ' ',
branch.name,
len(commits),
len(commits) != 1 and 's' or ' ',
- date)
+ date))
for commit in commits:
- print '%-35s - %s' % ('', commit)
+ print('%-35s - %s' % ('', commit))
diff --git a/subcmds/prune.py b/subcmds/prune.py
index c50a550..39c571a 100644
--- a/subcmds/prune.py
+++ b/subcmds/prune.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
from color import Coloring
from command import PagedCommand
@@ -51,9 +52,9 @@
commits = branch.commits
date = branch.date
- print '%s %-33s (%2d commit%s, %s)' % (
+ print('%s %-33s (%2d commit%s, %s)' % (
branch.name == project.CurrentBranch and '*' or ' ',
branch.name,
len(commits),
len(commits) != 1 and 's' or ' ',
- date)
+ date))
diff --git a/subcmds/rebase.py b/subcmds/rebase.py
index a8d58cd..06cda22 100644
--- a/subcmds/rebase.py
+++ b/subcmds/rebase.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import sys
from command import Command
@@ -59,14 +60,16 @@
one_project = len(all_projects) == 1
if opt.interactive and not one_project:
- print >>sys.stderr, 'error: interactive rebase not supported with multiple projects'
+ print('error: interactive rebase not supported with multiple projects',
+ file=sys.stderr)
return -1
for project in all_projects:
cb = project.CurrentBranch
if not cb:
if one_project:
- print >>sys.stderr, "error: project %s has a detatched HEAD" % project.relpath
+ print("error: project %s has a detatched HEAD" % project.relpath,
+ file=sys.stderr)
return -1
# ignore branches with detatched HEADs
continue
@@ -74,7 +77,8 @@
upbranch = project.GetBranch(cb)
if not upbranch.LocalMerge:
if one_project:
- print >>sys.stderr, "error: project %s does not track any remote branches" % project.relpath
+ print("error: project %s does not track any remote branches"
+ % project.relpath, file=sys.stderr)
return -1
# ignore branches without remotes
continue
@@ -101,8 +105,8 @@
args.append(upbranch.LocalMerge)
- print >>sys.stderr, '# %s: rebasing %s -> %s' % \
- (project.relpath, cb, upbranch.LocalMerge)
+ print('# %s: rebasing %s -> %s'
+ % (project.relpath, cb, upbranch.LocalMerge), file=sys.stderr)
needs_stash = False
if opt.auto_stash:
diff --git a/subcmds/selfupdate.py b/subcmds/selfupdate.py
index 46aa3a1..d12e08d 100644
--- a/subcmds/selfupdate.py
+++ b/subcmds/selfupdate.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
from optparse import SUPPRESS_HELP
import sys
@@ -52,7 +53,7 @@
else:
if not rp.Sync_NetworkHalf():
- print >>sys.stderr, "error: can't update repo"
+ print("error: can't update repo", file=sys.stderr)
sys.exit(1)
rp.bare_git.gc('--auto')
diff --git a/subcmds/stage.py b/subcmds/stage.py
index 1ff8588..ff15ee0 100644
--- a/subcmds/stage.py
+++ b/subcmds/stage.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import sys
from color import Coloring
@@ -50,7 +51,7 @@
def _Interactive(self, opt, args):
all_projects = filter(lambda x: x.IsDirty(), self.GetProjects(args))
if not all_projects:
- print >>sys.stderr,'no projects have uncommitted modifications'
+ print('no projects have uncommitted modifications', file=sys.stderr)
return
out = _ProjectList(self.manifest.manifestProject.config)
@@ -101,7 +102,7 @@
if len(p) == 1:
_AddI(p[0])
continue
- print 'Bye.'
+ print('Bye.')
def _AddI(project):
p = GitCommand(project, ['add', '--interactive'], bare=False)
diff --git a/subcmds/start.py b/subcmds/start.py
index be64531..2d723fc 100644
--- a/subcmds/start.py
+++ b/subcmds/start.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import sys
from command import Command
from git_config import IsId
@@ -41,7 +42,7 @@
nb = args[0]
if not git.check_ref_format('heads/%s' % nb):
- print >>sys.stderr, "error: '%s' is not a valid name" % nb
+ print("error: '%s' is not a valid name" % nb, file=sys.stderr)
sys.exit(1)
err = []
@@ -49,7 +50,7 @@
if not opt.all:
projects = args[1:]
if len(projects) < 1:
- print >>sys.stderr, "error: at least one project must be specified"
+ print("error: at least one project must be specified", file=sys.stderr)
sys.exit(1)
all_projects = self.GetProjects(projects)
@@ -67,7 +68,6 @@
if err:
for p in err:
- print >>sys.stderr,\
- "error: %s/: cannot start %s" \
- % (p.relpath, nb)
+ print("error: %s/: cannot start %s" % (p.relpath, nb),
+ file=sys.stderr)
sys.exit(1)
diff --git a/subcmds/status.py b/subcmds/status.py
index 7611621..4056227 100644
--- a/subcmds/status.py
+++ b/subcmds/status.py
@@ -129,4 +129,4 @@
output.dump(sys.stdout)
output.close()
if len(all_projects) == counter.next():
- print 'nothing to commit (working directory clean)'
+ print('nothing to commit (working directory clean)')
diff --git a/subcmds/sync.py b/subcmds/sync.py
index d638911..a64f2c4 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import netrc
from optparse import SUPPRESS_HELP
import os
@@ -234,9 +235,10 @@
did_lock = True
if not success:
- print >>sys.stderr, 'error: Cannot fetch %s' % project.name
+ print('error: Cannot fetch %s' % project.name, file=sys.stderr)
if opt.force_broken:
- print >>sys.stderr, 'warn: --force-broken, continuing to sync'
+ print('warn: --force-broken, continuing to sync',
+ file=sys.stderr)
else:
raise _FetchError()
@@ -265,9 +267,9 @@
clone_bundle=not opt.no_clone_bundle):
fetched.add(project.gitdir)
else:
- print >>sys.stderr, 'error: Cannot fetch %s' % project.name
+ print('error: Cannot fetch %s' % project.name, file=sys.stderr)
if opt.force_broken:
- print >>sys.stderr, 'warn: --force-broken, continuing to sync'
+ print('warn: --force-broken, continuing to sync', file=sys.stderr)
else:
sys.exit(1)
else:
@@ -300,7 +302,7 @@
# If we saw an error, exit with code 1 so that other scripts can check.
if err_event.isSet():
- print >>sys.stderr, '\nerror: Exited sync due to fetch errors'
+ print('\nerror: Exited sync due to fetch errors', file=sys.stderr)
sys.exit(1)
pm.end()
@@ -353,7 +355,7 @@
t.join()
if err_event.isSet():
- print >>sys.stderr, '\nerror: Exited sync due to gc errors'
+ print('\nerror: Exited sync due to gc errors', file=sys.stderr)
sys.exit(1)
def UpdateProjectList(self):
@@ -390,12 +392,14 @@
groups = None)
if project.IsDirty():
- print >>sys.stderr, 'error: Cannot remove project "%s": \
-uncommitted changes are present' % project.relpath
- print >>sys.stderr, ' commit changes, then run sync again'
+ 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 >>sys.stderr, 'Deleting obsolete path %s' % project.worktree
+ 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)
@@ -423,24 +427,24 @@
self.jobs = min(self.jobs, (soft_limit - 5) / 3)
if opt.network_only and opt.detach_head:
- print >>sys.stderr, 'error: cannot combine -n and -d'
+ print('error: cannot combine -n and -d', file=sys.stderr)
sys.exit(1)
if opt.network_only and opt.local_only:
- print >>sys.stderr, 'error: cannot combine -n and -l'
+ print('error: cannot combine -n and -l', file=sys.stderr)
sys.exit(1)
if opt.manifest_name and opt.smart_sync:
- print >>sys.stderr, 'error: cannot combine -m and -s'
+ print('error: cannot combine -m and -s', file=sys.stderr)
sys.exit(1)
if opt.manifest_name and opt.smart_tag:
- print >>sys.stderr, 'error: cannot combine -m and -t'
+ print('error: cannot combine -m and -t', file=sys.stderr)
sys.exit(1)
if opt.manifest_server_username or opt.manifest_server_password:
if not (opt.smart_sync or opt.smart_tag):
- print >>sys.stderr, 'error: -u and -p may only be combined with ' \
- '-s or -t'
+ print('error: -u and -p may only be combined with -s or -t',
+ file=sys.stderr)
sys.exit(1)
if None in [opt.manifest_server_username, opt.manifest_server_password]:
- print >>sys.stderr, 'error: both -u and -p must be given'
+ print('error: both -u and -p must be given', file=sys.stderr)
sys.exit(1)
if opt.manifest_name:
@@ -448,8 +452,8 @@
if opt.smart_sync or opt.smart_tag:
if not self.manifest.manifest_server:
- print >>sys.stderr, \
- 'error: cannot smart sync: no manifest server defined in manifest'
+ print('error: cannot smart sync: no manifest server defined in'
+ 'manifest', file=sys.stderr)
sys.exit(1)
manifest_server = self.manifest.manifest_server
@@ -464,7 +468,8 @@
try:
info = netrc.netrc()
except IOError:
- print >>sys.stderr, '.netrc file does not exist or could not be opened'
+ print('.netrc file does not exist or could not be opened',
+ file=sys.stderr)
else:
try:
parse_result = urlparse.urlparse(manifest_server)
@@ -474,10 +479,10 @@
except TypeError:
# TypeError is raised when the given hostname is not present
# in the .netrc file.
- print >>sys.stderr, 'No credentials found for %s in .netrc' % \
- parse_result.hostname
+ print('No credentials found for %s in .netrc'
+ % parse_result.hostname, file=sys.stderr)
except netrc.NetrcParseError as e:
- print >>sys.stderr, 'Error parsing .netrc file: %s' % e
+ print('Error parsing .netrc file: %s' % e, file=sys.stderr)
if (username and password):
manifest_server = manifest_server.replace('://', '://%s:%s@' %
@@ -516,20 +521,21 @@
finally:
f.close()
except IOError:
- print >>sys.stderr, 'error: cannot write manifest to %s' % \
- manifest_path
+ print('error: cannot write manifest to %s' % manifest_path,
+ file=sys.stderr)
sys.exit(1)
self.manifest.Override(manifest_name)
else:
- print >>sys.stderr, 'error: %s' % manifest_str
+ print('error: %s' % manifest_str, file=sys.stderr)
sys.exit(1)
except (socket.error, IOError, xmlrpclib.Fault) as e:
- print >>sys.stderr, 'error: cannot connect to manifest server %s:\n%s' % (
- self.manifest.manifest_server, e)
+ print('error: cannot connect to manifest server %s:\n%s'
+ % (self.manifest.manifest_server, e), file=sys.stderr)
sys.exit(1)
except xmlrpclib.ProtocolError as e:
- print >>sys.stderr, 'error: cannot connect to manifest server %s:\n%d %s' % (
- self.manifest.manifest_server, e.errcode, e.errmsg)
+ print('error: cannot connect to manifest server %s:\n%d %s'
+ % (self.manifest.manifest_server, e.errcode, e.errmsg),
+ file=sys.stderr)
sys.exit(1)
rp = self.manifest.repoProject
@@ -585,14 +591,14 @@
if project.worktree:
project.Sync_LocalHalf(syncbuf)
pm.end()
- print >>sys.stderr
+ print(file=sys.stderr)
if not syncbuf.Finish():
sys.exit(1)
# If there's a notice that's supposed to print at the end of the sync, print
# it now...
if self.manifest.notice:
- print self.manifest.notice
+ print(self.manifest.notice)
def _PostRepoUpgrade(manifest, quiet=False):
wrapper = WrapperModule()
@@ -604,27 +610,28 @@
def _PostRepoFetch(rp, no_repo_verify=False, verbose=False):
if rp.HasChanges:
- print >>sys.stderr, 'info: A new version of repo is available'
- print >>sys.stderr, ''
+ print('info: A new version of repo is available', file=sys.stderr)
+ print(file=sys.stderr)
if no_repo_verify or _VerifyTag(rp):
syncbuf = SyncBuffer(rp.config)
rp.Sync_LocalHalf(syncbuf)
if not syncbuf.Finish():
sys.exit(1)
- print >>sys.stderr, 'info: Restarting repo with latest version'
+ print('info: Restarting repo with latest version', file=sys.stderr)
raise RepoChangedException(['--repo-upgraded'])
else:
- print >>sys.stderr, 'warning: Skipped upgrade to unverified version'
+ print('warning: Skipped upgrade to unverified version', file=sys.stderr)
else:
if verbose:
- print >>sys.stderr, 'repo version %s is current' % rp.work_git.describe(HEAD)
+ print('repo version %s is current' % rp.work_git.describe(HEAD),
+ file=sys.stderr)
def _VerifyTag(project):
gpg_dir = os.path.expanduser('~/.repoconfig/gnupg')
if not os.path.exists(gpg_dir):
- print >>sys.stderr,\
-"""warning: GnuPG was not available during last "repo init"
-warning: Cannot automatically authenticate repo."""
+ print('warning: GnuPG was not available during last "repo init"\n'
+ 'warning: Cannot automatically authenticate repo."""',
+ file=sys.stderr)
return True
try:
@@ -638,10 +645,9 @@
if rev.startswith(R_HEADS):
rev = rev[len(R_HEADS):]
- print >>sys.stderr
- print >>sys.stderr,\
- "warning: project '%s' branch '%s' is not signed" \
- % (project.name, rev)
+ print(file=sys.stderr)
+ print("warning: project '%s' branch '%s' is not signed"
+ % (project.name, rev), file=sys.stderr)
return False
env = os.environ.copy()
@@ -660,10 +666,10 @@
proc.stderr.close()
if proc.wait() != 0:
- print >>sys.stderr
- print >>sys.stderr, out
- print >>sys.stderr, err
- print >>sys.stderr
+ print(file=sys.stderr)
+ print(out, file=sys.stderr)
+ print(err, file=sys.stderr)
+ print(file=sys.stderr)
return False
return True
diff --git a/subcmds/upload.py b/subcmds/upload.py
index 925652c..a6ada33 100644
--- a/subcmds/upload.py
+++ b/subcmds/upload.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import copy
import re
import sys
@@ -26,16 +27,18 @@
def _ConfirmManyUploads(multiple_branches=False):
if multiple_branches:
- print "ATTENTION: One or more branches has an unusually high number of commits."
+ print('ATTENTION: One or more branches has an unusually high number'
+ 'of commits.')
else:
- print "ATTENTION: You are uploading an unusually high number of commits."
- print "YOU PROBABLY DO NOT MEAN TO DO THIS. (Did you rebase across branches?)"
+ print('ATTENTION: You are uploading an unusually high number of commits.')
+ print('YOU PROBABLY DO NOT MEAN TO DO THIS. (Did you rebase across'
+ 'branches?)')
answer = raw_input("If you are sure you intend to do this, type 'yes': ").strip()
return answer == "yes"
def _die(fmt, *args):
msg = fmt % args
- print >>sys.stderr, 'error: %s' % msg
+ print('error: %s' % msg, file=sys.stderr)
sys.exit(1)
def _SplitEmails(values):
@@ -176,14 +179,14 @@
date = branch.date
commit_list = branch.commits
- print 'Upload project %s/ to remote branch %s:' % (project.relpath, project.revisionExpr)
- print ' branch %s (%2d commit%s, %s):' % (
+ print('Upload project %s/ to remote branch %s:' % (project.relpath, project.revisionExpr))
+ print(' branch %s (%2d commit%s, %s):' % (
name,
len(commit_list),
len(commit_list) != 1 and 's' or '',
- date)
+ date))
for commit in commit_list:
- print ' %s' % commit
+ print(' %s' % commit)
sys.stdout.write('to %s (y/N)? ' % remote.review)
answer = sys.stdin.readline().strip().lower()
@@ -317,7 +320,7 @@
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 >>sys.stderr, "skipping upload"
+ print("skipping upload", file=sys.stderr)
branch.uploaded = False
branch.error = 'User aborted'
continue
@@ -334,8 +337,8 @@
branch.uploaded = False
have_errors = True
- print >>sys.stderr, ''
- print >>sys.stderr, '----------------------------------------------------------------------'
+ print(file=sys.stderr)
+ print('----------------------------------------------------------------------', file=sys.stderr)
if have_errors:
for branch in todo:
@@ -344,17 +347,19 @@
fmt = ' (%s)'
else:
fmt = '\n (%s)'
- print >>sys.stderr, ('[FAILED] %-15s %-15s' + fmt) % (
+ print(('[FAILED] %-15s %-15s' + fmt) % (
branch.project.relpath + '/', \
branch.name, \
- str(branch.error))
- print >>sys.stderr, ''
+ str(branch.error)),
+ file=sys.stderr)
+ print()
for branch in todo:
if branch.uploaded:
- print >>sys.stderr, '[OK ] %-15s %s' % (
+ print('[OK ] %-15s %s' % (
branch.project.relpath + '/',
- branch.name)
+ branch.name),
+ file=sys.stderr)
if have_errors:
sys.exit(1)
@@ -385,7 +390,7 @@
try:
hook.Run(opt.allow_all_hooks, project_list=pending_proj_names)
except HookError as e:
- print >>sys.stderr, "ERROR: %s" % str(e)
+ print("ERROR: %s" % str(e), file=sys.stderr)
return
if opt.reviewers:
@@ -395,7 +400,7 @@
people = (reviewers,cc)
if not pending:
- print >>sys.stdout, "no branches ready for upload"
+ print("no branches ready for upload", file=sys.stderr)
elif len(pending) == 1 and len(pending[0][1]) == 1:
self._SingleBranch(opt, pending[0][1][0], people)
else:
diff --git a/subcmds/version.py b/subcmds/version.py
index 243e367..01b7fd8 100644
--- a/subcmds/version.py
+++ b/subcmds/version.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import sys
from command import Command, MirrorSafeCommand
from git_command import git
@@ -32,12 +33,12 @@
rp = self.manifest.repoProject
rem = rp.GetRemote(rp.remote.name)
- print 'repo version %s' % rp.work_git.describe(HEAD)
- print ' (from %s)' % rem.url
+ print('repo version %s' % rp.work_git.describe(HEAD))
+ print(' (from %s)' % rem.url)
if Version.wrapper_path is not None:
- print 'repo launcher version %s' % Version.wrapper_version
- print ' (from %s)' % Version.wrapper_path
+ print('repo launcher version %s' % Version.wrapper_version)
+ print(' (from %s)' % Version.wrapper_path)
- print git.version().strip()
- print 'Python %s' % sys.version
+ print(git.version().strip())
+ print('Python %s' % sys.version)
diff --git a/trace.py b/trace.py
index 0376d2b..db42a68 100644
--- a/trace.py
+++ b/trace.py
@@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
import sys
import os
REPO_TRACE = 'REPO_TRACE'
@@ -31,4 +32,4 @@
def Trace(fmt, *args):
if IsTrace():
- print >>sys.stderr, fmt % args
+ print(fmt % args, file=sys.stderr)