Source: python-rx
Version: 3.2.0-2
Severity: serious
Tags: upstream ftbfs
Justification: fails to build from source

python-rx fails to build now that tests are being run on Python 3.11.
Here are the failures from pytest:

    =================================== FAILURES 
===================================
    ______________________ TestFromFuture.test_future_cancel 
_______________________
    
    self = <tests.test_observable.test_fromfuture.TestFromFuture 
testMethod=test_future_cancel>
    
        def test_future_cancel(self):
            loop = asyncio.get_event_loop()
            success = [True, False, True]
    
    >       @asyncio.coroutine
    E       AttributeError: module 'asyncio' has no attribute 'coroutine'
    
    tests/test_observable/test_fromfuture.py:66: AttributeError
    ______________________ TestFromFuture.test_future_dispose 
______________________
    
    self = <tests.test_observable.test_fromfuture.TestFromFuture 
testMethod=test_future_dispose>
    
        def test_future_dispose(self):
            loop = asyncio.get_event_loop()
            success = [True, True, True]
    
    >       @asyncio.coroutine
    E       AttributeError: module 'asyncio' has no attribute 'coroutine'
    
    tests/test_observable/test_fromfuture.py:90: AttributeError
    ______________________ TestFromFuture.test_future_failure 
______________________
    
    self = <tests.test_observable.test_fromfuture.TestFromFuture 
testMethod=test_future_failure>
    
        def test_future_failure(self):
            loop = asyncio.get_event_loop()
            success = [True, False, True]
    
    >       @asyncio.coroutine
    E       AttributeError: module 'asyncio' has no attribute 'coroutine'
    
    tests/test_observable/test_fromfuture.py:39: AttributeError
    ______________________ TestFromFuture.test_future_success 
______________________
    
    self = <tests.test_observable.test_fromfuture.TestFromFuture 
testMethod=test_future_success>
    
        def test_future_success(self):
            loop = asyncio.get_event_loop()
            success = [False, True, False]
    
    >       @asyncio.coroutine
    E       AttributeError: module 'asyncio' has no attribute 'coroutine'
    
    tests/test_observable/test_fromfuture.py:14: AttributeError
    __________________________ TestStart.test_start_async 
__________________________
    
    self = <tests.test_observable.test_start.TestStart 
testMethod=test_start_async>
    
        def test_start_async(self):
            loop = asyncio.get_event_loop()
            success = [False]
    
    >       @asyncio.coroutine
    E       AttributeError: module 'asyncio' has no attribute 'coroutine'
    
    tests/test_observable/test_start.py:23: AttributeError
    _______________________ TestStart.test_start_async_error 
_______________________
    
    self = <tests.test_observable.test_start.TestStart 
testMethod=test_start_async_error>
    
        def test_start_async_error(self):
            loop = asyncio.get_event_loop()
            success = [False]
    
    >       @asyncio.coroutine
    E       AttributeError: module 'asyncio' has no attribute 'coroutine'
    
    tests/test_observable/test_start.py:43: AttributeError
    ______________ TestAsyncIOScheduler.test_asyncio_schedule_action 
_______________
    
    self = 
<tests.test_scheduler.test_eventloop.test_asyncioscheduler.TestAsyncIOScheduler 
testMethod=test_asyncio_schedule_action>
    
        def test_asyncio_schedule_action(self):
            loop = asyncio.get_event_loop()
    
    >       @asyncio.coroutine
    E       AttributeError: module 'asyncio' has no attribute 'coroutine'
    
    tests/test_scheduler/test_eventloop/test_asyncioscheduler.py:33: 
AttributeError
    ___________ TestAsyncIOScheduler.test_asyncio_schedule_action_cancel 
___________
    
    self = 
<tests.test_scheduler.test_eventloop.test_asyncioscheduler.TestAsyncIOScheduler 
testMethod=test_asyncio_schedule_action_cancel>
    
        def test_asyncio_schedule_action_cancel(self):
            loop = asyncio.get_event_loop()
    
    >       @asyncio.coroutine
    E       AttributeError: module 'asyncio' has no attribute 'coroutine'
    
    tests/test_scheduler/test_eventloop/test_asyncioscheduler.py:80: 
