diff --git a/pymonoprice/__init__.py b/pymonoprice/__init__.py index 21da6c4..df2a38b 100644 --- a/pymonoprice/__init__.py +++ b/pymonoprice/__init__.py @@ -3,10 +3,9 @@ import asyncio import logging import re -import serial +import serialx from dataclasses import dataclass from functools import wraps -from serial_asyncio_fast import create_serial_connection, SerialTransport from threading import RLock from typing import TYPE_CHECKING @@ -123,13 +122,15 @@ def __init__(self, port_url: str, lock: RLock) -> None: Monoprice amplifier interface """ self._lock = lock - self._port = serial.serial_for_url(port_url, do_not_open=True) - self._port.baudrate = 9600 - self._port.stopbits = serial.STOPBITS_ONE - self._port.bytesize = serial.EIGHTBITS - self._port.parity = serial.PARITY_NONE - self._port.timeout = TIMEOUT - self._port.write_timeout = TIMEOUT + self._port = serialx.Serial( + port_url, + baudrate=9600, + stopbits=serialx.StopBits.ONE, + byte_size=8, + parity=serialx.Parity.NONE, + read_timeout=TIMEOUT, + write_timeout=TIMEOUT, + ) self._port.open() def _send_request(self, request: bytes) -> None: @@ -157,7 +158,7 @@ def _process_request(self, request: bytes, num_eols_to_read: int = 1) -> str: while True: c = self._port.read(1) if not c: - raise serial.SerialTimeoutException( + raise serialx.SerialTimeoutException( "Connection timed out! Last received bytes {}".format( [hex(a) for a in result] ) @@ -394,11 +395,11 @@ def __init__(self) -> None: super().__init__() self._lock = asyncio.Lock() self._tasks: set[asyncio.Task[None]] = set() - self._transport: SerialTransport = None + self._transport: serialx.SerialTransport = None self._connected = asyncio.Event() self.q: asyncio.Queue[bytes] = asyncio.Queue() - def connection_made(self, transport: SerialTransport) -> None: + def connection_made(self, transport: serialx.SerialTransport) -> None: self._transport = transport self._connected.set() _LOGGER.debug("port opened %s", self._transport) @@ -518,7 +519,7 @@ async def get_async_monoprice(port_url: str) -> MonopriceAsync: lock = asyncio.Lock() loop = asyncio.get_running_loop() - _, protocol = await create_serial_connection( + _, protocol = await serialx.create_serial_connection( loop, MonopriceProtocol, port_url, baudrate=9600 ) return MonopriceAsync(protocol, lock) diff --git a/requirements.txt b/requirements.txt index 5874bac..5ddc9a3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1 @@ -pyserial>=3.4 -pyserial-asyncio-fast>=0.16 \ No newline at end of file +serialx>=1.4.1 diff --git a/setup.cfg b/setup.cfg index 97c853d..87848f8 100644 --- a/setup.cfg +++ b/setup.cfg @@ -18,8 +18,7 @@ packages = python_requires >= 3.9 zip_safe = True install_requires = - pyserial>=3.4 - pyserial-asyncio-fast>=0.16 + serialx>=1.4.1 [options.package_data] pymonoprice = py.typed @@ -42,7 +41,3 @@ warn_redundant_casts = true warn_unreachable = true warn_unused_configs = True warn_unused_ignores = true -[mypy-serial] -ignore_missing_imports = True -[mypy-serial_asyncio_fast] -ignore_missing_imports = True diff --git a/tests/test_monoprice.py b/tests/test_monoprice.py index 60def3b..4ad1cfc 100644 --- a/tests/test_monoprice.py +++ b/tests/test_monoprice.py @@ -1,8 +1,7 @@ import unittest -import serial - import pymonoprice +import serialx from pymonoprice import (get_monoprice, get_async_monoprice, ZoneStatus) from tests import create_dummy_port import asyncio @@ -324,7 +323,7 @@ def test_restore_zone(self): self.assertEqual(0, len(self.responses)) def test_timeout(self): - with self.assertRaises(serial.SerialTimeoutException): + with self.assertRaises(serialx.SerialTimeoutException): self.monoprice.set_source(3, 3)