--- .\setup-win32.py (original) +++ .\setup-win32.py (refactored) @@ -145,10 +145,10 @@ # get llvm config llvm_dir, llvm_build_dir, is_good = get_llvm_config() - print "Using llvm-dir=" + llvm_dir + " and llvm-build-dir=" + llvm_build_dir + print("Using llvm-dir=" + llvm_dir + " and llvm-build-dir=" + llvm_build_dir) if not is_good: - print "Cannot find llvm-dir or llvm-build-dir" - print "Try again with --llvm-dir=/path/to/llvm-top-dir --llvm-build-dir=/path/to/llvm/cmake/dir." + print("Cannot find llvm-dir or llvm-build-dir") + print("Try again with --llvm-dir=/path/to/llvm-top-dir --llvm-build-dir=/path/to/llvm/cmake/dir.") return 1 # setup --- .\setup.py (original) +++ .\setup.py (refactored) @@ -120,10 +120,10 @@ # get llvm config llvm_config, is_good = get_llvm_config() if is_good: - print "Using llvm-config=" + llvm_config + print("Using llvm-config=" + llvm_config) else: - print "Cannot invoke llvm-config (tried '%s')." % llvm_config - print "Try again with --llvm-config=/path/to/llvm-config." + print("Cannot invoke llvm-config (tried '%s')." % llvm_config) + print("Try again with --llvm-config=/path/to/llvm-config.") return 1 # setup --- .\llvm\__init__.py (original) +++ .\llvm\__init__.py (refactored) @@ -68,12 +68,12 @@ def _own(self, owner): if self.owner: - raise LLVMException, "object already owned" + raise LLVMException("object already owned") self.owner = owner def _disown(self): if not self.owner: - raise LLVMException, "not owned" + raise LLVMException("not owned") self.owner = None def __del__(self): @@ -135,15 +135,13 @@ # Cacheables #===----------------------------------------------------------------------=== -class Cacheable(object): +class Cacheable(object, metaclass=_ObjectCache): """Objects that can be cached. Objects that wrap a PyCObject are cached to avoid "aliasing", i.e., two Python objects each containing a PyCObject which internally points to the same C pointer.""" - __metaclass__ = _ObjectCache - def forget(self): _ObjectCache.forget(self) --- .\llvm\_util.py (original) +++ .\llvm\_util.py (refactored) @@ -45,11 +45,11 @@ if not isinstance(obj, typ): typ_str = typ.__name__ msg = "argument not an instance of llvm.core.%s" % typ_str - raise TypeError, msg + raise TypeError(msg) def check_is_unowned(ownable): if ownable.owner: - raise llvm.LLVMException, "object is already owned" + raise llvm.LLVMException("object is already owned") #===----------------------------------------------------------------------=== --- .\llvm\core.py (original) +++ .\llvm\core.py (refactored) @@ -297,7 +297,7 @@ if isinstance(typ, PointerType) and \ isinstance(typ.pointee, FunctionType): return - raise TypeError, "argument is neither a function nor a function pointer" + raise TypeError("argument is neither a function nor a function pointer") def _to_int(v): if v: @@ -341,9 +341,9 @@ data = fileobj.read() ret = _core.LLVMGetModuleFromBitcode(data) if not ret: - raise llvm.LLVMException, "Unable to create module from bitcode" + raise llvm.LLVMException("Unable to create module from bitcode") elif isinstance(ret, str): - raise llvm.LLVMException, ret + raise llvm.LLVMException(ret) else: return Module(ret) @@ -355,10 +355,9 @@ data = fileobj.read() ret = _core.LLVMGetModuleFromAssembly(data) if not ret: - raise llvm.LLVMException, \ - "Unable to create module from assembly" + raise llvm.LLVMException("Unable to create module from assembly") elif isinstance(ret, str): - raise llvm.LLVMException, ret + raise llvm.LLVMException(ret) else: return Module(ret) @@ -437,7 +436,7 @@ other.forget() # remove it from object cache ret = _core.LLVMLinkModules(self.ptr, other.ptr) if isinstance(ret, str): - raise llvm.LLVMException, ret + raise llvm.LLVMException(ret) # Do not try to destroy the other module's llvm::Module*. other._own(llvm.DummyOwner()) @@ -506,7 +505,7 @@ error.""" ret = _core.LLVMVerifyModule(self.ptr) if ret != "": - raise llvm.LLVMException, ret + raise llvm.LLVMException(ret) def to_bitcode(self, fileobj): """Write bitcode representation of module to given file-like @@ -514,7 +513,7 @@ data = _core.LLVMGetBitcodeFromModule(self.ptr) if not data: - raise llvm.LLVMException, "Unable to create bitcode" + raise llvm.LLVMException("Unable to create bitcode") fileobj.write(data) @@ -1236,7 +1235,7 @@ check_is_module(module) ptr = _core.LLVMGetNamedGlobal(module.ptr, name) if not ptr: - raise llvm.LLVMException, ("no global named `%s`" % name) + raise llvm.LLVMException("no global named `%s`" % name) return _make_value(ptr) def delete(self): @@ -1307,7 +1306,7 @@ check_is_module(module) ptr = _core.LLVMGetNamedFunction(module.ptr, name) if not ptr: - raise llvm.LLVMException, ("no function named `%s`" % name) + raise llvm.LLVMException("no function named `%s`" % name) return _make_value(ptr) @staticmethod @@ -2006,7 +2005,7 @@ ret = _core.LLVMLoadLibraryPermanently(filename) if isinstance(ret, str): - raise llvm.LLVMException, ret + raise llvm.LLVMException(ret) def inline_function(call): check_is_value(call) --- .\llvm\ee.py (original) +++ .\llvm\ee.py (refactored) @@ -103,12 +103,11 @@ return _core.LLVMPreferredAlignmentOfGlobal(self.ptr, ty_or_gv.ptr) else: - raise core.LLVMException, \ - "argument is neither a type nor a global variable" + raise core.LLVMException("argument is neither a type nor a global variable") def element_at_offset(self, ty, ofs): core.check_is_type_struct(ty) - ofs = long(ofs) # ofs is unsigned long long + ofs = int(ofs) # ofs is unsigned long long return _core.LLVMElementAtOffset(self.ptr, ty.ptr, ofs) def offset_of_element(self, ty, el): @@ -185,7 +184,7 @@ _util.check_is_unowned(module) ret = _core.LLVMCreateExecutionEngine(module.ptr, int(force_interpreter)) if isinstance(ret, str): - raise llvm.LLVMException, ret + raise llvm.LLVMException(ret) return ExecutionEngine(ret, module) def __init__(self, ptr, module): @@ -223,10 +222,10 @@ def remove_module(self, module): core.check_is_module(module) if module.owner != self: - raise llvm.LLVMException, "module is not owned by self" + raise llvm.LLVMException("module is not owned by self") ret = _core.LLVMRemoveModule2(self.ptr, module.ptr) if isinstance(ret, str): - raise llvm.LLVMException, ret + raise llvm.LLVMException(ret) return core.Module(ret) @property --- .\llvm\passes.py (original) +++ .\llvm\passes.py (refactored) @@ -245,8 +245,7 @@ elif tgt_data_or_pass_id in _pass_creator: self._add_pass(tgt_data_or_pass_id) else: - raise llvm.LLVMException, \ - ("invalid pass_id (%s)" % str(tgt_data_or_pass_id)) + raise llvm.LLVMException("invalid pass_id (%s)" % str(tgt_data_or_pass_id)) def _add_target_data(self, tgt): _core.LLVMAddTargetData(tgt.ptr, self.ptr) --- .\test\JITTutorial1.py (original) +++ .\test\JITTutorial1.py (refactored) @@ -28,4 +28,4 @@ bldr.ret (tmp_2) -print module +print(module) --- .\test\JITTutorial2.py (original) +++ .\test\JITTutorial2.py (refactored) @@ -47,4 +47,4 @@ recur_2 = bldr.call (gcd, (x_sub_y, y,), "tmp") bldr.ret (recur_2) -print module +print(module) --- .\test\asm.py (original) +++ .\test\asm.py (refactored) @@ -9,9 +9,9 @@ # write it's assembly representation to a file asm = str(m) -print >> file("/tmp/testasm.ll", "w"), asm +print(asm, file=file("/tmp/testasm.ll", "w")) # read it back into a module m2 = Module.from_assembly(file("/tmp/testasm.ll")) -print m2 +print(m2) --- .\test\call-jit-ctypes.py (original) +++ .\test\call-jit-ctypes.py (refactored) @@ -42,7 +42,7 @@ if 0: # print the created module - print my_module + print(my_module) # compile the function ee = ExecutionEngine.new(my_module) --- .\test\example-jit.py (original) +++ .\test\example-jit.py (refactored) @@ -29,5 +29,5 @@ retval = ee.run_function(f_sum, [arg1, arg2]) # The return value is also GenericValue. Let's print it. -print "returned", retval.as_int() +print("returned", retval.as_int()) --- .\test\example.py (original) +++ .\test\example.py (refactored) @@ -41,5 +41,5 @@ # We've completed the definition now! Let's see the LLVM assembly # language representation of what we've created: -print my_module +print(my_module) --- .\test\intrinsic.py (original) +++ .\test\intrinsic.py (refactored) @@ -16,7 +16,7 @@ val = Constant.int(Type.int(), 42) bswap = Function.intrinsic(mod, INTR_BSWAP, [Type.int()]) b.call(bswap, [val]) -print mod +print(mod) # the output is: # @@ -50,7 +50,7 @@ onemc2 = b.sub(one, cos2, "onemc2") sin = b.call(sqrt, [onemc2], "sin") b.ret(sin) -print mod +print(mod) # # ; ModuleID = 'test' --- .\test\objcache.py (original) +++ .\test\objcache.py (refactored) @@ -4,17 +4,17 @@ def check(a, b): if a is b: - print "OK" + print("OK") else: - print "FAIL" + print("FAIL") def check_isnot(a, b): if not (a is b): - print "OK" + print("OK") else: - print "FAIL" + print("FAIL") -print "Testing module aliasing ..", +print("Testing module aliasing ..", end=' ') m1 = Module.new('a') t = Type.int() ft = Type.function(t, [t]) @@ -22,75 +22,75 @@ m2 = f1.module check(m1, m2) -print "Testing global vairable aliasing 1 .. ", +print("Testing global vairable aliasing 1 .. ", end=' ') gv1 = GlobalVariable.new(m1, t, "gv") gv2 = GlobalVariable.get(m1, "gv") check(gv1, gv2) -print "Testing global vairable aliasing 2 .. ", +print("Testing global vairable aliasing 2 .. ", end=' ') gv3 = m1.global_variables[0] check(gv1, gv3) -print "Testing global vairable aliasing 3 .. ", +print("Testing global vairable aliasing 3 .. ", end=' ') gv2 = None gv3 = None gv1.delete() gv4 = GlobalVariable.new(m1, t, "gv") check_isnot(gv1, gv4) -print "Testing function aliasing 1 ..", +print("Testing function aliasing 1 ..", end=' ') b1 = f1.append_basic_block('entry') f2 = b1.function check(f1, f2) -print "Testing function aliasing 2 ..", +print("Testing function aliasing 2 ..", end=' ') f3 = m1.get_function_named("func") check(f1, f3) -print "Testing function aliasing 3 ..", +print("Testing function aliasing 3 ..", end=' ') f4 = Function.get_or_insert(m1, ft, "func") check(f1, f4) -print "Testing function aliasing 4 ..", +print("Testing function aliasing 4 ..", end=' ') f5 = Function.get(m1, "func") check(f1, f5) -print "Testing function aliasing 5 ..", +print("Testing function aliasing 5 ..", end=' ') f6 = m1.get_or_insert_function(ft, "func") check(f1, f6) -print "Testing function aliasing 6 ..", +print("Testing function aliasing 6 ..", end=' ') f7 = m1.functions[0] check(f1, f7) -print "Testing argument aliasing .. ", +print("Testing argument aliasing .. ", end=' ') a1 = f1.args[0] a2 = f1.args[0] check(a1, a2) -print "Testing basic block aliasing 1 .. ", +print("Testing basic block aliasing 1 .. ", end=' ') b2 = f1.basic_blocks[0] check(b1, b2) -print "Testing basic block aliasing 2 .. ", +print("Testing basic block aliasing 2 .. ", end=' ') b3 = f1.get_entry_basic_block() check(b1, b3) -print "Testing basic block aliasing 3 .. ", +print("Testing basic block aliasing 3 .. ", end=' ') b31 = f1.entry_basic_block check(b1, b31) -print "Testing basic block aliasing 4 .. ", +print("Testing basic block aliasing 4 .. ", end=' ') bldr = Builder.new(b1) b4 = bldr.basic_block check(b1, b4) -print "Testing basic block aliasing 5 .. ", +print("Testing basic block aliasing 5 .. ", end=' ') i1 = bldr.ret_void() b5 = i1.basic_block check(b1, b5) -print "Testing instruction aliasing 1 .. ", +print("Testing instruction aliasing 1 .. ", end=' ') i2 = b5.instructions[0] check(i1, i2) @@ -100,9 +100,9 @@ v2 = phi.get_incoming_value(0) b6 = phi.get_incoming_block(0) -print "Testing PHI / basic block aliasing 5 .. ", +print("Testing PHI / basic block aliasing 5 .. ", end=' ') check(b1, b6) -print "Testing PHI / value aliasing .. ", +print("Testing PHI / value aliasing .. ", end=' ') check(f1.args[0], v2) --- .\test\operands.py (original) +++ .\test\operands.py (refactored) @@ -28,9 +28,9 @@ def __init__(self): pass def read(self): return test_module m = Module.from_assembly(strstream()) -print "-"*60 -print m -print "-"*60 +print("-"*60) +print(m) +print("-"*60) test_func = m.get_function_named("test_func") prod = m.get_function_named("prod") @@ -38,16 +38,16 @@ #===----------------------------------------------------------------------=== # test operands -print +print() i1 = test_func.basic_blocks[0].instructions[0] i2 = test_func.basic_blocks[0].instructions[1] -print "Testing User.operand_count ..", +print("Testing User.operand_count ..", end=' ') if i1.operand_count == 3 and i2.operand_count == 2: - print "OK" + print("OK") else: - print "FAIL" + print("FAIL") -print "Testing User.operands ..", +print("Testing User.operands ..", end=' ') c1 = i1.operands[0] is prod c2 = i1.operands[1] is test_func.args[0] c3 = i1.operands[2] is test_func.args[1] @@ -56,22 +56,22 @@ c6 = len(i1.operands) == 3 c7 = len(i2.operands) == 2 if c1 and c2 and c3 and c5 and c6 and c7: - print "OK" + print("OK") else: - print "FAIL" -print + print("FAIL") +print() #===----------------------------------------------------------------------=== # show test_function -print "Examining test_function `test_test_func':" +print("Examining test_function `test_test_func':") idx = 1 for inst in test_func.basic_blocks[0].instructions: - print "Instruction #%d:" % (idx,) - print " operand_count =", inst.operand_count - print " operands:" + print("Instruction #%d:" % (idx,)) + print(" operand_count =", inst.operand_count) + print(" operands:") oidx = 1 for op in inst.operands: - print " %d: %s" % (oidx, repr(op)) + print(" %d: %s" % (oidx, repr(op))) oidx += 1 idx += 1 --- .\test\passes.py (original) +++ .\test\passes.py (refactored) @@ -36,8 +36,8 @@ } """ m = Module.from_assembly(strstream(asm)) -print "-"*72 -print m +print("-"*72) +print(m) # Let's run a module-level inlining pass. First, create a pass manager. pm = PassManager.new() @@ -55,8 +55,8 @@ del pm # Print the result. Note the change in @test2. -print "-"*72 -print m +print("-"*72) +print(m) # Let's run a DCE pass on the the function 'test1' now. First create a @@ -73,5 +73,5 @@ fpm.run( m.get_function_named('test1') ) # Print the result. Note the change in @test1. -print "-"*72 -print m +print("-"*72) +print(m) --- .\test\test.py (original) +++ .\test\test.py (refactored) @@ -69,7 +69,7 @@ # done if gc.garbage: - print "garbage = ", gc.garbage + print("garbage = ", gc.garbage) main() --- .\test\testall.py (original) +++ .\test\testall.py (refactored) @@ -15,12 +15,12 @@ def do_llvmexception(): - print " Testing class LLVMException" + print(" Testing class LLVMException") e = LLVMException() def do_ownable(): - print " Testing class Ownable" + print(" Testing class Ownable") o = Ownable(None, lambda x: None) try: o._own(None) @@ -30,7 +30,7 @@ def do_misc(): - print " Testing miscellaneous functions" + print(" Testing miscellaneous functions") try: load_library_permanently("/usr/lib/libm.so") except LLVMException: @@ -42,14 +42,14 @@ def do_llvm(): - print " Testing module llvm" + print(" Testing module llvm") do_llvmexception() do_ownable() do_misc() def do_module(): - print " Testing class Module" + print(" Testing class Module") m = Module.new('test') m.target = 'a' a = m.target @@ -101,7 +101,7 @@ def do_type(): - print " Testing class Type" + print(" Testing class Type") for i in range(1,100): Type.int(i) Type.float() @@ -151,14 +151,14 @@ def do_typehandle(): - print " Testing class TypeHandle" + print(" Testing class TypeHandle") th = TypeHandle.new(Type.opaque()) ts = Type.struct([ Type.int(), Type.pointer(th.type) ]) th.type.refine(ts) def do_value(): - print " Testing class Value" + print(" Testing class Value") k = Constant.int(ti, 42) k.name = 'a' s = k.name @@ -186,7 +186,7 @@ def do_constant(): - print " Testing class Constant" + print(" Testing class Constant") Constant.null(ti) Constant.all_ones(ti) Constant.undef(ti) @@ -231,7 +231,7 @@ def do_global_value(): - print " Testing class GlobalValue" + print(" Testing class GlobalValue") m = Module.new('a') gv = GlobalVariable.new(m, Type.int(), 'b') s = gv.is_declaration @@ -247,7 +247,7 @@ def do_global_variable(): - print " Testing class GlobalVariable" + print(" Testing class GlobalVariable") m = Module.new('a') gv = GlobalVariable.new(m, Type.int(), 'b') gv = GlobalVariable.get(m, 'b') @@ -260,7 +260,7 @@ def do_argument(): - print " Testing class Argument" + print(" Testing class Argument") m = Module.new('a') ft = Type.function(ti, [ti]) f = Function.new(m, ft, 'func') @@ -272,7 +272,7 @@ def do_function(): - print " Testing class Function" + print(" Testing class Function") ft = Type.function(ti, [ti]*20) zz = Function.new(Module.new('z'), ft, 'foobar') del zz @@ -307,7 +307,7 @@ def do_instruction(): - print " Testing class Instruction" + print(" Testing class Instruction") m = Module.new('a') ft = Type.function(ti, [ti]*20) f = Function.new(m, ft, 'func') @@ -320,7 +320,7 @@ def do_callorinvokeinstruction(): - print " Testing class CallOrInvokeInstruction" + print(" Testing class CallOrInvokeInstruction") m = Module.new('a') ft = Type.function(ti, [ti]) f = Function.new(m, ft, 'func') @@ -337,7 +337,7 @@ def do_phinode(): - print " Testing class PhiNode" + print(" Testing class PhiNode") m = Module.new('a') ft = Type.function(ti, [ti]) f = Function.new(m, ft, 'func') @@ -354,7 +354,7 @@ def do_switchinstruction(): - print " Testing class SwitchInstruction" + print(" Testing class SwitchInstruction") m = Module.new('a') ft = Type.function(ti, [ti]) f = Function.new(m, ft, 'func') @@ -365,7 +365,7 @@ def do_basicblock(): - print " Testing class BasicBlock" + print(" Testing class BasicBlock") m = Module.new('a') ft = Type.function(ti, [ti]) f = Function.new(m, ft, 'func') @@ -395,7 +395,7 @@ def do_builder(): - print " Testing class Builder" + print(" Testing class Builder") m = Module.new('a') ft = Type.function(ti, [ti]) f = Function.new(m, ft, 'func') @@ -488,7 +488,7 @@ def do_llvm_core(): - print " Testing module llvm.core" + print(" Testing module llvm.core") do_module() do_type() do_typehandle() @@ -508,7 +508,7 @@ def do_targetdata(): - print " Testing class TargetData" + print(" Testing class TargetData") t = TargetData.new('') v = str(t) v = t.byte_order @@ -530,7 +530,7 @@ def do_genericvalue(): - print " Testing class GenericValue" + print(" Testing class GenericValue") v = GenericValue.int(ti, 1) v = GenericValue.int_signed(ti, 1) v = GenericValue.real(Type.float(), 3.14) @@ -540,7 +540,7 @@ def do_executionengine(): - print " Testing class ExecutionEngine" + print(" Testing class ExecutionEngine") m = Module.new('a') ee = ExecutionEngine.new(m, True) ft = Type.function(ti, []) @@ -567,14 +567,14 @@ def do_llvm_ee(): - print " Testing module llvm.ee" + print(" Testing module llvm.ee") do_targetdata() do_genericvalue() do_executionengine() def do_passmanager(): - print " Testing class PassManager" + print(" Testing class PassManager") pm = PassManager.new() pm.add(TargetData.new('')) for i in [getattr(llvm.passes, x) for x in \ @@ -586,7 +586,7 @@ def do_functionpassmanager(): - print " Testing class FunctionPassManager" + print(" Testing class FunctionPassManager") m = Module.new('a') ft = Type.function(ti, []) f = m.add_function(ft, 'func') @@ -602,13 +602,13 @@ def do_llvm_passes(): - print " Testing module llvm.passes" + print(" Testing module llvm.passes") do_passmanager() do_functionpassmanager() def main(): - print "Testing package llvm" + print("Testing package llvm") do_llvm() do_llvm_core() do_llvm_ee() --- .\test\testattrs.py (original) +++ .\test\testattrs.py (refactored) @@ -1,7 +1,7 @@ #!/usr/bin/env python from llvm.core import * -from cStringIO import StringIO +from io import StringIO def make_module(): --- .\test\typehandle.py (original) +++ .\test\typehandle.py (refactored) @@ -16,4 +16,4 @@ m.add_type_name("struct.node", th.type) # show what we created -print m +print(m) --- .\test\uses.py (original) +++ .\test\uses.py (refactored) @@ -13,11 +13,11 @@ tmp3 = bld.add(tmp1, f.args[2], "tmp3") bld.ret(tmp3) -print "-"*60 -print m -print "-"*60 +print("-"*60) +print(m) +print("-"*60) -print "Testing use count ..", +print("Testing use count ..", end=' ') c1 = f.args[0].use_count == 1 c2 = f.args[1].use_count == 1 c3 = f.args[2].use_count == 1 @@ -25,11 +25,11 @@ c5 = tmp2.use_count == 0 c6 = tmp3.use_count == 1 if c1 and c2 and c3 and c4 and c5 and c6: - print "OK" + print("OK") else: - print "FAIL" + print("FAIL") -print "Testing uses ..", +print("Testing uses ..", end=' ') c1 = f.args[0].uses[0] is tmp1 c2 = len(f.args[0].uses) == 1 c3 = f.args[1].uses[0] is tmp2 @@ -40,6 +40,6 @@ c8 = len(tmp2.uses) == 0 c9 = len(tmp3.uses) == 1 if c1 and c2 and c3 and c4 and c5 and c6 and c7 and c8 and c9: - print "OK" + print("OK") else: - print "FAIL" + print("FAIL") --- .\tools\intrgen.py (original) +++ .\tools\intrgen.py (refactored) @@ -26,7 +26,7 @@ idx = 1 for i in intr: s = 'INTR_' + i.upper() - print '%s = %d' % (s.ljust(maxw), idx) + print('%s = %d' % (s.ljust(maxw), idx)) idx += 1 gen(sys.argv[1]) --- .\tools\intrs_for_doc.py (original) +++ .\tools\intrs_for_doc.py (refactored) @@ -21,5 +21,5 @@ outf = open(OUTF, 'wt') i = 0 while i < len(intrs): - print >>outf, "`" + "`,`".join(intrs[i:min(i+NCOLS,len(intrs)+1)]) + "`" + print("`" + "`,`".join(intrs[i:min(i+NCOLS,len(intrs)+1)]) + "`", file=outf) i += NCOLS --- .\www\makeweb.py (original) +++ .\www\makeweb.py (refactored) @@ -52,7 +52,7 @@ def _rmtree_warn(fn, path, excinfo): - print "** WARNING **: error while doing %s on %s" % (fn, path) + print("** WARNING **: error while doing %s on %s" % (fn, path)) def _can_skip(opts, infile, outfile): @@ -67,14 +67,14 @@ cmd = cmdfn(opts, infile, outfile_actual) if _can_skip(opts, infile, outfile_actual): if opts.verbose >= 2: - print "up to date %s -> %s" % (infile, outfile_actual) + print("up to date %s -> %s" % (infile, outfile_actual)) return if cmd: # do cmd if opts.verbose: - print "process %s -> %s" % (infile, outfile_actual) + print("process %s -> %s" % (infile, outfile_actual)) if opts.verbose >= 3: - print "command is [%s]" % cmd + print("command is [%s]" % cmd) if not opts.dryrun: os.system(cmd) # else if cmd is None, do nothing @@ -83,7 +83,7 @@ # nothing matched, default action is to copy if not _can_skip(opts, infile, outfile): if opts.verbose: - print "copying %s -> %s" % (infile, outfile) + print("copying %s -> %s" % (infile, outfile)) if not opts.dryrun: shutil.copy(infile, outfile) @@ -95,14 +95,14 @@ # if it exists, it must be a dir! if odexists and not os.path.isdir(outdir): - print "** WARNING **: output dir '%s' exists but is " \ - "not a dir, skipping" % outdir + print("** WARNING **: output dir '%s' exists but is " \ + "not a dir, skipping" % outdir) return # make outdir if not existing if not odexists: if opts.verbose: - print "creating %s" % outdir + print("creating %s" % outdir) if not opts.dryrun: os.mkdir(outdir) @@ -114,8 +114,8 @@ # process files if os.path.isfile(inp): if os.path.exists(outp) and not os.path.isfile(outp): - print "** WARNING **: output '%s' corresponding to " \ - "input '%s' is not a file, skipping" % (outp, inp) + print("** WARNING **: output '%s' corresponding to " \ + "input '%s' is not a file, skipping" % (outp, inp)) else: process_file(opts, inp, outp) @@ -124,15 +124,15 @@ # if dir is in skip list, silently ignore if elem in DIR_SKIP_TBL: if opts.verbose >= 3: - print "skipping %s" % inp + print("skipping %s" % inp) continue # just recurse make(opts, inp, outp) # neither a file nor a dir else: - print "** WARNING **: input '%s' is neither file nor " \ - "dir, skipping" % inp + print("** WARNING **: input '%s' is neither file nor " \ + "dir, skipping" % inp) def get_opts(): @@ -173,14 +173,14 @@ def main(): opts, src, dest = get_opts() if opts.verbose >= 3: - print ("running with options:\nsrc = [%s]\ndest = [%s]\nverbose = [%d]\n" +\ + print(("running with options:\nsrc = [%s]\ndest = [%s]\nverbose = [%d]\n" +\ "dry-run = [%d]\nclean-first = [%d]\nforce = [%d]") %\ - (src, dest, opts.verbose, opts.dryrun, opts.clean, opts.force) + (src, dest, opts.verbose, opts.dryrun, opts.clean, opts.force)) if opts.dryrun and opts.verbose == 0: opts.verbose = 1 if opts.clean: if opts.dryrun or opts.verbose: - print "removing tree %s" % dest + print("removing tree %s" % dest) if not opts.dryrun: os.rmtree(dest, True, _rmtree_warn) make(opts, src, dest)