def writelogheader(): """ Save additional version, system and status info to the log file in use. This may help the user to track errors or report bugs. """ # if site not available it's too early to print a header (work-a-round) try: site = pywikibot.Site() except AttributeError: return log(u'=== Pywikibot framework v2.0 -- Logging header ===') # script call log(u'COMMAND: %s' % unicode(sys.argv)) # script call time stamp log(u'DATE: %s UTC' % str(datetime.datetime.utcnow())) # new framework release/revision? (handleArgs needs to be called first) try: log(u'VERSION: %s' % version.getversion(online=config.log_pywiki_repo_version).strip()) except version.ParseError: exception() if config.log_pywiki_repo_version: log(u'PYWIKI REPO VERSION: %s' % unicode(version.getversion_onlinerepo())) log(u'SITE VERSION: %s' % unicode(site.live_version())) # system if hasattr(os, 'uname'): log(u'SYSTEM: %s' % unicode(os.uname())) # imported modules log(u'MODULES:') for item in list(sys.modules.keys()): ver = version.getfileversion('%s.py' % item.replace('.', '/')) if ver: log(u' %s' % ver) # messages on bot discussion page? if site.logged_in(): if site.messages(): messagestate = 'unanswered' else: messagestate = 'none' else: messagestate = 'unknown (not logged in)' log(u'MESSAGES: %s' % messagestate) log(u'=== ' * 14)
def writelogheader(): """ Save additional version, system and status info to the logfile in use, so that the user can look it up later to track errors or report bugs. """ # if site not available it's too early to print a header (work-a-round) try: site = pywikibot.getSite() except AttributeError: return log(u'=== Pywikibot framework v2.0 -- Logging header ===') # script call log(u'COMMAND: %s' % unicode(sys.argv)) # new framework release/revision? (handleArgs needs to be called first) try: log(u'VERSION: %s' % unicode((version.getversion().strip(), version.getversion_onlinerepo(), site.live_version()))) except version.ParseError: exception() # system if hasattr(os, 'uname'): log(u'SYSTEM: %s' % unicode(os.uname())) # imported modules log(u'MODULES:') for item in sys.modules.keys(): ver = version.getfileversion('%s.py' % item.replace('.', '/')) if ver: log(u' %s' % ver) # messages on bot discussion page? log(u'MESSAGES: %s' % ('unanswered' if site.messages() else 'none')) log(u'=== ' * 14)
def writelogheader(): """ Save additional version, system and status info to the logfile in use, so that the user can look it up later to track errors or report bugs. """ # if site not available it's too early to print a header (work-a-round) try: site = pywikibot.getSite() except AttributeError: return log(u'=== Pywikipediabot framework v2.0 -- Logging header ===') # script call log(u'COMMAND: %s' % unicode(sys.argv)) # new framework release/revision? (handleArgs needs to be called first) try: log(u'VERSION: %s' % unicode( (version.getversion().strip(), version.getversion_onlinerepo(), site.live_version()))) except version.ParseError: exception() # system if hasattr(os, 'uname'): log(u'SYSTEM: %s' % unicode(os.uname())) # imported modules log(u'MODULES:') for item in sys.modules.keys(): ver = version.getfileversion('%s.py' % item.replace('.', '/')) if ver and (ver[0] == u'$'): log(u' %s' % ver) # messages on bot discussion page? log(u'MESSAGES: %s' % ('unanswered' if site.messages() else 'none')) log(u'=== ' * 14)
path = os.path.split(sys.argv[0])[0] cmd = sys.argv.pop(1) cmd = cmd.lstrip(u"-") if u".py" not in cmd.lower(): cmd += u".py" sys.argv[0] = os.path.join(path, cmd) bot_name = os.path.splitext(os.path.basename(sys.argv[0]))[0] error = u"" try: __release = version.getversiondict() d = shelve.open(pywikibot.config.datafilepath("cache", "state_bots")) d["bot_control"] = { "release_rev": str(__release["rev"]), "release_ver": __release["hsh"][:7], "online_ver": version.getversion_onlinerepo()[:7], } pywikibot.output(d["bot_control"]) pywikibot.output(u"=== " * 14) d.close() sys.path.append(os.path.split(sys.argv[0])[0]) execfile(sys.argv[0]) exitcode = ERROR_SGE_ok pywikibot.output(u"") pywikibot.output(u"DONE") except: pywikibot.exception(tb=True) error = traceback.format_exc() if pywikibot.logger.isEnabledFor(pywikibot.DEBUG):
def writelogheader(): """ Save additional version, system and status info to the log file in use. This may help the user to track errors or report bugs. """ # If a http thread is not available, it's too early to print a header # that includes version information, which may need to query a server. # The http module can't be imported due to circular dependencies. http = sys.modules.get('pywikibot.comms.http', None) if not http or not hasattr(http, 'threads') or not len(http.threads): return log(u'=== Pywikibot framework v2.0 -- Logging header ===') # script call log(u'COMMAND: %s' % unicode(sys.argv)) # script call time stamp log(u'DATE: %s UTC' % str(datetime.datetime.utcnow())) # new framework release/revision? (handleArgs needs to be called first) try: log(u'VERSION: %s' % version.getversion(online=config.log_pywiki_repo_version).strip()) except version.ParseError: exception() # system if hasattr(os, 'uname'): log(u'SYSTEM: %s' % unicode(os.uname())) # config file dir log(u'CONFIG FILE DIR: %s' % pywikibot.config2.base_dir) all_modules = sys.modules.keys() # These are the main dependencies of pywikibot. check_package_list = ['httplib2', 'mwparserfromhell'] # report all imported packages if config.verbose_output: check_package_list += all_modules packages = version.package_versions(check_package_list) log(u'PACKAGES:') for name in sorted(packages.keys()): info = packages[name] if 'path' not in info: if 'type' in info: info['path'] = '[' + info['type'] + ']' else: info['path'] = '[path unknown]' if 'ver' not in info: info['ver'] = '??' if 'err' in info: log(u' %(name)s: %(err)s' % info) else: log(u' %(name)s (%(path)s) = %(ver)s' % info) # imported modules log(u'MODULES:') for item in list(all_modules): ver = version.getfileversion('%s.py' % item.replace('.', '/')) if ver: log(u' %s' % ver) if config.log_pywiki_repo_version: log(u'PYWIKI REPO VERSION: %s' % unicode(version.getversion_onlinerepo())) log(u'=== ' * 14)
path = os.path.split(sys.argv[0])[0] cmd = sys.argv.pop(1) cmd = cmd.lstrip(u'-') if u'.py' not in cmd.lower(): cmd += u'.py' sys.argv[0] = os.path.join(path, cmd) bot_name = os.path.splitext(os.path.basename(sys.argv[0]))[0] error = u'' try: __release = version.getversiondict() d = shelve.open(pywikibot.config.datafilepath('cache', 'state_bots')) d['bot_control'] = { 'release_rev': str(__release['rev']), 'release_ver': __release['hsh'][:7], 'online_ver': version.getversion_onlinerepo()[:7], } pywikibot.output(d['bot_control']) pywikibot.output(u'=== ' * 14) d.close() sys.path.append(os.path.split(sys.argv[0])[0]) execfile(sys.argv[0]) exitcode = ERROR_SGE_ok pywikibot.output(u'') pywikibot.output(u'DONE') except: pywikibot.exception(tb=True) error = traceback.format_exc() if pywikibot.logger.isEnabledFor(pywikibot.DEBUG):
def writelogheader(): """ Save additional version, system and status info to the log file in use. This may help the user to track errors or report bugs. """ # if site not available it's too early to print a header (work-a-round) try: site = pywikibot.Site() except AttributeError: return log(u'=== Pywikibot framework v2.0 -- Logging header ===') # script call log(u'COMMAND: %s' % unicode(sys.argv)) # script call time stamp log(u'DATE: %s UTC' % str(datetime.datetime.utcnow())) # new framework release/revision? (handleArgs needs to be called first) try: log(u'VERSION: %s' % version.getversion(online=config.log_pywiki_repo_version).strip()) except version.ParseError: exception() # system if hasattr(os, 'uname'): log(u'SYSTEM: %s' % unicode(os.uname())) all_modules = sys.modules.keys() # These are the main dependencies of pywikibot. check_package_list = ['httplib2', 'mwparserfromhell'] # report all imported packages if config.verbose_output: check_package_list += all_modules packages = version.package_versions(check_package_list) log(u'PACKAGES:') for name in sorted(packages.keys()): info = packages[name] if 'path' not in info: if 'type' in info: info['path'] = '[' + info['type'] + ']' else: info['path'] = '[path unknown]' if 'ver' not in info: info['ver'] = '??' if 'err' in info: log(u' %(name)s: %(err)s' % info) else: log(u' %(name)s (%(path)s) = %(ver)s' % info) # imported modules log(u'MODULES:') for item in list(all_modules): ver = version.getfileversion('%s.py' % item.replace('.', '/')) if ver: log(u' %s' % ver) if config.log_pywiki_repo_version: log(u'PYWIKI REPO VERSION: %s' % unicode(version.getversion_onlinerepo())) log(u'SITE VERSION: %s' % site.version()) # messages on bot discussion page? if site.logged_in(): if site.messages(): messagestate = 'unanswered' else: messagestate = 'none' else: messagestate = 'unknown (not logged in)' log(u'MESSAGES: %s' % messagestate) log(u'=== ' * 14)
path = os.path.split(sys.argv[0])[0] cmd = sys.argv.pop(1) cmd = cmd.lstrip(u'-') if u'.py' not in cmd.lower(): cmd += u'.py' sys.argv[0] = os.path.join(path, cmd) bot_name = os.path.splitext(os.path.basename(sys.argv[0]))[0] error = u'' try: __release_ver = str(version.getversion_svn(pywikibot.config.datafilepath('..'))[1]) #__release_ver = version.getversion().strip() d = shelve.open(pywikibot.config.datafilepath('cache', 'state_bots')) d['bot_control'] = { 'release_ver': __release_ver, 'framework_ver': __release_ver, 'online_ver': version.getversion_onlinerepo(), } pywikibot.output(d['bot_control']) pywikibot.output(u'=== ' * 14) d.close() sys.path.append(os.path.split(sys.argv[0])[0]) execfile(sys.argv[0]) exitcode = ERROR_SGE_ok pywikibot.output(u'') pywikibot.output(u'DONE') except: pywikibot.exception(tb=True) error = traceback.format_exc() if pywikibot.logger.isEnabledFor(pywikibot.DEBUG):
def writelogheader(): """ Save additional version, system and status info to the log file in use. This may help the user to track errors or report bugs. """ # If a http thread is not available, it's too early to print a header # that includes version information, which may need to query a server. # The http module can't be imported due to circular dependencies. http = sys.modules.get('pywikibot.comms.http', None) if not http or not hasattr(http, 'threads') or not len(http.threads): return log(u'=== Pywikibot framework v2.0 -- Logging header ===') # script call log(u'COMMAND: {0}'.format(sys.argv)) # script call time stamp log(u'DATE: %s UTC' % str(datetime.datetime.utcnow())) # new framework release/revision? (handleArgs needs to be called first) try: log(u'VERSION: %s' % version.getversion(online=config.log_pywiki_repo_version).strip()) except version.ParseError: exception() # system if hasattr(os, 'uname'): log(u'SYSTEM: {0}'.format(os.uname())) # config file dir log(u'CONFIG FILE DIR: %s' % pywikibot.config2.base_dir) all_modules = sys.modules.keys() # These are the main dependencies of pywikibot. check_package_list = ['httplib2', 'mwparserfromhell'] # report all imported packages if config.verbose_output: check_package_list += all_modules packages = version.package_versions(check_package_list) log(u'PACKAGES:') for name in sorted(packages.keys()): info = packages[name] if 'path' not in info: if 'type' in info: info['path'] = '[' + info['type'] + ']' else: info['path'] = '[path unknown]' if 'ver' not in info: info['ver'] = '??' if 'err' in info: log(u' %(name)s: %(err)s' % info) else: log(u' %(name)s (%(path)s) = %(ver)s' % info) # imported modules log(u'MODULES:') for item in list(all_modules): ver = version.getfileversion('%s.py' % item.replace('.', '/')) if ver: log(u' %s' % ver) if config.log_pywiki_repo_version: log(u'PYWIKI REPO VERSION: %s' % version.getversion_onlinerepo()) log(u'=== ' * 14)