def METHOD_NAME(
    self, endpoint: int, size_or_buffer: array.array, timeout: Optional[int] = None
) -> int:
    """Read data from the endpoint.
    :param int endpoint: the bEndpointAddress you want to communicate with.
    :param array.array size_or_buffer: the array to read data into. PyUSB also allows size but CircuitPython only support array to force deliberate memory use.
    :param int timeout: Time to wait specified in milliseconds. (Different from most CircuitPython!)
    :returns: the number of bytes read
    """
    ...