Example #1
0
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)
Example #2
0
File: bot.py Project: lnls-fac/code
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
    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):
Example #6
0
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)
Example #7
0
    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):
Example #8
0
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)
Example #9
0
    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):
Example #10
0
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)
Example #11
0
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)