code: def _compute_path_directed(
      self, coordst, sizes, trans_inv, curved, arrow_size, arrow_width
  ):
      path = {"vertices": [], "codes": []}
      path["codes"].append("MOVETO")
      if not curved:
          path["codes"].extend(["LINETO"] * 6)
  
          # Start
          theta = atan2(*((coordst[1] - coordst[0])[::-1]))
          voff = 0 * coordst[0]
          voff[:] = [cos(theta), sin(theta)]
          voff *= sizes[0] / 2
          start = coordst[0] + voff
  
          # End with arrow (base-left-top-right-base)
          theta = atan2(*((coordst[1] - coordst[0])[::-1]))
          voff_unity = 0 * coordst[0]
          voff_unity[:] = [cos(theta), sin(theta)]
          voff = voff_unity * sizes[1] / 2
          tip = coordst[1] - voff
  
          voff_unity_90 = voff_unity @ [[0, 1], [-1, 0]]
          headbase = tip - arrow_size * voff_unity
          headleft = headbase + 0.5 * arrow_width * voff_unity_90
          headright = headbase - 0.5 * arrow_width * voff_unity_90
          # This is a dirty trick to make the facecolor work
          # without making a separate Patch, which would be a little messy
          path["vertices"].extend(
              [
                  headbase,
                  start,
                  headbase,
                  headleft,
                  tip,
                  headright,
                  headbase,
              ]
          )
      else:
          # Bezier
          aux1, aux2 = get_bezier_control_points_for_curved_edge(
              *coordst.ravel(),
              curved,
          )
  
          # Start
          theta = atan2(*((aux1 - coordst[0])[::-1]))
          voff_unity = 0 * coordst[0]
          voff_unity[:] = [cos(theta), sin(theta)]
          start = coordst[0] + voff_unity * sizes[0] / 2
  
          # End with arrow (base-left-top-right-base)
          theta = atan2(*((coordst[1] - aux2)[::-1]))
          voff_unity = 0 * coordst[0]
          voff_unity[:] = [cos(theta), sin(theta)]
          voff_unity_90 = voff_unity @ [[0, 1], [-1, 0]]
          tip = coordst[1] - voff_unity * sizes[1] / 2
          headbase = tip - arrow_size * voff_unity
          headleft = headbase + 0.5 * arrow_width * voff_unity_90
          headright = headbase - 0.5 * arrow_width * voff_unity_90
  
          # This is a dirty trick to make the facecolor work
          # without making a separate Patch, which would be a little messy
          path["codes"].extend(["CURVE4"] * 6 + ["LINETO"] * 4)
          path["vertices"].extend(
              [
                  headbase,
                  aux2,
                  aux1,
                  start,
                  aux1,
                  aux2,
                  headbase,
                  headleft,
                  tip,
                  headright,
                  headbase,
              ]
          )
  
      path = mpl.path.Path(
          path["vertices"],
          codes=[getattr(mpl.path.Path, x) for x in path["codes"]],
      )
      path.vertices = trans_inv(path.vertices)
      return path
  
imports: from math import atan2, cos, pi, sin
  from igraph.drawing.baseclasses import AbstractEdgeDrawer
  from igraph.drawing.metamagic import AttributeCollectorBase
  from igraph.drawing.matplotlib.utils import find_matplotlib
  from igraph.drawing.utils import get_bezier_control_points_for_curved_edge, FakeModule
label_desc: Use image node_id 7 for calling the EdgeCollection obj's underlying member method code with example usage: obj._compute_path_directed(coordst, sizes, trans_inv, curved, arrow_size, arrow_width) and returns: path