In a single commit, because it isn’t that interesting to detail each
change.
List of reverts:
Revert "XEP-0030: allow get_info and get_items to return a coroutine"
This reverts commit 506ca69917.
Revert "XEP-0060: wrap all iq-sending functions with coroutine_wrapper"
This reverts commit e85fa4203e.
Revert "XEP-0163: wrap publish() with coroutine_wrapper"
This reverts commit 69da1c1d7c.
Revert "XEP-0084: wrap functions with coroutine_wrapper"
This reverts commit ea5615f236.
Partially revert 3d243f7 (XEP-0054) - continue wrapping functions but with future_wrapper
Partially revert 115fe95 (xep-0153) - use callbacks rather than coroutine callbacks, and propagate iqtimeouts in set_avatar.
Revert "XEP-0049: wrap functions with coroutine_wrapper"
This reverts commit e68135f59f.
Revert "XEP-0077: wrap functions with coroutine_wrapper"
This reverts commit 1e4944d47e.
Partially revert cd7ff685 (XEP-0199) - remove the iq.send wrapping but keep ping() as a coroutine
Revert "XEP-0257: wrap functions with coroutine_wrapper"
This reverts commit 4da870fd19.
Revert "XEP-0092: wrap get_version() with coroutine_wrapper"
This reverts commit 6e35948276.
Revert "XEP-0191: wrap functions with coroutine_wrapper"
This reverts commit 6e8235544c.
Revert "XEP-0280: wrap functions with coroutine_wrapper"
This reverts commit f795ac02e3.
Revert "XEP-0012: wrap get_last_activity() with coroutine_wrapper"
This reverts commit 2ee05d9616.
Revert "XEP-0202: wrap get_entity_time() with coroutine_wrapper"
This reverts commit 6fb3ecd414.
Revert "XEP-0231: wrap get_bob() with coroutine_wrapper"
This reverts commit 17464b10a4.
Revert "XEP-0258: wrap get_catalog() with coroutine_wrapper"
This reverts commit 18a4978456.
Revert "XEP-0050: wrap send_command() and get_commands() with coroutine_wrapper"
This reverts commit e034b31d6b.
Revert "XEP-0279: wrap check_ip() with coroutine_wrapper"
This reverts commit e112e86475.
- update most of the examples with slixmpp
- change the help channels pointed out in the doc
- add a page listing differences from slixmpp and how to use asyncio
nicely with slixmpp
- fix some in-code rst documentation
This decorator checks for the coroutine=True keyword arg and wraps the
result of the function call in a coroutine if it isn’t.
This allows to have constructs like:
@coroutine_wrapper
def toto(xmpp, *, coroutine=False):
if xmpp.cached:
return xmpp.cached
else:
return xmpp.make_iq_get().send(coroutine=coroutine)
@asyncio.coroutine
def main(xmpp):
result = yield from toto(xmpp, coroutine=True)
xmpp.cached = result
result2 = yield from toto(xmpp, coroutine=True)
If the wrapper wasn’t there, the second fetch would fail. This decorator
does not do anything if the coroutine argument is False.
- monkey-patch our own monkey-patched idle_call to run events immediatly
rather than adding them to the event queue, and add a fake transport
with a fake socket.
- remove the test file related to xep_0059 as it relies on blocking
behavior, and comment out one xep_0030 test uses xep_0059
- remove many instances of threading and sleep()s because they do
nothing except waste time and introduce race conditions.
- keep exactly two sleep() in IoT xeps because they rely on timeouts
This is relying on the stanzas being copied for each handler. We no
longer do that for performance reasons, so instead of editing the copy
in-place, stanza.reply() now returns a new stanza.
We use some dirty monkey-patching to add a idle_call() function to the
asyncio module. We then use that method to handle each received stanza only
when the event loop is not busy with some other IO (mainly, the standard
input)