Merge branch 'remove-loop-param' into 'master'

fix: remove loop parameter (3.10)

See merge request poezio/slixmpp!174
This commit is contained in:
mathieui 2021-12-13 23:26:04 +01:00
commit 6fb4617732
11 changed files with 54 additions and 55 deletions

View file

@ -23,6 +23,29 @@ test:
- pip3 install emoji aiohttp - pip3 install emoji aiohttp
- ./run_tests.py - ./run_tests.py
test-3.10:
stage: test
tags:
- docker
image: python:3.10
script:
- apt update
- apt install -y python3 python3-pip cython3 gpg
- pip3 install emoji aiohttp
- ./run_tests.py
test-3.11:
stage: test
tags:
- docker
image: python:3.11-rc
allow_failure: true
script:
- apt update
- apt install -y python3 python3-pip cython3 gpg
- pip3 install emoji aiohttp
- ./run_tests.py
test_integration: test_integration:
stage: test stage: test
tags: tags:
@ -38,40 +61,10 @@ test_integration:
- pip3 install emoji aiohttp aiodns - pip3 install emoji aiohttp aiodns
- ./run_integration_tests.py - ./run_integration_tests.py
test_integration-3.10:
stage: test
tags:
- docker
image: python:3.10
only:
variables:
- $CI_ACCOUNT1
- $CI_ACCOUNT2
script:
- apt update
- apt install -y python3 python3-pip cython3 gpg
- pip3 install emoji aiohttp aiodns
- ./run_integration_tests.py
test_integration-3.11:
stage: test
tags:
- docker
image: python:3.11-rc
only:
variables:
- $CI_ACCOUNT1
- $CI_ACCOUNT2
script:
- apt update
- apt install -y python3 python3-pip cython3 gpg
- pip3 install emoji aiohttp aiodns
- ./run_integration_tests.py
trigger_poezio: trigger_poezio:
stage: trigger stage: trigger
tags: tags:
- docker - docker
image: appropriate/curl:latest image: curlimages/curl:7.79.1
script: script:
- curl --request POST -F token="$SLIXMPP_TRIGGER_TOKEN" -F ref=master https://lab.louiz.org/api/v4/projects/18/trigger/pipeline - curl --request POST -F token="$SLIXMPP_TRIGGER_TOKEN" -F ref=master https://lab.louiz.org/api/v4/projects/18/trigger/pipeline

View file

@ -34,7 +34,14 @@ class TestPEP(SlixIntegration):
"""Check we can get and set public PEP data""" """Check we can get and set public PEP data"""
stanza = Mystanza() stanza = Mystanza()
stanza['test'] = str(uuid4().hex) stanza['test'] = str(uuid4().hex)
await self.clients[0]['xep_0222'].store(stanza, id='toto') try:
await self.clients[0]['xep_0060'].delete_node(
self.clients[0].boundjid.bare,
node=stanza.namespace,
)
except:
pass
await self.clients[0]['xep_0222'].store(stanza, node=stanza.namespace, id='toto')
fetched = await self.clients[0]['xep_0222'].retrieve( fetched = await self.clients[0]['xep_0222'].retrieve(
stanza.namespace, stanza.namespace,
) )

View file

