--- Begin Message ---
Source: pymodbus
Version: 3.0.0-5
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: lu...@debian.org
Usertags: ftbfs-20230113 ftbfs-bookworm
Hi,
During a rebuild of all packages in sid, your package failed to build
on amd64.
Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> PYTHONPATH=/<<PKGBUILDDIR>> dh_auto_test
> I: pybuild base:240: cd
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build; python3.11 -m pytest
> test
> ============================= test session starts
> ==============================
> platform linux -- Python 3.11.1, pytest-7.2.0, pluggy-1.0.0+repack
> rootdir: /<<PKGBUILDDIR>>, configfile: setup.cfg
> plugins: cov-4.0.0, asyncio-0.20.3
> asyncio: mode=Mode.AUTO
> collected 443 items
>
> test/test_all_messages.py ... [
> 0%]
> test/test_bit_read_messages.py ......... [
> 2%]
> test/test_bit_write_messages.py ......... [
> 4%]
> test/test_client.py .................................................... [
> 16%]
> .. [
> 16%]
> test/test_client_sync.py ............................ [
> 23%]
> test/test_client_sync_diag.py ..... [
> 24%]
> test/test_datastore.py ............................... [
> 31%]
> test/test_device.py ..................... [
> 36%]
> test/test_diag_messages.py ......... [
> 38%]
> test/test_events.py ...... [
> 39%]
> test/test_examples.py .......................FF.....F.... [
> 47%]
> test/test_exceptions.py . [
> 47%]
> test/test_factory.py ........... [
> 50%]
> test/test_file_message.py ....................... [
> 55%]
> test/test_framers.py ................................................. [
> 66%]
> test/test_interfaces.py ..... [
> 67%]
> test/test_mei_messages.py ........ [
> 69%]
> test/test_other_messages.py ....... [
> 70%]
> test/test_payload.py ......... [
> 72%]
> test/test_pdu.py .... [
> 73%]
> test/test_register_read_messages.py ........... [
> 76%]
> test/test_register_write_messages.py ............ [
> 79%]
> test/test_remote_datastore.py .... [
> 79%]
> test/test_repl_client.py .. [
> 80%]
> test/test_server_asyncio.py ....FE...........FEFEFEFEFE.FE [
> 85%]
> test/test_server_context.py ........... [
> 88%]
> test/test_transaction.py .............................................. [
> 98%]
> test/test_utilities.py ..... [
> 99%]
> test/test_version.py ..
> [100%]
>
> ==================================== ERRORS
> ====================================
> ______ ERROR at teardown of AsyncioServerTest.test_async_start_udp_server
> ______
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_start_udp_server>
>
> async def asyncTearDown(self):
> """Clean up the test environment"""
> if self.server is not None:
> await self.server.server_close()
> self.server = None
> if self.task is not None:
> await asyncio.sleep(0.1)
> if not self.task.cancelled():
> self.task.cancel()
> try:
> > await self.task
> E TypeError: BaseEventLoop.create_datagram_endpoint() got
> an unexpected keyword argument 'reuse_address'
>
> test/test_server_asyncio.py:142: TypeError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> ---------------------------- Captured log teardown
> -----------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ____ ERROR at teardown of AsyncioServerTest.test_async_udp_server_exception
> ____
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_udp_server_exception>
>
> async def asyncTearDown(self):
> """Clean up the test environment"""
> if self.server is not None:
> await self.server.server_close()
> self.server = None
> if self.task is not None:
> await asyncio.sleep(0.1)
> if not self.task.cancelled():
> self.task.cancel()
> try:
> > await self.task
> E TypeError: BaseEventLoop.create_datagram_endpoint() got
> an unexpected keyword argument 'reuse_address'
>
> test/test_server_asyncio.py:142: TypeError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> ---------------------------- Captured log teardown
> -----------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> __ ERROR at teardown of AsyncioServerTest.test_async_udp_server_receive_data
> ___
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_udp_server_receive_data>
>
> async def asyncTearDown(self):
> """Clean up the test environment"""
> if self.server is not None:
> await self.server.server_close()
> self.server = None
> if self.task is not None:
> await asyncio.sleep(0.1)
> if not self.task.cancelled():
> self.task.cancel()
> try:
> > await self.task
> E TypeError: BaseEventLoop.create_datagram_endpoint() got
> an unexpected keyword argument 'reuse_address'
>
> test/test_server_asyncio.py:142: TypeError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> ---------------------------- Captured log teardown
> -----------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ____ ERROR at teardown of AsyncioServerTest.test_async_udp_server_roundtrip
> ____
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_udp_server_roundtrip>
>
> async def asyncTearDown(self):
> """Clean up the test environment"""
> if self.server is not None:
> await self.server.server_close()
> self.server = None
> if self.task is not None:
> await asyncio.sleep(0.1)
> if not self.task.cancelled():
> self.task.cancel()
> try:
> > await self.task
> E TypeError: BaseEventLoop.create_datagram_endpoint() got
> an unexpected keyword argument 'reuse_address'
>
> test/test_server_asyncio.py:142: TypeError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> ---------------------------- Captured log teardown
> -----------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ____ ERROR at teardown of AsyncioServerTest.test_async_udp_server_send_data
> ____
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_udp_server_send_data>
>
> async def asyncTearDown(self):
> """Clean up the test environment"""
> if self.server is not None:
> await self.server.server_close()
> self.server = None
> if self.task is not None:
> await asyncio.sleep(0.1)
> if not self.task.cancelled():
> self.task.cancel()
> try:
> > await self.task
> E TypeError: BaseEventLoop.create_datagram_endpoint() got
> an unexpected keyword argument 'reuse_address'
>
> test/test_server_asyncio.py:142: TypeError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> ---------------------------- Captured log teardown
> -----------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> _ ERROR at teardown of
> AsyncioServerTest.test_async_udp_server_serve_forever_close _
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_udp_server_serve_forever_close>
>
> async def asyncTearDown(self):
> """Clean up the test environment"""
> if self.server is not None:
> await self.server.server_close()
> self.server = None
> if self.task is not None:
> await asyncio.sleep(0.1)
> if not self.task.cancelled():
> self.task.cancel()
> try:
> > await self.task
> E TypeError: BaseEventLoop.create_datagram_endpoint() got
> an unexpected keyword argument 'reuse_address'
>
> test/test_server_asyncio.py:142: TypeError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> ---------------------------- Captured log teardown
> -----------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> _ ERROR at teardown of
> AsyncioServerTest.test_async_udp_server_serve_forever_twice _
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_udp_server_serve_forever_twice>
>
> async def asyncTearDown(self):
> """Clean up the test environment"""
> if self.server is not None:
> await self.server.server_close()
> self.server = None
> if self.task is not None:
> await asyncio.sleep(0.1)
> if not self.task.cancelled():
> self.task.cancel()
> try:
> > await self.task
> E TypeError: BaseEventLoop.create_datagram_endpoint() got
> an unexpected keyword argument 'reuse_address'
>
> test/test_server_asyncio.py:142: TypeError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> ---------------------------- Captured log teardown
> -----------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> =================================== FAILURES
> ===================================
> _ test_exp_async_framer[run_async_basic_calls-udp-ModbusSocketFramer-5024-30]
> __
>
> fut = <Future cancelled>, timeout = 3
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> > return fut.result()
> E asyncio.exceptions.CancelledError
>
> /usr/lib/python3.11/asyncio/tasks.py:490: CancelledError
>
> The above exception was the direct cause of the following exception:
>
> test_comm = 'udp'
> test_framer = <class 'pymodbus.framer.socket_framer.ModbusSocketFramer'>
> test_port_offset = 30, test_port = 5024, mock_run_server = None
> test_type = <function run_async_basic_calls at 0x7fa5b2c396c0>
>
> @pytest.mark.parametrize("test_port_offset", [30])
> @pytest.mark.parametrize("test_comm, test_framer, test_port",
> TEST_COMMS_FRAMER)
> @pytest.mark.parametrize(
> "test_type",
> [
> None,
> run_async_basic_calls,
> run_async_ext_calls,
> ],
> )
> async def test_exp_async_framer( # pylint: disable=unused-argument
> test_comm,
> test_framer,
> test_port_offset,
> test_port,
> mock_run_server,
> test_type
> ):
> """Test client-server async with different framers and calls."""
> if test_type == run_async_ext_calls and test_framer ==
> ModbusRtuFramer: # pylint: disable=comparison-with-callable
> return
> if test_comm == "serial":
> return
>
> args = Commandline
> args.framer = test_framer
> args.comm = test_comm
> args.port = test_port
> if isinstance(test_port, int):
> args.port += test_port_offset
> > await run_client(test_comm, test_type, args=args)
>
> test/test_examples.py:152:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> test/test_examples.py:83: in run_client
> await run_async_client(test_client, modbus_calls=test_type)
> ../../../examples/client_async.py:132: in run_async_client
> await modbus_calls(client)
> ../../../examples/client_async_basic_calls.py:116: in run_async_basic_calls
> await _handle_coils(client)
> ../../../examples/client_async_basic_calls.py:21: in _handle_coils
> rr = await client.read_coils(1, 1, slave=SLAVE)
> pymodbus/client/base.py:292: in execute
> resp = await asyncio.wait_for(req, timeout=self.params.timeout)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> fut = <Future cancelled>, timeout = 3
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> > raise exceptions.TimeoutError() from exc
> E TimeoutError
>
> /usr/lib/python3.11/asyncio/tasks.py:492: TimeoutError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> INFO root:server_async.py:71 ### Create datastore
> INFO root:server_async.py:150 ### start ASYNC server on port 5054
> ------------------------------ Captured log call
> -------------------------------
> INFO root:client_async.py:52 ### Create client object
> INFO root:client_async.py:128 ### Client starting
> DEBUG pymodbus.client.udp:udp.py:74 Connecting to 127.0.0.1:5054.
> DEBUG pymodbus.client.udp:udp.py:107 Connecting.
> DEBUG pymodbus.client.base:base.py:350 Client connected to modbus server
> INFO pymodbus.client.udp:udp.py:128 Protocol made connection.
> INFO pymodbus.client.udp:udp.py:116 Connected to 127.0.0.1:5054.
> INFO root:client_async_basic_calls.py:20 ### Reading Coil
> DEBUG pymodbus.client.base:base.py:380 send: 0x0 0x1 0x0 0x0 0x0 0x6 0x1
> 0x1 0x0 0x1 0x0 0x1
> DEBUG pymodbus.transaction:transaction.py:516 Adding transaction 1
> ---------------------------- Captured log teardown
> -----------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ___ test_exp_async_framer[run_async_basic_calls-udp-ModbusRtuFramer-5025-30]
> ___
>
> fut = <Future cancelled>, timeout = 3
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> > return fut.result()
> E asyncio.exceptions.CancelledError
>
> /usr/lib/python3.11/asyncio/tasks.py:490: CancelledError
>
> The above exception was the direct cause of the following exception:
>
> test_comm = 'udp'
> test_framer = <class 'pymodbus.framer.rtu_framer.ModbusRtuFramer'>
> test_port_offset = 30, test_port = 5025, mock_run_server = None
> test_type = <function run_async_basic_calls at 0x7fa5b2c396c0>
>
> @pytest.mark.parametrize("test_port_offset", [30])
> @pytest.mark.parametrize("test_comm, test_framer, test_port",
> TEST_COMMS_FRAMER)
> @pytest.mark.parametrize(
> "test_type",
> [
> None,
> run_async_basic_calls,
> run_async_ext_calls,
> ],
> )
> async def test_exp_async_framer( # pylint: disable=unused-argument
> test_comm,
> test_framer,
> test_port_offset,
> test_port,
> mock_run_server,
> test_type
> ):
> """Test client-server async with different framers and calls."""
> if test_type == run_async_ext_calls and test_framer ==
> ModbusRtuFramer: # pylint: disable=comparison-with-callable
> return
> if test_comm == "serial":
> return
>
> args = Commandline
> args.framer = test_framer
> args.comm = test_comm
> args.port = test_port
> if isinstance(test_port, int):
> args.port += test_port_offset
> > await run_client(test_comm, test_type, args=args)
>
> test/test_examples.py:152:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> test/test_examples.py:83: in run_client
> await run_async_client(test_client, modbus_calls=test_type)
> ../../../examples/client_async.py:132: in run_async_client
> await modbus_calls(client)
> ../../../examples/client_async_basic_calls.py:116: in run_async_basic_calls
> await _handle_coils(client)
> ../../../examples/client_async_basic_calls.py:21: in _handle_coils
> rr = await client.read_coils(1, 1, slave=SLAVE)
> pymodbus/client/base.py:292: in execute
> resp = await asyncio.wait_for(req, timeout=self.params.timeout)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> fut = <Future cancelled>, timeout = 3
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> > raise exceptions.TimeoutError() from exc
> E TimeoutError
>
> /usr/lib/python3.11/asyncio/tasks.py:492: TimeoutError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> INFO root:server_async.py:71 ### Create datastore
> INFO root:server_async.py:150 ### start ASYNC server on port 5055
> ------------------------------ Captured log call
> -------------------------------
> INFO root:client_async.py:52 ### Create client object
> INFO root:client_async.py:128 ### Client starting
> DEBUG pymodbus.client.udp:udp.py:74 Connecting to 127.0.0.1:5055.
> DEBUG pymodbus.client.udp:udp.py:107 Connecting.
> DEBUG pymodbus.client.base:base.py:350 Client connected to modbus server
> INFO pymodbus.client.udp:udp.py:128 Protocol made connection.
> INFO pymodbus.client.udp:udp.py:116 Connected to 127.0.0.1:5055.
> INFO root:client_async_basic_calls.py:20 ### Reading Coil
> DEBUG pymodbus.client.base:base.py:380 send: 0x1 0x1 0x0 0x1 0x0 0x1 0xac
> 0xa
> DEBUG pymodbus.transaction:transaction.py:516 Adding transaction 1
> ---------------------------- Captured log teardown
> -----------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> __ test_exp_async_framer[run_async_ext_calls-udp-ModbusSocketFramer-5024-30]
> ___
>
> fut = <Future cancelled>, timeout = 3
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> > return fut.result()
> E asyncio.exceptions.CancelledError
>
> /usr/lib/python3.11/asyncio/tasks.py:490: CancelledError
>
> The above exception was the direct cause of the following exception:
>
> test_comm = 'udp'
> test_framer = <class 'pymodbus.framer.socket_framer.ModbusSocketFramer'>
> test_port_offset = 30, test_port = 5024, mock_run_server = None
> test_type = <function run_async_ext_calls at 0x7fa5b2c39940>
>
> @pytest.mark.parametrize("test_port_offset", [30])
> @pytest.mark.parametrize("test_comm, test_framer, test_port",
> TEST_COMMS_FRAMER)
> @pytest.mark.parametrize(
> "test_type",
> [
> None,
> run_async_basic_calls,
> run_async_ext_calls,
> ],
> )
> async def test_exp_async_framer( # pylint: disable=unused-argument
> test_comm,
> test_framer,
> test_port_offset,
> test_port,
> mock_run_server,
> test_type
> ):
> """Test client-server async with different framers and calls."""
> if test_type == run_async_ext_calls and test_framer ==
> ModbusRtuFramer: # pylint: disable=comparison-with-callable
> return
> if test_comm == "serial":
> return
>
> args = Commandline
> args.framer = test_framer
> args.comm = test_comm
> args.port = test_port
> if isinstance(test_port, int):
> args.port += test_port_offset
> > await run_client(test_comm, test_type, args=args)
>
> test/test_examples.py:152:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> test/test_examples.py:83: in run_client
> await run_async_client(test_client, modbus_calls=test_type)
> ../../../examples/client_async.py:132: in run_async_client
> await modbus_calls(client)
> ../../../examples/client_async_extended_calls.py:166: in run_async_ext_calls
> await _execute_information_requests(client)
> ../../../examples/client_async_extended_calls.py:63: in
> _execute_information_requests
> rr = await client.execute(ReadDeviceInformationRequest(unit=UNIT))
> pymodbus/client/base.py:292: in execute
> resp = await asyncio.wait_for(req, timeout=self.params.timeout)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> fut = <Future cancelled>, timeout = 3
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> > raise exceptions.TimeoutError() from exc
> E TimeoutError
>
> /usr/lib/python3.11/asyncio/tasks.py:492: TimeoutError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> INFO root:server_async.py:71 ### Create datastore
> INFO root:server_async.py:150 ### start ASYNC server on port 5054
> ------------------------------ Captured log call
> -------------------------------
> INFO root:client_async.py:52 ### Create client object
> INFO root:client_async.py:128 ### Client starting
> DEBUG pymodbus.client.udp:udp.py:74 Connecting to 127.0.0.1:5054.
> DEBUG pymodbus.client.udp:udp.py:107 Connecting.
> DEBUG pymodbus.client.base:base.py:350 Client connected to modbus server
> INFO pymodbus.client.udp:udp.py:128 Protocol made connection.
> INFO pymodbus.client.udp:udp.py:116 Connected to 127.0.0.1:5054.
> INFO root:client_async_extended_calls.py:62 ### Running
> ReadDeviceInformationRequest
> DEBUG pymodbus.client.base:base.py:380 send: 0x0 0x1 0x0 0x0 0x0 0x5 0x1
> 0x2b 0xe 0x1 0x0
> DEBUG pymodbus.transaction:transaction.py:516 Adding transaction 1
> ---------------------------- Captured log teardown
> -----------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ________________ AsyncioServerTest.test_async_start_udp_server
> _________________
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> > return fut.result()
> E asyncio.exceptions.CancelledError
>
> /usr/lib/python3.11/asyncio/tasks.py:490: CancelledError
>
> The above exception was the direct cause of the following exception:
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_start_udp_server>
>
> async def test_async_start_udp_server(self):
> """Test that the modbus udp asyncio server starts correctly"""
> > await self.start_server(do_udp=True, do_ident=True)
>
> test/test_server_asyncio.py:331:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> test/test_server_asyncio.py:181: in start_server
> await asyncio.wait_for(self.server.serving, timeout=0.1)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> > raise exceptions.TimeoutError() from exc
> E TimeoutError
>
> /usr/lib/python3.11/asyncio/tasks.py:492: TimeoutError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> ______________ AsyncioServerTest.test_async_udp_server_exception
> _______________
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> > return fut.result()
> E asyncio.exceptions.CancelledError
>
> /usr/lib/python3.11/asyncio/tasks.py:490: CancelledError
>
> The above exception was the direct cause of the following exception:
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_udp_server_exception>
>
> async def test_async_udp_server_exception(self):
> """Test sending garbage data on a TCP socket should drop the
> connection"""
> BasicClient.dataTo = b"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
> BasicClient.connected = self.loop.create_future()
> BasicClient.done = self.loop.create_future()
> > await self.start_server(do_udp=True)
>
> test/test_server_asyncio.py:414:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> test/test_server_asyncio.py:181: in start_server
> await asyncio.wait_for(self.server.serving, timeout=0.1)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> > raise exceptions.TimeoutError() from exc
> E TimeoutError
>
> /usr/lib/python3.11/asyncio/tasks.py:492: TimeoutError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> _____________ AsyncioServerTest.test_async_udp_server_receive_data
> _____________
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> > return fut.result()
> E asyncio.exceptions.CancelledError
>
> /usr/lib/python3.11/asyncio/tasks.py:490: CancelledError
>
> The above exception was the direct cause of the following exception:
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_udp_server_receive_data>
>
> @pytest.mark.skifif(pytest.IS_WINDOWS, reason="Windows have a timeout
> problem.")
> async def test_async_udp_server_receive_data(self):
> """Test that the sending data on datagram socket gets data pushed to
> framer"""
> > await self.start_server(do_udp=True)
>
> test/test_server_asyncio.py:363:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> test/test_server_asyncio.py:181: in start_server
> await asyncio.wait_for(self.server.serving, timeout=0.1)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> > raise exceptions.TimeoutError() from exc
> E TimeoutError
>
> /usr/lib/python3.11/asyncio/tasks.py:492: TimeoutError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> ______________ AsyncioServerTest.test_async_udp_server_roundtrip
> _______________
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> > return fut.result()
> E asyncio.exceptions.CancelledError
>
> /usr/lib/python3.11/asyncio/tasks.py:490: CancelledError
>
> The above exception was the direct cause of the following exception:
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_udp_server_roundtrip>
>
> async def test_async_udp_server_roundtrip(self):
> """Test sending and receiving data on udp socket"""
> expected_response = b"\x01\x00\x00\x00\x00\x05\x01\x03\x02\x00\x11"
> # value of 17 as per context
> BasicClient.dataTo = TEST_DATA # unit 1, read register
> BasicClient.done = self.loop.create_future()
> > await self.start_server(do_udp=True)
>
> test/test_server_asyncio.py:398:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> test/test_server_asyncio.py:181: in start_server
> await asyncio.wait_for(self.server.serving, timeout=0.1)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> > raise exceptions.TimeoutError() from exc
> E TimeoutError
>
> /usr/lib/python3.11/asyncio/tasks.py:492: TimeoutError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> ______________ AsyncioServerTest.test_async_udp_server_send_data
> _______________
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> > return fut.result()
> E asyncio.exceptions.CancelledError
>
> /usr/lib/python3.11/asyncio/tasks.py:490: CancelledError
>
> The above exception was the direct cause of the following exception:
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_udp_server_send_data>
>
> async def test_async_udp_server_send_data(self):
> """Test that the modbus udp asyncio server correctly sends data
> outbound"""
> BasicClient.dataTo =
> b"x\01\x00\x00\x00\x00\x06\x01\x03\x00\x00\x00\x19"
> > await self.start_server(do_udp=True)
>
> test/test_server_asyncio.py:377:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> test/test_server_asyncio.py:181: in start_server
> await asyncio.wait_for(self.server.serving, timeout=0.1)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> > raise exceptions.TimeoutError() from exc
> E TimeoutError
>
> /usr/lib/python3.11/asyncio/tasks.py:492: TimeoutError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> _________ AsyncioServerTest.test_async_udp_server_serve_forever_close
> __________
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> > return fut.result()
> E asyncio.exceptions.CancelledError
>
> /usr/lib/python3.11/asyncio/tasks.py:490: CancelledError
>
> The above exception was the direct cause of the following exception:
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_udp_server_serve_forever_close>
>
> async def test_async_udp_server_serve_forever_close(self):
> """Test StarAsyncUdpServer serve_forever() method"""
> > await self.start_server(do_udp=True)
>
> test/test_server_asyncio.py:346:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> test/test_server_asyncio.py:181: in start_server
> await asyncio.wait_for(self.server.serving, timeout=0.1)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> > raise exceptions.TimeoutError() from exc
> E TimeoutError
>
> /usr/lib/python3.11/asyncio/tasks.py:492: TimeoutError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> _________ AsyncioServerTest.test_async_udp_server_serve_forever_twice
> __________
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> > return fut.result()
> E asyncio.exceptions.CancelledError
>
> /usr/lib/python3.11/asyncio/tasks.py:490: CancelledError
>
> The above exception was the direct cause of the following exception:
>
> self = <test.test_server_asyncio.AsyncioServerTest
> testMethod=test_async_udp_server_serve_forever_twice>
>
> async def test_async_udp_server_serve_forever_twice(self):
> """Call on serve_forever() twice should result in a runtime error"""
> > await self.start_server(do_udp=True, do_ident=True)
>
> test/test_server_asyncio.py:356:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> test/test_server_asyncio.py:181: in start_server
> await asyncio.wait_for(self.server.serving, timeout=0.1)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> fut = <Future cancelled created at
> /usr/lib/python3.11/asyncio/base_events.py:427>
> timeout = 0.1
>
> async def wait_for(fut, timeout):
> """Wait for the single Future or coroutine to complete, with timeout.
>
> Coroutine will be wrapped in Task.
>
> Returns result of the Future or coroutine. When a timeout occurs,
> it cancels the task and raises TimeoutError. To avoid the task
> cancellation, wrap it in shield().
>
> If the wait is cancelled, the task is also cancelled.
>
> This function is a coroutine.
> """
> loop = events.get_running_loop()
>
> if timeout is None:
> return await fut
>
> if timeout <= 0:
> fut = ensure_future(fut, loop=loop)
>
> if fut.done():
> return fut.result()
>
> await _cancel_and_wait(fut, loop=loop)
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> raise exceptions.TimeoutError() from exc
>
> waiter = loop.create_future()
> timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
> cb = functools.partial(_release_waiter, waiter)
>
> fut = ensure_future(fut, loop=loop)
> fut.add_done_callback(cb)
>
> try:
> # wait until the future completes or the timeout
> try:
> await waiter
> except exceptions.CancelledError:
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> raise
>
> if fut.done():
> return fut.result()
> else:
> fut.remove_done_callback(cb)
> # We must ensure that the task is not running
> # after wait_for() returns.
> # See https://bugs.python.org/issue32751
> await _cancel_and_wait(fut, loop=loop)
> # In case task cancellation failed with some
> # exception, we should re-raise it
> # See https://bugs.python.org/issue40607
> try:
> return fut.result()
> except exceptions.CancelledError as exc:
> > raise exceptions.TimeoutError() from exc
> E TimeoutError
>
> /usr/lib/python3.11/asyncio/tasks.py:492: TimeoutError
> ------------------------------ Captured log setup
> ------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ------------------------------ Captured log call
> -------------------------------
> DEBUG asyncio:selector_events.py:54 Using selector: EpollSelector
> ERROR asyncio:base_events.py:1765 Exception in callback
> AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> handle: <Handle AsyncioServerTest.handle_task(<Task finishe.../tasks.py:374>)
> created at /usr/lib/python3.11/asyncio/events.py:80>
> source_traceback: Object created at (most recent call last):
> File "/usr/lib/python3.11/unittest/case.py", line 623, in run
> self._callTestMethod(testMethod)
> File "/usr/lib/python3.11/unittest/async_case.py", line 90, in
> _callTestMethod
> if self._callMaybeAsync(method) is not None:
> File "/usr/lib/python3.11/unittest/async_case.py", line 112, in
> _callMaybeAsync
> return self._asyncioRunner.run(
> File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
> return self._loop.run_until_complete(task)
> File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in
> run_until_complete
> self.run_forever()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
> self._run_once()
> File "/usr/lib/python3.11/asyncio/base_events.py", line 1911, in _run_once
> handle._run()
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> Traceback (most recent call last):
> File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
> self._context.run(self._callback, *self._args)
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/test/test_server_asyncio.py",
> line 155, in handle_task
> result = result.result()
> ^^^^^^^^^^^^^^^
> File
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build/pymodbus/server/async_io.py",
> line 729, in serve_forever
> self.protocol, self.endpoint = await self.loop.create_datagram_endpoint(
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: BaseEventLoop.create_datagram_endpoint() got an unexpected keyword
> argument 'reuse_address'
> DEBUG asyncio:base_events.py:676 Close <_UnixSelectorEventLoop
> running=False closed=False debug=True>
> =========================== short test summary info
> ============================
> FAILED
> test/test_examples.py::test_exp_async_framer[run_async_basic_calls-udp-ModbusSocketFramer-5024-30]
> FAILED
> test/test_examples.py::test_exp_async_framer[run_async_basic_calls-udp-ModbusRtuFramer-5025-30]
> FAILED
> test/test_examples.py::test_exp_async_framer[run_async_ext_calls-udp-ModbusSocketFramer-5024-30]
> FAILED
> test/test_server_asyncio.py::AsyncioServerTest::test_async_start_udp_server
> FAILED
> test/test_server_asyncio.py::AsyncioServerTest::test_async_udp_server_exception
> FAILED
> test/test_server_asyncio.py::AsyncioServerTest::test_async_udp_server_receive_data
> FAILED
> test/test_server_asyncio.py::AsyncioServerTest::test_async_udp_server_roundtrip
> FAILED
> test/test_server_asyncio.py::AsyncioServerTest::test_async_udp_server_send_data
> FAILED
> test/test_server_asyncio.py::AsyncioServerTest::test_async_udp_server_serve_forever_close
> FAILED
> test/test_server_asyncio.py::AsyncioServerTest::test_async_udp_server_serve_forever_twice
> ERROR
> test/test_server_asyncio.py::AsyncioServerTest::test_async_start_udp_server
> ERROR
> test/test_server_asyncio.py::AsyncioServerTest::test_async_udp_server_exception
> ERROR
> test/test_server_asyncio.py::AsyncioServerTest::test_async_udp_server_receive_data
> ERROR
> test/test_server_asyncio.py::AsyncioServerTest::test_async_udp_server_roundtrip
> ERROR
> test/test_server_asyncio.py::AsyncioServerTest::test_async_udp_server_send_data
> ERROR
> test/test_server_asyncio.py::AsyncioServerTest::test_async_udp_server_serve_forever_close
> ERROR
> test/test_server_asyncio.py::AsyncioServerTest::test_async_udp_server_serve_forever_twice
> ============= 10 failed, 433 passed, 7 errors in 65.04s (0:01:05)
> ==============
> E: pybuild pybuild:388: test: plugin distutils failed with: exit code=1: cd
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymodbus/build; python3.11 -m pytest
> test
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11
> returned exit code 13
The full build log is available from:
http://qa-logs.debian.net/2023/01/13/pymodbus_3.0.0-5_unstable.log
All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20230113;users=lu...@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20230113&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results
A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!
If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects
If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.
--- End Message ---