diff -pruN 3.1.5-2/.github/workflows/main.yml 3.1.6-1/.github/workflows/main.yml
--- 3.1.5-2/.github/workflows/main.yml	2024-01-16 17:19:18.000000000 +0000
+++ 3.1.6-1/.github/workflows/main.yml	2025-09-18 18:16:54.000000000 +0000
@@ -9,7 +9,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: [3.7, 3.8, 3.9, "3.10"]
+        python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
 
     steps:
     - uses: actions/checkout@v2
@@ -21,7 +21,6 @@ jobs:
       run: |
         python -m pip install --upgrade pip
         pip install -r requirements-test.txt
-        if [[ "${{ matrix.python-version }}" == "3.7" ]] ; then pip install asynctest==0.13.0 ; fi
     - name: Lint with flake8
       run: |
         # stop the build if there are Python syntax errors or undefined names
diff -pruN 3.1.5-2/.mailmap 3.1.6-1/.mailmap
--- 3.1.5-2/.mailmap	2024-01-16 17:19:18.000000000 +0000
+++ 3.1.6-1/.mailmap	2025-09-18 18:16:54.000000000 +0000
@@ -4,4 +4,4 @@
 #
 # See https://blog.developer.atlassian.com/aliasing-authors-in-git/
 
-Emily Mills <emily@emlove.me> <adam@armills.info>
+Emily Love Watson <emily@emlove.me> <adam@armills.info>
diff -pruN 3.1.5-2/LICENSE.txt 3.1.6-1/LICENSE.txt
--- 3.1.5-2/LICENSE.txt	2024-01-16 17:19:18.000000000 +0000
+++ 3.1.6-1/LICENSE.txt	2025-09-18 18:16:54.000000000 +0000
@@ -1,5 +1,5 @@
 Copyright (c) 2014 Giuseppe Ciotta <gciotta@gmail.com>
