code: def wait(self, timeout=None):
          
          with self.__cond:
              if not self.__flag:
                  self.__cond.wait(timeout)
              return self.__flag
docs: Block until the internal flag is true.
  
          If the internal flag is true on entry, return immediately. Otherwise,
          block until another thread calls set() to set the flag to true, or until
          the optional timeout occurs.
  
          When the timeout argument is present and not None, it should be a
          floating point number specifying a timeout for the operation in seconds
          (or fractions thereof).
  
          This method returns the internal flag on exit, so it will always return
          True except if a timeout is given and the operation times out.