code: def _link_button(
      self,
      label: str,
      url: str,
      help: Optional[str],
      *,  # keyword-only arguments:
      type: Literal["primary", "secondary"] = "secondary",
      disabled: bool = False,
      use_container_width: bool = False,
  ) -> "DeltaGenerator":
      link_button_proto = LinkButtonProto()
      link_button_proto.label = label
      link_button_proto.url = url
      link_button_proto.type = type
      link_button_proto.use_container_width = use_container_width
      link_button_proto.disabled = disabled
  
      if help is not None:
          link_button_proto.help = dedent(help)
  
      return self.dg._enqueue("link_button", link_button_proto)
  
imports: import io
  from dataclasses import dataclass
  from textwrap import dedent
  from typing import TYPE_CHECKING, BinaryIO, Optional, TextIO, Union, cast
  from typing_extensions import Final, Literal
  from streamlit import runtime
  from streamlit.elements.form import current_form_id, is_in_form
  from streamlit.elements.utils import check_callback_rules, check_session_state_rules
  from streamlit.errors import StreamlitAPIException
  from streamlit.proto.Button_pb2 import Button
  from streamlit.proto.DownloadButton_pb2 import DownloadButton
  from streamlit.proto.LinkButton_pb2 import LinkButton
  from streamlit.runtime.metrics_util import gather_metrics
  from streamlit.runtime.scriptrunner import ScriptRunContext, get_script_run_ctx
  from streamlit.runtime.state import WidgetArgs, WidgetCallback, WidgetKwargs, register_widget
  from streamlit.runtime.state.common import compute_widget_id
  from streamlit.type_util import Key, to_key
label_desc: Use image node_id 5 for calling the ButtonMixin obj's underlying member method code with example usage: obj._link_button(label, url, help) and returns: self