-Copyright (c) 2020 Emily Mills <emily@emlove.me>
+Copyright (c) 2020 Emily Love Watson <emily@emlove.me>
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff -pruN 3.1.5-2/README.rst 3.1.6-1/README.rst
--- 3.1.5-2/README.rst	2024-01-16 17:19:18.000000000 +0000
+++ 3.1.6-1/README.rst	2025-09-18 18:16:54.000000000 +0000
@@ -134,6 +134,11 @@ Install the Python tox package and run `
 
 Changelog
 ---------
+3.1.6 (2025-09-18)
+~~~~~~~~~~~~~~~~~~
+- Port to pytest-asyncio >= 1.0.0 `(#16) <https://github.com/emlove/jsonrpc-websocket/pull/16>`_ `@cjwatson <https://github.com/cjwatson>`_
+- Use built-in asyncio timeout for python versions 11 and up
+
 3.1.5 (2024-01-16)
 ~~~~~~~~~~~~~~~~~~
 - Add explicit dependency to async-timeout `(#13) <https://github.com/emlove/jsonrpc-websocket/pull/13>`_ `@miettal <https://github.com/miettal>`_
diff -pruN 3.1.5-2/debian/changelog 3.1.6-1/debian/changelog
--- 3.1.5-2/debian/changelog	2024-09-14 16:21:59.000000000 +0000
+++ 3.1.6-1/debian/changelog	2025-09-19 13:22:09.000000000 +0000
@@ -1,3 +1,11 @@
+python-jsonrpc-websocket (3.1.6-1) unstable; urgency=medium
+
+  * New upstream version 3.1.6
+    - Fix FTBFS with python3-pytest-asyncio >= 1.0.0 (Closes: #1115563)
+  * Add debian/salsa-ci.yml
+
+ -- Tianyu Chen <billchenchina2001@gmail.com>  Fri, 19 Sep 2025 21:22:09 +0800
+
 python-jsonrpc-websocket (3.1.5-2) unstable; urgency=medium
 
   * Source-only upload to allow package to migrate to testing.
diff -pruN 3.1.5-2/debian/salsa-ci.yml 3.1.6-1/debian/salsa-ci.yml
--- 3.1.5-2/debian/salsa-ci.yml	1970-01-01 00:00:00.000000000 +0000
+++ 3.1.6-1/debian/salsa-ci.yml	2025-09-19 13:22:09.000000000 +0000
@@ -0,0 +1,3 @@
+---
+include:
+  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml
diff -pruN 3.1.5-2/jsonrpc_websocket/jsonrpc.py 3.1.6-1/jsonrpc_websocket/jsonrpc.py
--- 3.1.5-2/jsonrpc_websocket/jsonrpc.py	2024-01-16 17:19:18.000000000 +0000
+++ 3.1.6-1/jsonrpc_websocket/jsonrpc.py	2025-09-18 18:16:54.000000000 +0000
@@ -1,13 +1,18 @@
 import asyncio
 import json
+import sys
 
 import aiohttp
 from aiohttp import ClientError
 from aiohttp.http_exceptions import HttpProcessingError
-import async_timeout
 import jsonrpc_base
 from jsonrpc_base import TransportError
 
+if sys.version_info >= (3, 11):
+    from asyncio import timeout as async_timeout
+else:
+    from async_timeout import timeout as async_timeout
+
 
 class Server(jsonrpc_base.Server):
     """A connection to a HTTP JSON-RPC server, backed by aiohttp"""
@@ -135,7 +140,7 @@ class PendingMessage(object):
         self._response = None
 
     async def wait(self, timeout=None):
-        async with async_timeout.timeout(timeout):
+        async with async_timeout(timeout):
             await self._event.wait()
             return self._response
 
diff -pruN 3.1.5-2/setup.py 3.1.6-1/setup.py
--- 3.1.5-2/setup.py	2024-01-16 17:19:18.000000000 +0000
+++ 3.1.6-1/setup.py	2025-09-18 18:16:54.000000000 +0000
@@ -9,8 +9,8 @@ except ImportError:
 
 setup(
     name='jsonrpc-websocket',
-    version='3.1.5',
-    author='Emily Love Mills',
+    version='3.1.6',
+    author='Emily Love Watson',
     author_email='emily@emlove.me',
     packages=('jsonrpc_websocket',),
     license='BSD',
@@ -30,10 +30,11 @@ setup(
         'Topic :: Software Development :: Libraries',
         'License :: OSI Approved :: BSD License',
         'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.7',
-        'Programming Language :: Python :: 3.8',
         'Programming Language :: Python :: 3.9',
         'Programming Language :: Python :: 3.10',
+        'Programming Language :: Python :: 3.11',
+        'Programming Language :: Python :: 3.12',
+        'Programming Language :: Python :: 3.13',
     ],
 
 )
diff -pruN 3.1.5-2/tests.py 3.1.6-1/tests.py
--- 3.1.5-2/tests.py	2024-01-16 17:19:18.000000000 +0000
+++ 3.1.6-1/tests.py	2025-09-18 18:16:54.000000000 +0000
@@ -105,9 +105,9 @@ def assertSameJSON(json1, json2):
 
 
 @pytest_asyncio.fixture
-async def client(event_loop):
+async def client():
     """Generate a mock json server."""
-    return JsonTestClient(event_loop)
+    return JsonTestClient(asyncio.get_running_loop())
 
 
 @pytest_asyncio.fixture
@@ -350,9 +350,11 @@ async def test_calls(server):
     await server.foobar(**{'foo': 'bar'}, _notification=True)
 
 
-async def test_simultaneous_calls(event_loop, server):
+async def test_simultaneous_calls(server):
     # Test that calls can be delivered simultaneously, and can return out
     # of order
+    event_loop = asyncio.get_running_loop()
+
     def handler(server, data):
         pass
 
diff -pruN 3.1.5-2/tox.ini 3.1.6-1/tox.ini
--- 3.1.5-2/tox.ini	2024-01-16 17:19:18.000000000 +0000
+++ 3.1.6-1/tox.ini	2025-09-18 18:16:54.000000000 +0000
@@ -1,9 +1,10 @@
 [tox]
 envlist =
-    py37,
-    py38,
     py39,
     py310,
+    py311,
+    py312,
+    py313,
     flake8,
 
 [testenv]
@@ -14,24 +15,28 @@ commands =
 deps =
     -r{toxinidir}/requirements-test.txt
 
-[testenv:py37]
-basepython = python3.7
+[testenv:py39]
+basepython = python3.9
 deps =
     {[testenv]deps}
-    asynctest==0.13.0
 
-[testenv:py38]
-basepython = python3.8
+[testenv:py310]
+basepython = python3.10
 deps =
     {[testenv]deps}
 
-[testenv:py39]
-basepython = python3.9
+[testenv:py311]
+basepython = python3.11
 deps =
     {[testenv]deps}
 
-[testenv:py310]
-basepython = python3.10
+[testenv:py312]
+basepython = python3.12
+deps =
+    {[testenv]deps}
+
+[testenv:py313]
+basepython = python3.13
 deps =
     {[testenv]deps}
 
