explicit warnings for non-exisitng args

This commit is contained in:
Piotr Migdal
2022-03-27 20:50:34 +02:00
committed by Serene-Arc
parent ef82387f84
commit 395bf9180a

View File

@@ -3,10 +3,12 @@
from argparse import Namespace from argparse import Namespace
from typing import Optional from typing import Optional
import logging
import click import click
import yaml import yaml
logger = logging.getLogger(__name__)
class Configuration(Namespace): class Configuration(Namespace):
def __init__(self): def __init__(self):
@@ -54,11 +56,17 @@ class Configuration(Namespace):
if context.params['opts'] is not None: if context.params['opts'] is not None:
with open(context.params['opts']) as f: with open(context.params['opts']) as f:
opts = yaml.load(f, Loader=yaml.FullLoader) opts = yaml.load(f, Loader=yaml.FullLoader)
for arg_key, v in opts.items(): for arg_key, val in opts.items():
vars(self)[arg_key] = v if not hasattr(self, arg_key):
logger.error(f'Ignoring an unknown YAML argument: {arg_key}')
continue
setattr(self, arg_key, val)
for arg_key in context.params.keys(): for arg_key in context.params.keys():
if arg_key not in vars(self): if not hasattr(self, arg_key):
logger.warning(f'Ignoring an unknown CLI argument: {arg_key}')
continue continue
if context.params[arg_key] is None or context.params[arg_key] == (): val = context.params[arg_key]
if val is None or val == ():
# don't overwrite with an empty value
continue continue
vars(self)[arg_key] = context.params[arg_key] setattr(self, arg_key, val)