def configure(self, win, screen):
        # force recalc
        if not self.last_screen or self.last_screen != screen:
            self.last_screen = screen
            self.dirty = True
        if self.last_size and not self.dirty:
            if screen.width != self.last_size[0] or \
                    screen.height != self.last_size[1]:
                self.dirty = True
        if self.dirty:
            gi = GridInfo(
                self.ratio,
                len(self.clients),
                screen.width,
                screen.height
            )
            self.last_size = (screen.width, screen.height)
            if self.fancy:
                method = gi.get_sizes_advanced
            else:
                method = gi.get_sizes

            self.layout_info = method(
                screen.width,
                screen.height,
                screen.x,
                screen.y
            )

            self.dirty = False
        try:
            idx = self.clients.index(win)
        except __HOLE__:
            win.hide()
            return
        x, y, w, h = self.layout_info[idx]
        if win is self.focused:
            bc = self.group.qtile.colorPixel(self.border_focus)
        else:
            bc = self.group.qtile.colorPixel(self.border_normal)
        win.place(
            x,
            y,
            w - self.border_width * 2,
            h - self.border_width * 2,
            self.border_width,
            bc,
            margin=self.margin,
        )
        win.unhide()
dataset/ETHPy150Open qtile/qtile/libqtile/layout/ratiotile.py/RatioTile.configure