def is_idle_confirmed(self, services: list[BaseService]) -> bool:
        """Test if spider is fully idle.

        WARNING: As side effect it stops all services to get state of queues
        anaffected by sercies.

        Spider is full idle when all conditions are met:
        * all services are paused i.e. the do not change queues
        * all queues are empty
        * task generator is completed
        """
        if self.is_idle_estimated():
            for srv in services:
                srv.pause()
            if self.is_idle_estimated():
                return True
            for srv in services:
                srv.resume()
        return False
Test if spider is fully idle.

        WARNING: As side effect it stops all services to get state of queues
        anaffected by sercies.

        Spider is full idle when all conditions are met:
        * all services are paused i.e. the do not change queues
        * all queues are empty
        * task generator is completed
        
grab/spider/base.py