def render(self, cr):
        cr.save()
        cr.translate(self.at[0], self.at[1])
        cr.set_line_width(0.1)
        if len(self.at) == 3:
            cr.rotate(-self.at[2] * math.pi/180)
        if self.fab_lines or self.fab_circs:
            for line in self.fab_lines:
                cr.move_to(*line[0])
                cr.line_to(*line[1])
                cr.stroke()
            for circ in self.fab_circs:
                r = math.sqrt((circ[0][0] - circ[1][0])**2 +
                              (circ[0][1] - circ[1][1])**2)
                cr.new_sub_path()
                cr.arc(circ[0][0], circ[0][1], r, 0, 2*math.pi)
        else:
            for line in self.silk_lines:
                cr.move_to(*line[0])
                cr.line_to(*line[1])
                cr.stroke()
            for circ in self.silk_circs:
                r = math.sqrt((circ[0][0] - circ[1][0])**2 +
                              (circ[0][1] - circ[1][1])**2)
                cr.new_sub_path()
                cr.arc(circ[0][0], circ[0][1], r, 0, 2*math.pi)
                cr.stroke()
            for rect in self.rect_pads:
                cr.rectangle(rect[0][0], rect[0][1], rect[1][0], rect[1][1])
                cr.fill()
            for circ in self.circ_pads:
                cr.new_sub_path()
                cr.arc(circ[0][0], circ[0][1], circ[1], 0, 2*math.pi)
                cr.fill()
        cr.restore()
Pull a node out of the dependency chain without deleting it and without 
dataset/ETHPy150Open adamgreig/agg-kicad/scripts/stickerbom.py/Module.render--crossover with--dataset/ETHPy150Open andrew-gardner/dependsworkflow/depends/depends_main_window.py/MainWindow.shakeNodes