AttributeError
    ____________ TestAsyncIOScheduler.test_asyncio_schedule_action_due 
_____________
    
    self = 
<tests.test_scheduler.test_eventloop.test_asyncioscheduler.TestAsyncIOScheduler 
testMethod=test_asyncio_schedule_action_due>
    
        def test_asyncio_schedule_action_due(self):
            loop = asyncio.get_event_loop()
    
    >       @asyncio.coroutine
    E       AttributeError: module 'asyncio' has no attribute 'coroutine'
    
    tests/test_scheduler/test_eventloop/test_asyncioscheduler.py:55: 
AttributeError
    ____ TestAsyncIOThreadSafeScheduler.test_asyncio_threadsafe_schedule_action 
____
    
    self = 
<tests.test_scheduler.test_eventloop.test_asynciothreadsafescheduler.TestAsyncIOThreadSafeScheduler
 testMethod=test_asyncio_threadsafe_schedule_action>
    
        def test_asyncio_threadsafe_schedule_action(self):
            loop = asyncio.get_event_loop()
    
    >       @asyncio.coroutine
    E       AttributeError: module 'asyncio' has no attribute 'coroutine'
    
    tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py:34: 
AttributeError
    _ 
TestAsyncIOThreadSafeScheduler.test_asyncio_threadsafe_schedule_action_cancel _
    
    self = 
<tests.test_scheduler.test_eventloop.test_asynciothreadsafescheduler.TestAsyncIOThreadSafeScheduler
 testMethod=test_asyncio_threadsafe_schedule_action_cancel>
    
        def test_asyncio_threadsafe_schedule_action_cancel(self):
            loop = asyncio.get_event_loop()
    
    >       @asyncio.coroutine
    E       AttributeError: module 'asyncio' has no attribute 'coroutine'
    
    tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py:87: 
AttributeError
    _ 
TestAsyncIOThreadSafeScheduler.test_asyncio_threadsafe_schedule_action_cancel_same_loop
 _
    
    self = 
<tests.test_scheduler.test_eventloop.test_asynciothreadsafescheduler.TestAsyncIOThreadSafeScheduler
 testMethod=test_asyncio_threadsafe_schedule_action_cancel_same_loop>
    
        def test_asyncio_threadsafe_schedule_action_cancel_same_loop(self):
            def test_body(scheduler, action, update_state):
                d = scheduler.schedule_relative(0.1, action)
    
                def do_dispose():
                    d.dispose()
                    update_state['dispose_completed'] = True
    
                # Test case when dispose is called in loop's callback.
                scheduler._loop.call_soon(do_dispose)
    
    >       self.cancel_same_thread_common(test_body)
    
    tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py:179:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _
    
    self = 
<tests.test_scheduler.test_eventloop.test_asynciothreadsafescheduler.TestAsyncIOThreadSafeScheduler
 testMethod=test_asyncio_threadsafe_schedule_action_cancel_same_loop>
    test_body = <function 
TestAsyncIOThreadSafeScheduler.test_asyncio_threadsafe_schedule_action_cancel_same_loop.<locals>.test_body
 at 0x7fc4e6c13420>
    
        def cancel_same_thread_common(self, test_body):
            update_state = {
                'ran': False,
                'dispose_completed': False
            }
    
            def action(scheduler, state):
                update_state['ran'] = True
    
            # Make the actual test body run in deamon thread, so that in case of
            # failure it doesn't hang indefinitely.
            def thread_target():
                loop = asyncio.new_event_loop()
                scheduler = AsyncIOThreadSafeScheduler(loop)
    
                test_body(scheduler, action, update_state)
    
                @asyncio.coroutine
                def go():
                    kwargs = {}
                    if version_info[:2] < (3, 10):
                        kwargs['loop'] = loop
                    yield from asyncio.sleep(0.2, **kwargs)
    
                loop.run_until_complete(go())
    
            thread = threading.Thread(target=thread_target)
            thread.daemon = True
            thread.start()
            thread.join(0.3)
    >       assert update_state['dispose_completed'] is True
    E       assert False is True
    
    tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py:140: 
