2to3 --fix=print with manual fixup

This commit is contained in:
Behdad Esfahbod 2013-11-27 04:57:33 -05:00
parent d7e8d81a7a
commit 3ec6a25823
28 changed files with 102 additions and 103 deletions

View File

@ -369,16 +369,16 @@ if __name__ == "__main__":
afm = AFM(path)
char = 'A'
if afm.has_char(char):
print afm[char] # print charnum, width and boundingbox
print(afm[char]) # print charnum, width and boundingbox
pair = ('A', 'V')
if afm.has_kernpair(pair):
print afm[pair] # print kerning value for pair
print afm.Version # various other afm entries have become attributes
print afm.Weight
print(afm[pair]) # print kerning value for pair
print(afm.Version) # various other afm entries have become attributes
print(afm.Weight)
# afm.comments() returns a list of all Comment lines found in the AFM
print afm.comments()
print(afm.comments())
#print afm.chars()
#print afm.kernpairs()
print afm
print(afm)
afm.write(path + ".muck")

View File

@ -138,7 +138,7 @@ class CFFWriter:
count = 1
while True:
if DEBUG:
print "CFFWriter.toFile() iteration:", count
print("CFFWriter.toFile() iteration:", count)
count = count + 1
pos = 0
posList = [pos]
@ -155,7 +155,7 @@ class CFFWriter:
break
lastPosList = posList
if DEBUG:
print "CFFWriter.toFile() writing to file."
print("CFFWriter.toFile() writing to file.")
begin = file.tell()
posList = [0]
for item in self.data:
@ -314,7 +314,7 @@ class Index:
self.items = []
return
if DEBUG:
print "loading %s at %s" % (name, file.tell())
print("loading %s at %s" % (name, file.tell()))
self.file = file
count = readCard16(file)
self.count = count
@ -324,7 +324,7 @@ class Index:
return
offSize = readCard8(file)
if DEBUG:
print " index count: %s offSize: %s" % (count, offSize)
print(" index count: %s offSize: %s" % (count, offSize))
assert offSize <= 4, "offSize too large: %s" % offSize
self.offsets = offsets = []
pad = '\0' * (4 - offSize)
@ -336,7 +336,7 @@ class Index:
self.offsetBase = file.tell() - 1
file.seek(self.offsetBase + offsets[-1]) # pretend we've read the whole lot
if DEBUG:
print " end of %s at %s" % (name, file.tell())
print(" end of %s at %s" % (name, file.tell()))
def __len__(self):
return len(self.items)
@ -778,7 +778,7 @@ class CharsetConverter:
file = parent.file
file.seek(value)
if DEBUG:
print "loading charset at %s" % value
print("loading charset at %s" % value)
format = readCard8(file)
if format == 0:
charset = parseCharset0(numGlyphs, file, parent.strings, isCID)
@ -788,7 +788,7 @@ class CharsetConverter:
raise NotImplementedError
assert len(charset) == numGlyphs
if DEBUG:
print " charset end at %s" % file.tell()
print(" charset end at %s" % file.tell())
else: # offset == 0 -> no charset data.
if isCID or "CharStrings" not in parent.rawDict:
assert value == 0 # We get here only when processing fontDicts from the FDArray of CFF-CID fonts. Only the real topDict references the chrset.
@ -957,7 +957,7 @@ class EncodingConverter(SimpleConverter):
file = parent.file
file.seek(value)
if DEBUG:
print "loading Encoding at %s" % value
print("loading Encoding at %s" % value)
format = readCard8(file)
haveSupplement = format & 0x80
if haveSupplement:
@ -1329,8 +1329,8 @@ class DictCompiler:
def compile(self, reason):
if DEBUG:
print "-- compiling %s for %s" % (self.__class__.__name__, reason)
print "in baseDict: ", self
print("-- compiling %s for %s" % (self.__class__.__name__, reason))
print("in baseDict: ", self)
rawDict = self.rawDict
data = []
for name in self.dictObj.order:
@ -1463,7 +1463,7 @@ class BaseDict:
def __init__(self, strings=None, file=None, offset=None):
self.rawDict = {}
if DEBUG:
print "loading %s at %s" % (self.__class__.__name__, offset)
print("loading %s at %s" % (self.__class__.__name__, offset))
self.file = file
self.offset = offset
self.strings = strings
@ -1471,7 +1471,7 @@ class BaseDict:
def decompile(self, data):
if DEBUG:
print " length %s is %s" % (self.__class__.__name__, len(data))
print(" length %s is %s" % (self.__class__.__name__, len(data)))
dec = self.decompilerClass(self.strings)
dec.decompile(data)
self.rawDict = dec.getDict()
@ -1552,7 +1552,7 @@ class TopDict(BaseDict):
try:
charString.decompile()
except:
print "Error in charstring ", i
print("Error in charstring ", i)
import sys
type, value = sys. exc_info()[0:2]
raise type(value)

