'OSX version of :method:`can_handle_windows`
:param device_info: Is a tupe of (vid, pid, bcd, manufacturer, product,
serial number)
Confirm that:
- iTunes is running
- there is an iDevice connected
This gets called first when the device fingerprint is read, so it needs to
instantiate iTunes if necessary
This gets called ~1x/second while device fingerprint is sensed'

def can_handle(self, device_info, debug=False):

    try:
        import appscript
        appscript
    except:
        appscript = None
    if (appscript is None):
        return False
    if self.iTunes:
        self.sources = self._get_sources()
        if (('iPod' in self.sources) and (not self.ejected)):
            return True
        else:
            if self.verbose:
                sys.stdout.write('-')
                sys.stdout.flush()
            return False
    else:
        if self.verbose:
            logger().info(('%s.can_handle()' % self.__class__.__name__))
        self._launch_iTunes()
        self.sources = self._get_sources()
        if (('iPod' not in self.sources) or (self.sources['iPod'] == '')):
            attempts = 9
            while attempts:
                self.sources = self._get_sources()
                if (('iPod' not in self.sources) or (self.sources['iPod'] == '')):
                    attempts -= 1
                    time.sleep(1.0)
                    if self.verbose:
                        logger().warning(('    waiting    for    connected    iDevice,    attempt    #%d' % (10 - attempts)))
                else:
                    if self.verbose:
                        logger().info('    found    connected    iDevice')
                    break
            else:
                if self.verbose:
                    logger().info('    self.ejected    =    True')
                self.ejected = True
                return False
        self._discover_manual_sync_mode(wait=(2 if (self.initial_status == 'launched') else 0))
        return True
