def METHOD_NAME(cls, usb_reset=False, usb_ids: Set[Tuple[int, int]] = TREZORS) -> Iterable["WebUsbTransport"]:
    if cls.context is None:
        cls.context = usb1.USBContext()
        cls.context.open()
        atexit.register(cls.context.close)
    devices = []
    for dev in cls.context.getDeviceIterator(skip_on_error=True):
        usb_id = (dev.getVendorID(), dev.getProductID())
        if usb_id not in usb_ids:
            continue
        if not is_vendor_class(dev):
            continue
        try:
            # workaround for issue #223:
            # on certain combinations of Windows USB drivers and libusb versions,
            # Trezor is returned twice (possibly because Windows know it as both
            # a HID and a WebUSB device), and one of the returned devices is
            # non-functional.
            dev.getProduct()
            devices.append(WebUsbTransport(dev))
        except usb1.USBErrorNotSupported:
            pass
        except usb1.USBErrorPipe:
            if usb_reset:
                handle = dev.open()
                handle.resetDevice()
                handle.close()
    return devices