@ -326,7 +326,6 @@ class XEP_0030(BasePlugin):
info_futures, _ = await asyncio.wait( info_futures, _ = await asyncio.wait(
infos, infos,
timeout=timeout, timeout=timeout,
loop=self.xmpp.loop
) )
self.domain_infos[domain] = [ self.domain_infos[domain] = [

View file

@ -342,7 +342,7 @@ class XEP_0045(BasePlugin):
maxchars = 9 maxchars = 9
else: else:
maxstanzas = int(maxhistory) maxstanzas = int(maxhistory)
return asyncio.create_task( return asyncio.ensure_future(
self.join_muc_wait( self.join_muc_wait(
room=room, room=room,
nick=nick, nick=nick,

View file

@ -115,7 +115,7 @@ class IBBytestream(object):
self.xmpp.add_event_handler('ibb_stream_end', on_close) self.xmpp.add_event_handler('ibb_stream_end', on_close)
self.xmpp.add_event_handler('ibb_stream_data', on_data) self.xmpp.add_event_handler('ibb_stream_data', on_data)
try: try:
await asyncio.wait_for(end_future, timeout, loop=self.xmpp.loop) await asyncio.wait_for(end_future, timeout)
except asyncio.TimeoutError: except asyncio.TimeoutError:
raise IqTimeout(result) raise IqTimeout(result)
finally: finally:

View file

@ -61,7 +61,7 @@ class XEP_0163(BasePlugin):
for ns in namespace: for ns in namespace:
self.xmpp['xep_0030'].add_feature('%s+notify' % ns, self.xmpp['xep_0030'].add_feature('%s+notify' % ns,
jid=jid) jid=jid)
asyncio.create_task( asyncio.ensure_future(
self.xmpp['xep_0115'].update_caps(jid, broadcast=False), self.xmpp['xep_0115'].update_caps(jid, broadcast=False),
loop=self.xmpp.loop, loop=self.xmpp.loop,
) )
@ -82,7 +82,7 @@ class XEP_0163(BasePlugin):
for ns in namespace: for ns in namespace:
self.xmpp['xep_0030'].del_feature(jid=jid, self.xmpp['xep_0030'].del_feature(jid=jid,
feature='%s+notify' % namespace) feature='%s+notify' % namespace)
asyncio.create_task( asyncio.ensure_future(
self.xmpp['xep_0115'].update_caps(jid, broadcast=False), self.xmpp['xep_0115'].update_caps(jid, broadcast=False),
loop=self.xmpp.loop, loop=self.xmpp.loop,
) )

View file

@ -118,7 +118,7 @@ class XEP_0199(BasePlugin):
tmp_futures.append(future) tmp_futures.append(future)
self.__pending_futures = tmp_futures self.__pending_futures = tmp_futures
future = asyncio.create_task( future = asyncio.ensure_future(
self._keepalive(event), self._keepalive(event),
loop=self.xmpp.loop, loop=self.xmpp.loop,
) )

View file

@ -622,7 +622,7 @@ class SlixTest(unittest.TestCase):
def wait_for_send_queue(self): def wait_for_send_queue(self):
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
future = asyncio.create_task(self.xmpp.run_filters(), loop=loop) future = asyncio.ensure_future(self.xmpp.run_filters(), loop=loop)
queue = self.xmpp.waiting_queue queue = self.xmpp.waiting_queue
loop.run_until_complete(queue.join()) loop.run_until_complete(queue.join())
future.cancel() future.cancel()

View file

@ -6,7 +6,7 @@
# :license: MIT, see LICENSE for more details # :license: MIT, see LICENSE for more details
from __future__ import annotations from __future__ import annotations
import asyncio from asyncio import iscoroutinefunction, ensure_future
from typing import Optional, Callable, Awaitable, TYPE_CHECKING from typing import Optional, Callable, Awaitable, TYPE_CHECKING
from slixmpp.xmlstream.stanzabase import StanzaBase from slixmpp.xmlstream.stanzabase import StanzaBase
@ -52,7 +52,7 @@ class CoroutineCallback(BaseHandler):
pointer: CoroutineFunction, once: bool = False, pointer: CoroutineFunction, once: bool = False,
instream: bool = False, stream: Optional[XMLStream] = None): instream: bool = False, stream: Optional[XMLStream] = None):
BaseHandler.__init__(self, name, matcher, stream) BaseHandler.__init__(self, name, matcher, stream)
if not asyncio.iscoroutinefunction(pointer): if not iscoroutinefunction(pointer):
raise ValueError("Given function is not a coroutine") raise ValueError("Given function is not a coroutine")
async def pointer_wrapper(stanza: StanzaBase) -> None: async def pointer_wrapper(stanza: StanzaBase) -> None:
@ -87,7 +87,7 @@ class CoroutineCallback(BaseHandler):
:meth:`prerun()`. Defaults to ``False``. :meth:`prerun()`. Defaults to ``False``.
""" """
if not self._instream or instream: if not self._instream or instream:
asyncio.create_task(self._pointer(payload)) ensure_future(self._pointer(payload))
if self._once: if self._once:
self._destroy = True self._destroy = True
del self._pointer del self._pointer

View file

@ -80,7 +80,7 @@ class Waiter(BaseHandler):
try: try:
await wait_for( await wait_for(
self._event.wait(), timeout, loop=stream.loop self._event.wait(), timeout,
) )
except TimeoutError: except TimeoutError:
log.warning("Timed out waiting for %s", self.name) log.warning("Timed out waiting for %s", self.name)

View file

@ -415,7 +415,7 @@ class XMLStream(asyncio.BaseProtocol):
""" """
if self._run_out_filters is None or self._run_out_filters.done(): if self._run_out_filters is None or self._run_out_filters.done():
self._run_out_filters = asyncio.create_task( self._run_out_filters = asyncio.ensure_future(
self.run_filters(), self.run_filters(),
loop=self.loop, loop=self.loop,
) )
@ -439,7 +439,7 @@ class XMLStream(asyncio.BaseProtocol):
self.disable_starttls = disable_starttls self.disable_starttls = disable_starttls
self.event("connecting") self.event("connecting")
self._current_connection_attempt = asyncio.create_task( self._current_connection_attempt = asyncio.ensure_future(
self._connect_routine(), self._connect_routine(),
loop=self.loop, loop=self.loop,
) )
@ -449,7 +449,7 @@ class XMLStream(asyncio.BaseProtocol):
if self._connect_loop_wait > 0: if self._connect_loop_wait > 0:
self.event('reconnect_delay', self._connect_loop_wait) self.event('reconnect_delay', self._connect_loop_wait)
await asyncio.sleep(self._connect_loop_wait, loop=self.loop) await asyncio.sleep(self._connect_loop_wait)
record = await self._pick_dns_answer(self.default_domain) record = await self._pick_dns_answer(self.default_domain)
if record is not None: if record is not None:
@ -486,7 +486,7 @@ class XMLStream(asyncio.BaseProtocol):
if self._current_connection_attempt is None: if self._current_connection_attempt is None:
return return
self._connect_loop_wait = self._connect_loop_wait * 2 + 1 self._connect_loop_wait = self._connect_loop_wait * 2 + 1
self._current_connection_attempt = asyncio.create_task( self._current_connection_attempt = asyncio.ensure_future(
self._connect_routine(), self._connect_routine(),
loop=self.loop, loop=self.loop,
) )
@ -504,10 +504,10 @@ class XMLStream(asyncio.BaseProtocol):
else: else:
self.loop.run_until_complete(self.disconnected) self.loop.run_until_complete(self.disconnected)
else: else:
tasks: List[Future] = [asyncio.sleep(timeout, loop=self.loop)] tasks: List[Future] = [asyncio.sleep(timeout)]
if not forever: if not forever:
tasks.append(self.disconnected) tasks.append(self.disconnected)
self.loop.run_until_complete(asyncio.wait(tasks, loop=self.loop)) self.loop.run_until_complete(asyncio.wait(tasks))
def init_parser(self) -> None: def init_parser(self) -> None:
"""init the XML parser. The parser must always be reset for each new """init the XML parser. The parser must always be reset for each new
@ -653,12 +653,12 @@ class XMLStream(asyncio.BaseProtocol):
self.disconnect_reason = reason self.disconnect_reason = reason
if self.waiting_queue.empty() or ignore_send_queue: if self.waiting_queue.empty() or ignore_send_queue:
self.cancel_connection_attempt() self.cancel_connection_attempt()
return asyncio.create_task( return asyncio.ensure_future(
self._end_stream_wait(wait, reason=reason), self._end_stream_wait(wait, reason=reason),
loop=self.loop, loop=self.loop,
) )
else: else:
return asyncio.create_task( return asyncio.ensure_future(
self._consume_send_queue_before_disconnecting(reason, wait), self._consume_send_queue_before_disconnecting(reason, wait),
loop=self.loop, loop=self.loop,
) )
@ -715,7 +715,7 @@ class XMLStream(asyncio.BaseProtocol):
log.debug("reconnecting...") log.debug("reconnecting...")
async def handler(event: Any) -> None: async def handler(event: Any) -> None:
# We yield here to allow synchronous handlers to work first # We yield here to allow synchronous handlers to work first
await asyncio.sleep(0, loop=self.loop) await asyncio.sleep(0)
self.connect() self.connect()
self.add_event_handler('disconnected', handler, disposable=True) self.add_event_handler('disconnected', handler, disposable=True)
self.disconnect(wait, reason) self.disconnect(wait, reason)
@ -1058,7 +1058,7 @@ class XMLStream(asyncio.BaseProtocol):
old_exception(e) old_exception(e)
else: else:
self.exception(e) self.exception(e)
asyncio.create_task( asyncio.ensure_future(
handler_callback_routine(handler_callback), handler_callback_routine(handler_callback),
loop=self.loop, loop=self.loop,
) )
@ -1224,7 +1224,7 @@ class XMLStream(asyncio.BaseProtocol):
) )
if pending: if pending:
self.__slow_tasks.append(task) self.__slow_tasks.append(task)
asyncio.create_task( asyncio.ensure_future(
self._continue_slow_send( self._continue_slow_send(
task, task,
already_run_filters already_run_filters
@ -1431,7 +1431,7 @@ class XMLStream(asyncio.BaseProtocol):
:param coroutine: The coroutine to wrap. :param coroutine: The coroutine to wrap.
""" """
return asyncio.create_task( return asyncio.ensure_future(
coroutine, coroutine,
loop=self.loop, loop=self.loop,
) )