Unverified Commit efd8c7c8 authored by liuzhe-lz's avatar liuzhe-lz Committed by GitHub
Browse files

Loose merge_parameter() type checking (#4868)

parent 570bce77
...@@ -229,19 +229,26 @@ def merge_parameter(base_params, override_params): ...@@ -229,19 +229,26 @@ def merge_parameter(base_params, override_params):
if is_dict: if is_dict:
if k not in base_params: if k not in base_params:
raise ValueError('Key \'%s\' not found in base parameters.' % k) raise ValueError('Key \'%s\' not found in base parameters.' % k)
if type(base_params[k]) != type(v) and base_params[k] is not None: v = _ensure_compatible_type(k, base_params[k], v)
raise TypeError('Expected \'%s\' in override parameters to have type \'%s\', but found \'%s\'.' %
(k, type(base_params[k]), type(v)))
base_params[k] = v base_params[k] = v
else: else:
if not hasattr(base_params, k): if not hasattr(base_params, k):
raise ValueError('Key \'%s\' not found in base parameters.' % k) raise ValueError('Key \'%s\' not found in base parameters.' % k)
if type(getattr(base_params, k)) != type(v) and getattr(base_params, k) is not None: v = _ensure_compatible_type(k, getattr(base_params, k), v)
raise TypeError('Expected \'%s\' in override parameters to have type \'%s\', but found \'%s\'.' %
(k, type(getattr(base_params, k)), type(v)))
setattr(base_params, k, v) setattr(base_params, k, v)
return base_params return base_params
def _ensure_compatible_type(key, base, override):
if base is None:
return override
if isinstance(override, type(base)):
return override
if isinstance(base, float) and isinstance(override, int):
return float(override)
base_type = type(base).__name__
override_type = type(override).__name__
raise ValueError(f'Expected "{key}" in override parameters to have type {base_type}, but found {override_type}')
class ClassArgsValidator(object): class ClassArgsValidator(object):
""" """
NNI tuners/assessors/adivisors accept a `classArgs` parameter in experiment configuration file. NNI tuners/assessors/adivisors accept a `classArgs` parameter in experiment configuration file.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment