def frame(self,
              rect=None,            # the inner bounds of the frame (left,right,top,bottom)
              thickness=(0.01,0.01),# thickness of the frame (left/right, top/bottom)
              duration=1.0,         # duration for which this object will be displayed
                                    # if this is a string, the stimulus will be displayed until the corresponding event is generated
                                    # if this is a list of [number,string], the stimulus will at least be displayed for <number> seconds, but needs to confirmed with the respective event
                                    # if this is 0, the write will be non-blocking and you have to .destroy() the return value of this function manually  
              block=True,           # whether this function should only return once the duration is over
              # additional parameters
              color=(1,1,1,1),      # the (r,g,b,a) color of the rectangle
              parent=None,          # the renderer to use for displaying the object
              ):
        """Display a frame on the screen and keep it there for a particular duration."""
                
        l=rect[0];r=rect[1];t=rect[2];b=rect[3]
        w=thickness[0];h=thickness[1]
        L = self._engine.direct.gui.OnscreenImage.OnscreenImage(image='blank.tga',pos=(l-w/2,0,(b+t)/2),scale=(w/2,1,w+(b-t)/2),color=color,parent=parent)
        L.setTransparency(self._engine.pandac.TransparencyAttrib.MAlpha)
        self._to_destroy.append(L)
        R = self._engine.direct.gui.OnscreenImage.OnscreenImage(image='blank.tga',pos=(r+w/2,0,(b+t)/2),scale=(w/2,1,w+(b-t)/2),color=color,parent=parent)
        R.setTransparency(self._engine.pandac.TransparencyAttrib.MAlpha)
        self._to_destroy.append(R)
        T = self._engine.direct.gui.OnscreenImage.OnscreenImage(image='blank.tga',pos=((l+r)/2,0,t-h/2),scale=(h+(r-l)/2,1,h/2),color=color,parent=parent)
        T.setTransparency(self._engine.pandac.TransparencyAttrib.MAlpha)
        self._to_destroy.append(T)
        B = self._engine.direct.gui.OnscreenImage.OnscreenImage(image='blank.tga',pos=(2/(l+r),0,b+h/2),scale=(h+(r-l)/2,1,h/2),color=color,parent=parent)
        B.setTransparency(self._engine.pandac.TransparencyAttrib.MAlpha)
        self._to_destroy.append(B)
        if self.implicit_markers:
            self.marker(242)
        if block:
            if type(duration) == list or type(duration) == tuple:
                self.sleep(duration[0])
                self.waitfor(duration[1])
            elif type(duration) == str:
                self.waitfor(duration)
            else:
                self.sleep(duration)
            self._destroy_object([L,R,T,B],243)
        else:
            if duration > 0:
                self._engine.base.taskMgr.doMethodLater(duration,self._destroy_object, 'ConvenienceFunctions, remove_frame',extraArgs=[[L,R,T,B],243])    
            return self.destroy_helper([L,R,T,B])
dataset/ETHPy150Open sccn/SNAP/src/framework/basicstimuli.py/BasicStimuli.frame/swapped operands of `/`