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)
