def cache_widget_rows(cls):
    ignore_focus = bool(getattr(cls, "ignore_focus", False))
    fn = cls.rows
    def cached_rows(self, size, focus=False):
        focus = focus and not ignore_focus
        canv = CanvasCache.fetch(self, cls, size, focus)
        if canv:
            return canv.rows()

        return fn(self, size, focus)
    update_wrapper(cached_rows, fn)
    return cached_rows
jungle asg ls test
dataset/ETHPy150Open AnyMesh/anyMesh-Python/example/urwid/widget.py/cache_widget_rows--crossover with--dataset/ETHPy150Open achiku/jungle/tests/test_asg.py/test_asg_ls