code: def path_options(
      line: bool = False,
      radius: Optional[float] = None,
      **kwargs: TypePathOptions,
  ):
      """
      Contains options and constants shared between vector overlays
      (Polygon, Polyline, Circle, CircleMarker, and Rectangle).
  
      Parameters
      ----------
      stroke: Bool, True
          Whether to draw stroke along the path.
          Set it to false to disable borders on polygons or circles.
      color: str, '#3388ff'
          Stroke color.
      weight: int, 3
          Stroke width in pixels.
      opacity: float, 1.0
          Stroke opacity.
      line_cap: str, 'round' (lineCap)
          A string that defines shape to be used at the end of the stroke.
          https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap
      line_join: str, 'round' (lineJoin)
          A string that defines shape to be used at the corners of the stroke.
          https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linejoin
      dash_array: str, None (dashArray)
          A string that defines the stroke dash pattern.
          Doesn't work on Canvas-powered layers in some old browsers.
          https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray
      dash_offset:, str, None (dashOffset)
          A string that defines the distance into the dash pattern to start the dash.
          Doesn't work on Canvas-powered layers in some old browsers.
          https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dashoffset
      fill: Bool, False
          Whether to fill the path with color.
          Set it to false to disable filling on polygons or circles.
      fill_color: str, default to `color` (fillColor)
          Fill color. Defaults to the value of the color option.
      fill_opacity: float, 0.2 (fillOpacity)
          Fill opacity.
      fill_rule: str, 'evenodd' (fillRule)
          A string that defines how the inside of a shape is determined.
          https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule
      bubbling_mouse_events: Bool, True (bubblingMouseEvents)
          When true a mouse event on this path will trigger the same event on the
          map (unless L.DomEvent.stopPropagation is used).
      gradient: bool, default None
          When a gradient on the stroke and fill is available,
          allows turning it on or off.
  
      Note that the presence of `fill_color` will override `fill=False`.
  
      This function accepts both snake_case and lowerCamelCase equivalents.
  
      See https://leafletjs.com/reference.html#path
  
      """
  
      kwargs = {camelize(key): value for key, value in kwargs.items()}
  
      extra_options = {}
      if line:
          extra_options = {
              "smoothFactor": kwargs.pop("smoothFactor", 1.0),
              "noClip": kwargs.pop("noClip", False),
          }
      if radius:
          extra_options.update({"radius": radius})
  
      color = kwargs.pop("color", "#3388ff")
      fill_color = kwargs.pop("fillColor", False)
      if fill_color:
          fill = True
      elif not fill_color:
          fill_color = color
          fill = kwargs.pop("fill", False)  # type: ignore
  
      gradient = kwargs.pop("gradient", None)
      if gradient is not None:
          extra_options.update({"gradient": gradient})
  
      if kwargs.get("tags"):
          extra_options["tags"] = kwargs.pop("tags")
  
      default = {
          "stroke": kwargs.pop("stroke", True),
          "color": color,
          "weight": kwargs.pop("weight", 3),
          "opacity": kwargs.pop("opacity", 1.0),
          "lineCap": kwargs.pop("lineCap", "round"),
          "lineJoin": kwargs.pop("lineJoin", "round"),
          "dashArray": kwargs.pop("dashArray", None),
          "dashOffset": kwargs.pop("dashOffset", None),
          "fill": fill,
          "fillColor": fill_color,
          "fillOpacity": kwargs.pop("fillOpacity", 0.2),
          "fillRule": kwargs.pop("fillRule", "evenodd"),
          "bubblingMouseEvents": kwargs.pop(
              "bubblingMouseEvents", True
          ),
      }
      default.update(extra_options)
      return default
  
imports: from typing import List, Optional, Sequence, Union
  from branca.element import MacroElement
  from jinja2 import Template
  from folium.map import Marker, Popup, Tooltip
  from folium.utilities import TypeLine, TypeMultiLine, TypePathOptions, camelize, get_bounds, validate_locations, validate_multi_locations
label_desc: Use image node_id 1 for calling a global function with example usage: path_options(line, radius) and returns: default