from breathe.project import ProjectInfo

from docutils import nodes
from docutils.nodes import Element

from typing import Any, Dict, List, Sequence


class TargetHandler:
    def create_target(self, refid: str) -> Sequence[Element]:
        raise NotImplementedError


class _RealTargetHandler(TargetHandler):
    def __init__(self, project_info: ProjectInfo, document: nodes.document):
        self.project_info = project_info
        self.document = document

    def create_target(self, refid: str) -> List[Element]:
        """Creates a target node and registers it with the document and returns it in a list"""

        target = nodes.target(ids=[refid], names=[refid])
        try:
            self.document.note_explicit_target(target)
        except Exception:
            # TODO: We should really return a docutils warning node here
            print("Warning: Duplicate target detected: %s" % refid)
        return [target]


class _NullTargetHandler(TargetHandler):
    def create_target(self, refid: str) -> List[Element]:
        return []


def create_target_handler(
    options: Dict[str, Any], project_info: ProjectInfo, document: nodes.document
) -> TargetHandler:
    if "no-link" in options:
        return _NullTargetHandler()
    return _RealTargetHandler(project_info, document)

861c3fa7f64264b3aae688bfb44f1dc89a4e328f
<mask token>


class TargetHandler:
    <mask token>


class _RealTargetHandler(TargetHandler):

    def __init__(self, project_info: ProjectInfo, document: nodes.document):
        self.project_info = project_info
        self.document = document

    def create_target(self, refid: str) ->List[Element]:
        """Creates a target node and registers it with the document and returns it in a list"""
        target = nodes.target(ids=[refid], names=[refid])
        try:
            self.document.note_explicit_target(target)
        except Exception:
            print('Warning: Duplicate target detected: %s' % refid)
        return [target]


class _NullTargetHandler(TargetHandler):

    def create_target(self, refid: str) ->List[Element]:
        return []


<mask token>

<mask token>


class TargetHandler:

    def create_target(self, refid: str) ->Sequence[Element]:
        raise NotImplementedError


class _RealTargetHandler(TargetHandler):

    def __init__(self, project_info: ProjectInfo, document: nodes.document):
        self.project_info = project_info
        self.document = document

    def create_target(self, refid: str) ->List[Element]:
        """Creates a target node and registers it with the document and returns it in a list"""
        target = nodes.target(ids=[refid], names=[refid])
        try:
            self.document.note_explicit_target(target)
        except Exception:
            print('Warning: Duplicate target detected: %s' % refid)
        return [target]


class _NullTargetHandler(TargetHandler):

    def create_target(self, refid: str) ->List[Element]:
        return []


<mask token>

<mask token>


class TargetHandler:

    def create_target(self, refid: str) ->Sequence[Element]:
        raise NotImplementedError


class _RealTargetHandler(TargetHandler):

    def __init__(self, project_info: ProjectInfo, document: nodes.document):
        self.project_info = project_info
        self.document = document

    def create_target(self, refid: str) ->List[Element]:
        """Creates a target node and registers it with the document and returns it in a list"""
        target = nodes.target(ids=[refid], names=[refid])
        try:
            self.document.note_explicit_target(target)
        except Exception:
            print('Warning: Duplicate target detected: %s' % refid)
        return [target]


class _NullTargetHandler(TargetHandler):

    def create_target(self, refid: str) ->List[Element]:
        return []


def create_target_handler(options: Dict[str, Any], project_info:
    ProjectInfo, document: nodes.document) ->TargetHandler:
    if 'no-link' in options:
        return _NullTargetHandler()
    return _RealTargetHandler(project_info, document)

from breathe.project import ProjectInfo
from docutils import nodes
from docutils.nodes import Element
from typing import Any, Dict, List, Sequence


class TargetHandler:

    def create_target(self, refid: str) ->Sequence[Element]:
        raise NotImplementedError


class _RealTargetHandler(TargetHandler):

    def __init__(self, project_info: ProjectInfo, document: nodes.document):
        self.project_info = project_info
        self.document = document

    def create_target(self, refid: str) ->List[Element]:
        """Creates a target node and registers it with the document and returns it in a list"""
        target = nodes.target(ids=[refid], names=[refid])
        try:
            self.document.note_explicit_target(target)
        except Exception:
            print('Warning: Duplicate target detected: %s' % refid)
        return [target]


class _NullTargetHandler(TargetHandler):

    def create_target(self, refid: str) ->List[Element]:
        return []


def create_target_handler(options: Dict[str, Any], project_info:
    ProjectInfo, document: nodes.document) ->TargetHandler:
    if 'no-link' in options:
        return _NullTargetHandler()
    return _RealTargetHandler(project_info, document)

from breathe.project import ProjectInfo

from docutils import nodes
from docutils.nodes import Element

from typing import Any, Dict, List, Sequence


class TargetHandler:
    def create_target(self, refid: str) -> Sequence[Element]:
        raise NotImplementedError


class _RealTargetHandler(TargetHandler):
    def __init__(self, project_info: ProjectInfo, document: nodes.document):
        self.project_info = project_info
        self.document = document

    def create_target(self, refid: str) -> List[Element]:
        """Creates a target node and registers it with the document and returns it in a list"""

        target = nodes.target(ids=[refid], names=[refid])
        try:
            self.document.note_explicit_target(target)
        except Exception:
            # TODO: We should really return a docutils warning node here
            print("Warning: Duplicate target detected: %s" % refid)
        return [target]


class _NullTargetHandler(TargetHandler):
    def create_target(self, refid: str) -> List[Element]:
        return []


def create_target_handler(
    options: Dict[str, Any], project_info: ProjectInfo, document: nodes.document
) -> TargetHandler:
    if "no-link" in options:
        return _NullTargetHandler()
    return _RealTargetHandler(project_info, document)
