Merge branch 'doc-update' into 'master'
Add documentation on how to replace proces() See merge request poezio/slixmpp!186
This commit is contained in:
commit
001e0c7060
4 changed files with 60 additions and 2 deletions
|
@ -9,6 +9,7 @@ Tutorials, FAQs, and How To Guides
|
|||
internal_api
|
||||
features
|
||||
sasl
|
||||
remove_process
|
||||
handlersmatchers
|
||||
guide_xep_0030
|
||||
xmpp_tdg
|
||||
|
|
55
docs/howto/remove_process.rst
Normal file
55
docs/howto/remove_process.rst
Normal file
|
@ -0,0 +1,55 @@
|
|||
.. _remove-process:
|
||||
|
||||
How to remove xmpp.process()
|
||||
============================
|
||||
|
||||
|
||||
Starting from slixmpp 1.8.0, running ``process()`` on an
|
||||
XMLStream/ClientXMPP/ComponentXMPP instance is deprecated, and starting from
|
||||
1.9.0, it will be removed.
|
||||
|
||||
Why
|
||||
---
|
||||
|
||||
This has been the usual way of running an application using SleekXMPP/slixmpp
|
||||
for ages, but it has come at a price: people do not understand how they
|
||||
should run their application without it, or how to integrate their slixmpp
|
||||
code with the rest of their asyncio application.
|
||||
|
||||
In essence, ``process()`` is only a very thin wrapper around asyncio loop
|
||||
functions:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
if timeout is None:
|
||||
if forever:
|
||||
self.loop.run_forever()
|
||||
else:
|
||||
self.loop.run_until_complete(self.disconnected)
|
||||
else:
|
||||
tasks: List[Future] = [asyncio.sleep(timeout)]
|
||||
if not forever:
|
||||
tasks.append(self.disconnected)
|
||||
self.loop.run_until_complete(asyncio.wait(tasks))
|
||||
|
||||
How
|
||||
---
|
||||
|
||||
Hence it can be replaced according to what you want your application to do:
|
||||
|
||||
- To run forever, ``loop.run_forever()`` will work just fine
|
||||
|
||||
- To run until disconnected, ``loop.run_until_complete(xmpp.disconnected)``
|
||||
will be enough (XMLStream.disconnected is an future which result is set when
|
||||
the stream gets disconnected.
|
||||
|
||||
- To run for a scheduled time (and still abort when disconnected):
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
tasks = [asyncio.sleep(timeout)]
|
||||
tasks.append(xmpp.disconnected)
|
||||
loop.run_until_complete(asyncio.wait(tasks))
|
||||
|
||||
There is no magic at play here and anything is possible if a more flexible
|
||||
execution scheme is expected.
|
|
@ -193,7 +193,7 @@ implementation should work correctly.
|
|||
|
||||
.. tip::
|
||||
To see how to implement in-band registration as a Slixmpp plugin,
|
||||
see the tutorial :ref:`tutorial-create-plugin`.
|
||||
see the tutorial :ref:`create-plugin`.
|
||||
|
||||
`View full source (5) <http://github.com/legastero/xmpp-tdg/blob/master/code/CheshiR/RegistrableComponent.py>`_ |
|
||||
`View original code (5) <http://github.com/remko/xmpp-tdg/blob/master/code/CheshiR/RegistrableComponent.py>`_
|
||||
|
|
|
@ -149,6 +149,8 @@ class XEP_0313(BasePlugin):
|
|||
"""
|
||||
Iterate over each message of MAM query.
|
||||
|
||||
.. versionadded:: 1.8.0
|
||||
|
||||
:param jid: Entity holding the MAM records
|
||||
:param start: MAM query start time
|
||||
:param end: MAM query end time
|
||||
|
@ -239,7 +241,7 @@ class XEP_0313(BasePlugin):
|
|||
async def get_fields(self, jid: Optional[JID] = None, **iqkwargs) -> Form:
|
||||
"""Get MAM query fields.
|
||||
|
||||
.. versionaddedd:: 1.8.0
|
||||
.. versionadded:: 1.8.0
|
||||
|
||||
:param jid: JID to retrieve the policy from.
|
||||
:return: The Form of allowed options
|
||||
|
|
Loading…
Reference in a new issue