View File

@ -143,9 +143,9 @@ class FontFamily:
header = header + struct.pack(*(">hh",) + self.ffIntl)
header = header + struct.pack(">h", self.ffVersion)
if DEBUG:
print "header is the same?", self._rawheader == header and 'yes.' or 'no.'
print("header is the same?", self._rawheader == header and 'yes.' or 'no.')
if self._rawheader != header:
print len(self._rawheader), len(header)
print(len(self._rawheader), len(header))
self._rawheader = header
def _getfontassociationtable(self):
@ -169,9 +169,9 @@ class FontFamily:
data = data + struct.pack(">3h", size, stype, ID)
if DEBUG:
print "font association table is the same?", self._rawfontassociationtable == data and 'yes.' or 'no.'
print("font association table is the same?", self._rawfontassociationtable == data and 'yes.' or 'no.')
if self._rawfontassociationtable != data:
print len(self._rawfontassociationtable), len(data)
print(len(self._rawfontassociationtable), len(data))
self._rawfontassociationtable = data
def _getoffsettable(self):
@ -248,7 +248,7 @@ class FontFamily:
for width in table:
data = data + struct.pack('>h', width)
if DEBUG:
print "glyph width table is the same?", self._rawglyphwidthtable == data and 'yes.' or 'no.'
print("glyph width table is the same?", self._rawglyphwidthtable == data and 'yes.' or 'no.')
self._rawglyphwidthtable = data
def _getkerningtables(self):
@ -292,9 +292,9 @@ class FontFamily:
data = string.join(data, '')
if DEBUG:
print "kerning table is the same?", self._rawkerningtables == data and 'yes.' or 'no.'
print("kerning table is the same?", self._rawkerningtables == data and 'yes.' or 'no.')
if self._rawkerningtables != data:
print len(self._rawkerningtables), len(data)
print(len(self._rawkerningtables), len(data))
self._rawkerningtables = data
def _getstylemappingtable(self):
@ -345,7 +345,7 @@ class FontFamily:
data = data + '\0'
if DEBUG:
print "style mapping table is the same?", self._rawstylemappingtable == data and 'yes.' or 'no.'
print("style mapping table is the same?", self._rawstylemappingtable == data and 'yes.' or 'no.')
self._rawstylemappingtable = data
def _unpackstylestrings(self):

View File

@ -400,7 +400,7 @@ def printSegments(segments):
segments on a single line as a tuple.
"""
for segment in segments:
print _segmentrepr(segment)
print(_segmentrepr(segment))
if __name__ == "__main__":
import doctest

View File

@ -56,10 +56,10 @@ def deHexString(h):
def _test():
import fontTools.misc.eexecOp as eexecOp
testStr = "\0\0asdadads asds\265"
print decrypt, decrypt(testStr, 12321)
print eexecOp.decrypt, eexecOp.decrypt(testStr, 12321)
print encrypt, encrypt(testStr, 12321)
print eexecOp.encrypt, eexecOp.encrypt(testStr, 12321)
print(decrypt, decrypt(testStr, 12321))
print(eexecOp.decrypt, eexecOp.decrypt(testStr, 12321))
print(encrypt, encrypt(testStr, 12321))
print(eexecOp.encrypt, eexecOp.encrypt(testStr, 12321))
if __name__ == "__main__":

View File

@ -91,4 +91,4 @@ class ParamBlock:
if __name__ == "__main__":
fond = Res.GetNamedResource("FOND", "Helvetica")
print HomeResFile(fond)
print(HomeResFile(fond))

View File

@ -304,7 +304,7 @@ class T2CharString(ByteCodeBase):
try:
bytecode = "".join(bytecode)
except TypeError:
print bytecode
print(bytecode)
raise
self.setBytecode(bytecode)

View File

@ -177,7 +177,7 @@ def _test():
afixed: 16.16F
"""
print 'size:', calcsize(format)
print('size:', calcsize(format))
class foo:
pass
@ -194,11 +194,11 @@ def _test():
i.afixed = 1.5
data = pack(format, i)
print 'data:', repr(data)
print unpack(format, data)
print('data:', repr(data))
print(unpack(format, data))
i2 = foo()
unpack(format, data, i2)
print vars(i2)
print(vars(i2))
if __name__ == "__main__":
_test()

