| 171 | # and asyncio types this to Union[bytes, bytearray, memoryview] so we need |
| 172 | # coerce data to bytes if it is not |
| 173 | def feed_data(self, data: bytes | bytearray | memoryview) -> tuple[bool, bytes]: |
| 174 | if type(data) is not bytes: |
| 175 | data = bytes(data) |
| 176 | |
| 177 | if self._exc is not None: |
| 178 | return True, data |
| 179 | |
| 180 | try: |
| 181 | self._feed_data(data) |
| 182 | except Exception as exc: |
| 183 | self._exc = exc |
| 184 | set_exception(self.queue, exc) |
| 185 | return EMPTY_FRAME_ERROR |
| 186 | |
| 187 | return EMPTY_FRAME |
| 188 | |
| 189 | def _handle_frame( |
| 190 | self, |