class_docstr: Edge drawer implementation that draws undirected edges as
  straight lines and directed edges by varying the alpha value
  of the specified edge color between the source and the destination.
class_docstr_tok: ["Edge","drawer","implementation","that","draws","undirected","edges","as","straight","lines","and","directed","edges","by","varying","the","alpha","value","of","the","specified","edge","color","between","the","source","and","the","destination","."]
code: def __init__(self, context, palette, alpha_at_src, alpha_at_dest):
      super().__init__(context, palette)
      self.alpha_at_src = (clamp(float(alpha_at_src), 0.0, 1.0),)
      self.alpha_at_dest = (clamp(float(alpha_at_dest), 0.0, 1.0),)
  
imports: from math import atan2, cos, pi, sin
  from igraph.drawing.baseclasses import AbstractEdgeDrawer
  from igraph.drawing.colors import clamp
  from igraph.drawing.metamagic import AttributeCollectorBase
  from igraph.drawing.utils import euclidean_distance, get_bezier_control_points_for_curved_edge, intersect_bezier_curve_and_circle
  from .utils import find_cairo
label_desc: Use image node_id 1 to create a new AlphaVaryingEdgeDrawer object from inherited base classes: AbstractCairoEdgeDrawer with example: obj = AlphaVaryingEdgeDrawer(context, palette, alpha_at_src, alpha_at_dest)