in keras/legacy/interfaces.py [0:0]
def generate_legacy_interface(allowed_positional_args=None,
conversions=None,
preprocessor=None,
value_conversions=None,
object_type='class'):
if allowed_positional_args is None:
check_positional_args = False
else:
check_positional_args = True
allowed_positional_args = allowed_positional_args or []
conversions = conversions or []
value_conversions = value_conversions or []
def legacy_support(func):
@six.wraps(func)
def wrapper(*args, **kwargs):
if object_type == 'class':
object_name = args[0].__class__.__name__
else:
object_name = func.__name__
if preprocessor:
args, kwargs, converted = preprocessor(args, kwargs)
else:
converted = []
if check_positional_args:
if len(args) > len(allowed_positional_args) + 1:
raise TypeError('`' + object_name +
'` can accept only ' +
str(len(allowed_positional_args)) +
' positional arguments ' +
str(tuple(allowed_positional_args)) +
', but you passed the following '
'positional arguments: ' +
str(list(args[1:])))
for key in value_conversions:
if key in kwargs:
old_value = kwargs[key]
if old_value in value_conversions[key]:
kwargs[key] = value_conversions[key][old_value]
for old_name, new_name in conversions:
if old_name in kwargs:
value = kwargs.pop(old_name)
if new_name in kwargs:
raise_duplicate_arg_error(old_name, new_name)
kwargs[new_name] = value
converted.append((new_name, old_name))
if converted:
signature = '`' + object_name + '('
for i, value in enumerate(args[1:]):
if isinstance(value, six.string_types):
signature += '"' + value + '"'
else:
if isinstance(value, np.ndarray):
str_val = 'array'
else:
str_val = str(value)
if len(str_val) > 10:
str_val = str_val[:10] + '...'
signature += str_val
if i < len(args[1:]) - 1 or kwargs:
signature += ', '
for i, (name, value) in enumerate(kwargs.items()):
signature += name + '='
if isinstance(value, six.string_types):
signature += '"' + value + '"'
else:
if isinstance(value, np.ndarray):
str_val = 'array'
else:
str_val = str(value)
if len(str_val) > 10:
str_val = str_val[:10] + '...'
signature += str_val
if i < len(kwargs) - 1:
signature += ', '
signature += ')`'
warnings.warn('Update your `' + object_name + '` call to the ' +
'Keras 2 API: ' + signature, stacklevel=2)
return func(*args, **kwargs)
wrapper._original_function = func
return wrapper
return legacy_support