@@ -26,6 +26,9 @@
import zlib
import ctypes
import errno
+import os.path
+import codecs
+import io
# support basestring in python3
try:
@@ -631,7 +634,7 @@ def parseDiffTreeEntry(entry):
If the pattern is not matched, None is returned."""
- match = diffTreePattern().next().match(entry)
+ match = next(diffTreePattern()).match(entry)
if match:
return {
'src_mode': match.group(1),
@@ -935,7 +938,7 @@ def findUpstreamBranchPoint(head = "HEAD"):
branches = p4BranchesInGit()
# map from depot-path to branch name
branchByDepotPath = {}
- for branch in branches.keys():
+ for branch in list(branches.keys()):
tip = branches[branch]
log = extractLogMessageFromGitCommit(tip)
settings = extractSettingsGitLog(log)
@@ -1129,7 +1132,7 @@ def getClientSpec():
client_name = entry["Client"]
# just the keys that start with "View"
- view_keys = [ k for k in entry.keys() if k.startswith("View") ]
+ view_keys = [ k for k in list(entry.keys()) if k.startswith("View") ]
# hold this new View
view = View(client_name)
@@ -1371,7 +1374,7 @@ def processContent(self, git_mode, relPath, contents):
else:
return LargeFileSystem.processContent(self, git_mode, relPath, contents)
-class Command:
+class Command(object):
delete_actions = ( "delete", "move/delete", "purge" )
add_actions = ( "add", "branch", "move/add" )
@@ -1386,7 +1389,7 @@ def ensure_value(self, attr, value):
setattr(self, attr, value)
return getattr(self, attr)
-class P4UserMap:
+class P4UserMap(object):
def __init__(self):
self.userMapFromPerforceServer = False
self.myP4UserId = None
@@ -1437,7 +1440,7 @@ def getUserMapFromPerforceServer(self):
self.emails[email] = user
s = ''
- for (key, val) in self.users.items():
+ for (key, val) in list(self.users.items()):
s += "%s\t%s\n" % (key.expandtabs(1), val.expandtabs(1))
open(self.getUserCacheFilename(), "wb").write(s)
@@ -1788,7 +1791,7 @@ def prepareSubmitTemplate(self, changelist=None):
break
if not change_entry:
die('Failed to decode output of p4 change -o')
- for key, value in change_entry.iteritems():
+ for key, value in list(change_entry.items()):
if key.startswith('File'):
if 'depot-paths' in settings:
if not [p for p in settings['depot-paths']
@@ -2032,7 +2035,7 @@ def applyCommit(self, id):
p4_delete(f)
# Set/clear executable bits
- for f in filesToChangeExecBit.keys():
+ for f in list(filesToChangeExecBit.keys()):
mode = filesToChangeExecBit[f]
setP4ExecBit(f, mode)
@@ -2285,7 +2288,7 @@ def run(self, args):
self.clientSpecDirs = getClientSpec()
# Check for the existence of P4 branches
- branchesDetected = (len(p4BranchesInGit().keys()) > 1)
+ branchesDetected = (len(list(p4BranchesInGit().keys())) > 1)
if self.useClientSpec and not branchesDetected:
# all files are relative to the client spec
@@ -2676,7 +2679,7 @@ def __init__(self):
self.knownBranches = {}
self.initialParents = {}
- self.tz = "%+03d%02d" % (- time.timezone / 3600, ((- time.timezone % 3600) / 60))
+ self.tz = "%+03d%02d" % (- time.timezone // 3600, ((- time.timezone % 3600) // 60))
self.labels = {}
# Force a checkpoint in fast-import and wait for it to finish
@@ -2793,7 +2796,7 @@ def splitFilesIntoBranches(self, commit):
else:
relPath = self.stripRepoPath(path, self.depotPaths)
- for branch in self.knownBranches.keys():
+ for branch in list(self.knownBranches.keys()):
# add a trailing slash so that a commit into qt/4.2foo
# doesn't end up in qt/4.2, e.g.
if p4PathStartsWith(relPath, branch + "/"):
@@ -2834,7 +2837,7 @@ def streamOneP4File(self, file, contents):
size = int(self.stream_file['fileSize'])
else:
size = 0 # deleted files don't get a fileSize apparently
- sys.stdout.write('\r%s --> %s (%i MB)\n' % (file['depotFile'], relPath, size/1024/1024))
+ sys.stdout.write('\r%s --> %s (%i MB)\n' % (file['depotFile'], relPath, size//1024//1024))
sys.stdout.flush()
(type_base, type_mods) = split_p4_type(file["type"])
@@ -2934,7 +2937,7 @@ def streamP4FilesCb(self, marshalled):
required_bytes = int((4 * int(self.stream_file["fileSize"])) - calcDiskFree())
if required_bytes > 0:
err = 'Not enough space left on %s! Free at least %i MB.' % (
- os.getcwd(), required_bytes/1024/1024
+ os.getcwd(), required_bytes//1024//1024
)
if err:
@@ -2963,7 +2966,7 @@ def streamP4FilesCb(self, marshalled):
# pick up the new file information... for the
# 'data' field we need to append to our array
- for k in marshalled.keys():
+ for k in list(marshalled.keys()):
if k == 'data':
if 'streamContentSize' not in self.stream_file:
self.stream_file['streamContentSize'] = 0
@@ -2978,8 +2981,8 @@ def streamP4FilesCb(self, marshalled):
'depotFile' in self.stream_file):
size = int(self.stream_file["fileSize"])
if size > 0:
- progress = 100*self.stream_file['streamContentSize']/size
- sys.stdout.write('\r%s %d%% (%i MB)' % (self.stream_file['depotFile'], progress, int(size/1024/1024)))
+ progress = 100.0*self.stream_file['streamContentSize']/size
+ sys.stdout.write('\r%s %4.1f%% (%i MB)' % (self.stream_file['depotFile'], progress, int(size//1024//1024)))
sys.stdout.flush()
self.stream_have_file_info = True
@@ -3060,7 +3063,7 @@ def streamTag(self, gitStream, labelName, labelDetails, commit, epoch):
gitStream.write("tagger %s\n" % tagger)
- print("labelDetails=",labelDetails)
+ print(("labelDetails=",labelDetails))
if 'Description' in labelDetails:
description = labelDetails['Description']
else:
@@ -3199,7 +3202,7 @@ def getLabels(self):
self.labels[newestChange] = [output, revisions]
if self.verbose:
- print("Label changes: %s" % self.labels.keys())
+ print("Label changes: %s" % list(self.labels.keys()))
# Import p4 labels as git tags. A direct mapping does not
# exist, so assume that if all the files are at the same revision
@@ -3342,7 +3345,7 @@ def getBranchMapping(self):
def getBranchMappingFromGitBranches(self):
branches = p4BranchesInGit(self.importIntoRemotes)
- for branch in branches.keys():
+ for branch in list(branches.keys()):
if branch == "master":
branch = "main"
else:
@@ -3454,14 +3457,14 @@ def importChanges(self, changes, origin_revision=0):
self.updateOptionDict(description)
if not self.silent:
- sys.stdout.write("\rImporting revision %s (%s%%)" % (change, cnt * 100 / len(changes)))
+ sys.stdout.write("\rImporting revision %s (%4.1f%%)" % (change, cnt * 100 / len(changes)))
sys.stdout.flush()
cnt = cnt + 1
try:
if self.detectBranches:
branches = self.splitFilesIntoBranches(description)
- for branch in branches.keys():
+ for branch in list(branches.keys()):
## HACK --hwn
branchPrefix = self.depotPaths[0] + branch + "/"
self.branchPrefixes = [ branchPrefix ]
@@ -3650,13 +3653,13 @@ def run(self, args):
if short in branches:
self.p4BranchesInGit = [ short ]
else:
- self.p4BranchesInGit = branches.keys()
+ self.p4BranchesInGit = list(branches.keys())
if len(self.p4BranchesInGit) > 1:
if not self.silent:
print("Importing from/into multiple branches")
self.detectBranches = True
- for branch in branches.keys():
+ for branch in list(branches.keys()):
self.initialParents[self.refPrefix + branch] = \
branches[branch]
@@ -4040,7 +4043,7 @@ def findLastP4Revision(self, starting_point):
to find the P4 commit we are based on, and the depot-paths.
"""
- for parent in (range(65535)):
+ for parent in (list(range(65535))):
log = extractLogMessageFromGitCommit("{0}^{1}".format(starting_point, parent))
settings = extractSettingsGitLog(log)
if 'change' in settings:
@@ -4179,7 +4182,7 @@ def printUsage(commands):
def main():
if len(sys.argv[1:]) == 0:
- printUsage(commands.keys())
+ printUsage(list(commands.keys()))
sys.exit(2)
cmdName = sys.argv[1]
@@ -4189,7 +4192,7 @@ def main():
except KeyError:
print("unknown command %s" % cmdName)
print("")
- printUsage(commands.keys())
+ printUsage(list(commands.keys()))
sys.exit(2)
options = cmd.options