docs: async def detach(self, device, force=False):
          """
          Detach a device after unmounting all its mounted filesystems.
  
          :param device: device object, block device path or mount path
          :param bool force: remove child devices before trying to detach
          :returns: whether the operation succeeded
          """
          device = self._find_device(device)
          if not self.is_handleable(device):
              self._log.warn(_('not detaching {0}: unhandled device', device))
              return False
          drive = device.root
          if not drive.is_detachable:
              self._log.warn(_('not detaching {0}: drive not detachable', drive))
              return False
          if force:
              await self.auto_remove(drive, force=True)
          self._log.debug(_('detaching {0}', device))
          await drive.detach()
          self._log.info(_('detached {0}', device))
          return True