AssertionError
    __ 
TestAsyncIOThreadSafeScheduler.test_asyncio_threadsafe_schedule_action_due __
    
    self = 
<tests.test_scheduler.test_eventloop.test_asynciothreadsafescheduler.TestAsyncIOThreadSafeScheduler
 testMethod=test_asyncio_threadsafe_schedule_action_due>
    
        def test_asyncio_threadsafe_schedule_action_due(self):
            loop = asyncio.get_event_loop()
    
    >       @asyncio.coroutine
    E       AttributeError: module 'asyncio' has no attribute 'coroutine'
    
    tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py:59: 
AttributeError
    =============================== warnings summary 
===============================
    
.pybuild/cpython3_3.11_rx/build/tests/test_observable/test_flatmap_async.py::TestFlatMapAsync::test_flat_map_async
      
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_rx/build/tests/test_observable/test_flatmap_async.py:13:
 DeprecationWarning: There is no current event loop
        loop = asyncio.get_event_loop()
    
    
.pybuild/cpython3_3.11_rx/build/tests/test_scheduler/test_timeoutscheduler.py::TestTimeoutScheduler::test_timeout_schedule_action
      
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_rx/build/rx/scheduler/timeoutscheduler.py:51:
 DeprecationWarning: setDaemon() is deprecated, set the daemon attribute instead
        timer.setDaemon(True)
    
    
.pybuild/cpython3_3.11_rx/build/tests/test_scheduler/test_timeoutscheduler.py::TestTimeoutScheduler::test_timeout_schedule_action_cancel
    
.pybuild/cpython3_3.11_rx/build/tests/test_scheduler/test_timeoutscheduler.py::TestTimeoutScheduler::test_timeout_schedule_action_due
      
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_rx/build/rx/scheduler/timeoutscheduler.py:86:
 DeprecationWarning: setDaemon() is deprecated, set the daemon attribute instead
        timer.setDaemon(True)
    
    
.pybuild/cpython3_3.11_rx/build/tests/test_scheduler/test_eventloop/test_asyncioscheduler.py::TestAsyncIOScheduler::test_asyncio_schedule_now_units
      /usr/lib/python3.11/unittest/case.py:678: DeprecationWarning: It is 
deprecated to return a value that is not None from a test case (<bound method 
TestAsyncIOScheduler.test_asyncio_schedule_now_units of 
<tests.test_scheduler.test_eventloop.test_asyncioscheduler.TestAsyncIOScheduler 
testMethod=test_asyncio_schedule_now_units>>)
        return self.run(*args, **kwds)
    
    
.pybuild/cpython3_3.11_rx/build/tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py::TestAsyncIOThreadSafeScheduler::test_asyncio_threadsafe_cancel_non_relative_same_thread
      /usr/lib/python3/dist-packages/_pytest/threadexception.py:73: 
PytestUnhandledThreadExceptionWarning: Exception in thread Thread-115 
(thread_target)
    
      Traceback (most recent call last):
        File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
          self.run()
        File "/usr/lib/python3.11/threading.py", line 975, in run
          self._target(*self._args, **self._kwargs)
        File 
"/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_rx/build/tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py",
 line 127, in thread_target
          @asyncio.coroutine
           ^^^^^^^^^^^^^^^^^
      AttributeError: module 'asyncio' has no attribute 'coroutine'
    
        warnings.warn(pytest.PytestUnhandledThreadExceptionWarning(msg))
    
    
.pybuild/cpython3_3.11_rx/build/tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py::TestAsyncIOThreadSafeScheduler::test_asyncio_threadsafe_schedule_action_cancel_same_loop
      /usr/lib/python3/dist-packages/_pytest/threadexception.py:73: 
PytestUnhandledThreadExceptionWarning: Exception in thread Thread-116 
(thread_target)
    
      Traceback (most recent call last):
        File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
          self.run()
        File "/usr/lib/python3.11/threading.py", line 975, in run
          self._target(*self._args, **self._kwargs)
        File 
