提交 61314e59 编写于 作者: L LaraStuStu

Create __init__.py

上级 62bbcbf3
import os.path as osp
import shutil
import yaml
from labelme.logger import logger
here = osp.dirname(osp.abspath(__file__))
def update_dict(target_dict, new_dict, validate_item=None):
for key, value in new_dict.items():
if validate_item:
validate_item(key, value)
if key not in target_dict:
logger.warn('Skipping unexpected key in config: {}'
.format(key))
continue
if isinstance(target_dict[key], dict) and \
isinstance(value, dict):
update_dict(target_dict[key], value, validate_item=validate_item)
else:
target_dict[key] = value
# -----------------------------------------------------------------------------
def get_default_config():
config_file = osp.join(here, 'default_config.yaml')
with open(config_file) as f:
config = yaml.safe_load(f)
# save default config to ~/.labelmerc
user_config_file = osp.join(osp.expanduser('~'), '.labelmerc')
if not osp.exists(user_config_file):
try:
shutil.copy(config_file, user_config_file)
except Exception:
logger.warn('Failed to save config: {}'.format(user_config_file))
return config
def validate_config_item(key, value):
if key == 'validate_label' and value not in [None, 'exact', 'instance']:
raise ValueError(
"Unexpected value for config key 'validate_label': {}"
.format(value)
)
if key == 'labels' and value is not None and len(value) != len(set(value)):
raise ValueError(
"Duplicates are detected for config key 'labels': {}".format(value)
)
def get_config(config_from_args=None, config_file=None):
# Configuration load order:
#
# 1. default config (lowest priority)
# 2. config file passed by command line argument or ~/.labelmerc
# 3. command line argument (highest priority)
# 1. default config
config = get_default_config()
# 2. config from yaml file
if config_file is not None and osp.exists(config_file):
with open(config_file) as f:
user_config = yaml.safe_load(f) or {}
update_dict(config, user_config, validate_item=validate_config_item)
# 3. command line argument
if config_from_args is not None:
update_dict(config, config_from_args,
validate_item=validate_config_item)
return config
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册