Sun, 31 Jan 2010 18:31:28 +0000
Finished cleaning up the code supported by py3flakes.
# -*- coding: utf-8 -*- # Copyright (c) 2003-2010 Detlev Offenbach <detlev@die-offenbachs.de> # # This is a script to patch mod_python for eric5. """ Script to patch mod_python for usage with the eric5 IDE. """ import sys import os import shutil import py_compile import distutils.sysconfig # Define the globals. progName = None modDir = None def usage(rcode = 2): """ Display a usage message and exit. rcode is the return code passed back to the calling process. """ global progName, modDir print("Usage:") print(" %s [-h] [-d dir]" % (progName)) print("where:") print(" -h display this help message") print(" -d dir where Mod_python files are installed [default %s]" % \ (modDir)) print() print("This script patches the file apache.py of the Mod_python distribution") print("so that it will work with the eric5 debugger instead of pdb.") print("Please see mod_python.html for more details.") print() sys.exit(rcode) def initGlobals(): """ Sets the values of globals that need more than a simple assignment. """ global modDir modDir = os.path.join(distutils.sysconfig.get_python_lib(True), "mod_python") def main(argv): """The main function of the script. argv is the list of command line arguments. """ import getopt # Parse the command line. global progName, modDir progName = os.path.basename(argv[0]) initGlobals() try: optlist, args = getopt.getopt(argv[1:],"hd:") except getopt.GetoptError: usage() for opt, arg in optlist: if opt == "-h": usage(0) elif opt == "-d": global modDir modDir = arg try: filename = os.path.join(modDir, "apache.py") f = open(filename, "r", encoding = "utf-8") except EnvironmentError: print("The file %s does not exist. Aborting." % filename) sys.exit(1) lines = f.readlines() f.close() pdbFound = False ericFound = False sn = "apache.py" s = open(sn, "w", encoding = "utf-8") for line in lines: if not pdbFound and line.startswith("import pdb"): s.write("import eric5.DebugClients.Python.eric5dbgstub as pdb\n") pdbFound = True else: s.write(line) if line.startswith("import eric5"): ericFound = True if not ericFound: s.write("\n") s.write('def initDebugger(name):\n') s.write(' """\n') s.write(' Initialize the debugger and set the script name to be reported \n') s.write(' by the debugger. This is a patch for eric5.\n') s.write(' """\n') s.write(' if not pdb.initDebugger("standard"):\n') s.write(' raise ImportError("Could not initialize debugger")\n') s.write(' pdb.setScriptname(name)\n') s.write("\n") s.close() if ericFound: print("Mod_python is already patched for eric5.") os.remove(sn) else: try: py_compile.compile(sn) except py_compile.PyCompileError as e: print("Error compiling %s. Aborting" % sn) print(e) os.remove(sn) sys.exit(1) except SyntaxError as e: print("Error compiling %s. Aborting" % sn) print(e) os.remove(sn) sys.exit(1) shutil.copy(os.path.join(modDir, "apache.py"), os.path.join(modDir, "apache.py.orig")) shutil.copy(sn, modDir) os.remove(sn) if os.path.exists("%sc" % sn): shutil.copy("%sc" % sn, modDir) os.remove("%sc" % sn) if os.path.exists("%so" % sn): shutil.copy("%so" % sn, modDir) os.remove("%so" % sn) print("Mod_python patched successfully.") print("Unpatched file copied to %s." % os.path.join(modDir, "apache.py.orig")) if __name__ == "__main__": try: main(sys.argv) except SystemExit: raise except: print("""An internal error occured. Please report all the output of the program, including the following traceback, to eric-bugs@die-offenbachs.de. """) raise