diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 588679c00cf..06e21c78443 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - version: [3.8, 3.9, "3.10", 3.11, 3.12] + version: [3.9, "3.10", 3.11, 3.12] name: Tests runs-on: ${{ matrix.os }} diff --git a/README.md b/README.md index 1a59bd2cda2..ffc27d79147 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@
@@ -20,7 +20,7 @@ Advantages over proprietary software: - **Fast iteration**: PyLabRobot enables rapid development of protocols using atomic commands run interactively in Jupyter notebooks or the Python REPL. This decreases iteration time from minutes to seconds. - **Open-source**: PyLabRobot is open-source and free to use. - **Control**: With Python, you have ultimate flexibility to control your lab automation equipment. You can write Turing-complete protocols that include feedback loops. -- **Modern**: PyLabRobot is built on modern Python 3.8+ features and async/await syntax. +- **Modern**: PyLabRobot is built on modern Python 3.9+ features and async/await syntax. - **Fast support**: PyLabRobot has [an active community forum](https://discuss.pylabrobot.org) for support and discussion, and most pull requests are merged within a day. ### Liquid handling robots ([docs](https://docs.pylabrobot.org/basic.html)) diff --git a/pylabrobot/__init__.py b/pylabrobot/__init__.py index 1a8f24262a1..ba6e7cfa5f6 100644 --- a/pylabrobot/__init__.py +++ b/pylabrobot/__init__.py @@ -63,11 +63,3 @@ def configure(cfg: Config): configure(CONFIG) - - -# deprecation warning for 3.8 -if sys.version_info < (3, 9): - warnings.warn( - "Support for Python 3.8 is deprecated and will be removed in Dec 2024. " - "Please upgrade to Python 3.9 or later." - ) diff --git a/pylabrobot/liquid_handling/backends/hamilton/base.py b/pylabrobot/liquid_handling/backends/hamilton/base.py index d87ee5fcfb4..8128b5758a6 100644 --- a/pylabrobot/liquid_handling/backends/hamilton/base.py +++ b/pylabrobot/liquid_handling/backends/hamilton/base.py @@ -12,7 +12,6 @@ Sequence, Tuple, TypeVar, - cast, ) from pylabrobot.liquid_handling.backends.backend import ( @@ -276,10 +275,10 @@ async def _write_and_read_command( read_timeout = self.read_timeout loop = asyncio.get_event_loop() - fut = loop.create_future() + fut: asyncio.Future[str] = loop.create_future() self._start_reading(id_, loop, fut, cmd, read_timeout) result = await fut - return cast(str, result) # Futures are generic in Python 3.9, but not in 3.8, so we need cast. + return result def _start_reading( self,