def METHOD_NAME(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, use_unsafe_shell=False, **kwargs):
    l = logging.getLogger(__name__)
    if not use_unsafe_shell and isinstance(args, six.string_types):
        args = safe_shlex_split_for_2_6(args)
    kwargs['stdout'] = stdout
    kwargs['stderr'] = stderr
    kwargs['shell'] = use_unsafe_shell
    if 'env' in kwargs:
        kwargs_without_env = copy.copy(kwargs)
        kwargs_without_env['env'] = 'HIDDEN'
    else:
        kwargs_without_env = kwargs
    l.debug('Calling %s with options:\n%s', args, pprint.pformat(kwargs_without_env))
    try:
        return subprocess.Popen(args, **kwargs)
    except OSError as e:
        six.reraise(IrodsError,
            IrodsError('\n'.join([
                'Call to open process with {0} failed:'.format(
                    args),
                indent(
                    'Could not find the requested executable \'{0}\'; '
                    'please ensure \'{0}\' is installed and in the path.'.format(
                        args[0]))])),
            sys.exc_info()[2])