View File

@ -75,7 +75,7 @@ class XMLReader:
ttLib.debugmsg(msg)
else:
if not self.quiet:
print msg
print(msg)
if tag == "GlyphOrder":
tableClass = ttLib.GlyphOrder
elif "ERROR" in attrs:
@ -118,7 +118,7 @@ class XMLReader:
class ProgressPrinter:
def __init__(self, title, maxval=100):
print title
print(title)
def set(self, val, maxval=None):
pass
@ -127,5 +127,5 @@ class ProgressPrinter:
pass
def setLabel(self, text):
print text
print(text)

View File

@ -301,4 +301,4 @@ if __name__ == "__main__":
font.unpackGlyphs()
font.packGlyphs()
data2 = font.compile()
print "xxxxx", data == data2, len(data) == len(data2)
print("xxxxx", data == data2, len(data) == len(data2))

View File

@ -339,14 +339,14 @@ def decomposeQuadraticSegment(points):
class _TestPen(BasePen):
"""Test class that prints PostScript to stdout."""
def _moveTo(self, pt):
print "%s %s moveto" % (pt[0], pt[1])
print("%s %s moveto" % (pt[0], pt[1]))
def _lineTo(self, pt):
print "%s %s lineto" % (pt[0], pt[1])
print("%s %s lineto" % (pt[0], pt[1]))
def _curveToOne(self, bcp1, bcp2, pt):
print "%s %s %s %s %s %s curveto" % (bcp1[0], bcp1[1],
bcp2[0], bcp2[1], pt[0], pt[1])
print("%s %s %s %s %s %s curveto" % (bcp1[0], bcp1[1],
bcp2[0], bcp2[1], pt[0], pt[1]))
def _closePath(self):
print "closepath"
print("closepath")
if __name__ == "__main__":

View File

@ -86,8 +86,8 @@ if __name__ == "__main__":
pen = ControlBoundsPen(None)
draw(pen)
print pen.bounds
print(pen.bounds)
pen = BoundsPen(None)
draw(pen)
print pen.bounds
print(pen.bounds)

View File

@ -33,10 +33,10 @@ class ReportLabPen(BasePen):
if __name__=="__main__":
import sys
if len(sys.argv) < 3:
print "Usage: reportLabPen.py <OTF/TTF font> <glyphname> [<image file to create>]"
print " If no image file name is created, by default <glyphname>.png is created."
print " example: reportLabPen.py Arial.TTF R test.png"
print " (The file format will be PNG, regardless of the image file name supplied)"
print("Usage: reportLabPen.py <OTF/TTF font> <glyphname> [<image file to create>]")
print(" If no image file name is created, by default <glyphname>.png is created.")
print(" example: reportLabPen.py Arial.TTF R test.png")
print(" (The file format will be PNG, regardless of the image file name supplied)")
sys.exit(0)
from fontTools.ttLib import TTFont

View File

@ -301,7 +301,7 @@ class TTFont:
debugmsg(report)
else:
if not quiet:
print report
print(report)
if tag not in self:
return
xmlTag = tagToXML(tag)
@ -390,7 +390,7 @@ class TTFont:
if not self.ignoreDecompileErrors:
raise
# fall back to DefaultTable, retaining the binary table data
print "An exception occurred during the decompilation of the '%s' table" % tag
print("An exception occurred during the decompilation of the '%s' table" % tag)
from .tables.DefaultTable import DefaultTable
import StringIO
file = StringIO.StringIO()
@ -896,7 +896,7 @@ def xmlToTag(tag):
def debugmsg(msg):
import time
print msg + time.strftime(" (%H:%M:%S)", time.localtime(time.time()))
print(msg + time.strftime(" (%H:%M:%S)", time.localtime(time.time())))
# Table order as recommended in the OpenType specification 1.4

