Exemple #1
0
def main():
    """Main command-line interface"""
    parser = create_parser()
    args = parser.parse_args()

    config_logger(
        stream=True,
        stream_level=args.verbose,
        file=True,
        log_path=get_log_dir(),
    )
    logger.debug(args)

    module = importlib.import_module('andes.main')

    if args.command in ('plot', 'doc'):
        pass
    elif args.command == 'run' and args.no_preamble is True:
        pass
    else:
        preamble()

    if args.command is None:
        parser.parse_args(sys.argv.append('--help'))

    else:
        func = getattr(module, args.command)
        return func(cli=True, **vars(args))
Exemple #2
0
def main():
    """
    Main command-line interface
    """

    parser = create_parser()
    args = parser.parse_args()

    if args.version is True:
        print(get_versions()['version'])
        return

    # Set up logging
    config_logger(
        stream=True,
        stream_level=args.verbose,
        file=True,
        log_path=get_log_dir(),
    )
    logger.debug(args)

    module = importlib.import_module('andes.main')

    if args.command in ('plot', 'doc'):
        pass
    elif args.command == 'run' and args.no_preamble is True:
        pass
    else:
        preamble()

    # Run the command
    if args.command is None:
        parser.parse_args(sys.argv.append('--help'))

    else:
        cmd = args.command
        for fullcmd, aliases in command_aliases.items():
            if cmd in aliases:
                cmd = fullcmd

        func = getattr(module, cmd)
        return func(cli=True, **vars(args))
Exemple #3
0
def main():
    """Main command-line interface"""
    parser = create_parser()
    args = parser.parse_args()

    config_logger(log_path=get_log_dir(),
                  file=True,
                  stream=True,
                  stream_level=args.verbose)
    preamble()
    logger.debug(args)

    module = importlib.import_module('andes.main')

    if args.command is None:
        parser.parse_args(sys.argv.append('--help'))

    else:
        func = getattr(module, args.command)
        func(**vars(args))
Exemple #4
0
def config_logger(
    stream=True,
    file=True,
    stream_level=logging.INFO,
    log_file='andes.log',
    log_path=None,
    file_level=logging.DEBUG,
):
    """
    Configure a logger for the andes package with options for a `FileHandler`
    and a `StreamHandler`. This function is called at the beginning of
    ``andes.main.main()``.

    Parameters
    ----------
    stream : bool, optional
        Create a `StreamHandler` for `stdout` if ``True``.
        If ``False``, the handler will not be created.
    file : bool, optionsl
        True if logging to ``log_file``.
    log_file : str, optional
        Logg file name for `FileHandler`, ``'andes.log'`` by default.
        If ``None``, the `FileHandler` will not be created.
    log_path : str, optional
        Path to store the log file. By default, the path is generated by
        get_log_dir() in utils.misc.
    stream_level : {10, 20, 30, 40, 50}, optional
        `StreamHandler` verbosity level.
    file_level : {10, 20, 30, 40, 50}, optional
        `FileHandler` verbosity level.
    Returns
    -------
    None

    """
    lg = logging.getLogger('andes')
    lg.setLevel(logging.DEBUG)

    if log_path is None:
        log_path = get_log_dir()

    sh_formatter_str = '%(message)s'
    if stream_level == 1:
        sh_formatter_str = '%(name)s:%(lineno)d - %(levelname)s - %(message)s'
        stream_level = 10

    sh_formatter = logging.Formatter(sh_formatter_str)
    if len(lg.handlers) == 0:
        if stream is True:
            sh = logging.StreamHandler()
            sh.setFormatter(sh_formatter)
            sh.setLevel(stream_level)
            lg.addHandler(sh)

        # file handler for level DEBUG and up
        if file is True and (log_file is not None):
            log_full_path = os.path.join(log_path, log_file)
            fh_formatter = logging.Formatter(
                '%(process)d: %(asctime)s - %(name)s - %(levelname)s - %(message)s'
            )
            fh = logging.FileHandler(log_full_path)
            fh.setLevel(file_level)
            fh.setFormatter(fh_formatter)
            lg.addHandler(fh)

        globals()['logger'] = lg

    if not is_interactive():
        coloredlogs.install(logger=lg,
                            level=stream_level,
                            fmt=sh_formatter_str)