class_docstr: A pyglet window with an event loop which executes automatically
  in a separate thread. Behavior is added by creating a subclass
  which overrides setup, update, and/or draw.
class_docstr_tok: ["A","pyglet","window","with","an","event","loop","which","executes","automatically","in","a","separate","thread",".","Behavior","is","added","by","creating","a","subclass","which","overrides","setup",",","update",",","and\/or","draw","."]
docstr: Called once before the event loop begins.
  Override this method in a child class. This
  is the best place to put things like OpenGL
  initialization calls.
docstr_tok: ["Called","once","before","the","event","loop","begins",".","Override","this","method","in","a","child","class",".","This","is","the","best","place","to","put","things","like","OpenGL","initialization","calls","."]
code: def setup(self):
      """
      Called once before the event loop begins.
      Override this method in a child class. This
      is the best place to put things like OpenGL
      initialization calls.
      """
      pass
  
file_path: sympy/sympy/plotting/pygletplot/managed_window.py
imports: from pyglet.window import Window
  from pyglet.clock import Clock
  from threading import Thread, Lock
label_desc: Use image node_id 4 for calling the ManagedWindow obj's underlying member method code with example usage: obj.setup() without return types