code: def offset_curve(
      geometry,
      distance,
      quad_segs=8,
      join_style="round",
      mitre_limit=5.0,
      **kwargs,
  ):
      """
      Returns a (Multi)LineString at a distance from the object
      on its right or its left side.
  
      For positive distance the offset will be at the left side of the input
      line. For a negative distance it will be at the right side. In general,
      this function tries to preserve the direction of the input.
  
      Note: the behaviour regarding orientation of the resulting line depends
      on the GEOS version. With GEOS < 3.11, the line retains the same
      direction for a left offset (positive distance) or has opposite direction
      for a right offset (negative distance), and this behaviour was documented
      as such in previous Shapely versions. Starting with GEOS 3.11, the
      function tries to preserve the orientation of the original line.
  
      Parameters
      ----------
      geometry : Geometry or array_like
      distance : float or array_like
          Specifies the offset distance from the input geometry. Negative
          for right side offset, positive for left side offset.
      quad_segs : int, default 8
          Specifies the number of linear segments in a quarter circle in the
          approximation of circular arcs.
      join_style : {'round', 'bevel', 'mitre'}, default 'round'
          Specifies the shape of outside corners. 'round' results in
          rounded shapes. 'bevel' results in a beveled edge that touches the
          original vertex. 'mitre' results in a single vertex that is beveled
          depending on the ``mitre_limit`` parameter.
      mitre_limit : float, default 5.0
          Crops of 'mitre'-style joins if the point is displaced from the
          buffered vertex by more than this limit.
      **kwargs
          See :ref:`NumPy ufunc docs <ufuncs.kwargs>` for other keyword arguments.
  
      Examples
      --------
      >>> from shapely import LineString
      >>> line = LineString([(0, 0), (0, 2)])
      >>> offset_curve(line, 2)
      <LINESTRING (-2 0, -2 2)>
      >>> offset_curve(line, -2)
      <LINESTRING (2 0, 2 2)>
      """
      if isinstance(join_style, str):
          join_style = BufferJoinStyle.get_value(join_style)
      if not np.isscalar(quad_segs):
          raise TypeError("quad_segs only accepts scalar values")
      if not np.isscalar(join_style):
          raise TypeError("join_style only accepts scalar values")
      if not np.isscalar(mitre_limit):
          raise TypeError("mitre_limit only accepts scalar values")
      return lib.offset_curve(
          geometry,
          distance,
          np.intc(quad_segs),
          np.intc(join_style),
          np.double(mitre_limit),
          **kwargs,
      )
  
imports: import numpy
  from shapely import lib
  from shapely._enum import ParamEnum
  from shapely.algorithms._oriented_envelope import _oriented_envelope_min_area
  from shapely.decorators import multithreading_enabled, requires_geos
label_desc: Use image node_id 3 for calling a global function with example usage: offset_curve(geometry, distance, quad_segs, join_style, mitre_limit) and returns: lib