def create(name, *effects, **kwargs):
    """
    Annotate a non-idempotent create action to the model being defined.
    Should really be::
      create(name, *effects, value=None, params=None, label=None, desc=None)
    but it is not supported by python < 3.

    @param name: item name unique for the model being defined.
    @type name: str or unicode
    @param effects:
    @type effects: str or unicode
    @param value: input value information or None if not required.
    @type value: IValuInfo or None
    @param params: action paremeter or list of action parameters.
    @type params: IActionPram or list of IActionParam
    @param label: the action label or None.
    @type label: str or unicode or None
    @param desc: the action  description or None if not documented.
    @type desc: str or unicode or None
    """
    value_info = kwargs.pop("value", None)
    params = kwargs.pop("params", None)
    label = kwargs.pop("label", None)
    desc = kwargs.pop("desc", None)
    if kwargs:
        raise TypeError("create() got an unexpected keyword '%s'"
                        % kwargs.keys()[0])
    _annotate("create", name, value_info=value_info, params=params,
              effects=effects, label=label, desc=desc)