code: def pull(self, device_filename, dest_file=None, timeout_ms=None):
      
      should_return_data = dest_file is None
      if isinstance(dest_file, six.string_types):
        dest_file = open(dest_file, 'w')
      elif dest_file is None:
        dest_file = six.StringIO()
      self.filesync_service.recv(device_filename, dest_file,
                                 timeouts.PolledTimeout.from_millis(timeout_ms))
      if should_return_data:
        return dest_file.getvalue()
docs: Pull file from device.
  
      Arguments:
        device_filename: The filename on the device to pull.
        dest_file: If set, a filename or writable file-like object.
        timeout_ms: Expected timeout for the pull.
  
      Returns:
        The file data if dest_file is not set, None otherwise.