code: def find_signature_input_colocation_error(signature_name, inputs):
    
    for input_name, tensor in inputs.items():
      expected_colocation_groups = [tf.compat.as_bytes("loc:@" + tensor.op.name)]
      if tensor.op.colocation_groups() != expected_colocation_groups:
        return (
            "A tensor x used as input in a signature must not be subject to a "
            "tf.colocate_with(y) constraint. (The reverse would be allowed.)\n"
            "Details: tensor '%s' appears as input '%s' of signature '%s' "
            "but has Tensor.op.colocation_groups() == %s" %
            (tensor, input_name, signature_name, tensor.op.colocation_groups()))
    return None
docs: Returns error message for colocation of signature inputs, or None if ok.