def _has_value(value, conf):
    """The value of an argument not passed in the command is *None*, except:
        * if **action** is ``store_true`` or ``store_false``: in this case, the
          value is respectively ``False`` and ``True``.
    This function take theses cases in consideration and check if an argument
    really has a value.
    """
    if value is None:
        return False

    action = conf.get('action', None)
    return ((not action and value) or
            (action and action == 'store_true' and value) or
            (action and action == 'store_false' and not value))