comment out most of the fluff in pyfa.py. Need to come back to this and get it all working

This commit is contained in:
Ryan Holmes
2017-06-12 16:37:15 -04:00
parent 828b18d0fd
commit 7f392006d1
3 changed files with 149 additions and 153 deletions

294
pyfa.py
View File

@@ -31,11 +31,6 @@ from logbook import CRITICAL, DEBUG, ERROR, FingersCrossedHandler, INFO, Logger,
import config
try:
import wxversion
except ImportError:
wxversion = None
try:
import sqlalchemy
except ImportError:
@@ -59,108 +54,108 @@ class PassThroughOptionParser(OptionParser):
pyfalog.error("Bad startup option passed.")
largs.append(e.opt_str)
class LoggerWriter(object):
def __init__(self, level):
# self.level is really like using log.debug(message)
# at least in my case
self.level = level
def write(self, message):
# if statement reduces the amount of newlines that are
# printed to the logger
if message not in {'\n', ' '}:
self.level(message.replace("\n", ""))
def flush(self):
# create a flush method so things can be flushed when
# the system wants to. Not sure if simply 'printing'
# sys.stderr is the correct way to do it, but it seemed
# to work properly for me.
self.level(sys.stderr)
class PreCheckException(Exception):
def __init__(self, msg):
try:
ln = sys.exc_info()[-1].tb_lineno
except AttributeError:
ln = inspect.currentframe().f_back.f_lineno
self.message = "{0.__name__} (line {1}): {2}".format(type(self), ln, msg)
self.args = self.message,
def handleGUIException(exc_type, exc_value, exc_traceback):
try:
# Try and import wx in case it's missing.
# noinspection PyPackageRequirements
import wx
from gui.errorDialog import ErrorFrame
except:
# noinspection PyShadowingNames
wx = None
# noinspection PyShadowingNames
ErrorFrame = None
tb = traceback.format_tb(exc_traceback)
try:
# Try and output to our log handler
with logging_setup.threadbound():
module_list = list(set(sys.modules) & set(globals()))
if module_list:
pyfalog.info("Imported Python Modules:")
for imported_module in module_list:
module_details = sys.modules[imported_module]
pyfalog.info("{0}: {1}", imported_module, getattr(module_details, '__version__', ''))
pyfalog.critical("Exception in main thread: {0}", exc_value.message)
# Print the base level traceback
traceback.print_tb(exc_traceback)
if wx and ErrorFrame:
pyfa_gui = wx.App(False)
if exc_type == PreCheckException:
msgbox = wx.MessageBox(exc_value.message, 'Error', wx.ICON_ERROR | wx.STAY_ON_TOP)
msgbox.ShowModal()
else:
ErrorFrame(exc_value, tb)
pyfa_gui.MainLoop()
pyfalog.info("Exiting.")
except:
# Most likely logging isn't available. Try and output to the console
module_list = list(set(sys.modules) & set(globals()))
if module_list:
pyfalog.info("Imported Python Modules:")
for imported_module in module_list:
module_details = sys.modules[imported_module]
print((str(imported_module) + ": " + str(getattr(module_details, '__version__', ''))))
print(("Exception in main thread: " + str(exc_value.message)))
traceback.print_tb(exc_traceback)
if wx and ErrorFrame:
pyfa_gui = wx.App(False)
if exc_type == PreCheckException:
msgbox = wx.MessageBox(exc_value.message, 'Error', wx.ICON_ERROR | wx.STAY_ON_TOP)
msgbox.ShowModal()
else:
ErrorFrame(exc_value, tb)
pyfa_gui.MainLoop()
print("Exiting.")
finally:
# TODO: Add cleanup when exiting here.
sys.exit()
# Replace the uncaught exception handler with our own handler.
sys.excepthook = handleGUIException
#
# class LoggerWriter(object):
# def __init__(self, level):
# # self.level is really like using log.debug(message)
# # at least in my case
# self.level = level
#
# def write(self, message):
# # if statement reduces the amount of newlines that are
# # printed to the logger
# if message not in {'\n', ' '}:
# self.level(message.replace("\n", ""))
#
# def flush(self):
# # create a flush method so things can be flushed when
# # the system wants to. Not sure if simply 'printing'
# # sys.stderr is the correct way to do it, but it seemed
# # to work properly for me.
# self.level(sys.stderr)
#
#
# class PreCheckException(Exception):
# def __init__(self, msg):
# try:
# ln = sys.exc_info()[-1].tb_lineno
# except AttributeError:
# ln = inspect.currentframe().f_back.f_lineno
# self.message = "{0.__name__} (line {1}): {2}".format(type(self), ln, msg)
# self.args = self.message,
#
#
# def handleGUIException(exc_type, exc_value, exc_traceback):
# try:
# # Try and import wx in case it's missing.
# # noinspection PyPackageRequirements
# import wx
# from gui.errorDialog import ErrorFrame
# except:
# # noinspection PyShadowingNames
# wx = None
# # noinspection PyShadowingNames
# ErrorFrame = None
#
# tb = traceback.format_tb(exc_traceback)
#
# try:
#
# # Try and output to our log handler
# with logging_setup.threadbound():
# module_list = list(set(sys.modules) & set(globals()))
# if module_list:
# pyfalog.info("Imported Python Modules:")
# for imported_module in module_list:
# module_details = sys.modules[imported_module]
# pyfalog.info("{0}: {1}", imported_module, getattr(module_details, '__version__', ''))
#
# pyfalog.critical("Exception in main thread: {0}", exc_value.message)
# # Print the base level traceback
# traceback.print_tb(exc_traceback)
#
# if wx and ErrorFrame:
# pyfa_gui = wx.App(False)
# if exc_type == PreCheckException:
# msgbox = wx.MessageBox(exc_value.message, 'Error', wx.ICON_ERROR | wx.STAY_ON_TOP)
# msgbox.ShowModal()
# else:
# ErrorFrame(exc_value, tb)
#
# pyfa_gui.MainLoop()
#
# pyfalog.info("Exiting.")
# except:
# # Most likely logging isn't available. Try and output to the console
# module_list = list(set(sys.modules) & set(globals()))
# if module_list:
# pyfalog.info("Imported Python Modules:")
# for imported_module in module_list:
# module_details = sys.modules[imported_module]
# print((str(imported_module) + ": " + str(getattr(module_details, '__version__', ''))))
#
# print(("Exception in main thread: " + str(exc_value.message)))
# traceback.print_tb(exc_traceback)
#
# if wx and ErrorFrame:
# pyfa_gui = wx.App(False)
# if exc_type == PreCheckException:
# msgbox = wx.MessageBox(exc_value.message, 'Error', wx.ICON_ERROR | wx.STAY_ON_TOP)
# msgbox.ShowModal()
# else:
# ErrorFrame(exc_value, tb)
#
# pyfa_gui.MainLoop()
#
# print("Exiting.")
#
# finally:
# # TODO: Add cleanup when exiting here.
# sys.exit()
#
#
# # Replace the uncaught exception handler with our own handler.
# sys.excepthook = handleGUIException
# Parse command line options
usage = "usage: %prog [--root]"
@@ -173,19 +168,19 @@ parser.add_option("-s", "--savepath", action="store", dest="savepath", help="Set
parser.add_option("-l", "--logginglevel", action="store", dest="logginglevel", help="Set desired logging level [Critical|Error|Warning|Info|Debug]", default="Error")
(options, args) = parser.parse_args()
if options.logginglevel == "Critical":
options.logginglevel = CRITICAL
elif options.logginglevel == "Error":
options.logginglevel = ERROR
elif options.logginglevel == "Warning":
options.logginglevel = WARNING
elif options.logginglevel == "Info":
options.logginglevel = INFO
elif options.logginglevel == "Debug":
options.logginglevel = DEBUG
else:
options.logginglevel = ERROR
#
# if options.logginglevel == "Critical":
# options.logginglevel = CRITICAL
# elif options.logginglevel == "Error":
# options.logginglevel = ERROR
# elif options.logginglevel == "Warning":
# options.logginglevel = WARNING
# elif options.logginglevel == "Info":
# options.logginglevel = INFO
# elif options.logginglevel == "Debug":
# options.logginglevel = DEBUG
# else:
# options.logginglevel = ERROR
if __name__ == "__main__":
# Configure paths
@@ -284,55 +279,55 @@ if __name__ == "__main__":
pyfalog.info("Writing log file to: {0}", config.logPath)
# Output all stdout (print) messages as warnings
try:
sys.stdout = LoggerWriter(pyfalog.warning)
except:
pyfalog.critical("Cannot redirect. Continuing without writing stdout to log.")
# try:
# sys.stdout = LoggerWriter(pyfalog.warning)
# except:
# pyfalog.critical("Cannot redirect. Continuing without writing stdout to log.")
# Output all stderr (stacktrace) messages as critical
try:
sys.stderr = LoggerWriter(pyfalog.critical)
except:
pyfalog.critical("Cannot redirect. Continuing without writing stderr to log.")
# try:
# sys.stderr = LoggerWriter(pyfalog.critical)
# except:
# pyfalog.critical("Cannot redirect. Continuing without writing stderr to log.")
pyfalog.info("OS version: {0}", platform.platform())
pyfalog.info("Python version: {0}", sys.version)
if sys.version_info < (2, 7) or sys.version_info > (3, 0):
exit_message = "Pyfa requires python 2.x branch ( >= 2.7 )."
raise PreCheckException(exit_message)
# if sys.version_info < (2, 7) or sys.version_info > (3, 0):
# exit_message = "Pyfa requires python 2.x branch ( >= 2.7 )."
# raise PreCheckException(exit_message)
if hasattr(sys, 'frozen'):
pyfalog.info("Running in a frozen state.")
else:
pyfalog.info("Running in a thawed state.")
if not hasattr(sys, 'frozen') and wxversion:
try:
if options.force28 is True:
pyfalog.info("Selecting wx version: 2.8. (Forced)")
wxversion.select('2.8')
else:
pyfalog.info("Selecting wx versions: 3.0, 2.8")
wxversion.select(['3.0', '2.8'])
except:
pyfalog.warning("Unable to select wx version. Attempting to import wx without specifying the version.")
else:
if not wxversion:
pyfalog.warning("wxVersion not found. Attempting to import wx without specifying the version.")
# if not hasattr(sys, 'frozen') and wxversion:
# try:
# if options.force28 is True:
# pyfalog.info("Selecting wx version: 2.8. (Forced)")
# wxversion.select('2.8')
# else:
# pyfalog.info("Selecting wx versions: 3.0, 2.8")
# wxversion.select(['3.0', '2.8'])
# except:
# pyfalog.warning("Unable to select wx version. Attempting to import wx without specifying the version.")
# else:
# if not wxversion:
# pyfalog.warning("wxVersion not found. Attempting to import wx without specifying the version.")
try:
# noinspection PyPackageRequirements
import wx
except:
exit_message = "Cannot import wxPython. You can download wxPython (2.8+) from http://www.wxpython.org/"
raise PreCheckException(exit_message)
# raise PreCheckException(exit_message)
pyfalog.info("wxPython version: {0}.", str(wx.VERSION_STRING))
if sqlalchemy is None:
exit_message = "\nCannot find sqlalchemy.\nYou can download sqlalchemy (0.6+) from http://www.sqlalchemy.org/"
raise PreCheckException(exit_message)
# raise PreCheckException(exit_message)
else:
saVersion = sqlalchemy.__version__
saMatch = re.match("([0-9]+).([0-9]+)([b\.])([0-9]+)", saVersion)
@@ -352,15 +347,16 @@ if __name__ == "__main__":
pyfalog.warning("Unknown sqlalchemy version string format, skipping check. Version: {0}", sqlalchemy.__version__)
logVersion = logbook_version.split('.')
if int(logVersion[0]) == 0 and int(logVersion[1]) < 10:
raise PreCheckException("Logbook version >= 0.10.0 is required.")
# if int(logVersion[0]) == 0 and int(logVersion[1]) < 10:
# raise PreCheckException("Logbook version >= 0.10.0 is required.")
if 'wxMac' not in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3, 0)):
try:
import requests
config.requestsVersion = requests.__version__
except ImportError:
raise PreCheckException("Cannot import requests. You can download requests from https://pypi.python.org/pypi/requests.")
pass
# raise PreCheckException("Cannot import requests. You can download requests from https://pypi.python.org/pypi/requests.")
import eos.db