code: def _base_lineplot(
      linetype,
      p,
      source,
      data_cols,
      colormap,
      hovertool,
      xlabelname,
      x_axis_type,
      plot_data_points,
      plot_data_points_size,
      hovertool_string,
      number_format,
      rangetool,
      **kwargs,
  ):
      """Adds lineplot to figure p for each data_col."""
  
      p_rangetool = None
      # Add line (and optional scatter glyphs) to figure:
      linetype = getattr(p, linetype.lower())
      marker = kwargs.pop("marker", "circle")
  
      if rangetool:
          p_rangetool = _initialize_rangetool(p, x_axis_type, source)
  
      for name, color in zip(data_cols, colormap):
          glyph = linetype(
              x="__x__values",
              y=name,
              legend_label=" " + name,
              source=source,
              color=color,
              **kwargs,
          )
  
          if plot_data_points:
              p.scatter(
                  x="__x__values",
                  y=name,
                  legend_label=" " + name,
                  source=source,
                  color=color,
                  marker=marker,
                  size=plot_data_points_size,
              )
  
          if hovertool:
              my_hover = HoverTool(mode="vline", renderers=[glyph])
              if hovertool_string is None:
                  if x_axis_type == "datetime":
                      my_hover.tooltips = [
                          (xlabelname, "@__x__values_original{%F}"),
                          (name, "@{%s}%s" % (name, number_format)),
                      ]
                      my_hover.formatters = {
                          "@__x__values_original": "datetime"
                      }
                  else:
                      my_hover.tooltips = [
                          (xlabelname, "@__x__values_original"),
                          (name, "@{%s}%s" % (name, number_format)),
                      ]
              else:
                  my_hover.tooltips = hovertool_string
              p.add_tools(my_hover)
  
          if rangetool:
              p_rangetool.line(
                  "__x__values", name, source=source, color=color
              )
  
      return p, p_rangetool
  
imports: import datetime
  import numbers
  import warnings
  from copy import deepcopy
  from typing import Iterable, List, Optional, Union
  import numpy
  import pandas
  from bokeh.layouts import column
  from bokeh.models import ColorBar, ColumnDataSource, DatetimeTickFormatter, FuncTickFormatter, HoverTool, LinearColorMapper, RangeTool
  from bokeh.models.ranges import Range1d
  from bokeh.palettes import Inferno256, all_palettes
  from bokeh.plotting import figure
  from bokeh.transform import cumsum, dodge
  from pandas.core.base import PandasObject
  from pandas.errors import ParserError
  from .base import embedded_html, set_fontsizes_of_figure, show
  from .geoplot import geoplot
  from .utils import _extract_additional_columns
label_desc: Use image node_id 6 for calling a global function with example usage: _base_lineplot(linetype, p, source, data_cols, colormap, hovertool, xlabelname, x_axis_type, plot_data_points, plot_data_points_size, hovertool_string, number_format, rangetool) and returns: p,  p_rangetool