def pull(self, var, timeout=None, verbose=True):
if isinstance(var, (str, unicode)):<EOL><INDENT>var = [var]<EOL><DEDENT>outputs = []<EOL>for name in var:<EOL><INDENT>exist = self._exist(name)<EOL>if exist == <NUM_LIT:1>:<EOL><INDENT>outputs.append(self.feval('<STR_LIT>', '<STR_LIT>', name,<EOL>timeout=timeout, verbose=verbose))<EOL><DEDENT>else:<EOL><INDENT>outputs.append(self.get_pointer(name, timeout=timeout))<EOL><DEDENT><DEDENT>if len(outputs) == <NUM_LIT:1>:<EOL><INDENT>return outputs[<NUM_LIT:0>]<EOL><DEDENT>return outputs<EOL>
Retrieve a value or values from the Octave session.

Parameters
----------
var : str or list
    Name of the variable(s) to retrieve.
timeout : float, optional.
    Time to wait for response from Octave (per line).
**kwargs: Deprecated kwargs, ignored.

Returns
-------
out : object
    Object returned by Octave.

Raises
------
Oct2PyError
    If the variable does not exist in the Octave session.

Examples
--------
  >>> from oct2py import octave
  >>> y = [1, 2]
  >>> octave.push('y', y)
  >>> octave.pull('y')
  array([[ 1.,  2.]])
  >>> octave.push(['x', 'y'], ['spam', [1, 2, 3, 4]])
  >>> octave.pull(['x', 'y'])  # doctest: +SKIP
  [u'spam', array([[1, 2, 3, 4]])]