View File

@ -90,7 +90,7 @@ class SFNTReader:
assert checksum == entry.checksum, "bad checksum for '%s' table" % tag
elif checksum != entry.checkSum:
# Be friendly, and just print a warning.
print "bad checksum for '%s' table" % tag
print("bad checksum for '%s' table" % tag)
return data
def __delitem__(self, tag):

View File

@ -47,7 +47,7 @@ class BitmapGlyphMetrics:
if name in metricNames:
vars(self)[name] = safeEval(attrs['value'])
else:
print "Warning: unknown name '%s' being ignored in %s." % name, self.__class__.__name__
print("Warning: unknown name '%s' being ignored in %s." % name, self.__class__.__name__)
class BigGlyphMetrics(BitmapGlyphMetrics):

View File

@ -167,7 +167,7 @@ class table_E_B_D_T_(DefaultTable.DefaultTable):
assert glyphName not in bitmapGlyphDict, "Duplicate glyphs with the same name '%s' in the same strike." % glyphName
bitmapGlyphDict[glyphName] = curGlyph
else:
print "Warning: %s being ignored by %s", name, self.__class__.__name__
print("Warning: %s being ignored by %s", name, self.__class__.__name__)
# Grow the strike data array to the appropriate size. The XML
# format allows the strike index value to be out of order.
@ -197,7 +197,7 @@ class EbdtComponent:
if name in componentNames:
vars(self)[name] = safeEval(attrs['value'])
else:
print "Warning: unknown name '%s' being ignored by EbdtComponent." % name
print("Warning: unknown name '%s' being ignored by EbdtComponent." % name)
# Helper functions for dealing with binary.
@ -471,7 +471,7 @@ def _createBitmapPlusMetricsMixin(metricsClass):
self.metrics = metricsClass()
self.metrics.fromXML(name, attrs, content, ttFont)
elif name == oppositeMetricsName:
print "Warning: %s being ignored in format %d." % oppositeMetricsName, self.getFormat()
print("Warning: %s being ignored in format %d." % oppositeMetricsName, self.getFormat())
return BitmapPlusMetricsMixin
@ -685,7 +685,7 @@ class ComponentBitmapGlyph(BitmapGlyph):
curComponent.fromXML(name, attrs, content, ttFont)
self.componentArray.append(curComponent)
else:
print "Warning: '%s' being ignored in component array." % name
print("Warning: '%s' being ignored in component array." % name)
class ebdt_bitmap_format_8(BitmapPlusSmallMetricsMixin, ComponentBitmapGlyph):

View File

@ -294,7 +294,7 @@ class BitmapSizeTable:
elif name in dataNames:
vars(self)[name] = safeEval(attrs['value'])
else:
print "Warning: unknown name '%s' being ignored in BitmapSizeTable." % name
print("Warning: unknown name '%s' being ignored in BitmapSizeTable." % name)
class SbitLineMetrics:
@ -503,7 +503,7 @@ class FixedSizeIndexSubTableMixin:
self.metrics = BigGlyphMetrics()
self.metrics.fromXML(name, attrs, content, ttFont)
elif name == SmallGlyphMetrics.__name__:
print "Warning: SmallGlyphMetrics being ignored in format %d." % self.indexFormat
print("Warning: SmallGlyphMetrics being ignored in format %d." % self.indexFormat)
def padBitmapData(self, data):
# Make sure that the data isn't bigger than the fixed size.

View File

@ -105,7 +105,7 @@ class table_S_V_G_(DefaultTable.DefaultTable):
self.decompile_format_1(data, ttFont)
else:
if self.version != 0:
print "Unknown SVG table version '%s'. Decompiling as version 0." % (self.version)
print("Unknown SVG table version '%s'. Decompiling as version 0." % (self.version))
self.decompile_format_0(data, ttFont)
@ -306,7 +306,7 @@ class table_S_V_G_(DefaultTable.DefaultTable):
if self.colorPalettes.numColorParams == 0:
self.colorPalettes = None
else:
print "Unknown", name, content
print("Unknown", name, content)
class DocumentIndexEntry:
def __init__(self):

View File

