Date: Wednesday, April 19, 2023 @ 09:10:52 Author: alucryd Revision: 1447419
python-rx 3.2.0-4: python 3.11 rebuild Added: python-rx/trunk/python-rx-py311.patch Modified: python-rx/trunk/PKGBUILD -----------------------+ PKGBUILD | 39 ++++--- python-rx-py311.patch | 258 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 280 insertions(+), 17 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2023-04-19 09:01:15 UTC (rev 1447418) +++ PKGBUILD 2023-04-19 09:10:52 UTC (rev 1447419) @@ -3,21 +3,16 @@ # Contributor: Julien Nicoulaud <[email protected]> pkgname=python-rx -pkgver=4.0.2 -pkgrel=1 +pkgver=3.2.0 +pkgrel=4 pkgdesc='Reactive Extensions for Python' arch=(any) url=http://reactivex.io license=(APACHE) -depends=( - python - python-typing-extensions -) +depends=(python) makedepends=( git - python-build - python-installer - python-poetry + python-setuptools ) checkdepends=( python-coverage @@ -25,20 +20,30 @@ python-pytest python-pytest-asyncio ) -_tag=430cfabbf11eb8e07bc7a875e3d9a26dc5823311 -source=(git+https://github.com/ReactiveX/RxPY.git#tag=${_tag}) -sha256sums=(SKIP) +_tag=5054de8874f275ed0de55007b87cff4817b1d9f7 +source=( + git+https://github.com/ReactiveX/RxPY.git#tag=${_tag} + python-rx-py311.patch +) +b2sums=('SKIP' + '3062891dcdfec9ad21ec6815aa1f83ad6b898de32339c02cef9369a975719a1d58ab7bb07cc352829264b20bfd9a710905c96cc3b88c31b157ba1336dc77271d') pkgver() { cd RxPY - _pkgver=$(git describe --tags | sed 's/^v//') - poetry version -q ${_pkgver} - echo ${_pkgver} + git describe --tags | sed 's/^v//' } +prepare() { + cd RxPY + # Remove deprecated loop parameter (#575) + # https://github.com/ReactiveX/RxPY/pull/575 + git format-patch -1 --stdout 246eabfefd17 | patch -Np1 + patch -Np1 -i ../python-rx-py311.patch +} + build() { cd RxPY - python -m build --wheel --skip-dependency-check --no-isolation + python setup.py build } check() { @@ -48,7 +53,7 @@ package() { cd RxPY - python -m installer --destdir="$pkgdir" dist/*.whl + python setup.py install --root="${pkgdir}" --optimize=1 --skip-build } # vim: ts=2 sw=2 et: Added: python-rx-py311.patch =================================================================== --- python-rx-py311.patch (rev 0) +++ python-rx-py311.patch 2023-04-19 09:10:52 UTC (rev 1447419) @@ -0,0 +1,258 @@ +diff '--color=auto' -rupN RxPY.orig/examples/asyncio/toasyncgenerator.py RxPY/examples/asyncio/toasyncgenerator.py +--- RxPY.orig/examples/asyncio/toasyncgenerator.py 2023-04-19 10:47:27.792573762 +0200 ++++ RxPY/examples/asyncio/toasyncgenerator.py 2023-04-19 10:58:20.669169041 +0200 +@@ -37,8 +37,7 @@ def to_async_generator(sentinel=None): + + source.pipe(ops.materialize()).subscribe(on_next) + +- @asyncio.coroutine +- def gen(): ++ async def gen(): + """Generator producing futures""" + nonlocal future + +@@ -50,17 +49,16 @@ def to_async_generator(sentinel=None): + return _to_async_generator + + [email protected] +-def go(loop): ++async def go(loop): + scheduler = AsyncIOScheduler(loop) + + xs = rx.from_([x for x in range(10)], scheduler=scheduler) + gen = xs.pipe(to_async_generator()) + + # Wish we could write something like: +- # ys = (x for x in yield from gen()) ++ # ys = (x for x in await gen()) + while True: +- x = yield from gen() ++ x = await gen() + if x is None: + break + print(x) +diff '--color=auto' -rupN RxPY.orig/tests/test_observable/test_fromfuture.py RxPY/tests/test_observable/test_fromfuture.py +--- RxPY.orig/tests/test_observable/test_fromfuture.py 2023-04-19 10:47:27.805908319 +0200 ++++ RxPY/tests/test_observable/test_fromfuture.py 2023-04-19 10:48:45.369694016 +0200 +@@ -11,8 +11,7 @@ class TestFromFuture(unittest.TestCase): + loop = asyncio.get_event_loop() + success = [False, True, False] + +- @asyncio.coroutine +- def go(): ++ async def go(): + future = Future() + future.set_result(42) + +@@ -36,8 +35,7 @@ class TestFromFuture(unittest.TestCase): + loop = asyncio.get_event_loop() + success = [True, False, True] + +- @asyncio.coroutine +- def go(): ++ async def go(): + error = Exception('woops') + + future = Future() +@@ -63,8 +61,7 @@ class TestFromFuture(unittest.TestCase): + loop = asyncio.get_event_loop() + success = [True, False, True] + +- @asyncio.coroutine +- def go(): ++ async def go(): + future = Future() + source = rx.from_future(future) + +@@ -87,8 +84,7 @@ class TestFromFuture(unittest.TestCase): + loop = asyncio.get_event_loop() + success = [True, True, True] + +- @asyncio.coroutine +- def go(): ++ async def go(): + future = Future() + future.set_result(42) + +diff '--color=auto' -rupN RxPY.orig/tests/test_observable/test_start.py RxPY/tests/test_observable/test_start.py +--- RxPY.orig/tests/test_observable/test_start.py 2023-04-19 10:47:27.809241958 +0200 ++++ RxPY/tests/test_observable/test_start.py 2023-04-19 10:49:03.544695537 +0200 +@@ -20,8 +20,7 @@ class TestStart(unittest.TestCase): + loop = asyncio.get_event_loop() + success = [False] + +- @asyncio.coroutine +- def go(): ++ async def go(): + def func(): + future = Future() + future.set_result(42) +@@ -40,8 +39,7 @@ class TestStart(unittest.TestCase): + loop = asyncio.get_event_loop() + success = [False] + +- @asyncio.coroutine +- def go(): ++ async def go(): + def func(): + future = Future() + future.set_exception(Exception(str(42))) +diff '--color=auto' -rupN RxPY.orig/tests/test_scheduler/test_eventloop/test_asyncioscheduler.py RxPY/tests/test_scheduler/test_eventloop/test_asyncioscheduler.py +--- RxPY.orig/tests/test_scheduler/test_eventloop/test_asyncioscheduler.py 2023-04-19 10:47:27.822576515 +0200 ++++ RxPY/tests/test_scheduler/test_eventloop/test_asyncioscheduler.py 2023-04-19 11:08:03.866092222 +0200 +@@ -14,19 +14,18 @@ class TestAsyncIOScheduler(unittest.Test + diff = scheduler.now - datetime.utcfromtimestamp(loop.time()) + assert abs(diff) < timedelta(milliseconds=1) + +- def test_asyncio_schedule_now_units(self): ++ async def test_asyncio_schedule_now_units(self): + loop = asyncio.get_event_loop() + scheduler = AsyncIOScheduler(loop) + diff = scheduler.now +- yield from asyncio.sleep(0.1) ++ await asyncio.sleep(0.1) + diff = scheduler.now - diff + assert timedelta(milliseconds=80) < diff < timedelta(milliseconds=180) + + def test_asyncio_schedule_action(self): + loop = asyncio.get_event_loop() + +- @asyncio.coroutine +- def go(): ++ async def go(): + scheduler = AsyncIOScheduler(loop) + ran = False + +@@ -36,7 +35,7 @@ class TestAsyncIOScheduler(unittest.Test + + scheduler.schedule(action) + +- yield from asyncio.sleep(0.1) ++ await asyncio.sleep(0.1) + assert ran is True + + loop.run_until_complete(go()) +@@ -44,8 +43,7 @@ class TestAsyncIOScheduler(unittest.Test + def test_asyncio_schedule_action_due(self): + loop = asyncio.get_event_loop() + +- @asyncio.coroutine +- def go(): ++ async def go(): + scheduler = AsyncIOScheduler(loop) + starttime = loop.time() + endtime = None +@@ -56,7 +54,7 @@ class TestAsyncIOScheduler(unittest.Test + + scheduler.schedule_relative(0.2, action) + +- yield from asyncio.sleep(0.3) ++ await asyncio.sleep(0.3) + assert endtime is not None + diff = endtime - starttime + assert diff > 0.18 +@@ -66,8 +64,7 @@ class TestAsyncIOScheduler(unittest.Test + def test_asyncio_schedule_action_cancel(self): + loop = asyncio.get_event_loop() + +- @asyncio.coroutine +- def go(): ++ async def go(): + ran = False + scheduler = AsyncIOScheduler(loop) + +@@ -78,7 +75,7 @@ class TestAsyncIOScheduler(unittest.Test + d = scheduler.schedule_relative(0.05, action) + d.dispose() + +- yield from asyncio.sleep(0.3) ++ await asyncio.sleep(0.3) + assert ran is False + + loop.run_until_complete(go()) +diff '--color=auto' -rupN RxPY.orig/tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py RxPY/tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py +--- RxPY.orig/tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py 2023-04-19 10:47:27.822576515 +0200 ++++ RxPY/tests/test_scheduler/test_eventloop/test_asynciothreadsafescheduler.py 2023-04-19 11:08:34.792276377 +0200 +@@ -15,19 +15,18 @@ class TestAsyncIOThreadSafeScheduler(uni + diff = scheduler.now - datetime.utcfromtimestamp(loop.time()) + assert abs(diff) < timedelta(milliseconds=1) + +- def test_asyncio_threadsafe_schedule_now_units(self): ++ async def test_asyncio_threadsafe_schedule_now_units(self): + loop = asyncio.get_event_loop() + scheduler = AsyncIOThreadSafeScheduler(loop) + diff = scheduler.now +- yield from asyncio.sleep(0.1) ++ await asyncio.sleep(0.1) + diff = scheduler.now - diff + assert timedelta(milliseconds=80) < diff < timedelta(milliseconds=180) + + def test_asyncio_threadsafe_schedule_action(self): + loop = asyncio.get_event_loop() + +- @asyncio.coroutine +- def go(): ++ async def go(): + scheduler = AsyncIOThreadSafeScheduler(loop) + ran = False + +@@ -40,7 +39,7 @@ class TestAsyncIOThreadSafeScheduler(uni + + threading.Thread(target=schedule).start() + +- yield from asyncio.sleep(0.1) ++ await asyncio.sleep(0.1) + assert ran is True + + loop.run_until_complete(go()) +@@ -48,8 +47,7 @@ class TestAsyncIOThreadSafeScheduler(uni + def test_asyncio_threadsafe_schedule_action_due(self): + loop = asyncio.get_event_loop() + +- @asyncio.coroutine +- def go(): ++ async def go(): + scheduler = AsyncIOThreadSafeScheduler(loop) + starttime = loop.time() + endtime = None +@@ -63,7 +61,7 @@ class TestAsyncIOThreadSafeScheduler(uni + + threading.Thread(target=schedule).start() + +- yield from asyncio.sleep(0.3) ++ await asyncio.sleep(0.3) + assert endtime is not None + diff = endtime - starttime + assert diff > 0.18 +@@ -73,8 +71,7 @@ class TestAsyncIOThreadSafeScheduler(uni + def test_asyncio_threadsafe_schedule_action_cancel(self): + loop = asyncio.get_event_loop() + +- @asyncio.coroutine +- def go(): ++ async def go(): + ran = False + scheduler = AsyncIOThreadSafeScheduler(loop) + +@@ -88,7 +85,7 @@ class TestAsyncIOThreadSafeScheduler(uni + + threading.Thread(target=schedule).start() + +- yield from asyncio.sleep(0.3) ++ await asyncio.sleep(0.3) + assert ran is False + + loop.run_until_complete(go()) +@@ -110,9 +107,8 @@ class TestAsyncIOThreadSafeScheduler(uni + + test_body(scheduler, action, update_state) + +- @asyncio.coroutine +- def go(): +- yield from asyncio.sleep(0.2) ++ async def go(): ++ await asyncio.sleep(0.2) + + loop.run_until_complete(go()) +
