def METHOD_NAME(
    cls: Type["TagReference"],
    repo: "Repo",
    path: PathLike,
    reference: Union[str, "SymbolicReference"] = "HEAD",
    logmsg: Union[str, None] = None,
    force: bool = False,
    **kwargs: Any,
) -> "TagReference":
    """Create a new tag reference.
    :param path:
        The name of the tag, i.e. 1.0 or releases/1.0.
        The prefix refs/tags is implied
    :param ref:
        A reference to the Object you want to tag. The Object can be a commit, tree or
        blob.
    :param logmsg:
        If not None, the message will be used in your tag object. This will also
        create an additional tag object that allows to obtain that information, i.e.::
            tagref.tag.message
    :param message:
        Synonym for :param logmsg:
        Included for backwards compatibility. :param logmsg is used in preference if both given.
    :param force:
        If True, to force creation of a tag even though that tag already exists.
    :param kwargs:
        Additional keyword arguments to be passed to git-tag
    :return: A new TagReference"""
    if "ref" in kwargs and kwargs["ref"]:
        reference = kwargs["ref"]
    if "message" in kwargs and kwargs["message"]:
        kwargs["m"] = kwargs["message"]
        del kwargs["message"]
    if logmsg:
        kwargs["m"] = logmsg
    if force:
        kwargs["f"] = True
    args = (path, reference)
    repo.git.tag(*args, **kwargs)
    return TagReference(repo, "%s/%s" % (cls._common_path_default, path))