@ -33,7 +33,7 @@ class table__c_m_a_p(DefaultTable.DefaultTable):
format, length = struct.unpack(">HL", data[offset:offset+6])
if not length:
print "Error: cmap subtable is reported as having zero length: platformID %s, platEncID %s, format %s offset %s. Skipping table." % (platformID, platEncID,format, offset)
print("Error: cmap subtable is reported as having zero length: platformID %s, platEncID %s, format %s offset %s. Skipping table." % (platformID, platEncID,format, offset))
continue
if format not in cmap_classes:
table = cmap_format_unknown(format)

View File

@ -113,10 +113,10 @@ class table__m_a_x_p(DefaultTable.DefaultTable):
def testrepr(self):
items = sorted(self.__dict__.items())
print ". . . . . . . . ."
print(". . . . . . . . .")
for combo in items:
print " %s: %s" % combo
print ". . . . . . . . ."
print(" %s: %s" % combo)
print(". . . . . . . . .")
def toXML(self, writer, ttFont):
if self.tableVersion != 0x00005000:

View File

@ -25,8 +25,7 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
expectedStringOffset = 6 + n * nameRecordSize
if stringOffset != expectedStringOffset:
# XXX we need a warn function
print "Warning: 'name' table stringOffset incorrect.",
print "Expected: %s; Actual: %s" % (expectedStringOffset, stringOffset)
print("Warning: 'name' table stringOffset incorrect. Expected: %s; Actual: %s" % (expectedStringOffset, stringOffset))
stringData = data[stringOffset:]
data = data[6:]
self.names = []

View File

