Skip to content
Open
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 12 additions & 6 deletions serial_asyncio_fast/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ class SerialTransport(asyncio.Transport):
calling you back when it succeeds.
"""

_loop: asyncio.AbstractEventLoop
_serial: serial.Serial
_protocol: asyncio.Protocol

def __init__(
self,
loop: asyncio.AbstractEventLoop,
Expand Down Expand Up @@ -98,7 +102,7 @@ def serial(self) -> Optional[serial.Serial]:
"""
return self._serial

def get_extra_info(self, name: str, default: Optional[str] = None) -> Optional[str]:
def get_extra_info(self, name: str, default: Optional[str] = None) -> Optional[serial.Serial]:
"""Get optional transport information.

Currently only "serial" is available.
Expand Down Expand Up @@ -310,7 +314,7 @@ def _write_data(self, data: Union[bytes, bytearray, memoryview]) -> None:
except serial.SerialException as exc:
self._fatal_error(exc, "Fatal write error on serial transport")
return
except BaseException as exc:
except Exception as exc:
self._fatal_error(exc, "Unhandled fatal write error on serial transport")
return
else:
Expand Down Expand Up @@ -402,7 +406,7 @@ def _set_write_buffer_limits(
self._low_water = low

def _fatal_error(
self, exc: BaseException, message="Fatal error on serial transport"
self, exc: Exception, message="Fatal error on serial transport"
) -> None:
"""Report a fatal error to the event-loop and abort the transport."""
self._loop.call_exception_handler(
Expand Down Expand Up @@ -437,7 +441,7 @@ def _close(self, exc: Optional[Exception] = None) -> None:
self._remove_writer()
_create_background_task(self._call_connection_lost(exc, flush=True))

def _abort(self, exc: Optional[BaseException]) -> None:
def _abort(self, exc: Optional[Exception]) -> None:
"""Close the transport immediately.

Pending operations will not be given opportunity to complete,
Expand Down Expand Up @@ -597,7 +601,7 @@ async def open_serial_connection(
if loop is None:
loop = asyncio.get_event_loop()
if limit is None:
limit = asyncio.streams._DEFAULT_LIMIT
limit = 2 ** 16 # 64 KiB
reader = asyncio.StreamReader(limit=limit, loop=loop)
protocol = asyncio.StreamReaderProtocol(reader, loop=loop)
transport, _ = await create_serial_connection(
Expand All @@ -612,9 +616,11 @@ async def open_serial_connection(
if __name__ == "__main__":

class Output(asyncio.Protocol):

_transport: SerialTransport

def __init__(self):
super().__init__()
self._transport = None

def connection_made(self, transport):
self._transport = transport
Expand Down
Loading