def _vid_pid_path_to_usb_info(vid_pid_path):
    """! Provide the vendor ID and product ID of a device based on its entry in the registry
    @return Returns {'vendor_id': '<vendor ID>', 'product': '<product ID>'}
    @details If the vendor ID or product ID can't be determined, they will be returned
    as None.
    """
    result = {"vendor_id": None, "product_id": None}

    for component in vid_pid_path.split("&"):
        component_part = component.lower().split("_")

        if len(component_part) != 2:
            logger.debug("Unexpected VID/PID string structure %s", component)
            break

        if component_part[0] == "vid":
            result["vendor_id"] = component_part[1]
        elif component_part[0] == "pid":
            result["product_id"] = component_part[1]

    return result
def _vid_pid_path_to_usb_info ( vid_pid_path ) : result = { "vendor_id" : None , "product_id" : None } for component in vid_pid_path . split ( "&" ) : component_part = component . lower ( ) . split ( "_" ) if len ( component_part ) != 2 : logger . debug ( "Unexpected VID/PID string structure %s" , component ) break if component_part [ 0 ] == "vid" : result [ "vendor_id" ] = component_part [ 1 ] elif component_part [ 0 ] == "pid" : result [ "product_id" ] = component_part [ 1 ] return result
! Provide the vendor ID and product ID of a device based on its entry in the registry
    @return Returns {'vendor_id': '<vendor ID>', 'product': '<product ID>'}
    @details If the vendor ID or product ID can't be determined, they will be returned
    as None.