Merge branch 'remove-loop-param' into 'master'
fix: remove loop parameter (3.10) See merge request poezio/slixmpp!174
This commit is contained in:
commit
6fb4617732
11 changed files with 54 additions and 55 deletions
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
@ -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] = [
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue