human
I wrote the below code

    def wrapper(func):
        @wraps(func)
        def wrapped_func(*args, **kwargs):
            assert (args[0] is not None), args
            if use_scope:
                (name, inputs) = (args[0], args[1])
                args = args[1:]
                assert isinstance(name, six.string_types), name
            else:
                assert (not log_shape)
                if isinstance(args[0], six.string_types):
                    (name, inputs) = (args[0], args[1])
                    args = args[1:]
                else:
                    inputs = args[0]
                    name = None
            if (not (isinstance(inputs, (tf.Tensor, tf.Variable)) or (isinstance(inputs, (list, tuple)) and isinstance(inputs[0], (tf.Tensor, tf.Variable))))):
                raise ValueError(('Invalid    inputs    to    layer:    ' + str(inputs)))
            actual_args = copy.copy(get_arg_scope()[func.__name__])
            actual_args.update(kwargs)
            if (name is not None):
                with tf.variable_scope(name) as scope:
                    scope_name = re.sub('tower[0-9]+/', '', scope.name)
                    do_log_shape = (log_shape and (scope_name not in _LAYER_LOGGED))
                    if do_log_shape:
                        logger.info('{}    input:    {}'.format(scope.name, get_shape_str(inputs)))
                    outputs = func(*args, **actual_args)
                    if do_log_shape:
                        logger.info('{}    output:    {}'.format(scope.name, get_shape_str(outputs)))
                        _LAYER_LOGGED.add(scope_name)
            else:
                outputs = func(*args, **actual_args)
            return outputs
        wrapped_func.symbolic_function = func
        wrapped_func.use_scope = use_scope
        _register(func.__name__, wrapped_func)
        return wrapped_func
    return wrapper

What's a good function header?
assistant
#Here's a good function header.

def layer_register(log_shape=True, use_scope=True):