"/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_rx/build/tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py",
 line 127, in thread_target
          @asyncio.coroutine
           ^^^^^^^^^^^^^^^^^
      AttributeError: module 'asyncio' has no attribute 'coroutine'
    
        warnings.warn(pytest.PytestUnhandledThreadExceptionWarning(msg))
    
    
.pybuild/cpython3_3.11_rx/build/tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py::TestAsyncIOThreadSafeScheduler::test_asyncio_threadsafe_schedule_action_cancel_same_thread
      /usr/lib/python3/dist-packages/_pytest/threadexception.py:73: 
PytestUnhandledThreadExceptionWarning: Exception in thread Thread-117 
(thread_target)
    
      Traceback (most recent call last):
        File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
          self.run()
        File "/usr/lib/python3.11/threading.py", line 975, in run
          self._target(*self._args, **self._kwargs)
        File 
"/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_rx/build/tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py",
 line 127, in thread_target
          @asyncio.coroutine
           ^^^^^^^^^^^^^^^^^
      AttributeError: module 'asyncio' has no attribute 'coroutine'
    
        warnings.warn(pytest.PytestUnhandledThreadExceptionWarning(msg))
    
    
.pybuild/cpython3_3.11_rx/build/tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py::TestAsyncIOThreadSafeScheduler::test_asyncio_threadsafe_schedule_now_units
      /usr/lib/python3.11/unittest/case.py:678: DeprecationWarning: It is 
deprecated to return a value that is not None from a test case (<bound method 
TestAsyncIOThreadSafeScheduler.test_asyncio_threadsafe_schedule_now_units of 
<tests.test_scheduler.test_eventloop.test_asynciothreadsafescheduler.TestAsyncIOThreadSafeScheduler
 testMethod=test_asyncio_threadsafe_schedule_now_units>>)
        return self.run(*args, **kwds)
    
    -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
    =========================== short test summary info 
============================
    FAILED 
tests/test_observable/test_fromfuture.py::TestFromFuture::test_future_cancel
    FAILED 
tests/test_observable/test_fromfuture.py::TestFromFuture::test_future_dispose
    FAILED 
tests/test_observable/test_fromfuture.py::TestFromFuture::test_future_failure
    FAILED 
tests/test_observable/test_fromfuture.py::TestFromFuture::test_future_success
    FAILED tests/test_observable/test_start.py::TestStart::test_start_async - 
Att...
    FAILED 
tests/test_observable/test_start.py::TestStart::test_start_async_error
    FAILED 
tests/test_scheduler/test_eventloop/test_asyncioscheduler.py::TestAsyncIOScheduler::test_asyncio_schedule_action
    FAILED 
tests/test_scheduler/test_eventloop/test_asyncioscheduler.py::TestAsyncIOScheduler::test_asyncio_schedule_action_cancel
    FAILED 
tests/test_scheduler/test_eventloop/test_asyncioscheduler.py::TestAsyncIOScheduler::test_asyncio_schedule_action_due
    FAILED 
tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py::TestAsyncIOThreadSafeScheduler::test_asyncio_threadsafe_schedule_action
    FAILED 
tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py::TestAsyncIOThreadSafeScheduler::test_asyncio_threadsafe_schedule_action_cancel
    FAILED 
tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py::TestAsyncIOThreadSafeScheduler::test_asyncio_threadsafe_schedule_action_cancel_same_loop
    FAILED 
tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py::TestAsyncIOThreadSafeScheduler::test_asyncio_threadsafe_schedule_action_due
    =========== 13 failed, 1309 passed, 10 skipped, 9 warnings in 20.51s 
===========
    E: pybuild pybuild:386: test: plugin distutils failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_rx/build; python3.11 -m pytest tests

This looks like https://github.com/ReactiveX/RxPY/issues/588, but it
also seems that we're several upstream versions behind.  Would packaging
4.0.4 be in order?  If this is too big a migration though (I see from
https://github.com/ReactiveX/RxPY/blob/master/docs/migration.rst that it
doesn't look entirely trivial), at least cherry-picking that fix for now
would probably be a good idea.

Thanks,

-- 
Colin Watson (he/him)                              [cjwat...@debian.org]

Reply via email to