def play(self, song):
self._callbacks.play(song)<EOL>self._load_track(song)<EOL>time.sleep(<NUM_LIT:2>)  <EOL>while True:<EOL><INDENT>try:<EOL><INDENT>self._callbacks.pre_poll()<EOL>self._ensure_started()<EOL>self._loop_hook()<EOL>readers, _, _ = select.select(<EOL>self._get_select_readers(), [], [], <NUM_LIT:1>)<EOL>for handle in readers:<EOL><INDENT>if handle.fileno() == self._control_fd:<EOL><INDENT>self._callbacks.input(handle.readline().strip(), song)<EOL><DEDENT>else:<EOL><INDENT>value = self._read_from_process(handle)<EOL>if self._player_stopped(value):<EOL><INDENT>return<EOL><DEDENT><DEDENT><DEDENT><DEDENT>finally:<EOL><INDENT>self._callbacks.post_poll()<EOL><DEDENT><DEDENT>
Play a new song from a Pandora model

        Returns once the stream starts but does not shut down the remote audio
        output backend process. Calls the input callback when the user has
        input.