@ -45,12 +45,12 @@ class BaseTTXConverter(DefaultTable):
if cachingStats:
stats = sorted([(v, k) for k, v in cachingStats.items()])
stats.reverse()
print "cachingsstats for ", self.tableTag
print("cachingsstats for ", self.tableTag)
for v, k in stats:
if v < 2:
break
print v, k
print "---", len(stats)
print(v, k)
print("---", len(stats))
def compile(self, font):
""" Create a top-level OTFWriter for the GPOS/GSUB table.

View File

@ -225,8 +225,8 @@ class Table(Struct):
return None
if offset <= 3:
# XXX hack to work around buggy pala.ttf
print "*** Warning: offset is not 0, yet suspiciously low (%s). table: %s" \
% (offset, self.tableClass.__name__)
print("*** Warning: offset is not 0, yet suspiciously low (%s). table: %s" \
% (offset, self.tableClass.__name__))
return None
table = self.tableClass()
table.reader = reader.getSubReader(offset)

View File

@ -406,5 +406,5 @@ if __name__ == "__main__":
p.fromBytecode(bc)
asm = p.getAssembly()
p.fromAssembly(asm)
print bc == p.getBytecode()
print(bc == p.getBytecode())

View File

@ -77,7 +77,7 @@ from fontTools.misc.macCreatorType import getMacCreatorAndType
from fontTools import version
def usage():
print __doc__ % version
print(__doc__ % version)
sys.exit(2)
@ -120,11 +120,11 @@ class Options:
for option, value in rawOptions:
# general options
if option == "-h":
print __doc__ % version
print(__doc__ % version)
sys.exit(0)
elif option == "-d":
if not os.path.isdir(value):
print "The -d option value must be an existing directory"
print("The -d option value must be an existing directory")
sys.exit(2)
self.outputDir = value
elif option == "-o":
@ -147,7 +147,7 @@ class Options:
elif option == "-z":
validOptions = ('raw', 'row', 'bitwise', 'extfile')
if value not in validOptions:
print "-z does not allow %s as a format. Use %s" % (option, validOptions)
print("-z does not allow %s as a format. Use %s" % (option, validOptions))
sys.exit(2)
self.bitmapGlyphDataFormat = value
elif option == "-y":
@ -162,10 +162,10 @@ class Options:
elif option == "-e":
self.ignoreDecompileErrors = False
if self.onlyTables and self.skipTables:
print "-t and -x options are mutually exclusive"
print("-t and -x options are mutually exclusive")
sys.exit(2)
if self.mergeFile and numFiles > 1:
print "Must specify exactly one TTX source file when using -m"
print("Must specify exactly one TTX source file when using -m")
sys.exit(2)
@ -174,24 +174,24 @@ def ttList(input, output, options):
ttf = TTFont(input, fontNumber=options.fontNumber, lazy=True)
reader = ttf.reader
tags = sorted(reader.keys())
print 'Listing table info for "%s":' % input
print('Listing table info for "%s":' % input)
format = " %4s %10s %7s %7s"
print format % ("tag ", " checksum", " length", " offset")
print format % ("----", "----------", "-------", "-------")
print(format % ("tag ", " checksum", " length", " offset"))
print(format % ("----", "----------", "-------", "-------"))
for tag in tags:
entry = reader.tables[tag]
checkSum = int(entry.checkSum)
if checkSum < 0:
checkSum = checkSum + 0x100000000
checksum = "0x" + string.zfill(hex(checkSum)[2:-1], 8)
print format % (tag, checksum, entry.length, entry.offset)
print
print(format % (tag, checksum, entry.length, entry.offset))
print()
ttf.close()
def ttDump(input, output, options):
if not options.quiet:
print 'Dumping "%s" to "%s"...' % (input, output)
print('Dumping "%s" to "%s"...' % (input, output))
ttf = TTFont(input, 0, verbose=options.verbose, allowVID=options.allowVID,
lazy=False,
quiet=options.quiet,
@ -209,7 +209,7 @@ def ttDump(input, output, options):
def ttCompile(input, output, options):
if not options.quiet:
print 'Compiling "%s" to "%s"...' % (input, output)
print('Compiling "%s" to "%s"...' % (input, output))
ttf = TTFont(options.mergeFile,
lazy=False,
recalcBBoxes=options.recalcBBoxes,
@ -221,7 +221,7 @@ def ttCompile(input, output, options):
# XXX This shouldn't be here at all, it should be as close to the
# OTL code as possible.
overflowRecord = e.value
print "Attempting to fix OTLOffsetOverflowError", e
print("Attempting to fix OTLOffsetOverflowError", e)
lastItem = overflowRecord
while True:
ok = 0
@ -236,14 +236,14 @@ def ttCompile(input, output, options):
ttf.save(output)
break
except OTLOffsetOverflowError, e:
print "Attempting to fix OTLOffsetOverflowError", e
print("Attempting to fix OTLOffsetOverflowError", e)
overflowRecord = e.value
if overflowRecord == lastItem:
raise
if options.verbose:
import time
print "finished at", time.strftime("%H:%M:%S", time.localtime(time.time()))
print("finished at", time.strftime("%H:%M:%S", time.localtime(time.time())))
def guessFileType(fileName):
@ -302,7 +302,7 @@ def parseOptions(args):
extension = ".otf"
action = ttCompile
else:
print 'Unknown file type: "%s"' % input
print('Unknown file type: "%s"' % input)
continue
if options.outputFile:
@ -322,7 +322,7 @@ def waitForKeyPress():
"""Force the DOS Prompt window to stay open so the user gets
a chance to see what's wrong."""
import msvcrt
print '(Hit any key to exit)'
print('(Hit any key to exit)')
while not msvcrt.kbhit():
pass
@ -332,14 +332,14 @@ def main(args):
try:
process(jobs, options)
except KeyboardInterrupt:
print "(Cancelled.)"
print("(Cancelled.)")
except SystemExit:
if sys.platform == "win32":
waitForKeyPress()
else:
raise
except TTLibError, e:
print "Error:",e
print("Error:",e)
except:
if sys.platform == "win32":
import traceback

View File

@ -7,4 +7,4 @@ fontToolsDir = os.path.dirname(os.path.dirname(os.path.normpath(
os.chdir(fontToolsDir)
os.system("git2cl > Doc/ChangeLog")
print "done."
print("done.")

View File

@ -25,7 +25,7 @@ class Error(Exception): pass
def usage():
print __doc__
print(__doc__)
sys.exit(2)
@ -58,7 +58,7 @@ def roundTrip(ttFile1, options, report):
report.write("-------------------------------------------------------------\n")
report.writelines(lines)
else:
print "(TTX files are the same)"
print("(TTX files are the same)")
finally:
for tmpFile in (xmlFile1, ttFile2, xmlFile2):
if os.path.exists(tmpFile):
@ -80,10 +80,10 @@ def main(args):
try:
roundTrip(ttFile, options, report)
except KeyboardInterrupt:
print "(Cancelled)"
print("(Cancelled)")
break
except:
print "*** round tripping aborted ***"
print("*** round tripping aborted ***")
traceback.print_exc()
report.write("=============================================================\n")
report.write(" An exception occurred while round tripping")