Compare commits

...

281 Commits

Author SHA1 Message Date
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
622 changed files with 11616 additions and 8615 deletions

2
.gitignore vendored
View File

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

View File

@@ -1,7 +1,17 @@
stages:
- lint
- test
- trigger
mypy:
stage: lint
tags:
- docker
image: python:3
script:
- pip3 install mypy
- mypy slixmpp
test:
stage: test
tags:
@@ -13,6 +23,29 @@ test:
- pip3 install emoji aiohttp
- ./run_tests.py
test-3.10:
stage: test
tags:
- docker
image: python:3.10
script:
- apt update
- apt install -y python3 python3-pip cython3 gpg
- pip3 install emoji aiohttp
- ./run_tests.py
test-3.11:
stage: test
tags:
- docker
image: python:3.11-rc
allow_failure: true
script:
- apt update
- apt install -y python3 python3-pip cython3 gpg
- pip3 install emoji aiohttp
- ./run_tests.py
test_integration:
stage: test
tags:
@@ -32,6 +65,6 @@ trigger_poezio:
stage: trigger
tags:
- docker
image: appropriate/curl:latest
image: curlimages/curl:7.79.1
script:
- curl --request POST -F token="$SLIXMPP_TRIGGER_TOKEN" -F ref=master https://lab.louiz.org/api/v4/projects/18/trigger/pipeline

View File

@@ -1002,7 +1002,21 @@
<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://lab.louiz.org/poezio/slixmpp/-/archive/slix-1.7.0/slixmpp-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://lab.louiz.org/poezio/slixmpp/-/archive/slix-1.7.1/slixmpp-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://lab.louiz.org/poezio/slixmpp/-/archive/slix-1.8.0/slixmpp-slix-1.8.0.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

@@ -75,6 +75,7 @@ Plugin index
xep_0335
xep_0352
xep_0353
xep_0356
xep_0359
xep_0363
xep_0369
@@ -91,6 +92,5 @@ Plugin index
xep_0428
xep_0437
xep_0439
xep_0441
xep_0444

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

@@ -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-0106: 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

@@ -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

@@ -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:

View File

@@ -1,6 +1,6 @@
XEP 0319
========
XEP-0319: Last User Interaction in Presence
===========================================
.. module:: slixmpp.plugins.xep_0319
@@ -9,6 +9,33 @@ XEP 0319
:exclude-members: session_bind, plugin_init, plugin_end
.. _api-0319:
Internal API methods
--------------------
The default API manages an in-memory cache of idle periods.
.. glossary::
set_idle
- **jid**: :class:`~.JID` who has been idling
- **node**: unused
- **ifrom**: unused
- **args**: :class:`datetime`, timestamp of the idle start
Set the idle start for a JID.
get_idle
- **jid**: :class:`~.JID` to get the idle time of
- **node**: unused
- **ifrom**: unused
- **args**: : unused
- **returns**: :class:`datetime`
Get the idle start timestamp for a JID.
Stanza elements
---------------

View File

@@ -1,6 +1,6 @@
XEP 0332
========
XEP-0332: HTTP over XMPP transport
==================================
.. module:: slixmpp.plugins.xep_0332

View File

@@ -1,6 +1,6 @@
XEP 0333
========
XEP-0333: Chat Markers
======================
.. module:: slixmpp.plugins.xep_0333

View File

@@ -1,6 +1,6 @@
XEP 0334
========
XEP-0334: Message Processing Hints
==================================
.. module:: slixmpp.plugins.xep_0334

View File

@@ -1,6 +1,6 @@
XEP 0335
========
XEP-0335: JSON Containers
=========================
.. module:: slixmpp.plugins.xep_0335

View File

@@ -1,6 +1,6 @@
XEP 0352
========
XEP-0352: Client State Indication
=================================
.. module:: slixmpp.plugins.xep_0352

View File

@@ -1,6 +1,6 @@
XEP 0353
========
XEP-0353: Jingle Message Initiation
===================================
.. module:: slixmpp.plugins.xep_0353

View File

@@ -0,0 +1,17 @@
XEP-0356: Privileged Entity
===========================
.. module:: slixmpp.plugins.xep_0356
.. autoclass:: XEP_0356
:members:
:exclude-members: session_bind, plugin_init, plugin_end
Stanza elements
---------------
.. automodule:: slixmpp.plugins.xep_0356.stanza
:members:
:undoc-members:

View File

@@ -1,6 +1,6 @@
XEP 0359
========
XEP-0359: Unique and Stable Stanza IDs
======================================
.. module:: slixmpp.plugins.xep_0359

View File

@@ -1,6 +1,6 @@
XEP 0363
========
XEP-0363: HTTP File Upload
==========================
.. module:: slixmpp.plugins.xep_0363
@@ -8,6 +8,12 @@ XEP 0363
:members:
:exclude-members: session_bind, plugin_init, plugin_end
.. autoclass:: UploadServiceNotFound
.. autoclass:: FileTooBig
.. autoclass:: HTTPError
Stanza elements
---------------

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