Source code for fibsem.user_input
import argparse
import os
import yaml
from ._version import get_versions
__version__ = get_versions()['version']
del get_versions
__DESCR__ = ('DeMarco lab FEB-SEM controls.\n'
'Version {}'.format(__version__))
response_yes = ['yes', 'y']
response_no = ['no', 'n']
response_cancel = ['quit', 'q', 'exit', 'cancel']
known_responses = response_yes + response_no + response_cancel
[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.
"""
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:
if isinstance(settings[key], str):
try:
settings[key] = bool(settings[key])
except ValueError:
pass
return settings