Source code for fibsem.user_input

import argparse
import os
import logging
import time
import yaml

import fibsem

response_yes = ['yes', 'y']
response_no = ['no', 'n']
response_cancel = ['quit', 'q', 'exit', 'cancel']
known_responses = response_yes + response_no + response_cancel
default_response_yes = [''] + response_yes  # Blank '' not in known_responses


[docs]def response(message): user_response = '' while user_response.lower() not in known_responses: user_response = input(message + '\n') return user_response
[docs]def configure_parser(): """Configure parser and add user input arguments. Returns ------- args : argparse arguments Parsed user input arguments. """ __DESCR__ = ('DeMarco lab FEB-SEM controls.\n' 'Version {}'.format(fibsem.__version__)) parser = argparse.ArgumentParser(description=__DESCR__) config_default = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..', 'config_default.yml') parser.add_argument('--config', help='Filepath of input user settings yml file.', type=str, default=config_default) parser.add_argument('--host', help='IP address of host (if offline use "localhost")', type=str, default='10.0.0.1', choices=['10.0.0.1', 'localhost'], nargs='?') args = parser.parse_args() return args
[docs]def load_config(yaml_filename): with open(yaml_filename, "r") as f: settings = yaml.safe_load(f) for key in settings: try: settings[key] = float(settings[key]) except ValueError: pass return settings
def _log_file_begins(settings): """Initialize logging and begin writing log file. Parameters ---------- settings : user input settings from config yml file. Input arguments from user. Returns ------- log_filename : str Filepath to output log text file location. """ timestamp = time.strftime('%d-%b-%Y_%H-%M%p', time.localtime()) log_filename = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..', 'logs', 'logging.conf') logging.basicConfig( format="%(asctime)s %(message)s", level=logging.INFO, handlers=[ logging.FileHandler("{}".format(log_filename)), logging.StreamHandler() ]) log = logging.getLogger(__name__) # Log user input arguments log.info("DeMarco lab fibsem, version {}".format(fibsem.__version__)) log.info("{}".format(timestamp)) log.info("========== USER CONFIG SETTINGS ==========") for key, val in settings.items(): log.info("{}: {}".format(key, val)) log.info("=========== END OF USER INPUT ============") return log_filename