Compare commits

..

532 Commits

Author SHA1 Message Date
mathieui
a30f76892b
XEP-0482: add initial support 2025-02-09 18:52:28 +01:00
mathieui
3de8ee97b5
XEP-0050: make prev action possible when there is no next action (fixes #3516)
Obviously the session has to allow for it, which must be modified in a
handler.
2025-02-09 16:14:08 +01:00
mathieui
0de9df92c4
xmlstream: do not use the category param to catch_warnings
Added in debian 3.11.
2025-02-09 15:52:43 +01:00
mathieui
04d5c43853
xmlstream/client/componentxmpp: Make mypy happy again
borked in the previous commit regarding connect().
2025-02-09 15:35:40 +01:00
mathieui
0707786057
xmlstream: "cleanl" create a new event loop if none is set
Relates to #3542
2025-02-09 13:39:57 +01:00
mathieui
1c762c6b25
doc: add more info for XEP-0030 (fix #3433) 2025-02-09 12:31:15 +01:00
mathieui
f94a4f2dbd
xmlstream: return a future on connect()
which can make sense for users of the lib to wait on.
2025-02-09 12:12:07 +01:00
mathieui
75ea0bf039 XEP-0308: add tests 2025-02-08 19:51:02 +00:00
mathieui
4cf1286332 XEP-0308: add utility functions
to build and correct messages without needing to go into the xml schema
details.
2025-02-08 19:51:02 +00:00
mathieui
8a127f61d0
XEP-0223: fix node standalone configuration (fixes #3555)
also add a stream test for that
2025-02-08 12:52:33 +01:00
mathieui
1f14fb54c2
XEP-0060: fix get_item_ids (fix #3548)
missing return statement, the function would work with callbacks, but
that is a bit meh.
2025-02-08 12:30:02 +01:00
mathieui
651e0ea593
docs: improve using_asyncio page (hopefully fixes #3562)
make event loop usage a bit clearer, and fix the examples.
2025-02-08 12:26:17 +01:00
mathieui
4ac41a5250
Add a way to get identities as dict (fixes #3566) 2025-02-08 12:11:07 +01:00
mathieui
e03b7661c1 XEP-0446: complete support and tests 2025-02-07 20:33:22 +00:00
DinoThor
e955cd308a Fix bad reference with client & method call 2025-02-07 13:52:15 +00:00
mathieui
2db5e0199c
docs: add lots of missing xeps, fix some issues
sphinx was unhappy with some formatting artifacts
2025-02-03 00:16:51 +01:00
mathieui
bf2e006f88
docs: fix bad targets in projects page
and actually the slixmpp chat room is not a chatroom for random bots
written with slixmpp
2025-02-02 23:43:00 +01:00
mathieui
8c8bb5da8b
doap: add missing xep 264 and 469 support 2025-01-31 12:23:11 +01:00
mathieui
bd638f1b39
doap: add hats support since 1.8.6 2025-01-31 11:12:37 +01:00
mathieui
0ff9e3661d XMLStream: allow custom sslcontext provisioning (fixes #3582)
For some applications that have strict requirements on blocking calls,
it might be beneficial to create the SSLContext in advance and
provide it to the client/componentxmpp instance that will be going
through kwargs until XMLStream.

The context will be reconfigured later on based on user parameters, but
it is highly recommended to set it up in a secure way.
2025-01-30 11:08:41 +00:00
mathieui
5ec378cccd
xep-0055: fix stanza test 2025-01-30 09:35:41 +01:00
nicoco
a9fc955eda fix: add default error type for "payment-required" condition 2025-01-27 16:36:07 +01:00
nicoco
05860f71ac ci: follow linter recommendations 2025-01-27 16:36:07 +01:00
mathieui
1482bcc395 basexmpp: make_iq no longer defaults to id="0"
having a hardcoded default ID in make_iq is a bad idea, particularly
since it will overwrite the (good) id produced byt Iq() when a stream is
available.

This is arguably a breaking change, but I certainly hope it is not
breaking anything in the real world.
2025-01-26 18:03:15 +01:00
nicoco
2e736bc715 feat: support XEP-0492 (Chat Notification Settings) 2025-01-26 16:24:31 +00:00
nicoco
8d984cd8a1 XEP-0004: fix: prevent multiple <values> for 'text-single' field
According to XEP-0004:
- if there is no "type" attribute on a <field />, we should assume it is
  "text-single";
- "text-single" MUST NOT contain morethan one <value />.

Before this patch, not specifying a field type and passing a multi-line
string would result in an illegal stanza.

While it would be cleaner to log a warning or even raise an exception if
set_value() is called with an incompatible type, this breaks a lot of
tests and backward-compatibility, so we introduce some heuristic in
FormField.set_value() to infer the field type based on the provided
value instead.

I also changed FormField.get_value() so that it returns a list by
default for 'text-multi' fields. This is a breaking change, but I have
not found the justification for the previous behaviour.
2025-01-24 14:33:16 +00:00
nicoco
100014651c cq: remove unused files 2025-01-24 15:30:24 +01:00
nicoco
f9a9a0dcb7 fix: add default error type for "policy-violation" condition 2025-01-24 09:53:42 +01:00
nicoco
c585ec5983 fix: add missing "policy-violation" to error conditions 2025-01-22 21:32:57 +01:00
nicoco
27bbb1ef95 xep_0425: add missing 'id' attribute to 'Moderate' stanza plugin 2024-12-30 14:46:25 +01:00
mathieui
5dfc622539
itests: fix XEP-0424 test
broken due to the new XEP version
2024-12-29 01:08:05 +01:00
mathieui
2ab9b5a05c
ci: add setuptools, remove 3.7/3.8 and add 3.13 2024-12-29 00:50:53 +01:00
mathieui
09d9320b91
Release 1.8.6 2024-12-26 22:39:49 +01:00
mathieui
fbf298c36d
XEP-0030: fix tests
Use None as the "no value" value, rather than ''.
2024-12-26 09:42:33 +01:00
mathieui
7153d79006 itests/examples: integrate imghdr code directly (fix #3570)
Python 3.13 removes it, and I would rather not add another dependency
only for tests or examples…
2024-12-14 16:08:49 +01:00
mathieui
1d3e03a923 XEP-0030: make read operations more resilient
Reading valid XML which does not respect the XEP schema should not crash
the parser badly.
2024-12-14 16:00:24 +01:00
mathieui
3d0b09e2e2 xmlstream: prevent stanza parsing from crashing the whole thing
If an error happened while parsing a stanza, it would bring the whole
program down and disconnect instead of logging an error. And the DEBUG
log happened afterwards (so, never).
2024-12-14 15:52:51 +01:00
nicoco
23544731ef Support XEP-0490 (Message Display Synchronization) 2024-12-11 21:29:37 +00:00
nicoco
a18a6c4eb8 xep-0425: update to version 0.3.0 2024-12-11 21:24:12 +00:00
nicoco
dd903b1792 xep-0424: update to version 0.4.0 2024-12-11 21:24:12 +00:00
mathieui
cf3b30120e repo: remove github pull request template
codeberg annoyingly picks it up, which creates confusion for
contributors
2024-12-11 22:18:38 +01:00
jinyu
d86dccaf85 enhancement: Update type hints 2024-12-11 21:17:23 +00:00
jinyu
075812adf3 fix: Update msg_kwargs documentation to clarify required parameters for make_message 2024-12-11 21:16:37 +00:00
jinyu
8955ece461 Fix missing parameters 2024-12-11 21:16:37 +00:00
jinyu
5051c60262 enhancement: Refactor reply handling in XEP-0461; add fallback support and improve message construction 2024-12-11 21:16:37 +00:00
mathieui
c495eb73fc xmlstream: add stanza_not_sent event (fixes #3559) 2024-12-11 22:01:34 +01:00
jinyu
12c516d365 fix: Add future annotations import to base.py for improved type hinting 2024-11-19 18:44:33 +01:00
jinyu
d9b0b6dfe6 fix: Correct JID comparison in MUC plugin for bare JID matching 2024-11-19 18:44:27 +01:00
jinyu
7979e3b603 Resolve circular import 2024-11-19 18:44:20 +01:00
jinyu
f24a7679e5 enhancement: Improve JID handling and logging in MUC plugin; update status code return type 2024-11-19 18:44:11 +01:00
jinyu
df0ecfc142 Update the type of BasePlugin.xmpp to BaseXMPP. Increase the timeout for join_muc_wait. 2024-11-19 18:43:58 +01:00
jinyu
e79b98b266 add default timeout value 2024-11-19 18:43:49 +01:00
jinyu
5ed5e60b20 Fix: AttributeError in get_nick and jid_in_room due to incorrect JID type 2024-11-19 18:43:41 +01:00
mathieui
e5fe53ef45 tests: remove distutils use 2024-10-08 10:31:15 +02:00
mathieui
93608bd2f4 setup.py: Add python versions 2024-10-08 10:29:28 +02:00
nicoco
3b2386ee2f stanzabase: Pass problematic object to TypeError raised by ElementBase.append()
This should help debugging those type of errors.
2024-09-27 13:00:28 +02:00
nicoco
b94c6716f7 xep-0231: fix TypeError when BoB cannot be found
Although it is not documented whether the get_bob API
call can return None, the default implementation can,
which raises a TypeError when the requested BoB is not
available. This commit prevents such TypeError by
raising a XMPPError instead.

References: https://todo.sr.ht/~nicoco/slidcord/23
2024-09-27 10:28:24 +02:00
jinyu
db8ce9187c feat: Add is_correction method to XEP-0308 Last Message Correction plugin 2024-09-08 00:39:10 +08:00
mathieui
7f926a944a setup.py: Do not install aiodns on windows (fix #3556)
aiodns is broken on the default windows event loop and the workaround
has significant downsides. This has downsides too as it prevents
resolution of SRV records by default.
2024-08-25 13:18:31 +02:00
sch
e96f8e1ed0 Correct an MUC-related error message which indicates the requirement of a JID 2024-06-20 19:00:20 +00:00
sch
c8c0bb9134 Add BukuBot
Add BukuBot for bookmarks
2024-06-04 10:22:24 +00:00
schimoni
825c51b87d Add descriptive introduction and new links to project sendxmpp-py
Add descriptive introduction;
Change URL of repository sendxmpp-py;
Add groupchat to project sendxmpp-py.
2024-05-22 12:39:14 +00:00
mathieui
7c79f28587 XEP-0199: handle component case for keepalive ping 2024-03-22 20:48:36 +01:00
mathieui
dcaf812a28 ci: build cython module for itests 2024-02-09 23:28:15 +01:00
mathieui
ae4de043d2 itests: fix default server call 2024-02-09 23:11:29 +01:00
mathieui
998bbb80ad itests: hardcode default MUC server 2024-02-09 23:07:32 +01:00
mathieui
5a5b36ab39 xmlstream: make mypy even happier 2024-02-09 22:58:20 +01:00
mathieui
f151f0a7ab xmlstream/componentxmpp: fix some typing issues
Make mypy happier
2024-02-09 22:55:20 +01:00
mathieui
2424a3b36f slixtest: cleanup loop only if needed
if not, get_event_loop will throw, we can ignore this
2024-02-09 22:49:47 +01:00
mathieui
1c4bbbce8e ci: fix mypy step 2024-02-09 21:41:03 +01:00
mathieui
66d552d057 xep_0317: Fix compatibility with python < 3.9 2024-02-09 21:32:19 +01:00
nicoco
b8205a9ae4 Update plugin: XEP-0317 (hats)
Merge changes from nicoco's MR that I missed, improving tests and
interface.
2024-02-09 21:06:14 +01:00
nicoco
85b7210115 XEP-0264: Jingle Content Thumbnails (new plugin)
Cheogram actually uses it with SIMS to embed
a blurhash preview in the stanza.
2024-02-09 12:10:12 +01:00
nicoco
909c865524 XEP-0313: Do not try to parse date for fields without value.
Without this we end up passing "None"
instead of a str to the date parser,
which raises a TypeError.
It happens if you try to provide a form
to be filled, when slixmpp acts as a MAM
*server*.
2024-02-09 11:51:34 +01:00
nicoco
586d2f5107 XEP-0313: Add support for flipped page 2024-02-08 20:45:48 +01:00
nicoco
9f7260747f Add XEP_0461 to PluginDict 2024-02-08 20:34:16 +01:00
mathieui
c41209510a
xep_049: implement bookmarks pinning stanzas 2024-02-04 11:59:36 +01:00
mathieui
9266486f46
xep_0317: add initial stanza support for hats 2024-02-04 11:32:24 +01:00
mathieui
5226858e0c
Release 1.8.5 2024-02-02 01:59:31 +01:00
mathieui
7128ea249b
Fix running process() with a timeout (closes #3505) 2024-02-02 01:00:25 +01:00
Maxime “pep” Buquet
992d80dd09
SCRAM: Restrict tls-unique to TLSv1.2
And prepare the code to work when CPython implements tls-exporter for
TLSv1.3.
This adds tls_version and binding_proposed attributes to the security
properties so we can detect if we were offerred channel binding SASL
mechanisms, and which TLS version we are on.

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2024-02-02 00:56:40 +01:00
mathieui
c25305e80f
componentxmpp: fix default host for components 2023-12-29 14:13:41 +01:00
mathieui
6765f84133
tests: close event loop at exit
prevents a nice segfault
2023-12-29 13:53:58 +01:00
mathieui
31fe7f7e06
[CI] add woodpecker CI 2023-12-29 13:53:58 +01:00
nicoco
84a7ac020f XEP-0461: rely on XEP-0428 for fallback
Breaks the previous fallback helpers, we now
rely on XEP-0461 instead
2023-12-28 16:38:37 +00:00
nicoco
331c1c1e21 XEP-0428: add fallback body and subject elements
+ tests
+ helpers to strip the fallback content
2023-12-28 16:38:37 +00:00
nicoco
28a60c22e2 ElementBase: add weak ref to parent when using append() 2023-12-28 16:38:37 +00:00
nicoco
af934b5bdf fix slixmpp.xmlstream.__all__ 2023-12-28 16:38:37 +00:00
genghis
897f876504 Correct Slixfeed title and add groupchat link to Stable Diffusion 2023-12-28 16:04:19 +00:00
genghis
2888be17ab Correct groupchat link for WhisperBot 2023-12-28 16:04:19 +00:00
genghis
975e31229c Correct links so they match to their respective text 2023-12-28 16:04:19 +00:00
genghis
6e9e66139d Add Stable Diffusion 2023-12-28 16:04:19 +00:00
genghis
380ac04d52 Update docs/projects.rst 2023-12-28 16:04:19 +00:00
genghis
9e5b530607 Update docs/projects.rst 2023-12-28 16:04:19 +00:00
genghis
71de274fab Update docs/projects.rst 2023-12-28 16:04:19 +00:00
genghis
5a0b02378d Add document Projects
Bots and Services utilizing Slixmpp
2023-12-28 16:04:19 +00:00
sxavier
9fc82e9e6f xep_0221: Add documentation overview and example 2023-12-28 16:01:19 +00:00
nicoco
ca90d3908e xep-0115: perf: avoid simultaneous disco info queries for the same verstring 2023-12-28 15:56:44 +00:00
Daniel Roschka
7de5cbcf33
Fix connect parameters used for follow-up calls
XMLStream.connect() is supposed to persist the parameters
it gets called with to allow follow-up calls to call
XMLStream.connect() without any parameters to result in a connection
with the same properties as the original one. That's for example used by
XMLStream.reconnect() when establishing a new connection.

Unfortunately that was broken for some of the parameters and resulted
different TLS related settings on reconnections. This commit fixes that.
2023-12-27 11:45:04 +01:00
Nicolas Cedilnik
76a11d4899 xep0356: implement IQ privilege
Also included:

- correctly handle privileges from different
  servers
- check that privileges have been granted before
  attempting to send something and raise
  PermissionError if not
- use dataclass and enums to store permissions instead of
  untyped dict
2023-12-19 14:14:16 +00:00
mathieui
dcfa0f20f9 [docs] add readthedocs.yaml 2023-11-13 19:38:48 +01:00
mathieui
7732af8991 Move references from lab.louiz.org to codeberg 2023-07-06 15:26:57 +02:00
nicoco
25c28ff5d1 xep_0461/add_quoted_fallback: add optional nickname argument
+ a little docstring that doesn't hurt
2023-06-05 20:48:38 +02:00
nicoco
e3e0d8f43e xep_0313/fin: add 'stable' and 'complete' attribs 2023-06-05 14:18:07 +02:00
nicoco
13729e47a6 add xeps 0385 and 0447 to plugins.PLUGINS 2023-06-05 14:18:07 +02:00
nicoco
f12860bfad fix misleading error msg
plugins.__all__ became plugins.PLUGINS a few commits ago
2023-06-05 14:18:07 +02:00
mathieui
bcbc7281e7 Release 1.8.4 2023-05-28 12:59:22 +02:00
mathieui
8787aa1064 Merge branch 'fix_error_ns_for_components_for_real' into 'master'
ComponentXMPP: fix fix_error_ns option

See merge request poezio/slixmpp!247
2023-05-11 19:08:22 +00:00
nicoco
f3522eb84b ComponentXMPP: fix fix_error_ns option
self.default_ns is defined in BaseXMPP.__init__(),
so ComponentXMPP._fix_error_ns() has to be called
later
2023-05-11 21:06:11 +02:00
Link Mauve
da9646cdaa Merge branch 'fix-register' into 'master'
Fix registration

See merge request poezio/slixmpp!246
2023-05-01 18:04:20 +00:00
Emmanuel Gil Peyrot
db1fc5fbc5 xmlstream: Fix registration
This iq nonza wasn’t marked as allowed to be sent on an unauthenticated
stream.
2023-05-01 19:50:26 +02:00
mathieui
209554e63f Merge branch 'ci-and-python-3.7' into 'master'
Fix CI issues and python 3.7 compatibility

See merge request poezio/slixmpp!244
2023-04-18 17:43:21 +00:00
mathieui
2d02ef9bcb exceptions: Fix python 3.7 compatibility 2023-04-18 19:41:02 +02:00
mathieui
18c3db4d6e ci: update python images 2023-04-18 19:41:02 +02:00
Nicoco K
6d6fdc6419 Merge branch 'fix-test-0377' into 'master'
Fix test for 0377 and update DOAP

See merge request poezio/slixmpp!243
2023-04-04 10:49:29 +00:00
Emmanuel Gil Peyrot
4936fb06bf XEP-0377: Update the DOAP 2023-04-04 12:45:53 +02:00
Emmanuel Gil Peyrot
5e47286445 XEP-0377: Update tests against the latest version 2023-04-04 12:45:53 +02:00
Link Mauve
8bead23799 Merge branch 'xep402-extensions' into 'master'
xep0402: add password and extension

See merge request poezio/slixmpp!242
2023-04-04 10:05:01 +00:00
nicoco
56c906f207 xep0402: add password and extension 2023-04-04 09:20:50 +02:00
Maxime Buquet
876c82037f Merge branch 'jid-barejid' into 'master'
jid: add 'bare' parameter to JID to discard resource

See merge request poezio/slixmpp!238
2023-04-03 11:18:03 +00:00
Link Mauve
fae4a38e84 Merge branch '377-nsbump' into 'master'
XEP-0377: Update to latest revision (bump ns)

See merge request poezio/slixmpp!239
2023-04-03 11:09:43 +00:00
Maxime “pep” Buquet
2b59d299a1
XEP-0377: Update to latest revision
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-04-03 13:01:45 +02:00
Maxime Buquet
51a4efb0f4 Merge branch 'xep402' into 'master'
Add support for XEP0402 (PEP Native bookmarks)

See merge request poezio/slixmpp!240
2023-04-03 09:23:25 +00:00
Nicolas Cedilnik
8f77bd4ee5 Add support for XEP0402 (PEP Native bookmarks) 2023-04-03 05:47:46 +02:00
Maxime “pep” Buquet
71128349a4
jid: add 'bare' parameter to JID to discard resource
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-03-18 20:28:54 +01:00
Maxime Buquet
bc2cebae6c Merge branch 'disco-tasks' into 'master'
xep_0030: asyncio.wait takes tasks

See merge request poezio/slixmpp!228
2023-03-07 19:19:10 +00:00
mathieui
2080d08d63 Merge branch 'component-errors' into 'master'
Fix error namespace for components

Closes #3476 and #3474

See merge request poezio/slixmpp!237
2023-03-07 19:12:32 +00:00
nicoco
e16f72d32d fix error namespace for ComponentXMPP
in SlixTest, if mode=="component", restore
jabber:client namespace afterwards

Fixes #3476
Fixes #3474
2023-03-07 11:04:35 +01:00
Maxime Buquet
4fa068da54 Merge branch 'xep-0030-component' into 'master'
xep_0030: small fixes for components

See merge request poezio/slixmpp!236
2023-02-25 10:47:29 +00:00
nicoco
21e5cd4435 xep_0030: get_items(): fix ifrom for local calls
kwargs can never have 'ifrom' since it's in the
method signature
2023-02-25 10:29:21 +01:00
nicoco
1a40699bcc xep_0030: do not send IQ without 'from' attr when component 2023-02-25 10:27:56 +01:00
Maxime Buquet
ebb8bd1e71 Merge branch 'better-errors' into 'master'
Improve errors

See merge request poezio/slixmpp!230
2023-02-24 14:41:09 +00:00
nicoco
78b42bdbbe Message.reply(): do not use bare jid if component
Components are likely to be MUC services more than
muc participants, and reply() is used when XMPPError
is raised, where it makes no sense to strip the resource
2023-02-24 15:29:05 +01:00
nicoco
abd3f40e96 XMPPError: add optional by attribute
so it is added to the reply stanzas
2023-02-24 15:29:05 +01:00
nicoco
b6f148e4e6 errors: make error types and conditions Literals
and set recommended defaults for type based on condition
2023-02-24 15:29:05 +01:00
Maxime Buquet
968fb0bac3 Merge branch 'xep0447' into 'master'
XEP-0447: minimal support (outgoing)

See merge request poezio/slixmpp!235
2023-02-24 14:12:45 +00:00
Maxime Buquet
8dcbcbf8a0 Merge branch 'xep0385' into 'master'
XEP-0385: minimal support

See merge request poezio/slixmpp!234
2023-02-24 14:12:38 +00:00
Maxime Buquet
de7b2d33a3 Merge branch 'xep-0461-fixes' into 'master'
XEP-0461: fixes

See merge request poezio/slixmpp!233
2023-02-23 23:42:19 +00:00
Maxime Buquet
fd1af054c5 Merge branch 'xep-0054-fix-no-vcard' into 'master'
xep_0054: raise item-not-found instead of trying to call None.send()

See merge request poezio/slixmpp!232
2023-02-23 23:41:47 +00:00
Maxime Buquet
e34fbfb28f Merge branch 'adhoc-partial-coroutine' into 'master'
xep_0050:allow partial coroutines as handlers

See merge request poezio/slixmpp!231
2023-02-23 23:40:42 +00:00
nicoco
af16832ad0 XEP-0447: minimal support (outgoing) 2023-02-24 00:22:42 +01:00
nicoco
40a857de65 XEP-0461: fix char counting
I think this time I got it right, confirmed
against client implementations (dino and movim)
2023-02-24 00:15:34 +01:00
nicoco
79ffa1668f XEP-0461: fix fallback namespace
the XEP should be updated soon, confirmed by author,
other implementations use this namespace
2023-02-24 00:15:34 +01:00
nicoco
b4b1efe058 XEP-0385: minimal support
- includes bits of other required XEPs
- only implements 'outgoing' SIMS
2023-02-23 23:49:13 +01:00
nicoco
de358464d0 xep_0054: raise item-not-found instead of trying to call None.send() 2023-02-23 23:37:31 +01:00
nicoco
92b4f2a7eb xep_0050:allow partial coroutines as handlers 2023-02-23 23:33:13 +01:00
Maxime Buquet
1f934d375c Merge branch 'fix-tests' into 'master'
Fix tests and stop misusing __all__

See merge request poezio/slixmpp!229
2023-02-23 17:04:13 +00:00
nicoco
700ce6b32e xep0461: fix typo in test 2023-02-23 16:53:22 +01:00
nicoco
5efa9804ba xep0292: test: declare suite 2023-02-23 16:53:22 +01:00
nicoco
9b0be1ca2b stop misusing __all__ for default plugin list
this fixes tests by renaming the list of default plugins
from __all__ (which has a special meaning) to a separate
list called PLUGINS

no need to put BasePlugin in __all__ after all
if we don't use __all__ at all
2023-02-23 16:53:22 +01:00
Maxime “pep” Buquet
5c19f16287
xep_0030: asyncio.wait takes tasks
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-02-15 11:55:57 +01:00
Maxime Buquet
af07864cbb Merge branch 'fix-caps-fetch' into 'master'
XEP-0115: fix a missing await in caps fetching

See merge request poezio/slixmpp!227
2023-01-30 19:46:53 +00:00
mathieui
dc4b1c7367 XEP-0115: fix a missing await in caps fetching 2023-01-30 20:37:16 +01:00
j
4a6064772c
xep_0027: Ensure data is a str before handling it
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-01-26 17:40:47 +01:00
Maxime “pep” Buquet
80a89061f1
xep_0045: Remove debug print. thanks kalkin
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-01-07 15:07:28 +01:00
Maxime “pep” Buquet
8f4d8f76d1
doap: fix 454 note entry
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-01-04 21:24:17 +01:00
Maxime Buquet
656248ede7 Merge branch 'xep-0292' into 'master'
implements XEP-0292 (vCard4 over XMPP)

See merge request poezio/slixmpp!221
2022-11-28 12:05:30 +00:00
Maxime Buquet
980afe791f Merge branch 'add-public-names-in-_all_' into 'master'
Add public names in  all

See merge request poezio/slixmpp!225
2022-11-28 12:04:28 +00:00
nicoco
3725177d0b add OptJidStr to types.__all__ 2022-11-28 13:03:05 +01:00
nicoco
26fb0d1f91 add BasePlugin to plugins.__all__ 2022-11-28 13:03:03 +01:00
Maxime Buquet
5eb17e7633 Merge branch 'xep0461-fallback-helper' into 'master'
XEP-0461 (replies) improvements

See merge request poezio/slixmpp!224
2022-11-28 11:59:00 +00:00
nicoco
fdca7d82c4 XEP-0461: fix character counting
Turns out we need to include the fallback/end code point,
unlike python slicing conventions
2022-11-28 07:15:26 +01:00
nicoco
9b89401b36 XEP-0461: add get fallback body helper 2022-11-22 10:23:52 +01:00
nicoco
7300f1285e XEP-0461: add to plugins.__all__ 2022-11-22 08:49:00 +01:00
nicoco
9b51be1e17 XEP-0461: add quoted fallback helper 2022-11-22 08:49:00 +01:00
nicoco
89b1e1e682 XEP-0461: use integers for fallback start/end 2022-11-22 08:45:04 +01:00
Maxime Buquet
a7501abe56 Merge branch 'xep0030-iqkwargs' into 'master'
xep_0030: allow extra args in get_info_from_domain

See merge request poezio/slixmpp!223
2022-11-15 10:13:49 +00:00
nicoco
6940e4276b xep_0030: allow extra args in get_info_from_domain 2022-11-15 09:23:50 +01:00
Maxime “pep” Buquet
752f4258df
Release 1.8.3
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-11-12 21:39:50 +01:00
Maxime “pep” Buquet
b60b1b985d
CVE-2022-45197: Fix missing certificate hostname validation
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-11-12 21:36:11 +01:00
Maxime Buquet
e93e43df66 Merge branch 'fix-adhoc-crash' into 'master'
fix crash on adhoc command with bad clients

See merge request poezio/slixmpp!222
2022-11-06 12:55:56 +00:00
nicoco
cfd1af88eb fix crash on adhoc command with bad clients
If a command has no "next" handler, slixmpp
crashes if a client acts as if there was a
next step.
This raises an XMPPError instead
2022-11-06 08:12:37 +01:00
nicoco
65636b8cce implements XEP-0292 (vCard4 over XMPP) 2022-11-04 09:36:25 +01:00
Maxime Buquet
7a0fb97083 Merge branch 'restore-stringprep-warning' into 'master'
logger: remove NullHandler for the "slixmpp" handler

See merge request poezio/slixmpp!220
2022-10-03 08:20:19 +00:00
nicoco
189bbcce19 logger: remove NullHandler for the "slixmpp" handler
This does not seem to accomplish anything besides
hiding the "using the slow, pure python stringprep"
warning, unless you import logging and add another
handler before to the "slixmpp" logger *BEFORE*
importing slixmpp.
2022-10-03 10:16:02 +02:00
Maxime Buquet
79607e43f1 Merge branch 'fix-0084' into 'master'
xep_0084: fix typo and getters

See merge request poezio/slixmpp!219
2022-09-23 08:59:05 +00:00
nicoco
e062181f84 xep_0084: fix typo and getters
"with" instead of "width"; wrong syntax for getters
2022-09-22 23:19:16 +02:00
mathieui
97b0c7ffac Merge branch 'xep0055' into 'master'
Add XEP-0055 (Jabber Search)

See merge request poezio/slixmpp!204
2022-09-12 18:18:51 +00:00
nicoco
c2ece57dee Add XEP-0055 (Jabber Search) 2022-09-11 23:22:44 +02:00
mathieui
afdfa1ee57 Merge branch 'xep0363-as-component' into 'master'
XEP-0363: Fix upload service auto discovery for components

See merge request poezio/slixmpp!207
2022-09-09 16:07:46 +00:00
mathieui
cba5dc7ddc Merge branch 'component-ifrom' into 'master'
xep_0030: fix ifrom for disco queries sent by components

See merge request poezio/slixmpp!216
2022-09-09 16:06:38 +00:00
mathieui
b3a6c7a4ea Merge branch 'aiodns-gethostbyname' into 'master'
Use gethostbyname when using aiodns

See merge request poezio/slixmpp!212
2022-09-09 16:04:14 +00:00
mathieui
11e27d1d7d Merge branch 'mypy-workaround' into 'master'
Fix gitlab pipelines

See merge request poezio/slixmpp!217
2022-09-09 16:02:18 +00:00
nicoco
fbdff30dda fix emoji==2.0.0 compatibility 2022-08-29 00:59:14 +02:00
nicoco
62701bc562 xmlstream: ignore task type (mypy)
This is not satisfying, but having gitlab pipelines running would be nice, wouldn't it?
2022-08-29 00:20:36 +02:00
nicoco
b14918808c xep_0030: fix ifrom for disco queries sent by components
xep_0030 automatically sends disco queries with ifrom=None
Prosody's mod_component had a workaround to allow this non-standard behaviour, but it will change in a future release.
2022-08-29 00:03:55 +02:00
Link Mauve
f5cb9fe66b Merge branch 'doap-sasl-anon' into 'master'
DOAP: Add 0175. It's been here forever

See merge request poezio/slixmpp!215
2022-08-23 09:18:02 +00:00
Maxime “pep” Buquet
8bd53f7098
DOAP: Add 0175. It's been here forever
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-08-23 11:12:26 +02:00
Link Mauve
c955cf1c66 Merge branch 'xep-0461' into 'master'
XEP-0461: Message Replies

See merge request poezio/slixmpp!213
2022-08-21 12:24:08 +00:00
Maxime Buquet
6904ae63f5 Merge branch 'optional-setters' into 'master'
JID: Make node and resource setters accept None

See merge request poezio/slixmpp!214
2022-08-21 12:22:17 +00:00
Emmanuel Gil Peyrot
1caada197a JID: Make node and resource setters accept None
This is the proper way to unset these.
2022-08-21 14:18:53 +02:00
nicoco
450aaa7f86 XEP-0461: Message Replies 2022-08-20 13:35:38 +02:00
Daniel Roschka
d43c83800e
Use gethostbyname when using aiodns
Slixmpp behaves differently when resolving host names, whether aiodns
is used or not. With aiodns only DNS is used, while without
`asyncio.loop.getaddrinfo()` is used instead, which utilizes the Name
Service Switch (NSS) to resolve host names by other means (hosts-file,
mDNS, ...) as well.

To unify the behavior, this replaces the use of
`aiodns.DNSResolver().query()` with
`aiodns.DNSResolver().gethostbyname()`. This makes the behavior
resolving host names more consistent between using aiodns or not, as
both now honor the NSS configuration and removes the need for the
previously existing workaround to resolve localhost.
2022-07-31 13:15:25 +02:00
nicoco
14786abd34 Revert "Make it clear that filename does *not* have to be path, and is mandatory"
This reverts commit ed820bf551.
2022-07-16 20:23:48 +02:00
Maxime Buquet
1f47acaec1 Merge branch 'fix-xep_0115-static' into 'master'
XEP-0115: Make get_caps() async

See merge request poezio/slixmpp!203
2022-07-16 19:02:06 +02:00
nicoco
ed820bf551 Make it clear that filename does *not* have to be path, and is mandatory 2022-07-16 17:17:22 +02:00
nicoco
afedfa4b06 Merge branch 'master' of https://lab.louiz.org/poezio/slixmpp 2022-07-16 17:08:21 +02:00
Maxime Buquet
5998069203 Merge branch 'mini_dateutil-no-more' into 'master'
Remove mini_dateutil and replace it with datetime

See merge request poezio/slixmpp!210
2022-07-12 13:39:02 +02:00
Maxime Buquet
356f16f5af Merge branch 'prevent-naive-datetime' into 'master'
XEP-0203: Prevent naïve datetime from being passed

Closes #3471

See merge request poezio/slixmpp!211
2022-07-12 13:38:52 +02:00
Link Mauve
b8f301b26f Merge branch 'affs-outcast-jid' into 'master'
xep_0045: Require JID when setting outcast affiliation

See merge request poezio/slixmpp!188
2022-07-12 13:28:02 +02:00
Link Mauve
ffaeb31219 Merge branch 'nicoco-master-patch-90506' into 'master'
Add xep_0356 to plugins.__all__

See merge request poezio/slixmpp!201
2022-07-12 13:26:54 +02:00
Link Mauve
9560f39de7 Merge branch 'xep0356-v0.4' into 'master'
XEP-0356: namespace version bump

See merge request poezio/slixmpp!206
2022-07-12 13:26:14 +02:00
Link Mauve
f7a38a028a Merge branch 'default-to-CAs' into 'master'
xmlstream: load default CA store by default

See merge request poezio/slixmpp!209
2022-07-12 13:24:32 +02:00
Emmanuel Gil Peyrot
65d70fe417 XEP-0203: Prevent naïve datetime from being passed
The specification says “The format MUST adhere to the dateTime format
specified in XEP-0082 and MUST be expressed in UTC.”

We now respect this requirement, by rejecting naïve datetimes with a
ValueError exception, and converting the passed datetime to UTC.

Fixes #3471.
2022-07-12 13:15:31 +02:00
Emmanuel Gil Peyrot
108a256537 thirdparty: Remove the mini_dateutil module
The builtin datetime module already provides the same features, there is
no need to carry that code any longer.
2022-07-12 12:55:20 +02:00
Emmanuel Gil Peyrot
78a5f79240 XEP-0202: Remove usage of mini_dateutil
Like the previous commit, we now use the builtin datetime module always.
2022-07-12 12:54:35 +02:00
Emmanuel Gil Peyrot
fc63768cfc XEP-0082: Move from mini_dateutil to datetime
Since datetime got merged into Python (probably around py3k), it’s now
usable for all of our needs and so we can do away with the old fallback.
2022-07-12 12:51:22 +02:00
Maxime “pep” Buquet
90e79af18a
xmlstream: load default CA store by default
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-07-11 14:46:00 +02:00
Link Mauve
5e5a741994 Merge branch 'dns-reconnect' into 'master'
Fix delayed reconnect after DNS failure

See merge request poezio/slixmpp!208
2022-06-22 11:50:12 +02:00
Georg Lukas
b44ab17c8f Fix delayed reconnect after DNS failure
The XML stream will re-schedule a reconnect on socket errors, except
for DNS failures. If a user has no uplink connection, then DNS will
also fail, preventing an automatic reconnection.

This patch consolidates the two code paths and sets a maximum back-off
time of 5min (300s).
2022-06-22 11:39:44 +02:00
Nicolas Cedilnik
afb5419b68 XEP-0363: Fix upload service auto discovery for components 2022-06-18 06:09:36 +02:00
Nicolas Cedilnik
a1a5f3984d XEP-0356: namespace version bump 2022-06-09 16:45:36 +02:00
Nicolas Cedilnik
8eb8769862 XEP-0115: Make get_caps() async 2022-06-09 15:33:02 +02:00
Link Mauve
5ceb48bbcd Merge branch 'origin-id-non-default' into 'master'
Change origin-id defaults to False

See merge request poezio/slixmpp!202
2022-05-28 17:44:42 +02:00
Maxime “pep” Buquet
916894ab7c
Change origin-id defaults to False
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-05-28 13:50:09 +02:00
Nicoco K
2b45c22fcb Add xep_0356 to plugins.__all__ 2022-05-19 14:40:45 +02:00
mathieui
566e7dc771 Merge branch 'nicoco-master-patch-38938' into 'master'
Fix typo in chat markers (fixes #3469)

Closes #3469

See merge request poezio/slixmpp!199
2022-05-15 16:44:10 +02:00
Nicoco K
aa492f905c Fix typo in chat markers (fixes #3469) 2022-05-15 07:48:00 +02:00
mathieui
e1a240ec6c Merge branch 'release-version-1.8.2' into 'master'
Update version to 1.8.2

See merge request poezio/slixmpp!197
2022-04-06 22:44:40 +02:00
mathieui
771839242c Update version to 1.8.2 2022-04-06 22:41:40 +02:00
mathieui
8bac744009 Merge branch 'starttls-exception' into 'master'
features_starttls/Proceed: raise exception on InvalidCABundle

See merge request poezio/slixmpp!196
2022-04-05 20:15:49 +02:00
Maxime “pep” Buquet
88d2f5dae4 features_starttls/Proceed: raise exception on InvalidCABundle
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-04-05 19:42:49 +02:00
mathieui
f7902d056e Merge branch 'exn-invalidcabundle-arg' into 'master'
Pass in useful value when raising InvalidCABundle

See merge request poezio/slixmpp!195
2022-04-05 19:42:06 +02:00
Maxime “pep” Buquet
41afbb10df
Pass in useful value when raising InvalidCABundle
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-04-05 01:24:14 +02:00
mathieui
aca4addb9c Merge branch 'fix-old-session' into 'master'
stream features: fix old "session" establishment

Closes #3468

See merge request poezio/slixmpp!193
2022-04-01 21:01:31 +02:00
mathieui
914ce40fd5 stream features: fix old "session" establishment
As it is and old and deprecated code path, nobody noticed that it was
broken by the new filtering code.

Fix #3468
2022-04-01 20:56:02 +02:00
Maxime Buquet
82ff68cfac Merge branch 'upload-encrypt' into 'master'
XEP-0454: OMEMO Media Sharing

See merge request poezio/slixmpp!189
2022-03-21 17:01:40 +01:00
Maxime “pep” Buquet
28d44ecf74
xep_0454: str.removeprefix is available since 3.9
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-20 21:34:55 +01:00
mathieui
fcec6742cf Merge branch 'release-version-1.8.1' into 'master'
Update version to 1.8.1

See merge request poezio/slixmpp!192
2022-03-20 20:26:25 +01:00
mathieui
fedbb248ec Update version to 1.8.1 2022-03-20 20:22:52 +01:00
mathieui
e8679fe32b Merge branch 'allow-disabling-defusedxml' into 'master'
Do not use defusedxml by default if available

See merge request poezio/slixmpp!190
2022-03-20 20:19:54 +01:00
Maxime “pep” Buquet
06e4e480c1 xep_0454: keep original filename extension if available
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-20 01:02:14 +01:00
Maxime “pep” Buquet
82ee250295 xep_0454: use staticmethods where possible
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-20 01:02:14 +01:00
Maxime “pep” Buquet
53d38a8115 setup.py: add cryptography in extras_require; update example
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-20 01:02:14 +01:00
mathieui
41d733e77f Only defuse stdlib through an env var
https://github.com/inducer/relate/issues/905
2022-03-19 16:15:03 +01:00
Maxime “pep” Buquet
0fba8fd7f8 doap: add 454 entry
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-19 10:31:34 +01:00
Maxime “pep” Buquet
b899baabd8 xep_0454: also include finalize's result in the payload
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-19 10:31:34 +01:00
Maxime “pep” Buquet
acad41f3b7 xep_0454: Don't force content-type to application/octect-stream
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-19 10:31:34 +01:00
Maxime “pep” Buquet
bde5aaaf3e examples/http_upload.py: Add --encrypt parameter to send encrypted files
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-19 10:31:34 +01:00
Maxime “pep” Buquet
7222ade0dd xep_0454: Ensure format_url returns a str
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-19 10:31:34 +01:00
Maxime “pep” Buquet
14a6c7801d tests: XEP-0454
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-19 10:31:34 +01:00
Maxime “pep” Buquet
b52540e49f xep_0454: implement decrypt method
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-19 10:31:34 +01:00
Maxime “pep” Buquet
c1aeab328b xep_0454: use streaming API from CipherContext
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-19 10:31:34 +01:00
Maxime “pep” Buquet
51644e301b xep_0454: Add wrapper to xep_363's upload_file
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-19 10:31:34 +01:00
Maxime “pep” Buquet
bc8af3cc61 xep_0454: new plugin. OMEMO Media Sharing
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-19 10:31:34 +01:00
Maxime “pep” Buquet
3c08f471cf xep_0363: change filename to Path
This shouldn't break anything as I'm not using Path specific APIs

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-19 10:31:34 +01:00
Maxime “pep” Buquet
54b724c28b examples/http_upload: Add some typing
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-19 10:31:34 +01:00
mathieui
abd699593f Merge branch 'fix-mypy' into 'master'
Fix mypy in CI

See merge request poezio/slixmpp!191
2022-03-19 00:07:55 +01:00
mathieui
4202ed4cd5 Fix mypy in CI 2022-03-19 00:04:56 +01:00
Maxime “pep” Buquet
60df4ef7aa
xep_0045: Require JID when setting outcast affiliation
Found out when reading poezio/poezio#3536.

“An admin or owner can ban one or more users from a room. The ban MUST
be performed based on the occupant's bare JID.”

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-03-16 16:12:20 +01:00
mathieui
ad610c7ded Fix the XEP-0444 stanza test 2022-03-07 21:31:13 +01:00
mathieui
e8f45dedfe Merge branch 'release-1.8.0' into 'master'
Release 1.8.0

See merge request poezio/slixmpp!187
2022-02-27 22:25:34 +01:00
mathieui
51a7cad7e1 doap: add a 1.8.0 entry 2022-02-27 22:21:35 +01:00
mathieui
389a358996 version: increment to 1.8.0 2022-02-27 22:20:02 +01:00
mathieui
001e0c7060 Merge branch 'doc-update' into 'master'
Add documentation on how to replace proces()

See merge request poezio/slixmpp!186
2022-02-27 20:48:48 +01:00
mathieui
5c4c867dee docs: add a page on how to remove process() 2022-02-27 20:33:26 +01:00
mathieui
b23b805dc5 docs: Fix some wrong references 2022-02-27 20:32:48 +01:00
mathieui
11b555af20 Merge branch 'fix-join-muc-wait' into 'master'
Fix join_muc_wait: end join only upon receiving the room subject

See merge request poezio/slixmpp!185
2022-02-27 20:30:12 +01:00
mathieui
06172ea896 XEP-0045: return occupants and history when join is complete 2022-02-27 18:11:10 +01:00
mathieui
815b7d5af7 Fix join_muc_wait: end join only upon receiving the room subject 2022-02-27 16:22:59 +01:00
mathieui
28fe68c7d3 Merge branch 'end-filter-run' into 'master'
fix: allow cancelling the run_filters coroutine

See merge request poezio/slixmpp!184
2022-02-18 22:29:02 +01:00
mathieui
d15a37e146 fix: allow cancelling the run_filters coroutine
otherwise it will leak forever into the event loop and generate
tracebacks when closing it
2022-02-16 22:11:19 +01:00
mathieui
98dba869c7 Merge branch 'deprecate-xmpp-process' into 'master'
deprecate XMLStream.process()

See merge request poezio/slixmpp!183
2022-02-16 21:26:03 +01:00
mathieui
bcb4495c6d deprecate XMLStream.process() 2022-02-15 21:57:49 +01:00
mathieui
22b00c6073 Merge branch 'update-doc-yieldfrom' into 'master'
docs: remove yield from and fix some old changes

See merge request poezio/slixmpp!182
2022-02-15 20:58:20 +01:00
mathieui
a50bffae89 docs: remove yield from and fix some old changes 2022-02-15 20:54:36 +01:00
mathieui
92c3f69829 Merge branch 'fix-doap' into 'master'
doap: add missing 1.7.1 release and fix 1.7.0 link

See merge request poezio/slixmpp!181
2022-02-15 20:53:48 +01:00
mathieui
1e7d7bf8cb Merge branch 'ibb-fix-races' into 'master'
fix: specific cases in xep-0047 with network race conditions

See merge request poezio/slixmpp!179
2022-02-07 19:03:31 +01:00
mathieui
53f0971fd0 doap: add missing 1.7.1 release and fix 1.7.0 link 2022-02-05 13:19:09 +01:00
mathieui
e543e22e78 fix: specific cases in xep-0047 with network race conditions 2022-02-05 12:38:48 +01:00
mathieui
714f9aae0d Merge branch 'bugfix/xep_0009' into 'master'
xep-0009: fixed bugs

See merge request poezio/slixmpp!172
2022-02-04 23:11:28 +01:00
mathieui
9eb4462acc Merge branch 'better-jid-errors' into 'master'
jid: Improve error reporting on IDNA validation failure

See merge request poezio/slixmpp!170
2022-02-04 23:07:51 +01:00
mathieui
d5502c9be7 Merge branch 'ca-cert-compat' into 'master'
Don't break ca-bundle API just yet

See merge request poezio/slixmpp!178
2022-02-04 23:07:00 +01:00
mathieui
33efbd4d7b Merge branch 'fix-moderation-bug' into 'master'
fix: missing <retract/> on moderate

See merge request poezio/slixmpp!180
2022-02-04 23:06:41 +01:00
mathieui
e344c0c303 fix: missing <retract/> on moderate 2022-02-04 19:25:53 +01:00
Maxime “pep” Buquet
9f38c8944d
Don't break ca-bundle API just yet
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-01-03 23:36:25 +01:00
Link Mauve
e56930e0a1 Merge branch 'ca-cert-list' into 'master'
Allow Xmlstream.ca_certs to be an iterable

See merge request poezio/slixmpp!177
2022-01-03 11:04:36 +01:00
Maxime “pep” Buquet
d733c54518
Allow Xmlstream.ca_certs to be an iterable
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-01-03 10:30:09 +01:00
Maxime Buquet
834ea8ed74 Merge branch 'path-ca-certs' into 'master'
Make Xmlstream.ca_certs an Optional[Path] instead of Optional[str]

See merge request poezio/slixmpp!176
2021-12-28 18:35:11 +01:00
Maxime “pep” Buquet
90662d148e
Make Xmlstream.ca_certs an Optional[Path] instead of Optional[str]
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2021-12-28 18:28:36 +01:00
Link Mauve
237405e3a0 Merge branch 'muc-presense-destroy' into 'master'
xep_0045: register_stanza_plugin(MUCPresence, MUCDestroy)

See merge request poezio/slixmpp!175
2021-12-22 18:19:50 +01:00
Maxime “pep” Buquet
623d2cc27e
xep_0045: register_stanza_plugin(MUCPresence, MUCDestroy)
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2021-12-19 00:51:42 +01:00
mathieui
6fb4617732 Merge branch 'remove-loop-param' into 'master'
fix: remove loop parameter (3.10)

See merge request poezio/slixmpp!174
2021-12-13 23:26:04 +01:00
mathieui
0e5a4726af ci: fix curl image to an official one 2021-12-13 23:08:55 +01:00
mathieui
8ba054dd53 ci: allow failure in python 3.11 for now 2021-12-13 22:43:52 +01:00
mathieui
e1b135c667 ci: only run integration tests once 2021-12-13 22:37:07 +01:00
mathieui
4ca1de92b3 fix: integration tests
prosody got more restrictive?
2021-12-13 22:35:53 +01:00
mathieui
799a6a07a9 fix: remove loop parameter when deprecated (3.10) 2021-12-13 21:31:46 +01:00
mathieui
be6dde17f1 Revert "Replace asyncio.ensure_future() with asyncio.create_task()"
This reverts commit bac6a4b2bf.

This is not actually something we want
2021-12-13 21:25:41 +01:00
mathieui
14ae84d666 Merge branch 'ci-add-python-versions' into 'master'
ci: add python 3.10 and 3.11 testing

See merge request poezio/slixmpp!173
2021-12-13 20:41:00 +01:00
mathieui
0cc1095ffc Merge branch 'asyncio-create-task' into 'master'
Replace asyncio.ensure_future() with asyncio.create_task()

See merge request poezio/slixmpp!169
2021-12-13 20:40:15 +01:00
mathieui
4cab1f62aa ci: add python 3.10 and 3.11 testing 2021-12-13 20:33:05 +01:00
Tim-Oliver Husser
4d7786a830 Changed iq.attrib['to'] to iq['to'], same for 'from'. 2021-12-13 13:53:12 +01:00
Tim-Oliver Husser
8fccfc452b replaced params.xml.findall with params.findall in xml2fault 2021-12-13 13:51:40 +01:00
Emmanuel Gil Peyrot
ed514e6f73 jid: Improve error reporting on IDNA validation failure
At least knowing the failing domain should help a lot while debugging.
2021-11-18 15:33:37 +01:00
Emmanuel Gil Peyrot
bac6a4b2bf Replace asyncio.ensure_future() with asyncio.create_task()
The latter function got introduced in Python 3.7, which is conveniently
our MSPV, so let’s use that.
2021-11-18 15:33:03 +01:00
Link Mauve
d4067275ff Merge branch '0045-invite-JID' into 'master'
xep_0045: Ensure invite and decline to/from are JIDs

See merge request poezio/slixmpp!167
2021-07-17 00:33:15 +02:00
Maxime “pep” Buquet
91d32bd066
xep_0045: Ensure invite and decline to/from are JIDs
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2021-07-17 00:21:00 +02:00
mathieui
22fa8bc4d9 Merge branch 'more-typing' into 'master'
Add more typing

See merge request poezio/slixmpp!166
2021-07-15 10:01:03 +02:00
mathieui
5c54806578 stanza: fix circular imports
ew
2021-07-05 23:05:57 +02:00
mathieui
42ca51e2b1 ci: add a mypy stage 2021-07-05 22:44:41 +02:00
mathieui
de6c19c9cd add a mypy.ini file 2021-07-05 22:42:28 +02:00
mathieui
ca1cc73c79 xmlstream: refine type check 2021-07-05 22:42:18 +02:00
mathieui
9489586cb4 plugins: use classvar properly 2021-07-05 22:42:18 +02:00
mathieui
524c352da3 clientxmpp: cleanup some types 2021-07-05 22:42:18 +02:00
mathieui
35eafadb44 features: fix typing
for an annoying mypy bug
2021-07-05 22:42:18 +02:00
mathieui
af958fd1fe stanza: fix a bunch of type errors 2021-07-05 22:42:18 +02:00
mathieui
0971bab30a matcher: fix idsender typing 2021-07-05 22:28:50 +02:00
mathieui
ed3bb878a7 handler: fix more types 2021-07-05 22:28:38 +02:00
mathieui
f2d7e86fc7 typing: add a bunch of type ignores
because this is too smart for mypy and I do not want to rewrite those
things right now.
2021-07-05 22:25:38 +02:00
mathieui
fe1a325aa7 api: fix typing 2021-07-05 20:09:59 +02:00
mathieui
ea7f7d8119 fix: remove asyncio hack in slixtest 2021-07-04 16:01:48 +02:00
mathieui
3516016f32 typing: reorder jid.bare setter 2021-07-04 15:59:46 +02:00
mathieui
a57aae792d typing: fix basexmpp type overloads
mypy got confused
2021-07-04 15:59:27 +02:00
mathieui
d6924fa7ad fix: please python 3.7 2021-07-03 12:02:36 +02:00
mathieui
20e4c2c257 types: add __all__ 2021-07-03 11:17:15 +02:00
mathieui
df963542c1 basexmpp/clientxmpp: refine typing 2021-07-03 11:17:15 +02:00
mathieui
7fc3c48cad pluginsdict: add xep 0048 2021-07-03 11:17:15 +02:00
mathieui
7d4172808f stanza: add typing 2021-07-03 11:17:15 +02:00
mathieui
95b034797f jid: reorder properties for mypy
don’t ask
2021-07-03 11:17:15 +02:00
mathieui
f1b429199f cert: add some typing 2021-07-03 11:17:15 +02:00
mathieui
db48c8f4da xmlstream: add more types 2021-07-03 11:17:15 +02:00
mathieui
c07476e7de setup: indicate that slixmpp contains type hints 2021-07-03 11:17:15 +02:00
mathieui
62e66e7d03 stanzabase: types 2021-07-03 11:17:15 +02:00
mathieui
79f71ec0c1 starttls: do not send back the feature we receive
I don’t see what a server would do with <required/>
2021-07-03 11:17:15 +02:00
mathieui
451bee0892 starttls: make the starttls element inherit from stanzabase 2021-07-03 11:17:15 +02:00
mathieui
00d38c1b29 typing: add to tostring 2021-07-03 11:17:15 +02:00
mathieui
fed55d3dda typing: matchers and senders
Leftover error that I cannot fix:

* https://github.com/python/mypy/issues/708

Leftover error that I am unsure of what to do:

* xml handlers are not properly typed

(it seems like nothing in slix is using it, considering a removal
 instead of adding an Union everywhere)
2021-07-03 11:17:15 +02:00
mathieui
4931e7e604 refactor: type the resolver
almost perfect, except for python < 3.9 making it so we can’t have nice
things.
2021-06-28 21:01:21 +02:00
mathieui
9f01d368c0 refactor: remove the now obsolete future_wrapper and asyncio-related module 2021-06-28 21:01:18 +02:00
mathieui
ef06429941 slixmpp.util: type things
Fix a bug in the SASL implementation as well. (some special chars would
make things crash instead of being escaped)
2021-06-28 21:00:30 +02:00
Link Mauve
b1411d8ed7 Merge branch 'request-voice' into 'master'
XEP-0045: Add a helper method to request voice

See merge request poezio/slixmpp!165
2021-05-21 19:05:26 +02:00
Emmanuel Gil Peyrot
889cfaa95b XEP-0045: Add a helper method to request voice
This can be used in a moderated room when we are only a visitor.
2021-05-21 19:00:59 +02:00
mathieui
b7f0160c0d Merge branch 'disconnected-stanzas-no-resend' into 'master'
xmlstream: do not re-send queued stanzas on each connect

See merge request poezio/slixmpp!163
2021-05-02 19:02:38 +02:00
mathieui
528553be57 xmlstream: do not re-send queued stanzas on each connect
each sent stanza should be purged, obviously…
2021-05-02 18:55:14 +02:00
mathieui
6f4ac7e7ce Merge branch 'fix-slow-tasks' into 'master'
xmlstream: Fix slow tasks

See merge request poezio/slixmpp!162
2021-04-30 19:43:05 +02:00
mathieui
aaab58d229 itests: add a simple slow filter test 2021-04-30 19:33:23 +02:00
mathieui
0b5f6cb0a8 xmlstream: fix slow tasks scheduling
- wrong attribute used
- some mistakes in the slow tasks function
2021-04-30 19:27:30 +02:00
Link Mauve
027545eb71 Merge branch 'fix-docs' into 'master'
docs: Use the correct number for user_nick

See merge request poezio/slixmpp!161
2021-04-24 20:39:29 +02:00
Emmanuel Gil Peyrot
290d84cd0f docs: Use the correct number for user_nick
Thanks Felix for noticing!
2021-04-24 20:33:04 +02:00
Link Mauve
f058e62680 Merge branch 'fix-0353' into 'master'
XEP-0353: Use the correct callback for <proceed/>

See merge request poezio/slixmpp!160
2021-04-24 20:25:34 +02:00
Emmanuel Gil Peyrot
104917163d XEP-0353: Use the correct callback for <proceed/>
Thanks elmar for noticing!
2021-04-24 20:20:02 +02:00
mathieui
d184442337 Merge branch 'fix-waiting-queue-xmlstream' into 'master'
xmlstream: fix use of the waiting queue

See merge request poezio/slixmpp!159
2021-04-22 21:08:08 +02:00
mathieui
a4789acbfb xmlstream: fix use of the waiting queue 2021-04-22 21:07:30 +02:00
mathieui
3630c3d1cc Merge branch 'caps-broadcast-presence' into 'master'
Caps: do not broadcast presence on PEP plugin load/unload

See merge request poezio/slixmpp!157
2021-04-20 19:08:46 +02:00
mathieui
41fc6a2e6b itests: explicitly send caps in avatar example 2021-04-20 18:57:50 +02:00
mathieui
7f0febb929 Merge branch 'use-runpy-for-version-data' into 'master'
fix: use runpy to get versiion-data

See merge request poezio/slixmpp!158
2021-04-20 09:27:10 +02:00
mathieui
44392fa2d9 fix: use runpy to get versiion-data
fix compatibility with debian stable (thanks jonas’)
2021-04-20 09:18:57 +02:00
mathieui
7bb94afdc8 XEP-0163: do not broadcast caps when adding/removing interest 2021-04-19 23:19:40 +02:00
mathieui
8828a5b99d XEP-0115: add a broadcast parameter to update_caps
and do not send a presence after updating if it is false
2021-04-19 23:17:10 +02:00
mathieui
0d52344a31 Merge branch 'fix-component-handshake' into 'master'
Fix component handshake

Closes #3464

See merge request poezio/slixmpp!156
2021-04-19 19:53:33 +02:00
mathieui
768089d457 tests: fix bogus test case
stanza.match worked accidentally, but the two elements used in that test
actually conflict with each other (not overriding the plugin_attrib,
which makes it then default to 'plugin', leading to shenanigans).
2021-04-19 19:42:52 +02:00
mathieui
eee185ff90 stanza: rework the .append() and __eq__ methods
This was very much broken on plugin iterables and other reasons.
2021-04-18 23:01:36 +02:00
mathieui
99c6fc923a itests: do not compare strings, compare xml 2021-04-18 23:01:01 +02:00
mathieui
d4e1b68534 Allow handshake in stream.send() when not connected yet
fix #3464
2021-04-18 21:16:03 +02:00
mathieui
3bb01de120 stanza: add a Handshake class and use it in componentxmpp 2021-04-18 21:15:22 +02:00
mathieui
7057773d18 Merge branch 'tentative-fix-for-reconnect-race' into 'master'
xmlstream: do not allow stanzas outside a session

See merge request poezio/slixmpp!154
2021-04-12 19:49:10 +02:00
mathieui
894131d772 Merge branch 'inbound-id-message-presence' into 'master'
Fix #3441: Do not assign ID to inbound stanzas

Closes #3441

See merge request poezio/slixmpp!155
2021-04-09 20:55:41 +02:00
mathieui
fcf666e3cb Fix #3441: Do not assign ID to inbound stanzas 2021-04-09 20:40:30 +02:00
mathieui
3e5943f458 xmlstream: do not allow stanzas outside a session
except for the bind, obviously
2021-04-08 18:47:51 +02:00
mathieui
7ddcc3428f Merge branch 'xep-0300-fixup' into 'master'
XEP-0300: small fixes

See merge request poezio/slixmpp!151
2021-03-11 20:54:31 +01:00
mathieui
d77eb3a7e8 Merge branch 'fix-0030-get-info-ifrom' into 'master'
XEP-0030: Fix usage of ifrom in get_info

See merge request poezio/slixmpp!152
2021-03-10 22:09:54 +01:00
mathieui
7f90fb594a XEP-0030: Fix usage of ifrom in get_info 2021-03-10 22:07:00 +01:00
mathieui
1cf6393b61 XEP-0300: small fixes
- fix a typo in the default option (crash when hashing a file without
  providing a function)
- Fix the plugin_end method (classical del_feature footgun)
2021-03-10 21:26:08 +01:00
mathieui
7c86c43fc7 Merge branch 'mam-update' into 'master'
MAM Update

See merge request poezio/slixmpp!149
2021-03-09 21:20:14 +01:00
mathieui
8a1f9bec56 Merge branch 'xep-0115-fix-error' into 'master'
XEP-0115: remove wrong coroutine=True argument

See merge request poezio/slixmpp!150
2021-03-09 20:05:09 +01:00
mathieui
ad2673fd2c XEP-0115: remove wrong coroutine=True argument 2021-03-09 20:02:16 +01:00
mathieui
0115feaa31 tests: Add a MAM metadata stanza test 2021-03-09 19:52:53 +01:00
mathieui
3613cd5f14 tests: Add a MAM stream test 2021-03-09 19:52:53 +01:00
mathieui
644ebfe89f XEP-0313: Only remove origin-id from the mask if it exists 2021-03-09 19:52:53 +01:00
mathieui
e329eadbed XEP-0313: Fix off-by-one-page RSM fetching
Add a "results" interface to mam_fin, and fix some things in RSM

Items just received were not taken into account because:
- RSM code is checking iq['mam_fin']['results'], results were at
  iq['mam']['results']
- RSM handler was run after checking the number
2021-03-09 19:52:53 +01:00
mathieui
4cdcc4d155 itests: test mam.iterate() as well for fetching the archive 2021-03-09 19:52:53 +01:00
mathieui
97a63b9f25 XEP-0313: Update the API
- add an iterate() method that makes this plugin more practical
- add a get_fields method to retrieve the available search fields
- add a get_archive_metadata method.

This is a big chunk because git refused to split it further.
2021-03-09 19:52:53 +01:00
mathieui
dbbc47e02d docs, XEP-0313: Order document by source 2021-03-09 19:52:53 +01:00
mathieui
7d2b245bb0 XEP-0441: Split MAM preferences into a separate plugin 2021-03-09 19:52:53 +01:00
mathieui
e5f4794a36 XEP-0313: Update stanza for completeness, and more docs 2021-03-09 19:52:53 +01:00
mathieui
d7d4baefa3 tests: Add XEP-0313 stanza tests 2021-03-09 19:52:53 +01:00
mathieui
1289cf575c Merge branch 'rsm-fixes' into 'master'
XEP-0059 (RSM) - Some fixes

See merge request poezio/slixmpp!145
2021-03-09 19:25:26 +01:00
mathieui
a568363a6c Merge branch 'async-adhoc' into 'master'
XEP-0050 Make handle_command_xxx async

See merge request poezio/slixmpp!144
2021-03-09 19:24:43 +01:00
Nicoco K
eac5ad50a8 XEP-0050 Make handle_command_xxx async 2021-03-09 19:24:43 +01:00
mathieui
e97f5ccb9c Merge branch 'fix-0004-field-type' into 'master'
Fix 0004 field type

See merge request poezio/slixmpp!148
2021-03-08 21:10:20 +01:00
mathieui
432a332636 tests: Fix XEP-0060 tests for the new 0004 change regarding type attribute 2021-03-08 21:06:43 +01:00
mathieui
30b1d27fc1 XEP-0004: stanza, only delete field type if it is not 'hidden'
Not strictly required, but most XEPs use it like that for forms of
type='submit', and that makes it easier to write stanza tests.
2021-03-08 21:04:21 +01:00
mathieui
cb83ebe32c Merge branch 'form-multi-attrib' into 'master'
XEP-0004: add "forms" as a multi-attrib plugin for Form

See merge request poezio/slixmpp!147
2021-03-08 18:53:56 +01:00
mathieui
cd0845515a Merge branch 'typing-jid' into 'master'
JID: add some forgotten type hints

See merge request poezio/slixmpp!146
2021-03-08 18:53:40 +01:00
mathieui
ade1b010ed XEP-0004: add "forms" as a multi-attrib plugin for Form 2021-03-07 21:14:38 +01:00
mathieui
5ff46d6245 JID: add some forgotten type hints 2021-03-07 21:12:22 +01:00
mathieui
5a3ab2c5c1 tests: enable and fix RSM test for XEP-0030 2021-03-07 20:43:44 +01:00
mathieui
27cf97458b XEP-0059: docs and typing
Also:
 - fix a typo in the plugin description (wrong number)
 - add iq_options to make retrieval more flexible
2021-03-07 19:47:00 +01:00
mathieui
ae31f78b63 docs: add resultiterator docs for XEP-0059 2021-03-07 19:45:01 +01:00
mathieui
c1a598c34b Merge branch 'xep-0030-typing-and-co' into 'master'
XEP-0030: add typing and more docs

See merge request poezio/slixmpp!143
2021-03-04 22:14:59 +01:00
mathieui
2314ee422a Merge branch 'gateway' into 'master'
Gateway interaction (XEP0100)

See merge request poezio/slixmpp!135
2021-03-02 18:54:22 +01:00
Nicoco K
9b5f3d9df0 Add XEP-0100 (Gateway Interaction) plugin
Remove usused prompt_future attribute

Add plugin_end

Update with mathieui's comments

Add option to transfer messages from unregistered users

XEP 0100 plugin
2021-03-02 18:54:22 +01:00
mathieui
49416dacbc XEP-0030 static: Fix PEP8, types 2021-03-01 21:11:33 +01:00
mathieui
e3027dabb2 XEP-0030 stanza: FIX PEP8, types 2021-03-01 20:55:27 +01:00
mathieui
10611525a0 XEP-0030 plugin: Fix PEP8, types 2021-03-01 20:54:53 +01:00
mathieui
2ff72d88fd docs: improve XEP-0030 docs 2021-03-01 20:54:26 +01:00
mathieui
9561a2a305 types: add some often-used types 2021-03-01 20:54:10 +01:00
mathieui
2dac77e680 Merge branch 'docs-dedfault' into 'master'
docs: fix a typo (dedfault)

See merge request poezio/slixmpp!142
2021-02-27 21:07:11 +01:00
mathieui
0726b79345 docs: fix a typo (dedfault) 2021-02-27 21:02:55 +01:00
mathieui
9f1ded7f5f Merge branch 'more-tests' into 'master'
Add some more tests for MIX, and fix a small bug

See merge request poezio/slixmpp!141
2021-02-27 21:02:03 +01:00
mathieui
bea2669907 XEP-0403: Add stanza tests 2021-02-27 13:21:13 +01:00
mathieui
a288094b64 XEP-0405: add stream tests 2021-02-27 13:21:13 +01:00
mathieui
f12b04bd0b XEP-0405: Fix a bug in nodes returned by join_channel
Yay tests!
2021-02-27 13:21:13 +01:00
mathieui
059cb290d8 Merge branch 'async-interal-api-break-everything' into 'master'
Make the internal "api" async

See merge request poezio/slixmpp!128
2021-02-27 13:16:18 +01:00
mathieui
3cdec464a5 docs: document the "internal API" with reference & howto 2021-02-26 00:09:56 +01:00
mathieui
9927e69435 docs: add references to API docs 2021-02-26 00:08:56 +01:00
mathieui
8e388df8e0 XEP-0231: do not crash if max-age is None
it is only RECOMMENDED
2021-02-26 00:08:56 +01:00
mathieui
8eee559d39 api: update docstrings/typing 2021-02-26 00:08:56 +01:00
mathieui
2fed9f9ad2 XEP-0319: API changes
- ``idle`` and ``active`` are now coroutines.
2021-02-26 00:08:56 +01:00
mathieui
9947d3db85 XEP-0231: API changes
- ``get_bob`` and ``set_bob`` are now coroutines.
- ``del_bob`` returns a Future.
2021-02-26 00:08:56 +01:00
mathieui
ab87b25030 XEP-0153: API changes 2021-02-26 00:08:56 +01:00
mathieui
e24e2f58d4 XEP-0128: API changes
- ``set_extended_info``, ``add_extended_info`` and ``del_extended_info`` return Futures.
2021-02-26 00:08:56 +01:00
mathieui
4960cffcb4 XEP-0115: API changes
- ``get_verstring``, ``get_caps`` are now coroutines.
- ``assign_verstring``, ``cache_caps`` now return a Future.

side-effect: fix supports() and has_identity() broken since forever
2021-02-26 00:08:56 +01:00
mathieui
f0aec1614f XEP-0095: API changes
- ``accept`` and ``decline`` are now coroutines.
2021-02-26 00:08:56 +01:00
mathieui
504067d5a8 XEP-0077: API changes 2021-02-26 00:08:56 +01:00
mathieui
0b3233a6e8 XEP-0065: API changes 2021-02-26 00:08:56 +01:00
mathieui
f7ecce42ac XEP-0054: API changes
- ``get_vcard``, ``publish_vcard`` are now coroutines.
2021-02-26 00:08:56 +01:00
mathieui
d17967f58e XEP-0047: API changes
and fix unit tests broken for years.
2021-02-26 00:08:56 +01:00
mathieui
13de36baa1 XEP-0030: API changes
- ``supports``, ``has_identity``, ``get_info``, ``get_items`` are now coroutines
- ``set_info````set_items``, ``del_items``, ``add_item``, ``add_identity``,
  ``del_identity``, ``set_identities``, ``del_identities``, ``add_feature``,
  ``del_feature``, ``set_feature``, ``set_features``, ``del_features``
  now return a Future

also fix has_identity and supports which have been broken in forever
2021-02-26 00:08:56 +01:00
mathieui
7772e26a8c XEP-0027: API changes
- ``get_keyids`` and ``get_keyid`` are now coroutines.
- ``set_keyid`` and ``del_keyid`` now return a Future.
2021-02-26 00:08:56 +01:00
mathieui
0b6326e1cc XEP-0012: API changes. 2021-02-26 00:08:56 +01:00
mathieui
d51c4e307d api: make run() always return a Future
plugins must be modified to make use of this, but this keeps synchronous
code synchrouns while allowing coroutine in api, which makes sense.
2021-02-26 00:08:56 +01:00
mathieui
8da5310ea6 xmlstream: add a wrap() method for ensure_future 2021-02-26 00:08:56 +01:00
mathieui
5f9ab45a5e Merge branch 'stream-features-sync-event' into 'master'
Allow "sync" events to be processed in-order

See merge request poezio/slixmpp!129
2021-02-24 20:59:12 +01:00
mathieui
6d241be789 XEP-0077: Fix "register" event on stream features. 2021-02-24 20:50:05 +01:00
mathieui
babd98dac7 xmlstream: add event_async() for events that need in-order processing
Essentially stream feature handlers which can then make sure the feature
has been process correctly (e.g. 0077).

This is the same approach as slixmpp!4.
2021-02-24 20:50:05 +01:00
mathieui
b8b57960f1 Merge branch 'httpupload-add-oob' into 'master'
examples: add oob to httpupload example

See merge request poezio/slixmpp!140
2021-02-24 20:47:45 +01:00
mathieui
5764ef7ff7 examples: add oob to httpupload example
many people ask how to do this, might as well do this by default
2021-02-24 20:43:21 +01:00
mathieui
7381460556 Merge branch 'collections-abc-warning' into 'master'
Collections abc warning

See merge request poezio/slixmpp!139
2021-02-22 18:18:33 +01:00
Nicolas Cedilnik
8b7648502b Fix deprecation warning 2021-02-22 13:09:39 +01:00
mathieui
17a663b0fd Merge branch 'test-run-coro-return-value' into 'master'
tests: return the coroutine result in run_coro

See merge request poezio/slixmpp!138
2021-02-20 12:58:52 +01:00
mathieui
9270d1e538 tests: return the coroutine result in run_coro 2021-02-20 12:56:14 +01:00
mathieui
35c68738a7 Merge branch 'remove-loop-wait-for' into 'master'
xmlstream: remove loop parameter to wait_for

See merge request poezio/slixmpp!137
2021-02-20 12:42:34 +01:00
mathieui
751987e2b0 xmlstream: remove loop parameter to wait_for
Deprecated in 3.8, removed in 3.10
2021-02-20 12:39:51 +01:00
mathieui
35a9526a4c Merge branch 'enable-debug-on-run-tests' into 'master'
run_tests: add a command-line option to enable debug logs

See merge request poezio/slixmpp!136
2021-02-20 11:58:30 +01:00
mathieui
7e3e056e6b slixtest: add more shortcuts for asyncio workflow 2021-02-20 11:55:46 +01:00
mathieui
94700de7a3 run_tests: add a command-line option to enable debug logs 2021-02-20 11:53:30 +01:00
mathieui
2f0660c6ff Merge branch 'fix-slixtest-default-ns-component' into 'master'
slixtest: use the default stream ns instead of jabber:client

See merge request poezio/slixmpp!133
2021-02-20 11:27:33 +01:00
mathieui
ba7e5e417f slixtest: use the default stream ns instead of jabber:client 2021-02-20 11:24:43 +01:00
mathieui
2ba89727a6 Merge branch 'fix-test-order-race' into 'master'
tests: fix prerequisites for stanza tests

See merge request poezio/slixmpp!134
2021-02-19 19:06:41 +01:00
mathieui
a397cc3a7d tests: fix prerequisites for stanza tests 2021-02-19 19:03:46 +01:00
mathieui
626bf5ff8a Merge branch 'component-registration' into 'master'
Add registration to components

See merge request poezio/slixmpp!130
2021-02-18 20:05:25 +01:00
Nicoco K
cef7b5cf05 Add registration to components 2021-02-18 20:05:25 +01:00
mathieui
8d92027d01 Merge branch 'privilege' into 'master'
Privileged entities (XEP-0356)

See merge request poezio/slixmpp!131
2021-02-18 20:03:22 +01:00
Nicoco K
dcab3de1b4 Privileged entities (XEP-0356) 2021-02-18 20:03:22 +01:00
mathieui
3453ebf0c5 Merge branch 'fix-origin-id-no-stream' into 'master'
stanzabase: Fix a bug when setting id for streamless messages

See merge request poezio/slixmpp!132
2021-02-17 19:42:58 +01:00
mathieui
699a2620b7 stanzabase: Fix a bug when setting id for streamless messages 2021-02-17 19:29:52 +01:00
Link Mauve
5d7918b122 Merge branch 'vcard-fix-handler' into 'master'
XEP-0054: fix component handling of vcard requests

See merge request poezio/slixmpp!127
2021-02-13 22:02:31 +01:00
mathieui
3eeef6b4b6 XEP-0054: fix component handling of vcard requests
Fetching the local vcard for the JID from which the stanza originates
does not make sense.
2021-02-13 21:58:13 +01:00
Link Mauve
f50dfd6644 Merge branch 'remove-more-extra-args' into 'master'
More cleanup of extra args, types, docs, and API

See merge request poezio/slixmpp!126
2021-02-13 20:25:57 +01:00
mathieui
bbcc977d1d tests: update 0047 tests to reflect new API 2021-02-13 20:23:21 +01:00
mathieui
3668e79fbc itets: Add tests for 0222 and 0223 2021-02-13 20:23:21 +01:00
mathieui
febfb6d6ca XEP-0280: More typing and docs, new kwargs 2021-02-13 20:23:21 +01:00
mathieui
3b43d8eb7f XEP-0223: Add more types and docs, and switch to new kwargs 2021-02-13 20:23:21 +01:00
mathieui
6520376977 XEP-0222: Add more types and docs, and use new-style kwargs 2021-02-13 20:23:21 +01:00
mathieui
8b5776faec itests: add an httpupload test 2021-02-13 20:23:21 +01:00
mathieui
ea2d851a93 XEP-0363: Types, docs, and new-style kwargs 2021-02-13 20:23:21 +01:00
mathieui
a7d690813c itets: Add a BOB test 2021-02-13 20:23:20 +01:00
mathieui
02262679e9 XEP-0231: Add typing, docs, and new-style kwargs
Also add content deletion scheduling if specified.
2021-02-13 20:23:20 +01:00
mathieui
654178b960 itests: add IBB test 2021-02-13 20:23:20 +01:00
mathieui
02e0afbf0f XEP-0047: Better typing, docs, coroutine.
- Add a gather() shortcut to buffer all data received in a stream
- Fix a bug in sendall that happens if the data is above the block
  size.
2021-02-13 20:23:20 +01:00
Link Mauve
ace82c9bc4 Merge branch 'defusedxml-usage' into 'master'
global: use defusedxml if it is available

See merge request poezio/slixmpp!125
2021-02-11 20:27:32 +01:00
mathieui
53dc9847e2 global: use defusedxml if it is available 2021-02-11 20:23:11 +01:00
Link Mauve
bfbc433c8d Merge branch 'remove-old-python-workaround' into 'master'
slixmpp: remove asyncio hack for older python versions

See merge request poezio/slixmpp!124
2021-02-11 20:21:37 +01:00
mathieui
ba7c7f4bb9 slixmpp: remove asyncio hack for older python versions 2021-02-11 20:18:00 +01:00
mathieui
7cde0db4aa docs: update requirements 2021-02-10 12:47:11 +01:00
mathieui
1c4e06d510 Merge branch 'muc-improvements-reloaded' into 'master'
Muc improvements reloaded

See merge request poezio/slixmpp!123
2021-02-08 23:11:08 +01:00
mathieui
80ee551acd docs: fix links to stanza doc 2021-02-08 23:08:31 +01:00
mathieui
f0601cdb84 docs: fill and update the event index 2021-02-08 23:08:31 +01:00
mathieui
0978f66736 docs: fix copyright footer 2021-02-08 23:08:31 +01:00
mathieui
679432591e docs: do not order xep 0045 methods alphabetically 2021-02-08 23:08:31 +01:00
mathieui
bc04da256a XEP-0045: Types, visibility, and documentation
- Make all handlers private (_-prefixed)
- Reorder methods in a more thematic order
- Add docstrings to public methods
- Add types where they were missing
- Create new Literal types for closed enums
- Make join_muc a wrapper around join_muc_wait and return a Future
- Deprecate the current join_muc API
- Fix some mypy issues
2021-02-08 23:08:31 +01:00
mathieui
b9e479f213 Merge branch 'doc-stanza' into 'master'
Fill the stanza howto

See merge request poezio/slixmpp!122
2021-02-06 17:59:53 +01:00
mathieui
648ca16b4c docs: fill the stanza howto 2021-02-06 12:29:31 +01:00
mathieui
622cfd4ed7 basexmpp: add more typing, fix some docs 2021-02-06 12:29:14 +01:00
mathieui
d850b9a9f7 types: move pluginsdict to a dedicated file
And add some Literal types.
2021-02-06 12:28:32 +01:00
mathieui
fb74e46c35 Merge branch 'rewrite-copyright-notices' into 'master'
Rewrite copyright notices to use comments and not docstrings

See merge request poezio/slixmpp!121
2021-02-05 21:18:12 +01:00
mathieui
603cbccddd examples: rewrite copyright notices 2021-02-05 20:51:15 +01:00
mathieui
bbd351e9c1 global: rewrite copyright notice to use comments 2021-02-05 20:46:18 +01:00
mathieui
cff4588499 Merge branch 'updat-typing-and-generic-args' into 'master'
Update typing and generic args for plugins (step 1)

See merge request poezio/slixmpp!120
2021-02-05 20:14:41 +01:00
mathieui
89601289fe itests: add 0012, 0054, 0084, 0092, 0153, 0191 tests 2021-02-05 20:08:16 +01:00
mathieui
6c3f26161e itests: allow pconfig registration with plugins 2021-02-05 20:08:16 +01:00
mathieui
d6ab3124ce XEP-0084: add integer wrappers for int stanza attributes 2021-02-05 20:08:16 +01:00
mathieui
cb8d2edc8d XEP-0191: Add type hints and switch to default args 2021-02-05 20:08:16 +01:00
mathieui
69e04d7d2e XEP-0153: Add typing and switch to default args
(and refactor a bit)
2021-02-05 20:08:16 +01:00
mathieui
ace5aeb80e XEP-0153: Fix a bug that would add muc elements to inbound presence 2021-02-05 20:08:16 +01:00
mathieui
712ac671e1 XEP-0152: Add type hints and switch to default args 2021-02-05 20:08:16 +01:00
mathieui
99c2e5cafd XEP-0092: Add type hints and switch to default args 2021-02-05 20:08:16 +01:00
mathieui
8e612bf229 XEP-0084: Add type hints and switch to default args 2021-02-05 20:08:16 +01:00
mathieui
7860edefe9 XEP-0054: Add type hints and switch to default args 2021-02-05 20:08:16 +01:00
mathieui
fbb8993244 XEP-0049: Add type hints and switch to default args 2021-02-04 20:35:22 +01:00
mathieui
77c8caf205 XEP-0012: Add type hints and switch to default args 2021-02-04 20:27:07 +01:00
Link Mauve
c82e1a4039 Merge branch 'stanzabase-make-get-plugin-public-api' into 'master'
stanzabase: make _get_plugin part of the public API

See merge request poezio/slixmpp!119
2021-02-04 19:28:29 +01:00
mathieui
69b265b975 stanzabase: make _get_plugin part of the public API
it is the only way I know of checking if an element is present in a
stanza without creating it or checking the XML manually.
2021-02-04 19:25:55 +01:00
mathieui
917cb555d5 Merge branch 'debug-logs-in-itests' into 'master'
itests: add a command-line parameter to enable debug logs

See merge request poezio/slixmpp!118
2021-02-04 19:25:17 +01:00
mathieui
d3fb993b29 Merge branch 'remove-unused-obsolete-things' into 'master'
Remove unused and obsolete things, and make other things private

See merge request poezio/slixmpp!117
2021-02-04 19:24:29 +01:00
mathieui
ccbba89cbd xmlstream: make dns_answers private 2021-02-04 19:22:13 +01:00
mathieui
d3063a0368 xmlstream: make connect_loop_wait private 2021-02-04 19:22:13 +01:00
mathieui
40196aefeb itests: add a command-line parameter to enable debug logs 2021-02-04 19:14:23 +01:00
mathieui
782dbdea65 docs: remove python 2 bug workaround explanations 2021-02-04 18:32:10 +01:00
mathieui
650e1a2ed5 docs/xmlstream: remove HTTP proxy references
It has been removed years ago.
2021-02-04 18:31:43 +01:00
Link Mauve
c486c0e821 Merge branch 'documentation-update' into 'master'
Documentation update

See merge request poezio/slixmpp!116
2021-02-03 23:23:38 +01:00
mathieui
f8c39bae60 docs: update the iq tutorial 2021-02-03 23:21:11 +01:00
mathieui
d9975aa4c0 docs: move things around for a cleaner toctree 2021-02-03 23:04:02 +01:00
mathieui
17f08929f9 docs: add slixmpp credits, move fork note to the bottom 2021-02-03 22:34:33 +01:00
Link Mauve
d8dbfaa37e Merge branch 'pep-xeps-fix-returns' into 'master'
Fix return values and improve typing in "user *" PEP XEPs

See merge request poezio/slixmpp!115
2021-02-03 22:29:00 +01:00
mathieui
cb3d9dd41c XEP-0196: Fix return values and typing 2021-02-03 22:24:40 +01:00
mathieui
e6e57f6e8c XEP-0172: Fix return values and typing 2021-02-03 22:24:24 +01:00
mathieui
64299d6a54 XEP-0118: Fix return values and typing 2021-02-03 22:24:03 +01:00
mathieui
f6761e513d XEP-0108: Fix return values and typing 2021-02-03 22:23:44 +01:00
mathieui
f2878e1764 XEP-0107: Fix return values and typing 2021-02-03 22:23:16 +01:00
Link Mauve
2585764b46 Merge branch 'type-plugins' into 'master'
basexmpp: type self.plugins in a more useful manner

See merge request poezio/slixmpp!114
2021-02-03 21:56:10 +01:00
mathieui
a16792e990 basexmpp: type self.plugins in a more useful manner 2021-02-03 21:53:43 +01:00
mathieui
6448d09c30 Merge branch 'docs-change-theme' into 'master'
docs: change theme to furo

See merge request poezio/slixmpp!113
2021-01-31 20:41:46 +01:00
mathieui
a85e5225f9 docs: change theme to furo
it looks better, and has a dark mode
2021-01-31 20:37:33 +01:00
mathieui
3c19f69c25 Merge branch 'join-wait-timeout-none' into 'master'
XEP-0045: make the join_muc_wait timeout parameter optional

See merge request poezio/slixmpp!112
2021-01-31 19:41:40 +01:00
mathieui
846c42e386 XEP-0045: make the join_muc_wait timeout parameter optional 2021-01-31 19:39:12 +01:00
mathieui
1f97462391 Merge branch 'muc-sync-join' into 'master'
XEP-0045: Add new directed events and a join_muc_wait function

See merge request poezio/slixmpp!111
2021-01-31 18:17:54 +01:00
mathieui
c7d87a27e1 XEP-0045: Add a join_muc_wait function
Which is async, raises on timeout or error, and returns when
joined.
2021-01-31 17:15:47 +01:00
mathieui
a8113dca49 XEP-0045: Add a specific handler for MUC presence errors 2021-01-31 17:15:47 +01:00
mathieui
eda692d1c6 XEP-0045: add a directed event for self-presence 2021-01-31 17:02:51 +01:00
mathieui
7932a03378 xmlstream: add a simple contextmanager for temporary events 2021-01-31 17:01:41 +01:00
mathieui
e9b07e32bb exceptions: add a PresenceError exception 2021-01-31 17:00:42 +01:00
mathieui
8689212602 Merge branch 'mix-additions' into 'master'
MIX additions: handle MIX-PAM with roster and new events

See merge request poezio/slixmpp!108
2021-01-31 12:48:44 +01:00
mathieui
68649d0089 Merge branch 'update-doc-xep-titles' into 'master'
doc: update XEP titles

See merge request poezio/slixmpp!110
2021-01-30 19:04:11 +01:00
mathieui
473575d276 doc: update XEP titles 2021-01-30 19:01:38 +01:00
mathieui
ab9b7115de Merge branch 'fix-xep-descriptions' into 'master'
xeps: fix description for the newer plugins

See merge request poezio/slixmpp!109
2021-01-30 18:55:20 +01:00
mathieui
58f4ccf5c7 xeps: fix description for the newer plugins 2021-01-30 18:52:54 +01:00
mathieui
f41fd7cce4 examples: add an example MIX bot
(does the same as the current MUC bot)
2021-01-30 18:39:28 +01:00
mathieui
04a3f609e2 XEP-0405: Manage MIX Roster items 2021-01-30 18:17:12 +01:00
mathieui
119f59ecbe XEP-0369: Add events for channel/participants 2021-01-30 17:42:20 +01:00
742 changed files with 16941 additions and 9291 deletions

View File

@ -1,13 +0,0 @@
################ Please use Gitlab instead of Github ###################################
Hello, thank you for contributing to slixmpp!
Youre about to open a pull request on github. However this github repository is not the official place for contributions on slixmpp.
Please open your merge request on https://lab.louiz.org/poezio/slixmpp/
You should be able to log in there with your github credentials, clone the slixmpp repository in your namespace, push your existing pull request into a new branch, and then open a merge request with one click, within 3 minutes.
This will help us review your contribution, avoid spreading things everywhere and it will even run the tests automatically with your changes.
Thank you.

2
.gitignore vendored
View File

@ -13,3 +13,5 @@ slixmpp.egg-info/
.baboon/
.DS_STORE
.idea/
.vscode/
venv/

View File

@ -1,37 +0,0 @@
stages:
- test
- trigger
test:
stage: test
tags:
- docker
image: ubuntu:latest
script:
- apt update
- apt install -y python3 python3-pip cython3 gpg
- pip3 install emoji aiohttp
- ./run_tests.py
test_integration:
stage: test
tags:
- docker
image: ubuntu:latest
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:
stage: trigger
tags:
- docker
image: appropriate/curl:latest
script:
- curl --request POST -F token="$SLIXMPP_TRIGGER_TOKEN" -F ref=master https://lab.louiz.org/api/v4/projects/18/trigger/pipeline

22
.readthedocs.yaml Normal file
View File

@ -0,0 +1,22 @@
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the version of Python and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.11"
# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/conf.py
# We recommend specifying your dependencies to enable reproducible builds:
# https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txt

View File

@ -1,7 +0,0 @@
language: python
python:
- "3.7"
- "3.8-dev"
install:
- "pip install ."
script: testall.py

9
.woodpecker/lint.yml Normal file
View File

@ -0,0 +1,9 @@
when:
event: [ push, pull_request ]
steps:
mypy:
image: python:3
commands:
- pip3 install mypy types-setuptools
- mypy slixmpp

View File

@ -0,0 +1,23 @@
when:
event: [ push, pull_request ]
steps:
test_integration:
image: "python:3.11"
environment:
CI_ACCOUNT1:
from_secret: ci_account1
CI_ACCOUNT1_PASSWORD:
from_secret: ci_account1_password
CI_ACCOUNT2:
from_secret: ci_account2
CI_ACCOUNT2_PASSWORD:
from_secret: ci_account2_password
CI_MUC_SERVER:
from_secret: ci_muc_server
commands:
- apt-get update
- apt-get install -y python3-pip cython3 gpg idn libidn-dev
- pip3 install emoji aiohttp aiodns
- python3 setup.py build_ext --inplace
- ./run_integration_tests.py

19
.woodpecker/test.yml Normal file
View File

@ -0,0 +1,19 @@
when:
event: [ push, pull_request ]
steps:
unit_tests:
image: "python:${TAG}"
commands:
- apt-get update
- apt-get install -y python3 python3-pip cython3 gpg
- pip3 install emoji aiohttp cryptography setuptools
- ./run_tests.py
matrix:
TAG:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"

View File

@ -5,7 +5,7 @@ To contribute, the preferred way is to commit your changes on some
publicly-available git repository (on a fork `on github
<https://github.com/poezio/slixmpp>`_ or on your own repository) and to
notify the developers with either:
- a ticket `on the bug tracker <https://lab.louiz.org/poezio/slixmpp/issues/new>`_
- a ticket `on the bug tracker <https://codeberg.org/poezio/slixmpp/issues/new>`_
- a pull request on github
- a simple message on `the XMPP MUC <xmpp:slixmpp@muc.poez.io>`_

151
doap.xml
View File

@ -8,13 +8,13 @@
<shortdesc xml:lang="en">Elegant Python library for XMPP</shortdesc>
<shortdesc xml:lang="fr">Bibliothèque pour XMPP élégante, en Python</shortdesc>
<homepage rdf:resource="https://lab.louiz.org/poezio/slixmpp/"/>
<download-page rdf:resource="https://lab.louiz.org/poezio/slixmpp/tags"/>
<bug-database rdf:resource="https://lab.louiz.org/poezio/slixmpp/issues"/>
<homepage rdf:resource="https://codeberg.org/poezio/slixmpp/"/>
<download-page rdf:resource="https://codeberg.org/poezio/slixmpp/tags"/>
<bug-database rdf:resource="https://codeberg.org/poezio/slixmpp/issues"/>
<developer-forum rdf:resource="xmpp:slixmpp@muc.poez.io?join"/>
<support-forum rdf:resource="xmpp:slixmpp@muc.poez.io?join"/>
<license rdf:resource="https://lab.louiz.org/poezio/slixmpp/blob/master/LICENSE"/>
<license rdf:resource="https://codeberg.org/poezio/slixmpp/raw/brach/master/LICENSE"/>
<language>en</language>
@ -59,8 +59,8 @@
<repository>
<GitRepository>
<browse rdf:resource="https://lab.louiz.org/poezio/slixmpp"/>
<location rdf:resource="https://lab.louiz.org/poezio/slixmpp.git"/>
<browse rdf:resource="https://codeberg.org/poezio/slixmpp"/>
<location rdf:resource="https://codeberg.org/poezio/slixmpp.git"/>
</GitRepository>
</repository>
@ -455,6 +455,14 @@
<xmpp:since>1.0</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0175.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.2</xmpp:version>
<xmpp:since>1.0</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0184.html"/>
@ -608,6 +616,14 @@
<xmpp:since>1.0</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0264.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.4.2</xmpp:version>
<xmpp:since>1.8.6</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0270.html"/>
@ -674,6 +690,14 @@
<xmpp:since>1.0</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0317.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.8.6</xmpp:version>
<xmpp:since>0.2</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0319.html"/>
@ -776,7 +800,7 @@
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0377.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.2</xmpp:version>
<xmpp:version>0.3</xmpp:version>
<xmpp:since>1.6.0</xmpp:since>
</xmpp:SupportedXep>
</implements>
@ -848,7 +872,7 @@
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0424.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.3.0</xmpp:version>
<xmpp:version>0.4.0</xmpp:version>
<xmpp:since>1.6.0</xmpp:since>
</xmpp:SupportedXep>
</implements>
@ -856,7 +880,7 @@
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0425.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.2.1</xmpp:version>
<xmpp:version>0.3.0</xmpp:version>
<xmpp:since>1.6.0</xmpp:since>
</xmpp:SupportedXep>
</implements>
@ -892,6 +916,55 @@
<xmpp:since>1.6.0</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0446.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.2.0</xmpp:version>
<xmpp:since>1.8.7</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0454.html"/>
<xmpp:status>partial</xmpp:status>
<xmpp:version>0.1.0</xmpp:version>
<xmpp:since>1.8.1</xmpp:since>
<xmpp:note>no thumbnail support</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0469.html"/>
<xmpp:status>partial</xmpp:status>
<xmpp:version>0.1.0</xmpp:version>
<xmpp:since>1.8.6</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0482.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.1.0</xmpp:version>
<xmpp:since>1.8.7</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0490.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.1.0</xmpp:version>
<xmpp:since>1.8.6</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0492.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.1.0</xmpp:version>
<xmpp:since>1.8.7</xmpp:since>
</xmpp:SupportedXep>
</implements>
<release>
<Version>
@ -995,14 +1068,70 @@
<Version>
<revision>1.6.0</revision>
<created>2020-12-12</created>
<file-release rdf:resource="https://lab.louiz.org/poezio/slixmpp/-/archive/slix-1.6.0/slixmpp-slix-1.6.0.tar.gz"/>
<file-release rdf:resource="https://codeberg.org/poezio/slixmpp/archive/slix-1.6.0.tar.gz"/>
</Version>
</release>
<release>
<Version>
<revision>1.7.0</revision>
<created>2021-01-29</created>
<file-release rdf:resource="https://lab.louiz.org/poezio/slixmpp/-/archive/slix-1.7.9/slixmpp-slix-1.7.9.tar.gz"/>
<file-release rdf:resource="https://codeberg.org/poezio/slixmpp/archive/slix-1.7.0.tar.gz"/>
</Version>
</release>
<release>
<Version>
<revision>1.7.1</revision>
<created>2021-04-30</created>
<file-release rdf:resource="https://codeberg.org/poezio/slixmpp/archive/slix-1.7.1.tar.gz"/>
</Version>
</release>
<release>
<Version>
<revision>1.8.0</revision>
<created>2022-02-27</created>
<file-release rdf:resource="https://codeberg.org/poezio/slixmpp/archive/slix-1.8.0.tar.gz"/>
</Version>
</release>
<release>
<Version>
<revision>1.8.1</revision>
<created>2022-03-20</created>
<file-release rdf:resource="https://codeberg.org/poezio/slixmpp/archive/slix-1.8.1.tar.gz"/>
</Version>
</release>
<release>
<Version>
<revision>1.8.2</revision>
<created>2022-04-06</created>
<file-release rdf:resource="https://codeberg.org/poezio/slixmpp/archive/slix-1.8.2.tar.gz"/>
</Version>
</release>
<release>
<Version>
<revision>1.8.3</revision>
<created>2022-11-12</created>
<file-release rdf:resource="https://codeberg.org/poezio/slixmpp/archive/slix-1.8.3.tar.gz"/>
</Version>
</release>
<release>
<Version>
<revision>1.8.4</revision>
<created>2023-05-28</created>
<file-release rdf:resource="https://codeberg.org/poezio/slixmpp/archive/slix-1.8.4.tar.gz"/>
</Version>
</release>
<release>
<Version>
<revision>1.8.5</revision>
<created>2024-02-02</created>
<file-release rdf:resource="https://codeberg.org/poezio/slixmpp/archive/slix-1.8.5.tar.gz"/>
</Version>
</release>
<release>
<Version>
<revision>1.8.6</revision>
<created>2024-12-26</created>
<file-release rdf:resource="https://codeberg.org/poezio/slixmpp/archive/slix-1.8.6.tar.gz"/>
</Version>
</release>
</Project>

452
docs/_static/agogo.css vendored
View File

@ -1,452 +0,0 @@
/*
* agogo.css_t
* ~~~~~~~~~~~
*
* Sphinx stylesheet -- agogo theme.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
* {
margin: 0px;
padding: 0px;
}
body {
font-family: "Verdana", Arial, sans-serif;
line-height: 1.4em;
color: black;
background-color: #eeeeec;
}
/* Page layout */
div.header, div.content, div.footer {
width: 70em;
margin-left: auto;
margin-right: auto;
}
div.header-wrapper {
background: url(bgtop.png) top left repeat-x;
border-bottom: 3px solid #2e3436;
}
/* Default body styles */
a {
color: #ce5c00;
}
div.bodywrapper a, div.footer a {
text-decoration: underline;
}
.clearer {
clear: both;
}
.left {
float: left;
}
.right {
float: right;
}
.line-block {
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
.line-block .line-block {
margin-top: 0;
margin-bottom: 0;
margin-left: 1.5em;
}
h1, h2, h3, h4 {
font-family: "Georgia", "Times New Roman", serif;
font-weight: normal;
color: #3465a4;
margin-bottom: .8em;
}
h1 {
color: #204a87;
}
h2 {
padding-bottom: .5em;
border-bottom: 1px solid #3465a4;
}
a.headerlink {
visibility: hidden;
color: #dddddd;
padding-left: .3em;
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink {
visibility: visible;
}
img {
border: 0;
}
div.admonition {
margin-top: 10px;
margin-bottom: 10px;
padding: 2px 7px 1px 7px;
border-left: 0.2em solid black;
}
p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
}
dt:target, .highlighted {
background-color: #fbe54e;
}
/* Header */
div.header {
padding-top: 10px;
padding-bottom: 10px;
}
div.header h1 {
font-family: "Georgia", "Times New Roman", serif;
font-weight: normal;
font-size: 180%;
letter-spacing: .08em;
}
div.header h1 a {
color: white;
}
div.header div.rel {
margin-top: 1em;
}
div.header div.rel a {
color: #fcaf3e;
letter-spacing: .1em;
text-transform: uppercase;
}
p.logo {
float: right;
}
img.logo {
border: 0;
}
/* Content */
div.content-wrapper {
background-color: white;
padding-top: 20px;
padding-bottom: 20px;
}
div.document {
width: 50em;
float: left;
}
div.body {
padding-right: 2em;
text-align: justify;
}
div.document ul {
margin: 1.5em;
list-style-type: square;
}
div.document dd {
margin-left: 1.2em;
margin-top: .4em;
margin-bottom: 1em;
}
div.document .section {
margin-top: 1.7em;
}
div.document .section:first-child {
margin-top: 0px;
}
div.document div.highlight {
padding: 3px;
background-color: #eeeeec;
border-top: 2px solid #dddddd;
border-bottom: 2px solid #dddddd;
margin-top: .8em;
margin-bottom: .8em;
}
div.document h2 {
margin-top: .7em;
}
div.document p {
margin-bottom: .5em;
}
div.document li.toctree-l1 {
margin-bottom: 1em;
}
div.document .descname {
font-weight: bold;
}
div.document .docutils.literal {
background-color: #eeeeec;
padding: 1px;
}
div.document .docutils.xref.literal {
background-color: transparent;
padding: 0px;
}
div.document blockquote {
margin: 1em;
}
div.document ol {
margin: 1.5em;
}
/* Sidebar */
div.sidebar {
width: 20em;
float: right;
font-size: .9em;
}
div.sidebar a, div.header a {
text-decoration: none;
}
div.sidebar a:hover, div.header a:hover {
text-decoration: underline;
}
div.sidebar h3 {
color: #2e3436;
text-transform: uppercase;
font-size: 130%;
letter-spacing: .1em;
}
div.sidebar ul {
list-style-type: none;
}
div.sidebar li.toctree-l1 a {
display: block;
padding: 1px;
border: 1px solid #dddddd;
background-color: #eeeeec;
margin-bottom: .4em;
padding-left: 3px;
color: #2e3436;
}
div.sidebar li.toctree-l2 a {
background-color: transparent;
border: none;
margin-left: 1em;
border-bottom: 1px solid #dddddd;
}
div.sidebar li.toctree-l3 a {
background-color: transparent;
border: none;
margin-left: 2em;
border-bottom: 1px solid #dddddd;
}
div.sidebar li.toctree-l2:last-child a {
border-bottom: none;
}
div.sidebar li.toctree-l1.current a {
border-right: 5px solid #fcaf3e;
}
div.sidebar li.toctree-l1.current li.toctree-l2 a {
border-right: none;
}
/* Footer */
div.footer-wrapper {
background: url(bgfooter.png) top left repeat-x;
border-top: 4px solid #babdb6;
padding-top: 10px;
padding-bottom: 10px;
min-height: 80px;
}
div.footer, div.footer a {
color: #888a85;
}
div.footer .right {
text-align: right;
}
div.footer .left {
text-transform: uppercase;
}
/* Styles copied from basic theme */
img.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}
img.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left;
}
.align-center {
clear: both;
text-align: center;
}
.align-right {
text-align: right;
}
/* -- search page ----------------------------------------------------------- */
ul.search {
margin: 10px 0 0 20px;
padding: 0;
}
ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
}
ul.search li a {
font-weight: bold;
}
ul.search li div.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
}
ul.keywordmatches li.goodmatch a {
font-weight: bold;
}
/* -- index page ------------------------------------------------------------ */
table.contentstable {
width: 90%;
}
table.contentstable p.biglink {
line-height: 150%;
}
a.biglink {
font-size: 1.3em;
}
span.linkdescr {
font-style: italic;
padding-top: 5px;
font-size: 90%;
}
/* -- general index --------------------------------------------------------- */
table.indextable td {
text-align: left;
vertical-align: top;
}
table.indextable dl, table.indextable dd {
margin-top: 0;
margin-bottom: 0;
}
table.indextable tr.pcap {
height: 10px;
}
table.indextable tr.cap {
margin-top: 10px;
background-color: #f2f2f2;
}
img.toggler {
margin-right: 3px;
margin-top: 3px;
cursor: pointer;
}
/* -- viewcode extension ---------------------------------------------------- */
.viewcode-link {
float: right;
}
.viewcode-back {
float: right;
font-family:: "Verdana", Arial, sans-serif;
}
div.viewcode-block:target {
margin: -1px -3px;
padding: 0 3px;
background-color: #f4debf;
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}

532
docs/_static/basic.css vendored
View File

@ -1,532 +0,0 @@
/*
* basic.css
* ~~~~~~~~~
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/* -- main layout ----------------------------------------------------------- */
div.clearer {
clear: both;
}
/* -- relbar ---------------------------------------------------------------- */
div.related {
width: 100%;
font-size: 90%;
}
div.related h3 {
display: none;
}
div.related ul {
margin: 0;
padding: 0 0 0 10px;
list-style: none;
}
div.related li {
display: inline;
}
div.related li.right {
float: right;
margin-right: 5px;
}
/* -- sidebar --------------------------------------------------------------- */
div.sphinxsidebarwrapper {
padding: 10px 5px 0 10px;
}
div.sphinxsidebar {
float: left;
width: 230px;
margin-left: -100%;
font-size: 90%;
}
div.sphinxsidebar ul {
list-style: none;
}
div.sphinxsidebar ul ul,
div.sphinxsidebar ul.want-points {
margin-left: 20px;
list-style: square;
}
div.sphinxsidebar ul ul {
margin-top: 0;
margin-bottom: 0;
}
div.sphinxsidebar form {
margin-top: 10px;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
img {
border: 0;
}
/* -- search page ----------------------------------------------------------- */
ul.search {
margin: 10px 0 0 20px;
padding: 0;
}
ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
}
ul.search li a {
font-weight: bold;
}
ul.search li div.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
}
ul.keywordmatches li.goodmatch a {
font-weight: bold;
}
/* -- index page ------------------------------------------------------------ */
table.contentstable {
width: 90%;
}
table.contentstable p.biglink {
line-height: 150%;
}
a.biglink {
font-size: 1.3em;
}
span.linkdescr {
font-style: italic;
padding-top: 5px;
font-size: 90%;
}
/* -- general index --------------------------------------------------------- */
table.indextable {
width: 100%;
}
table.indextable td {
text-align: left;
vertical-align: top;
}
table.indextable dl, table.indextable dd {
margin-top: 0;
margin-bottom: 0;
}
table.indextable tr.pcap {
height: 10px;
}
table.indextable tr.cap {
margin-top: 10px;
background-color: #f2f2f2;
}
img.toggler {
margin-right: 3px;
margin-top: 3px;
cursor: pointer;
}
div.modindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
div.genindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
/* -- general body styles --------------------------------------------------- */
a.headerlink {
visibility: hidden;
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink {
visibility: visible;
}
div.body p.caption {
text-align: inherit;
}
div.body td {
text-align: left;
}
.field-list ul {
padding-left: 1em;
}
.first {
margin-top: 0 !important;
}
p.rubric {
margin-top: 30px;
font-weight: bold;
}
img.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}
img.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left;
}
.align-center {
clear: both;
text-align: center;
}
.align-right {
text-align: right;
}
/* -- sidebars -------------------------------------------------------------- */
div.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px 7px 0 7px;
background-color: #efefef;
width: 40%;
float: right;
-mox-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
}
p.sidebar-title {
font-weight: bold;
text-transform: uppercase;
}
/* -- topics ---------------------------------------------------------------- */
div.topic {
border: 1px solid #ccc;
padding: 7px 7px 0 7px;
margin: 10px 0 10px 0;
}
p.topic-title {
font-size: 1.1em;
font-weight: bold;
margin-top: 10px;
}
/* -- admonitions ----------------------------------------------------------- */
div.admonition {
margin-top: 10px;
margin-bottom: 10px;
padding: 7px;
}
div.admonition dt {
font-weight: bold;
}
div.admonition dl {
margin-bottom: 0;
}
p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
}
div.body p.centered {
text-align: center;
margin-top: 25px;
}
/* -- tables ---------------------------------------------------------------- */
table.docutils {
border: 0;
border-collapse: collapse;
}
table.docutils td, table.docutils th {
padding: 1px 8px 1px 5px;
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom: 1px solid #aaa;
}
table.field-list td, table.field-list th {
border: 0 !important;
}
table.footnote td, table.footnote th {
border: 0 !important;
}
th {
text-align: left;
padding-right: 5px;
}
table.citation {
border-left: solid 1px gray;
margin-left: 1px;
}
table.citation td {
border-bottom: none;
}
/* -- other body styles ----------------------------------------------------- */
ol.arabic {
list-style: decimal;
}
ol.loweralpha {
list-style: lower-alpha;
}
ol.upperalpha {
list-style: upper-alpha;
}
ol.lowerroman {
list-style: lower-roman;
}
ol.upperroman {
list-style: upper-roman;
}
dl {
margin-bottom: 15px;
}
dd p {
margin-top: 0px;
}
dd ul, dd table {
margin-bottom: 10px;
}
dd {
margin-top: 3px;
margin-bottom: 10px;
margin-left: 30px;
}
dt:target, .highlighted {
}
dl.glossary dt {
font-weight: bold;
font-size: 1.1em;
}
.field-list ul {
margin: 0;
padding-left: 1em;
}
.field-list p {
margin: 0;
}
.refcount {
color: #060;
}
.optional {
font-size: 1.3em;
}
.versionmodified {
font-style: italic;
}
.system-message {
background-color: #fda;
padding: 5px;
border: 3px solid red;
}
.footnote:target {
background-color: #ffa;
}
.line-block {
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
.line-block .line-block {
margin-top: 0;
margin-bottom: 0;
margin-left: 1.5em;
}
.guilabel, .menuselection {
font-family: sans-serif;
}
.accelerator {
text-decoration: underline;
}
.classifier {
font-style: oblique;
}
/* -- code displays --------------------------------------------------------- */
pre {
overflow: auto;
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}
td.linenos pre {
padding: 5px 0px;
border: 0;
background-color: transparent;
color: #aaa;
}
table.highlighttable {
margin-left: 0.5em;
}
table.highlighttable td {
padding: 0 0.5em 0 0.5em;
}
tt.descname {
background-color: transparent;
font-weight: bold;
font-size: 1.2em;
}
tt.descclassname {
background-color: transparent;
}
tt.xref, a tt {
background-color: transparent;
font-weight: bold;
}
h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
background-color: transparent;
}
.viewcode-link {
float: right;
}
.viewcode-back {
float: right;
font-family: sans-serif;
}
div.viewcode-block:target {
margin: -1px -10px;
padding: 0 10px;
}
/* -- math display ---------------------------------------------------------- */
img.math {
vertical-align: middle;
}
div.body div.math p {
text-align: center;
}
span.eqno {
float: right;
}
/* -- printout stylesheet --------------------------------------------------- */
@media print {
div.document,
div.documentwrapper,
div.bodywrapper {
margin: 0 !important;
width: 100%;
}
div.sphinxsidebar,
div.related,
div.footer,
#top-link {
display: none;
}
}

View File

@ -1,256 +0,0 @@
/*
* default.css_t
* ~~~~~~~~~~~~~
*
* Sphinx stylesheet -- default theme.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@import url("basic.css");
/* -- page layout ----------------------------------------------------------- */
body {
font-family: sans-serif;
font-size: 100%;
background-color: #11303d;
color: #000;
margin: 0;
padding: 0;
}
div.document {
background-color: #1c4e63;
}
div.documentwrapper {
float: left;
width: 100%;
}
div.bodywrapper {
margin: 0 0 0 230px;
}
div.body {
background-color: #ffffff;
color: #000000;
padding: 0 20px 30px 20px;
}
div.footer {
color: #ffffff;
width: 100%;
padding: 9px 0 9px 0;
text-align: center;
font-size: 75%;
}
div.footer a {
color: #ffffff;
text-decoration: underline;
}
div.related {
background-color: #133f52;
line-height: 30px;
color: #ffffff;
}
div.related a {
color: #ffffff;
}
div.sphinxsidebar {
}
div.sphinxsidebar h3 {
font-family: 'Trebuchet MS', sans-serif;
color: #ffffff;
font-size: 1.4em;
font-weight: normal;
margin: 0;
padding: 0;
}
div.sphinxsidebar h3 a {
color: #ffffff;
}
div.sphinxsidebar h4 {
font-family: 'Trebuchet MS', sans-serif;
color: #ffffff;
font-size: 1.3em;
font-weight: normal;
margin: 5px 0 0 0;
padding: 0;
}
div.sphinxsidebar p {
color: #ffffff;
}
div.sphinxsidebar p.topless {
margin: 5px 10px 10px 10px;
}
div.sphinxsidebar ul {
margin: 10px;
padding: 0;
color: #ffffff;
}
div.sphinxsidebar a {
color: #98dbcc;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
/* -- hyperlink styles ------------------------------------------------------ */
a {
color: #355f7c;
text-decoration: none;
}
a:visited {
color: #355f7c;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
/* -- body styles ----------------------------------------------------------- */
div.body h1,
div.body h2,
div.body h3,
div.body h4,
div.body h5,
div.body h6 {
font-family: 'Trebuchet MS', sans-serif;
background-color: #f2f2f2;
font-weight: normal;
color: #20435c;
border-bottom: 1px solid #ccc;
margin: 20px -20px 10px -20px;
padding: 3px 0 3px 10px;
}
div.body h1 { margin-top: 0; font-size: 200%; }
div.body h2 { font-size: 160%; }
div.body h3 { font-size: 140%; }
div.body h4 { font-size: 120%; }
div.body h5 { font-size: 110%; }
div.body h6 { font-size: 100%; }
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
padding: 0 4px 0 4px;
text-decoration: none;
}
a.headerlink:hover {
background-color: #c60f0f;
color: white;
}
div.body p, div.body dd, div.body li {
text-align: justify;
line-height: 130%;
}
div.admonition p.admonition-title + p {
display: inline;
}
div.admonition p {
margin-bottom: 5px;
}
div.admonition pre {
margin-bottom: 5px;
}
div.admonition ul, div.admonition ol {
margin-bottom: 5px;
}
div.note {
background-color: #eee;
border: 1px solid #ccc;
}
div.seealso {
background-color: #ffc;
border: 1px solid #ff6;
}
div.topic {
background-color: #eee;
}
div.warning {
background-color: #ffe4e4;
border: 1px solid #f66;
}
p.admonition-title {
display: inline;
}
p.admonition-title:after {
content: ":";
}
pre {
padding: 5px;
background-color: #eeffcc;
color: #333333;
line-height: 120%;
border: 1px solid #ac9;
border-left: none;
border-right: none;
}
tt {
background-color: #ecf0f3;
padding: 0 1px 0 1px;
font-size: 0.95em;
}
th {
background-color: #ede;
}
.warning tt {
background: #efc2c2;
}
.note tt {
background: #d6d6d6;
}
.viewcode-back {
font-family: sans-serif;
}
div.viewcode-block:target {
background-color: #f4debf;
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

410
docs/_static/haiku.css vendored
View File

@ -1,410 +0,0 @@
/*
* haiku.css_t
* ~~~~~~~~~~~
*
* Sphinx stylesheet -- haiku theme.
*
* Adapted from http://haiku-os.org/docs/Haiku-doc.css.
* Original copyright message:
*
* Copyright 2008-2009, Haiku. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Francois Revol <revol@free.fr>
* Stephan Assmus <superstippi@gmx.de>
* Braden Ewing <brewin@gmail.com>
* Humdinger <humdingerb@gmail.com>
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@import url("basic.css");
@font-face {
font-family: "Museo Slab";
font-weight: normal;
font-style: normal;
src: local("Museo Slab"),
url("fonts/Museo_Slab_500.otf") format("opentype");
}
@font-face {
font-family: "Yanone Kaffeesatz";
font-weight: bold;
font-style: normal;
src: local("Yanone Kaffeesatz"),
url("fonts/YanoneKaffeesatz-Bold.ttf") format("truetype");
}
@font-face {
font-family: "Yanone Kaffeesatz";
font-weight: lighter;
font-style: normal;
src: local("Yanone Kaffeesatz"),
url("fonts/YanoneKaffeesatz-Regular.ttf") format("truetype");
}
html {
margin: 0px;
padding: 0px;
background: #FFF url(header.png) top left repeat-x;
}
body {
line-height: 1.5;
margin: auto;
padding: 0px;
font-family: "Helvetica Neueu", Helvetica, sans-serif;
min-width: 30em;
max-width: 70em;
color: #444;
text-align: center;
}
div.footer {
padding: 8px;
font-size: 11px;
text-align: center;
letter-spacing: 0.5px;
}
/* link colors and text decoration */
a:link {
font-weight: bold;
text-decoration: none;
color: #00ADEE;
}
a:visited {
font-weight: bold;
text-decoration: none;
color: #00ADEE;
}
a:hover, a:active {
text-decoration: underline;
color: #F46DBA;
}
/* Some headers act as anchors, don't give them a hover effect */
h1 a:hover, a:active {
text-decoration: none;
color: #CFCFCF;
}
h2 a:hover, a:active {
text-decoration: none;
color: #CFCFCF;
}
h3 a:hover, a:active {
text-decoration: none;
color: #CFCFCF;
}
h4 a:hover, a:active {
text-decoration: none;
color: #CFCFCF;
}
a.headerlink {
color: #a7ce38;
padding-left: 5px;
}
a.headerlink:hover {
color: #a7ce38;
}
/* basic text elements */
div.content {
margin: auto;
margin-top: 20px;
margin-bottom: 50px;
font-size: 0.9em;
width: 700px;
text-align: left;
}
/* heading and navigation */
div.header {
position: relative;
margin: auto;
margin-top: 125px;
height: 85px;
padding: 0 40px;
font-family: "Yanone Kaffeesatz";
text-align: left;
width: 750px;
}
div.header h1 {
font-size: 2.6em;
font-weight: normal;
letter-spacing: 1px;
color: #CFCFCF;
border: 0;
margin: 0;
padding-top: 15px;
font-family: "Yanone Kaffeesatz";
text-shadow: 1px 1px 1px rgba(175, 175, 175, .8);
font-variant: small-caps;
}
div.header h1 a {
font-weight: normal;
color: #00ADEE;
}
div.header h2 {
font-size: 1.3em;
font-weight: normal;
letter-spacing: 1px;
text-transform: uppercase;
color: #aaa;
border: 0;
margin-top: -3px;
padding: 0;
font-family: "Yanone Kaffeesatz";
}
div.header img.rightlogo {
float: right;
}
div.title {
font-size: 1.3em;
font-weight: bold;
color: #CFCFCF;
border-bottom: dotted thin #e0e0e0;
margin-bottom: 25px;
}
div.topnav {
position: relative;
z-index: 0;
}
div.topnav p {
margin: auto;
margin-top: 0;
margin-bottom: 0px;
text-align: right;
font-size: 0.8em;
width: 750px;
}
div.bottomnav {
background: #eeeeee;
}
div.bottomnav p {
margin-right: 40px;
text-align: right;
font-size: 0.8em;
}
a.uplink {
font-weight: normal;
}
/* contents box */
table.index {
margin: 0px 0px 30px 30px;
padding: 1px;
border-width: 1px;
border-style: dotted;
border-color: #e0e0e0;
}
table.index tr.heading {
background-color: #e0e0e0;
text-align: center;
font-weight: bold;
font-size: 1.1em;
}
table.index tr.index {
background-color: #eeeeee;
}
table.index td {
padding: 5px 20px;
}
table.index a:link, table.index a:visited {
font-weight: normal;
text-decoration: none;
color: #4A7389;
}
table.index a:hover, table.index a:active {
text-decoration: underline;
color: #ff4500;
}
/* Haiku User Guide styles and layout */
/* Rounded corner boxes */
/* Common declarations */
div.admonition {
-webkit-border-radius: 10px;
-khtml-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
border-style: dotted;
border-width: thin;
border-color: #dcdcdc;
padding: 10px 15px 10px 15px;
margin-bottom: 15px;
margin-top: 15px;
}
div.note {
padding: 10px 15px 10px 15px;
background-color: #e4ffde;
/*background: #e4ffde url(alert_info_32.png) 15px 15px no-repeat;*/
min-height: 42px;
}
div.warning {
padding: 10px 15px 10px 15px;
background-color: #fffbc6;
/*background: #fffbc6 url(alert_warning_32.png) 15px 15px no-repeat;*/
min-height: 42px;
}
div.seealso {
background: #e4ffde;
}
/* More layout and styles */
h1 {
font-size: 1.6em;
color: #aaa;
border-bottom: dotted thin #e0e0e0;
margin-top: 30px;
font-family: "Museo Slab";
text-shadow: 1px 1px 1px rgba(175, 175, 175, .25);
}
h2 {
font-size: 1.5em;
font-weight: normal;
color: #aaa;
border-bottom: dotted thin #e0e0e0;
margin-top: 30px;
font-family: "Museo Slab";
text-shadow: 1px 1px 1px rgba(175, 175, 175, .25);
}
h3 {
font-size: 1.4em;
font-weight: normal;
color: #aaa;
margin-top: 30px;
font-family: "Museo Slab";
text-shadow: 1px 1px 1px rgba(175, 175, 175, .25);
}
h4 {
font-size: 1.3em;
font-weight: normal;
color: #CFCFCF;
margin-top: 30px;
}
p {
text-align: justify;
}
p.last {
margin-bottom: 0;
}
ol {
padding-left: 20px;
}
ul {
padding-left: 5px;
margin-top: 3px;
}
li {
line-height: 1.3;
}
div.content ul > li {
-moz-background-clip:border;
-moz-background-inline-policy:continuous;
-moz-background-origin:padding;
background: transparent url(bullet_orange.png) no-repeat scroll left 0.45em;
list-style-image: none;
list-style-type: none;
padding: 0 0 0 1.666em;
margin-bottom: 3px;
}
td {
vertical-align: top;
}
tt {
background-color: #e2e2e2;
font-size: 1.0em;
font-family: monospace;
}
pre {
font-size: 1.1em;
margin: 0 0 12px 0;
padding: 0.8em;
background-image: url(noise_dk.png);
background-color: #222;
}
hr {
border-top: 1px solid #ccc;
border-bottom: 0;
border-right: 0;
border-left: 0;
margin-bottom: 10px;
margin-top: 20px;
}
/* printer only pretty stuff */
@media print {
.noprint {
display: none;
}
/* for acronyms we want their definitions inlined at print time */
acronym[title]:after {
font-size: small;
content: " (" attr(title) ")";
font-style: italic;
}
/* and not have mozilla dotted underline */
acronym {
border: none;
}
div.topnav, div.bottomnav, div.header, table.index {
display: none;
}
div.content {
margin: 0px;
padding: 0px;
}
html {
background: #FFF;
}
}
.viewcode-back {
font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
}
div.viewcode-block:target {
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
margin: -1px -12px;
padding: 0 12px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,70 +0,0 @@
.highlight .hll { background-color: #ffffcc }
.highlight { background: #000000; color: #f6f3e8; }
.highlight .c { color: #7C7C7C; } /* Comment */
.highlight .err { color: #f6f3e8; } /* Error */
.highlight .g { color: #f6f3e8; } /* Generic */
.highlight .k { color: #00ADEE; } /* Keyword */
.highlight .l { color: #f6f3e8; } /* Literal */
.highlight .n { color: #f6f3e8; } /* Name */
.highlight .o { color: #f6f3e8; } /* Operator */
.highlight .x { color: #f6f3e8; } /* Other */
.highlight .p { color: #f6f3e8; } /* Punctuation */
.highlight .cm { color: #7C7C7C; } /* Comment.Multiline */
.highlight .cp { color: #96CBFE; } /* Comment.Preproc */
.highlight .c1 { color: #7C7C7C; } /* Comment.Single */
.highlight .cs { color: #7C7C7C; } /* Comment.Special */
.highlight .gd { color: #f6f3e8; } /* Generic.Deleted */
.highlight .ge { color: #f6f3e8; } /* Generic.Emph */
.highlight .gr { color: #ffffff; background-color: #ff0000 } /* Generic.Error */
.highlight .gh { color: #f6f3e8; font-weight: bold; } /* Generic.Heading */
.highlight .gi { color: #f6f3e8; } /* Generic.Inserted */
.highlight .go { color: #070707; } /* Generic.Output */
.highlight .gp { color: #f6f3e8; } /* Generic.Prompt */
.highlight .gs { color: #f6f3e8; } /* Generic.Strong */
.highlight .gu { color: #f6f3e8; font-weight: bold; } /* Generic.Subheading */
.highlight .gt { color: #ffffff; font-weight: bold; background-color: #FF6C60 } /* Generic.Traceback */
.highlight .kc { color: #6699CC; } /* Keyword.Constant */
.highlight .kd { color: #6699CC; } /* Keyword.Declaration */
.highlight .kn { color: #6699CC; } /* Keyword.Namespace */
.highlight .kp { color: #6699CC; } /* Keyword.Pseudo */
.highlight .kr { color: #6699CC; } /* Keyword.Reserved */
.highlight .kt { color: #FFFFB6; } /* Keyword.Type */
.highlight .ld { color: #f6f3e8; } /* Literal.Date */
.highlight .m { color: #FF73FD; } /* Literal.Number */
.highlight .s { color: #F46DBA;/*#A8FF60;*/ } /* Literal.String */
.highlight .na { color: #f6f3e8; } /* Name.Attribute */
.highlight .nb { color: #f6f3e8; } /* Name.Builtin */
.highlight .nc { color: #f6f3e8; } /* Name.Class */
.highlight .no { color: #99CC99; } /* Name.Constant */
.highlight .nd { color: #f6f3e8; } /* Name.Decorator */
.highlight .ni { color: #E18964; } /* Name.Entity */
.highlight .ne { color: #f6f3e8; } /* Name.Exception */
.highlight .nf { color: #F64DBA; } /* Name.Function */
.highlight .nl { color: #f6f3e8; } /* Name.Label */
.highlight .nn { color: #f6f3e8; } /* Name.Namespace */
.highlight .nx { color: #f6f3e8; } /* Name.Other */
.highlight .py { color: #f6f3e8; } /* Name.Property */
.highlight .nt { color: #00ADEE; } /* Name.Tag */
.highlight .nv { color: #C6C5FE; } /* Name.Variable */
.highlight .ow { color: #ffffff; } /* Operator.Word */
.highlight .w { color: #f6f3e8; } /* Text.Whitespace */
.highlight .mf { color: #FF73FD; } /* Literal.Number.Float */
.highlight .mh { color: #FF73FD; } /* Literal.Number.Hex */
.highlight .mi { color: #FF73FD; } /* Literal.Number.Integer */
.highlight .mo { color: #FF73FD; } /* Literal.Number.Oct */
.highlight .sb { color: #A8FF60; } /* Literal.String.Backtick */
.highlight .sc { color: #A8FF60; } /* Literal.String.Char */
.highlight .sd { color: #A8FF60; } /* Literal.String.Doc */
.highlight .s2 { color: #A8FF60; } /* Literal.String.Double */
.highlight .se { color: #A8FF60; } /* Literal.String.Escape */
.highlight .sh { color: #A8FF60; } /* Literal.String.Heredoc */
.highlight .si { color: #A8FF60; } /* Literal.String.Interpol */
.highlight .sx { color: #A8FF60; } /* Literal.String.Other */
.highlight .sr { color: #A8FF60; } /* Literal.String.Regex */
.highlight .s1 { color: #A8FF60; } /* Literal.String.Single */
.highlight .ss { color: #A8FF60; } /* Literal.String.Symbol */
.highlight .bp { color: #f6f3e8; } /* Name.Builtin.Pseudo */
.highlight .vc { color: #C6C5FE; } /* Name.Variable.Class */
.highlight .vg { color: #C6C5FE; } /* Name.Variable.Global */
.highlight .vi { color: #C6C5FE; } /* Name.Variable.Instance */
.highlight .il { color: #FF73FD; } /* Literal.Number.Integer.Long */

View File

@ -1,245 +0,0 @@
/*
* nature.css_t
* ~~~~~~~~~~~~
*
* Sphinx stylesheet -- nature theme.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@import url("basic.css");
/* -- page layout ----------------------------------------------------------- */
body {
font-family: Arial, sans-serif;
font-size: 100%;
background-color: #111;
color: #555;
margin: 0;
padding: 0;
}
div.documentwrapper {
float: left;
width: 100%;
}
div.bodywrapper {
margin: 0 0 0 230px;
}
hr {
border: 1px solid #B1B4B6;
}
div.document {
background-color: #eee;
}
div.body {
background-color: #ffffff;
color: #3E4349;
padding: 0 30px 30px 30px;
font-size: 0.9em;
}
div.footer {
color: #555;
width: 100%;
padding: 13px 0;
text-align: center;
font-size: 75%;
}
div.footer a {
color: #444;
text-decoration: underline;
}
div.related {
background-color: #6BA81E;
line-height: 32px;
color: #fff;
text-shadow: 0px 1px 0 #444;
font-size: 0.9em;
}
div.related a {
color: #E2F3CC;
}
div.sphinxsidebar {
font-size: 0.75em;
line-height: 1.5em;
}
div.sphinxsidebarwrapper{
padding: 20px 0;
}
div.sphinxsidebar h3,
div.sphinxsidebar h4 {
font-family: Arial, sans-serif;
color: #222;
font-size: 1.2em;
font-weight: normal;
margin: 0;
padding: 5px 10px;
background-color: #ddd;
text-shadow: 1px 1px 0 white
}
div.sphinxsidebar h4{
font-size: 1.1em;
}
div.sphinxsidebar h3 a {
color: #444;
}
div.sphinxsidebar p {
color: #888;
padding: 5px 20px;
}
div.sphinxsidebar p.topless {
}
div.sphinxsidebar ul {
margin: 10px 20px;
padding: 0;
color: #000;
}
div.sphinxsidebar a {
color: #444;
}
div.sphinxsidebar input {
border: 1px solid #ccc;
font-family: sans-serif;
font-size: 1em;
}
div.sphinxsidebar input[type=text]{
margin-left: 20px;
}
/* -- body styles ----------------------------------------------------------- */
a {
color: #005B81;
text-decoration: none;
}
a:hover {
color: #E32E00;
text-decoration: underline;
}
div.body h1,
div.body h2,
div.body h3,
div.body h4,
div.body h5,
div.body h6 {
font-family: Arial, sans-serif;
background-color: #BED4EB;
font-weight: normal;
color: #212224;
margin: 30px 0px 10px 0px;
padding: 5px 0 5px 10px;
text-shadow: 0px 1px 0 white
}
div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; }
div.body h2 { font-size: 150%; background-color: #C8D5E3; }
div.body h3 { font-size: 120%; background-color: #D8DEE3; }
div.body h4 { font-size: 110%; background-color: #D8DEE3; }
div.body h5 { font-size: 100%; background-color: #D8DEE3; }
div.body h6 { font-size: 100%; background-color: #D8DEE3; }
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
padding: 0 4px 0 4px;
text-decoration: none;
}
a.headerlink:hover {
background-color: #c60f0f;
color: white;
}
div.body p, div.body dd, div.body li {
line-height: 1.5em;
}
div.admonition p.admonition-title + p {
display: inline;
}
div.highlight{
background-color: white;
}
div.note {
background-color: #eee;
border: 1px solid #ccc;
}
div.seealso {
background-color: #ffc;
border: 1px solid #ff6;
}
div.topic {
background-color: #eee;
}
div.warning {
background-color: #ffe4e4;
border: 1px solid #f66;
}
p.admonition-title {
display: inline;
}
p.admonition-title:after {
content: ":";
}
pre {
padding: 10px;
background-color: White;
color: #222;
line-height: 1.2em;
border: 1px solid #C6C9CB;
font-size: 1.1em;
margin: 1.5em 0 1.5em 0;
-webkit-box-shadow: 1px 1px 1px #d8d8d8;
-moz-box-shadow: 1px 1px 1px #d8d8d8;
}
tt {
background-color: #ecf0f3;
color: #222;
/* padding: 1px 2px; */
font-size: 1.1em;
font-family: monospace;
}
.viewcode-back {
font-family: Arial, sans-serif;
}
div.viewcode-block:target {
background-color: #f4debf;
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1,70 +0,0 @@
.highlight .hll { background-color: #ffffcc }
.highlight { background: #000000; color: #f6f3e8; }
.highlight .c { color: #7C7C7C; } /* Comment */
.highlight .err { color: #f6f3e8; } /* Error */
.highlight .g { color: #f6f3e8; } /* Generic */
.highlight .k { color: #00ADEE; } /* Keyword */
.highlight .l { color: #f6f3e8; } /* Literal */
.highlight .n { color: #f6f3e8; } /* Name */
.highlight .o { color: #f6f3e8; } /* Operator */
.highlight .x { color: #f6f3e8; } /* Other */
.highlight .p { color: #f6f3e8; } /* Punctuation */
.highlight .cm { color: #7C7C7C; } /* Comment.Multiline */
.highlight .cp { color: #96CBFE; } /* Comment.Preproc */
.highlight .c1 { color: #7C7C7C; } /* Comment.Single */
.highlight .cs { color: #7C7C7C; } /* Comment.Special */
.highlight .gd { color: #f6f3e8; } /* Generic.Deleted */
.highlight .ge { color: #f6f3e8; } /* Generic.Emph */
.highlight .gr { color: #ffffff; background-color: #ff0000 } /* Generic.Error */
.highlight .gh { color: #f6f3e8; font-weight: bold; } /* Generic.Heading */
.highlight .gi { color: #f6f3e8; } /* Generic.Inserted */
.highlight .go { color: #070707; } /* Generic.Output */
.highlight .gp { color: #f6f3e8; } /* Generic.Prompt */
.highlight .gs { color: #f6f3e8; } /* Generic.Strong */
.highlight .gu { color: #f6f3e8; font-weight: bold; } /* Generic.Subheading */
.highlight .gt { color: #ffffff; font-weight: bold; background-color: #FF6C60 } /* Generic.Traceback */
.highlight .kc { color: #6699CC; } /* Keyword.Constant */
.highlight .kd { color: #6699CC; } /* Keyword.Declaration */
.highlight .kn { color: #6699CC; } /* Keyword.Namespace */
.highlight .kp { color: #6699CC; } /* Keyword.Pseudo */
.highlight .kr { color: #6699CC; } /* Keyword.Reserved */
.highlight .kt { color: #FFFFB6; } /* Keyword.Type */
.highlight .ld { color: #f6f3e8; } /* Literal.Date */
.highlight .m { color: #FF73FD; } /* Literal.Number */
.highlight .s { color: #F46DBA;/*#A8FF60;*/ } /* Literal.String */
.highlight .na { color: #f6f3e8; } /* Name.Attribute */
.highlight .nb { color: #f6f3e8; } /* Name.Builtin */
.highlight .nc { color: #f6f3e8; } /* Name.Class */
.highlight .no { color: #99CC99; } /* Name.Constant */
.highlight .nd { color: #f6f3e8; } /* Name.Decorator */
.highlight .ni { color: #E18964; } /* Name.Entity */
.highlight .ne { color: #f6f3e8; } /* Name.Exception */
.highlight .nf { color: #F64DBA; } /* Name.Function */
.highlight .nl { color: #f6f3e8; } /* Name.Label */
.highlight .nn { color: #f6f3e8; } /* Name.Namespace */
.highlight .nx { color: #f6f3e8; } /* Name.Other */
.highlight .py { color: #f6f3e8; } /* Name.Property */
.highlight .nt { color: #00ADEE; } /* Name.Tag */
.highlight .nv { color: #C6C5FE; } /* Name.Variable */
.highlight .ow { color: #ffffff; } /* Operator.Word */
.highlight .w { color: #f6f3e8; } /* Text.Whitespace */
.highlight .mf { color: #FF73FD; } /* Literal.Number.Float */
.highlight .mh { color: #FF73FD; } /* Literal.Number.Hex */
.highlight .mi { color: #FF73FD; } /* Literal.Number.Integer */
.highlight .mo { color: #FF73FD; } /* Literal.Number.Oct */
.highlight .sb { color: #A8FF60; } /* Literal.String.Backtick */
.highlight .sc { color: #A8FF60; } /* Literal.String.Char */
.highlight .sd { color: #A8FF60; } /* Literal.String.Doc */
.highlight .s2 { color: #A8FF60; } /* Literal.String.Double */
.highlight .se { color: #A8FF60; } /* Literal.String.Escape */
.highlight .sh { color: #A8FF60; } /* Literal.String.Heredoc */
.highlight .si { color: #A8FF60; } /* Literal.String.Interpol */
.highlight .sx { color: #A8FF60; } /* Literal.String.Other */
.highlight .sr { color: #A8FF60; } /* Literal.String.Regex */
.highlight .s1 { color: #A8FF60; } /* Literal.String.Single */
.highlight .ss { color: #A8FF60; } /* Literal.String.Symbol */
.highlight .bp { color: #f6f3e8; } /* Name.Builtin.Pseudo */
.highlight .vc { color: #C6C5FE; } /* Name.Variable.Class */
.highlight .vg { color: #C6C5FE; } /* Name.Variable.Global */
.highlight .vi { color: #C6C5FE; } /* Name.Variable.Instance */
.highlight .il { color: #FF73FD; } /* Literal.Number.Integer.Long */

View File

@ -1,339 +0,0 @@
/*
* sphinxdoc.css_t
* ~~~~~~~~~~~~~~~
*
* Sphinx stylesheet -- sphinxdoc theme. Originally created by
* Armin Ronacher for Werkzeug.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@import url("basic.css");
/* -- page layout ----------------------------------------------------------- */
body {
font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva',
'Verdana', sans-serif;
font-size: 14px;
letter-spacing: -0.01em;
line-height: 150%;
text-align: center;
background-color: #BFD1D4;
color: black;
padding: 0;
border: 1px solid #aaa;
margin: 0px 80px 0px 80px;
min-width: 740px;
}
div.document {
background-color: white;
text-align: left;
background-image: url(contents.png);
background-repeat: repeat-x;
}
div.bodywrapper {
margin: 0 240px 0 0;
border-right: 1px solid #ccc;
}
div.body {
margin: 0;
padding: 0.5em 20px 20px 20px;
}
div.related {
font-size: 1em;
}
div.related ul {
background-image: url(navigation.png);
height: 2em;
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
}
div.related ul li {
margin: 0;
padding: 0;
height: 2em;
float: left;
}
div.related ul li.right {
float: right;
margin-right: 5px;
}
div.related ul li a {
margin: 0;
padding: 0 5px 0 5px;
line-height: 1.75em;
color: #EE9816;
}
div.related ul li a:hover {
color: #3CA8E7;
}
div.sphinxsidebarwrapper {
padding: 0;
}
div.sphinxsidebar {
margin: 0;
padding: 0.5em 15px 15px 0;
width: 210px;
float: right;
font-size: 1em;
text-align: left;
}
div.sphinxsidebar h3, div.sphinxsidebar h4 {
margin: 1em 0 0.5em 0;
font-size: 1em;
padding: 0.1em 0 0.1em 0.5em;
color: white;
border: 1px solid #86989B;
background-color: #AFC1C4;
}
div.sphinxsidebar h3 a {
color: white;
}
div.sphinxsidebar ul {
padding-left: 1.5em;
margin-top: 7px;
padding: 0;
line-height: 130%;
}
div.sphinxsidebar ul ul {
margin-left: 20px;
}
div.footer {
background-color: #E3EFF1;
color: #86989B;
padding: 3px 8px 3px 0;
clear: both;
font-size: 0.8em;
text-align: right;
}
div.footer a {
color: #86989B;
text-decoration: underline;
}
/* -- body styles ----------------------------------------------------------- */
p {
margin: 0.8em 0 0.5em 0;
}
a {
color: #CA7900;
text-decoration: none;
}
a:hover {
color: #2491CF;
}
div.body a {
text-decoration: underline;
}
h1 {
margin: 0;
padding: 0.7em 0 0.3em 0;
font-size: 1.5em;
color: #11557C;
}
h2 {
margin: 1.3em 0 0.2em 0;
font-size: 1.35em;
padding: 0;
}
h3 {
margin: 1em 0 -0.3em 0;
font-size: 1.2em;
}
div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a {
color: black!important;
}
h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor {
display: none;
margin: 0 0 0 0.3em;
padding: 0 0.2em 0 0.2em;
color: #aaa!important;
}
h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor,
h5:hover a.anchor, h6:hover a.anchor {
display: inline;
}
h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover,
h5 a.anchor:hover, h6 a.anchor:hover {
color: #777;
background-color: #eee;
}
a.headerlink {
color: #c60f0f!important;
font-size: 1em;
margin-left: 6px;
padding: 0 4px 0 4px;
text-decoration: none!important;
}
a.headerlink:hover {
background-color: #ccc;
color: white!important;
}
cite, code, tt {
font-family: 'Consolas', 'Deja Vu Sans Mono',
'Bitstream Vera Sans Mono', monospace;
font-size: 0.95em;
letter-spacing: 0.01em;
}
tt {
background-color: #f2f2f2;
border-bottom: 1px solid #ddd;
color: #333;
}
tt.descname, tt.descclassname, tt.xref {
border: 0;
}
hr {
border: 1px solid #abc;
margin: 2em;
}
a tt {
border: 0;
color: #CA7900;
}
a tt:hover {
color: #2491CF;
}
pre {
font-family: 'Consolas', 'Deja Vu Sans Mono',
'Bitstream Vera Sans Mono', monospace;
font-size: 0.95em;
letter-spacing: 0.015em;
line-height: 120%;
padding: 0.5em;
border: 1px solid #ccc;
background-color: #f8f8f8;
}
pre a {
color: inherit;
text-decoration: underline;
}
td.linenos pre {
padding: 0.5em 0;
}
div.quotebar {
background-color: #f8f8f8;
max-width: 250px;
float: right;
padding: 2px 7px;
border: 1px solid #ccc;
}
div.topic {
background-color: #f8f8f8;
}
table {
border-collapse: collapse;
margin: 0 -0.5em 0 -0.5em;
}
table td, table th {
padding: 0.2em 0.5em 0.2em 0.5em;
}
div.admonition, div.warning {
font-size: 0.9em;
margin: 1em 0 1em 0;
border: 1px solid #86989B;
background-color: #f7f7f7;
padding: 0;
}
div.admonition p, div.warning p {
margin: 0.5em 1em 0.5em 1em;
padding: 0;
}
div.admonition pre, div.warning pre {
margin: 0.4em 1em 0.4em 1em;
}
div.admonition p.admonition-title,
div.warning p.admonition-title {
margin: 0;
padding: 0.1em 0 0.1em 0.5em;
color: white;
border-bottom: 1px solid #86989B;
font-weight: bold;
background-color: #AFC1C4;
}
div.warning {
border: 1px solid #940000;
}
div.warning p.admonition-title {
background-color: #CF0000;
border-bottom-color: #940000;
}
div.admonition ul, div.admonition ol,
div.warning ul, div.warning ol {
margin: 0.1em 0.5em 0.5em 3em;
padding: 0;
}
div.versioninfo {
margin: 1em 0 0 0;
border: 1px solid #ccc;
background-color: #DDEAF0;
padding: 8px;
line-height: 1.3em;
font-size: 0.9em;
}
.viewcode-back {
font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva',
'Verdana', sans-serif;
}
div.viewcode-block:target {
background-color: #f4debf;
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}

View File

@ -1,69 +0,0 @@
{#
haiku/layout.html
~~~~~~~~~~~~~~~~~
Sphinx layout template for the haiku theme.
:copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
#}
{% extends "basic/layout.html" %}
{% set script_files = script_files + ['_static/theme_extras.js'] %}
{% set css_files = css_files + ['_static/print.css'] %}
{# do not display relbars #}
{% block relbar1 %}{% endblock %}
{% block relbar2 %}{% endblock %}
{% macro nav() %}
<p>
{%- block haikurel1 %}
{%- endblock %}
{%- if prev %}
«&#160;&#160;<a href="{{ prev.link|e }}">{{ prev.title }}</a>
&#160;&#160;::&#160;&#160;
{%- endif %}
<a class="uplink" href="{{ pathto(master_doc) }}">{{ _('Contents') }}</a>
{%- if next %}
&#160;&#160;::&#160;&#160;
<a href="{{ next.link|e }}">{{ next.title }}</a>&#160;&#160;»
{%- endif %}
{%- block haikurel2 %}
{%- endblock %}
</p>
{% endmacro %}
{% block content %}
<div class="header">
{%- block haikuheader %}
{%- if theme_full_logo != "false" %}
<a href="{{ pathto('index') }}">
<img class="logo" src="{{ pathto('_static/' + logo, 1) }}" alt="Logo"/>
</a>
{%- else %}
{%- if logo -%}
<img class="rightlogo" src="{{ pathto('_static/' + logo, 1) }}" alt="Logo"/>
{%- endif -%}
<h1 class="heading"><a href="{{ pathto('index') }}">
<span>{{ title|striptags }}</span></a></h1>
<h2 class="heading"><span>{{ shorttitle|e }}</span></h2>
{%- endif %}
{%- endblock %}
</div>
<div class="topnav">
{{ nav() }}
</div>
<div class="content">
{#{%- if display_toc %}
<div id="toc">
<h3>Table Of Contents</h3>
{{ toc }}
</div>
{%- endif %}#}
{% block body %}{% endblock %}
</div>
<div class="bottomnav">
{{ nav() }}
</div>
{% endblock %}

88
docs/api/api.rst Normal file
View File

@ -0,0 +1,88 @@
.. _internal-api:
Internal "API"
==============
Slixmpp has a generic API registry that can be used by its plugins to allow
access control, redefinition of behaviour, without having to inherit from the
plugin or do more dark magic.
The idea is that each api call can be replaced, most of them use a form
of in-memory storage that can be, for example, replaced with database
or file-based storaged.
Each plugin is assigned an API proxy bound to itself, but only a few make use
of it.
See also :ref:`api-simple-tuto`.
Description of a generic API call
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: python
def get_toto(jid, node, ifrom, args):
return 'toto'
self.xmpp.plugin['xep_XXXX'].api.register(handler, 'get_toto')
Each API call will receive 4 parameters (which can be ``None`` if data
is not relevant to the operation), which are ``jid`` (``Optional[JID]``),
``node`` (``Optional[str]``), ``ifrom`` (``Optional[JID]``), and ``args``
(``Any``).
- ``jid``, if relevant, represents the JID targeted by that operation
- ``node``, if relevant is an arbitrary string, but was thought for, e.g.,
a pubsub or disco node.
- ``ifrom``, if relevant, is the JID the event is coming from.
- ``args`` is the event-specific data passed on by the plugin, often a dict
of arguments (can be None as well).
.. note::
Since 1.8.0, API calls can be coroutines.
Handler hierarchy
~~~~~~~~~~~~~~~~~
The ``self.api.register()`` signature is as follows:
.. code-block:: python
def register(handler, op, jid=None, node=None, default=False):
pass
As you can see, :meth:`~.APIRegistry.register` takes an additional ctype
parameter, but the :class:`~.APIWrapper` takes care of that for us (in most
cases, it is the name of the XEP plugin, such as ``'xep_0XXX'``).
When you register a handler, you register it for an ``op``, for **operation**.
For example, ``get_vcard``.
``handler`` and ``op`` are the only two required parameters (and in many cases,
all you will ever need). You can, however, go further and register handlers
for specific values of the ``jid`` and ``node`` parameters of the calls.
The priority of the execution of handlers is as follows:
- Check if a handler for both values of ``node`` and ``jid`` has been defined
- If not found, check if a handler for this value of ``jid`` has been defined
- If not found, check if a handler for this value of ``node`` has been defined
- If still not found, get the global handler (no parameter registered)
Raw documentation
~~~~~~~~~~~~~~~~~
This documentation is provided for reference, but :meth:`~.APIRegistry.register`
should be all you need.
.. module:: slixmpp.api
.. autoclass:: APIRegistry
:members:
.. autoclass:: APIWrapper

17
docs/api/index.rst Normal file
View File

@ -0,0 +1,17 @@
API Reference
-------------
.. toctree::
:maxdepth: 3
clientxmpp
componentxmpp
basexmpp
exceptions
xmlstream/jid
xmlstream/stanzabase
xmlstream/handler
xmlstream/matcher
xmlstream/xmlstream
xmlstream/tostring
api

View File

@ -17,6 +17,7 @@ Plugin index
xep_0049
xep_0050
xep_0054
xep_0055
xep_0059
xep_0060
xep_0065
@ -31,6 +32,7 @@ Plugin index
xep_0085
xep_0086
xep_0092
xep_0100
xep_0106
xep_0107
xep_0108
@ -62,12 +64,15 @@ Plugin index
xep_0256
xep_0257
xep_0258
xep_0264
xep_0279
xep_0280
xep_0292
xep_0297
xep_0300
xep_0308
xep_0313
xep_0317
xep_0319
xep_0332
xep_0333
@ -75,12 +80,17 @@ Plugin index
xep_0335
xep_0352
xep_0353
xep_0356
xep_0359
xep_0363
xep_0369
xep_0372
xep_0377
xep_0380
xep_0382
xep_0385
xep_0394
xep_0402
xep_0403
xep_0404
xep_0405
@ -91,6 +101,11 @@ Plugin index
xep_0428
xep_0437
xep_0439
xep_0441
xep_0444
xep_0446
xep_0447
xep_0461
xep_0469
xep_0490
xep_0492

View File

@ -1,6 +1,6 @@
XEP 0004
========
XEP-0004: Data Forms
====================
.. module:: slixmpp.plugins.xep_0004

View File

@ -1,6 +1,6 @@
XEP 0009
========
XEP-0009: Jabber-RPC
====================
.. module:: slixmpp.plugins.xep_0009

View File

@ -1,6 +1,6 @@
XEP 0012
========
XEP-0012: Last Activity
=======================
.. module:: slixmpp.plugins.xep_0012
@ -9,6 +9,44 @@ XEP 0012
:exclude-members: session_bind, plugin_init, plugin_end
.. _api-0012:
Internal API methods
--------------------
This plugin uses an in-memory storage by default to keep track of the
received and sent last activities.
.. glossary::
get_last_activity
- **jid**: :class:`~.JID` of whom to retrieve the last activity
- **node**: unused
- **ifrom**: who the request is from (None = local)
- **args**: ``None`` or an :class:`~.Iq` that is requesting the
- **returns**
information.
Get the last activity of a JID from the storage.
set_last_activity
- **jid**: :class:`~.JID` of whom to set the last activity
- **node**: unused
- **ifrom**: unused
- **args**: A dict containing ``'seconds'`` and ``'status'``
``{'seconds': Optional[int], 'status': Optional[str]}``
Set the last activity of a JID in the storage.
del_last_activity
- **jid**: :class:`~.JID` to delete from the storage
- **node**: unused
- **ifrom**: unused
- **args**: unused
Remove the last activity of a JID from the storage.
Stanza elements
---------------

View File

@ -1,6 +1,6 @@
XEP 0013
========
XEP-0013: Flexible Offline Message Retrieval
============================================
.. module:: slixmpp.plugins.xep_0013

View File

@ -1,6 +1,6 @@
XEP 0020
========
XEP-0020: Feature Negotiation
=============================
.. module:: slixmpp.plugins.xep_0020

View File

@ -1,6 +1,6 @@
XEP 0027
========
XEP-0027: Current Jabber OpenPGP Usage
======================================
.. module:: slixmpp.plugins.xep_0027
@ -9,6 +9,50 @@ XEP 0027
:exclude-members: session_bind, plugin_init, plugin_end
.. _api-0027:
Internal API methods
--------------------
The default API here is managing a JID→Keyid dict in-memory.
.. glossary::
get_keyid
- **jid**: :class:`~.JID` to get.
- **node**: unused
- **ifrom**: unused
- **args**: unused
- **returns**: ``Optional[str]``, the keyid or None
Get the KeyiD for a JID, None if it is not found.
set_keyid
- **jid**: :class:`~.JID` to set the id for.
- **node**: unused
- **ifrom**: unused
- **args**: ``str``, keyid to set
Set the KeyiD for a JID.
del_keyid
- **jid**: :class:`~.JID` to delete from the mapping.
- **node**: unused
- **ifrom**: unused
- **args**: unused
Delete the KeyiD for a JID.
get_keyids
- **jid**: unused
- **node**: unused
- **ifrom**: unused
- **args**: unused
- **returns**: ``Dict[JID, str]`` the full internal mapping
Get all currently stored KeyIDs.
Stanza elements
---------------

View File

@ -1,6 +1,6 @@
XEP 0030
========
XEP-0030: Service Discovery
===========================
.. module:: slixmpp.plugins.xep_0030
@ -9,14 +9,31 @@ XEP 0030
:exclude-members: session_bind, plugin_init, plugin_end
.. _api-0030:
Internal API Methods
--------------------
All ``api`` operations supported by the 0030 plugin are implemented as part of
the :class:`~.StaticDisco` class which implement an in-memory cache for disco
info and items.
.. automodule:: slixmpp.plugins.xep_0030.static
:members:
:member-order: bysource
Stanza elements
---------------
.. automodule:: slixmpp.plugins.xep_0030.stanza.info
:members:
:member-order: bysource
:undoc-members:
.. automodule:: slixmpp.plugins.xep_0030.stanza.items
:members:
:member-order: bysource
:undoc-members:

View File

@ -1,6 +1,6 @@
XEP 0033
========
XEP-0033: Extended Stanza Addressing
====================================
.. module:: slixmpp.plugins.xep_0033

View File

@ -1,10 +1,11 @@
XEP 0045
========
XEP-0045: Multi-User Chat
=========================
.. module:: slixmpp.plugins.xep_0045
.. autoclass:: XEP_0045
:member-order: bysource
:members:
:exclude-members: session_bind, plugin_init, plugin_end

View File

@ -1,6 +1,6 @@
XEP 0047
========
XEP-0047: In-band Bytestreams
=============================
.. module:: slixmpp.plugins.xep_0047
@ -8,6 +8,77 @@ XEP 0047
:members:
:exclude-members: session_bind, plugin_init, plugin_end
.. autoclass:: IBBytestream
:members:
.. _api-0047:
Internal API methods
--------------------
The API here is used to manage streams and authorize. The default handlers
work with the config parameters.
.. glossary::
authorized_sid (0047 version)
- **jid**: :class:`~.JID` receiving the stream initiation.
- **node**: stream id
- **ifrom**: who the stream is from.
- **args**: :class:`~.Iq` of the stream request.
- **returns**: ``True`` if the stream should be accepted,
``False`` otherwise.
Check if the stream should be accepted. Uses
the information setup by :term:`preauthorize_sid (0047 version)`
by default.
authorized (0047 version)
- **jid**: :class:`~.JID` receiving the stream initiation.
- **node**: stream id
- **ifrom**: who the stream is from.
- **args**: :class:`~.Iq` of the stream request.
- **returns**: ``True`` if the stream should be accepted,
``False`` otherwise.
A fallback handler (run after :term:`authorized_sid (0047 version)`)
to check if a stream should be accepted. Uses the ``auto_accept``
parameter by default.
preauthorize_sid (0047 version)
- **jid**: :class:`~.JID` receiving the stream initiation.
- **node**: stream id
- **ifrom**: who the stream will be from.
- **args**: Unused.
Register a stream id to be accepted automatically (called from
other plugins such as XEP-0095).
get_stream
- **jid**: :class:`~.JID` of local receiver.
- **node**: stream id
- **ifrom**: who the stream is from.
- **args**: unused
- **returns**: :class:`~.IBBytestream`
Return a currently opened stream between two JIDs.
set_stream
- **jid**: :class:`~.JID` of local receiver.
- **node**: stream id
- **ifrom**: who the stream is from.
- **args**: unused
Register an opened stream between two JIDs.
del_stream
- **jid**: :class:`~.JID` of local receiver.
- **node**: stream id
- **ifrom**: who the stream is from.
- **args**: unused
Delete a stream between two JIDs.
Stanza elements
---------------

View File

@ -1,6 +1,6 @@
XEP 0049
========
XEP-0049: Private XML Storage
=============================
.. module:: slixmpp.plugins.xep_0049

View File

@ -1,6 +1,6 @@
XEP 0050
========
XEP-0050: Ad-Hoc Commands
=========================
.. module:: slixmpp.plugins.xep_0050

View File

@ -1,6 +1,6 @@
XEP 0054
========
XEP-0054: vcard-temp
====================
.. module:: slixmpp.plugins.xep_0054
@ -8,6 +8,40 @@ XEP 0054
:members:
:exclude-members: session_bind, plugin_init, plugin_end
.. _api-0054:
Internal API methods
--------------------
This plugin maintains by default an in-memory cache of the received
VCards.
.. glossary::
set_vcard
- **jid**: :class:`~.JID` of whom to set the vcard
- **node**: unused
- **ifrom**: unused
- **args**: :class:`~.VCardTemp` object to store for this JID.
Set a VCard for a JID.
get_vcard
- **jid**: :class:`~.JID` of whom to set the vcard
- **node**: unused
- **ifrom**: :class:`~.JID` the request is coming from
- **args**: unused
- **returns**: :class:`~.VCardTemp` object for this JID or None.
Get a stored VCard for a JID.
del_vcard
- **jid**: :class:`~.JID` of whom to set the vcard
- **node**: unused
- **ifrom**: unused
- **args**: unused
Delete a stored VCard for a JID.
Stanza elements
---------------

View File

@ -0,0 +1,18 @@
XEP-0055: Jabber search
=======================
.. module:: slixmpp.plugins.xep_0055
.. autoclass:: XEP_0055
:members:
:exclude-members: session_bind, plugin_init, plugin_end
Stanza elements
---------------
.. automodule:: slixmpp.plugins.xep_0055.stanza
:members:
:undoc-members:

View File

@ -1,6 +1,6 @@
XEP 0059
========
XEP-0059: Result Set Management
===============================
.. module:: slixmpp.plugins.xep_0059
@ -8,6 +8,9 @@ XEP 0059
:members:
:exclude-members: session_bind, plugin_init, plugin_end
.. autoclass:: ResultIterator
:members:
:member-order: bysource
Stanza elements
---------------

View File

@ -1,6 +1,6 @@
XEP 0060
========
XEP-0060: Publish-Subscribe
===========================
.. module:: slixmpp.plugins.xep_0060

View File

@ -1,6 +1,6 @@
XEP 0065
========
XEP-0065: SOCKS5 Bytestreams
============================
.. module:: slixmpp.plugins.xep_0065
@ -8,6 +8,48 @@ XEP 0065
:members:
:exclude-members: session_bind, plugin_init, plugin_end
.. _api-0065:
Internal API methods
--------------------
The internal API is used here to authorize or pre-authorize streams.
.. glossary::
authorized_sid (0065 version)
- **jid**: :class:`~.JID` receiving the stream initiation.
- **node**: stream id
- **ifrom**: who the stream is from.
- **args**: :class:`~.Iq` of the stream request.
- **returns**: ``True`` if the stream should be accepted,
``False`` otherwise.
Check if the stream should be accepted. Uses
the information setup by :term:`preauthorize_sid (0065 version)`
by default.
authorized (0065 version)
- **jid**: :class:`~.JID` receiving the stream initiation.
- **node**: stream id
- **ifrom**: who the stream is from.
- **args**: :class:`~.Iq` of the stream request.
- **returns**: ``True`` if the stream should be accepted,
``False`` otherwise.
A fallback handler (run after :term:`authorized_sid (0065 version)`)
to check if a stream should be accepted. Uses the ``auto_accept``
parameter by default.
preauthorize_sid (0065 version)
- **jid**: :class:`~.JID` receiving the stream initiation.
- **node**: stream id
- **ifrom**: who the stream will be from.
- **args**: Unused.
Register a stream id to be accepted automatically (called from
other plugins such as XEP-0095).
Stanza elements
---------------

View File

@ -1,6 +1,6 @@
XEP 0066
========
XEP-0066: Out of Band Data
==========================
.. module:: slixmpp.plugins.xep_0066

View File

@ -1,6 +1,6 @@
XEP 0070
========
XEP-0070: Verifying HTTP Requests via XMPP
==========================================
.. module:: slixmpp.plugins.xep_0070

View File

@ -1,6 +1,6 @@
XEP 0071
========
XEP-0071: XHTML-IM
==================
.. module:: slixmpp.plugins.xep_0071

View File

@ -1,6 +1,6 @@
XEP 0077
========
XEP-0077: In-Band Registration
==============================
.. module:: slixmpp.plugins.xep_0077
@ -8,6 +8,53 @@ XEP 0077
:members:
:exclude-members: session_bind, plugin_init, plugin_end
Internal APi methods
--------------------
The API here is made to allow components to manage registered users.
The default handlers make use of the plugin options and store users
in memory.
.. glossary::
user_get
- **jid**: unused
- **node**: unused
- **ifrom**: who the request is coming from
- **args**: :class:`~.Iq` registration request.
- **returns**: ``dict`` containing user data or None.
Get user data for a user.
user_validate
- **jid**: unused
- **node**: unused
- **ifrom**: who the request is coming from
- **args**: :class:`~.Iq` registration request, 'register' payload.
- **raises**: ValueError if some fields are invalid
Validate form fields and save user data.
user_remove
- **jid**: unused
- **node**: unused
- **ifrom**: who the request is coming from
- **args**: :class:`~.Iq` registration removal request.
- **raises**: KeyError if the user is not found.
Remove a user from the store.
make_registration_form
- **jid**: unused
- **node**: unused
- **ifrom**: who the request is coming from
- **args**: :class:`~.Iq` registration request.
- **raises**: KeyError if the user is not found.
Return an :class:`~.Iq` reply for the request, with a form and
options set. By default, use ``form_fields`` and ``form_instructions``
plugin config options.
Stanza elements
---------------

View File

@ -1,6 +1,6 @@
XEP 0079
========
XEP-0079: Advanced Message Processing
=====================================
.. module:: slixmpp.plugins.xep_0079

View File

@ -1,6 +1,6 @@
XEP 0080
========
XEP-0080: User Location
=======================
.. module:: slixmpp.plugins.xep_0080

View File

@ -1,6 +1,6 @@
XEP 0082
========
XEP-0082: XMPP Date and Time Profiles
=====================================
.. module:: slixmpp.plugins.xep_0082

View File

@ -1,6 +1,6 @@
XEP 0084
========
XEP-0084: User Avatar
=====================
.. module:: slixmpp.plugins.xep_0084

View File

@ -1,6 +1,6 @@
XEP 0085
========
XEP-0085: Chat State Notifications
==================================
.. module:: slixmpp.plugins.xep_0085

View File

@ -1,6 +1,6 @@
XEP 0086
========
XEP-0086: Error Condition Mappings
==================================
.. module:: slixmpp.plugins.xep_0086

View File

@ -1,6 +1,6 @@
XEP 0092
========
XEP-0092: Software Version
==========================
.. module:: slixmpp.plugins.xep_0092

View File

@ -0,0 +1,9 @@
XEP-0100: Gateway interaction
=============================
.. module:: slixmpp.plugins.xep_0100
.. autoclass:: XEP_0100
:members:
:exclude-members: session_bind, plugin_init, plugin_end

View File

@ -1,6 +1,6 @@
XEP 0106
========
XEP-0106: JID Escaping
======================
.. module:: slixmpp.plugins.xep_0106

View File

@ -1,6 +1,6 @@
XEP 0107
========
XEP-0107: User Mood
===================
.. module:: slixmpp.plugins.xep_0107

View File

@ -1,6 +1,6 @@
XEP 0108
========
XEP-0108: User Activity
=======================
.. module:: slixmpp.plugins.xep_0108

View File

@ -1,6 +1,6 @@
XEP 0115
========
XEP-0115: Entity Capabilities
=============================
.. module:: slixmpp.plugins.xep_0115
@ -8,6 +8,54 @@ XEP 0115
:members:
:exclude-members: session_bind, plugin_init, plugin_end
.. _api-0115:
Internal API methods
--------------------
This internal API extends the Disco internal API, and also manages an
in-memory cache of verstring→disco info, and fulljid→verstring.
.. glossary::
cache_caps
- **jid**: unused
- **node**: unused
- **ifrom**: unused
- **args**: a ``dict`` containing the verstring and
:class:`~.DiscoInfo` payload (
``{'verstring': Optional[str], 'info': Optional[DiscoInfo]}``)
Cache a verification string with its payload.
get_caps
- **jid**: JID to retrieve the verstring for (unused with the default
handler)
- **node**: unused
- **ifrom**: unused
- **args**: a ``dict`` containing the verstring
``{'verstring': str}``
- **returns**: The :class:`~.DiscoInfo` payload for that verstring.
Get a disco payload from a verstring.
assign_verstring
- **jid**: :class:`~.JID` (full) to assign the verstring to
- **node**: unused
- **ifrom**: unused
- **args**: a ``dict`` containing the verstring
``{'verstring': str}``
Cache JID→verstring information.
get_verstring
- **jid**: :class:`~.JID` to use for fetching the verstring
- **node**: unused
- **ifrom**: unused
- **args**: unused
- **returns**: ``str``, the verstring
Retrieve a verstring for a JID.
Stanza elements
---------------

View File

@ -1,6 +1,6 @@
XEP 0118
========
XEP-0118: User Tune
===================
.. module:: slixmpp.plugins.xep_0118

View File

@ -1,6 +1,6 @@
XEP 0122
========
XEP-0122: Data Forms Validation
===============================
.. module:: slixmpp.plugins.xep_0122

View File

@ -1,9 +1,44 @@
XEP 0128
========
XEP-0128: Service Discovery Extensions
======================================
.. module:: slixmpp.plugins.xep_0128
.. autoclass:: XEP_0128
:members:
:exclude-members: session_bind, plugin_init, plugin_end
.. _api-0128:
Internal API methods
--------------------
.. glossary::
add_extended_info
- **jid**: JID to set the extended info for
- **node**: note to set the info at
- **ifrom**: unused
- **args**: A :class:`~.Form` or list of forms to add to the disco
extended info for this JID/node.
Add extended info for a JID/node.
set_extended_info
- **jid**: JID to set the extended info for
- **node**: note to set the info at
- **ifrom**: unused
- **args**: A :class:`~.Form` or list of forms to set as the disco
extended info for this JID/node.
Set extended info for a JID/node.
del_extended_info
- **jid**: JID to delete the extended info from
- **node**: note to delete the info from
- **ifrom**: unused
- **args**: unused
Delete extended info for a JID/node.

View File

@ -1,6 +1,6 @@
XEP 0131
========
XEP-0131: Stanza Headers and Internet Metadata
==============================================
.. module:: slixmpp.plugins.xep_0131

View File

@ -1,6 +1,6 @@
XEP 0133
========
XEP-0133: Service Administration
================================
.. module:: slixmpp.plugins.xep_0133

View File

@ -1,6 +1,6 @@
XEP 0152
========
XEP-0152: Reachability Addresses
================================
.. module:: slixmpp.plugins.xep_0152

View File

@ -1,6 +1,6 @@
XEP 0153
========
XEP-0153: vCard-Based Avatars
=============================
.. module:: slixmpp.plugins.xep_0153
@ -8,6 +8,43 @@ XEP 0153
:members:
:exclude-members: session_bind, plugin_init, plugin_end
.. _api-0153:
Internal API methods
--------------------
The internal API is used here to maintain an in-memory JID→avatar hash
cache.
.. glossary::
set_hash
- **jid**: :class:`~.JID` of whom to retrieve the last activity
- **node**: unused
- **ifrom**: unused
- **args**: ``str``, avatar hash
Set the avatar hash for a JID.
reset_hash
- **jid**: :class:`~.JID` of whom to retrieve the last activity
- **node**: unused
- **ifrom**: :class:`~.JID` of the entity requesting the reset.
- **args**: unused
- **returns**
information.
Reset the avatar hash for a JID. This downloads the vcard and computes
the hash.
get_hash
- **jid**: :class:`~.JID` of whom to retrieve the last activity
- **node**: unused
- **ifrom**: unused
- **args**: unused
- **returns**: ``Optional[str]``, the avatar hash
Get the avatar hash for a JID.
Stanza elements
---------------

View File

@ -1,6 +1,6 @@
XEP 0163
========
XEP-0163: Personal Eventing Protocol (PEP)
==========================================
.. module:: slixmpp.plugins.xep_0163

View File

@ -1,6 +1,6 @@
XEP 0172
========
XEP-0172: User Nickname
=======================
.. module:: slixmpp.plugins.xep_0172

View File

@ -1,6 +1,6 @@
XEP 0184
========
XEP-0184: Message Delivery Receipts
===================================
.. module:: slixmpp.plugins.xep_0184

View File

@ -1,6 +1,6 @@
XEP 0186
========
XEP-0186: Invisible Command
===========================
.. module:: slixmpp.plugins.xep_0186

View File

@ -1,6 +1,6 @@
XEP 0191
========
XEP-0191: Blocking Command
==========================
.. module:: slixmpp.plugins.xep_0191

View File

@ -1,6 +1,6 @@
XEP 0196
========
XEP-0196: User Gaming
=====================
.. module:: slixmpp.plugins.xep_0196

View File

@ -1,6 +1,6 @@
XEP 0198
========
XEP-0198: Stream Management
===========================
.. module:: slixmpp.plugins.xep_0198

View File

@ -1,6 +1,6 @@
XEP 0199
========
XEP-0199: XMPP Ping
===================
.. module:: slixmpp.plugins.xep_0199

View File

@ -1,6 +1,6 @@
XEP 0202
========
XEP-0202: Entity Time
=====================
.. module:: slixmpp.plugins.xep_0202

View File

@ -1,6 +1,6 @@
XEP 0203
========
XEP-0203: Delayed Delivery
==========================
.. module:: slixmpp.plugins.xep_0203

View File

@ -1,6 +1,6 @@
XEP 0221
========
XEP-0221: Data Forms Media Element
==================================
.. module:: slixmpp.plugins.xep_0221

View File

@ -1,6 +1,6 @@
XEP 0222
========
XEP-0222: Persistent Storage of Public Data via PubSub
======================================================
.. module:: slixmpp.plugins.xep_0222

View File

@ -1,6 +1,6 @@
XEP 0223
========
XEP-0223: Persistent Storage of Private Data via PubSub
=======================================================
.. module:: slixmpp.plugins.xep_0223

View File

@ -1,6 +1,6 @@
XEP 0224
========
XEP-0224: Attention
===================
.. module:: slixmpp.plugins.xep_0224

View File

@ -1,6 +1,6 @@
XEP 0231
========
XEP-0231: Bits of Binary
========================
.. module:: slixmpp.plugins.xep_0231
@ -8,6 +8,41 @@ XEP 0231
:members:
:exclude-members: session_bind, plugin_init, plugin_end
.. _api-0231:
Internal API methods
--------------------
The default API handlers for this plugin manage an in-memory cache of
bits of binary by content-id.
.. glossary::
set_bob
- **jid**: :class:`~.JID` sending the bob
- **node**: unused
- **ifrom**: :class:`~JID` receiving the bob
- **args**: :class:`~.BitsOfBinary` element.
Set a BoB in the cache.
get_bob
- **jid**: :class:`~.JID` receiving the bob
- **node**: unused
- **ifrom**: :class:`~JID` sending the bob
- **args**: ``str`` content-id of the bob
- **returns**: :class:`~.BitsOfBinary` element.
Get a BoB from the cache.
del_bob
- **jid**: unused
- **node**: unused
- **ifrom**: :class:`~JID` sending the bob
- **args**: ``str`` content-id of the bob
Delete a BoB from the cache.
Stanza elements
---------------

View File

@ -1,6 +1,6 @@
XEP 0235
========
XEP-0235: OAuth Over XMPP
=========================
.. module:: slixmpp.plugins.xep_0235

View File

@ -1,6 +1,6 @@
XEP 0249
========
XEP-0249: Direct MUC Invitations
================================
.. module:: slixmpp.plugins.xep_0249

View File

@ -1,6 +1,6 @@
XEP 0256
========
XEP-0256: Last Activity in Presence
===================================
.. module:: slixmpp.plugins.xep_0256

View File

@ -1,6 +1,6 @@
XEP 0257
========
XEP-0257: Client Certificate Management for SASL EXTERNAL
=========================================================
.. module:: slixmpp.plugins.xep_0257

View File

@ -1,6 +1,6 @@
XEP 0258
========
XEP-0258: Security Labels in XMPP
=================================
.. module:: slixmpp.plugins.xep_0258

View File

@ -0,0 +1,18 @@
XEP-0264: Jingle Content Thumbnails
===================================
.. module:: slixmpp.plugins.xep_0264
.. autoclass:: XEP_0264
:members:
:exclude-members: session_bind, plugin_init, plugin_end
Stanza elements
---------------
.. automodule:: slixmpp.plugins.xep_0264.stanza
:members:
:undoc-members:

View File

@ -1,6 +1,6 @@
XEP 0279
========
XEP-0279: Server IP Check
=========================
.. module:: slixmpp.plugins.xep_0279

View File

@ -1,6 +1,6 @@
XEP 0280
========
XEP-0280: Message Carbons
=========================
.. module:: slixmpp.plugins.xep_0280

View File

@ -0,0 +1,17 @@
XEP-0292: vCard4 Over XMPP
==========================
.. module:: slixmpp.plugins.xep_0292
.. autoclass:: XEP_0292
:members:
:exclude-members: plugin_init, plugin_end
Stanza elements
---------------
.. automodule:: slixmpp.plugins.xep_0292.stanza
:members:
:undoc-members:

View File

@ -1,6 +1,6 @@
XEP 0297
========
XEP-0297: Stanza Forwarding
===========================
.. module:: slixmpp.plugins.xep_0297

View File

@ -1,6 +1,6 @@
XEP 0300
========
XEP-0300: Use of Cryptographic Hash Functions in XMPP
=====================================================
.. module:: slixmpp.plugins.xep_0300

View File

@ -1,6 +1,6 @@
XEP 0308
========
XEP-0308: Last Message Correction
=================================
.. module:: slixmpp.plugins.xep_0308

View File

@ -1,6 +1,6 @@
XEP 0313
========
XEP-0313: Message Archive Management
====================================
.. module:: slixmpp.plugins.xep_0313
@ -14,5 +14,6 @@ Stanza elements
.. automodule:: slixmpp.plugins.xep_0313.stanza
:members:
:member-order: bysource
:undoc-members:

Some files were not shown because too many files have changed in this diff Show More