{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.cHX0vkvS/b1/slidge_0.1.0-1_armhf.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.cHX0vkvS/b2/slidge_0.1.0-1_armhf.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,3 +1,3 @@\n \n- 96f4513caa28f983a15d735bcc75979e 2112696 python optional python-slidge-doc_0.1.0-1_all.deb\n+ 3c76d11c6b3f0421251226d21fd33055 2110796 python optional python-slidge-doc_0.1.0-1_all.deb\n 7eda4aa03806b6edc9aeeda7a0406c27 109436 python optional python3-slidge_0.1.0-1_all.deb\n"}, {"source1": "python-slidge-doc_0.1.0-1_all.deb", "source2": "python-slidge-doc_0.1.0-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2024-04-09 06:27:33.000000 debian-binary\n--rw-r--r-- 0 0 0 5752 2024-04-09 06:27:33.000000 control.tar.xz\n--rw-r--r-- 0 0 0 2106752 2024-04-09 06:27:33.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 5764 2024-04-09 06:27:33.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 2104840 2024-04-09 06:27:33.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./control", "source2": "./control", "unified_diff": "@@ -1,13 +1,13 @@\n Package: python-slidge-doc\n Source: slidge\n Version: 0.1.0-1\n Architecture: all\n Maintainer: Debian XMPP Maintainers \n-Installed-Size: 6720\n+Installed-Size: 6578\n Depends: libjs-sphinxdoc (>= 7.2.2)\n Section: python\n Priority: optional\n Multi-Arch: foreign\n Homepage: https://slidge.im/\n Description: XMPP puppeteer gateway library in Python (documentation)\n Slidge makes writing gateways to other chat networks (legacy modules)\n"}, {"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -43,16 +43,16 @@\n -rw-r--r-- 0 root (0) root (0) 6295 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/register/\n -rw-r--r-- 0 root (0) root (0) 1654 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/register/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/user/\n -rw-r--r-- 0 root (0) root (0) 8159 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/user/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/contact/\n--rw-r--r-- 0 root (0) root (0) 15583 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/contact/index.rst.txt\n--rw-r--r-- 0 root (0) root (0) 18405 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/index.rst.txt\n+-rw-r--r-- 0 root (0) root (0) 6247 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/contact/index.rst.txt\n+-rw-r--r-- 0 root (0) root (0) 9069 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/roster/\n -rw-r--r-- 0 root (0) root (0) 3273 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/roster/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/cache/\n -rw-r--r-- 0 root (0) root (0) 293 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/cache/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/config/\n -rw-r--r-- 0 root (0) root (0) 105 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/config/index.rst.txt\n@@ -221,16 +221,16 @@\n -rw-r--r-- 0 root (0) root (0) 61549 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/register/\n -rw-r--r-- 0 root (0) root (0) 26585 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/register/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/user/\n -rw-r--r-- 0 root (0) root (0) 65296 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/user/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/contact/\n--rw-r--r-- 0 root (0) root (0) 89249 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/contact/index.html\n--rw-r--r-- 0 root (0) root (0) 99409 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/index.html\n+-rw-r--r-- 0 root (0) root (0) 36508 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/contact/index.html\n+-rw-r--r-- 0 root (0) root (0) 47360 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/roster/\n -rw-r--r-- 0 root (0) root (0) 29300 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/roster/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/cache/\n -rw-r--r-- 0 root (0) root (0) 17584 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/cache/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/config/\n -rw-r--r-- 0 root (0) root (0) 15828 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/config/index.html\n@@ -280,26 +280,26 @@\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/mixins/presence/\n -rw-r--r-- 0 root (0) root (0) 16017 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/mixins/presence/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/mixins/recipient/\n -rw-r--r-- 0 root (0) root (0) 16024 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/mixins/recipient/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/pubsub/\n -rw-r--r-- 0 root (0) root (0) 15828 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/pubsub/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/session/\n--rw-r--r-- 0 root (0) root (0) 81486 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/session/index.html\n+-rw-r--r-- 0 root (0) root (0) 81334 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/session/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/archive/\n -rw-r--r-- 0 root (0) root (0) 18348 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/archive/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/bookmarks/\n -rw-r--r-- 0 root (0) root (0) 23050 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/bookmarks/index.html\n -rw-r--r-- 0 root (0) root (0) 69337 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/participant/\n -rw-r--r-- 0 root (0) root (0) 23288 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/participant/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/room/\n -rw-r--r-- 0 root (0) root (0) 53571 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/room/index.html\n--rw-r--r-- 0 root (0) root (0) 160027 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/index.html\n+-rw-r--r-- 0 root (0) root (0) 159881 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/migration/\n -rw-r--r-- 0 root (0) root (0) 15688 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/migration/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/\n -rw-r--r-- 0 root (0) root (0) 18418 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/link_preview/\n -rw-r--r-- 0 root (0) root (0) 15891 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/link_preview/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/link_preview/link_preview/\n@@ -322,38 +322,38 @@\n -rw-r--r-- 0 root (0) root (0) 200952 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/util/test/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/util/types/\n -rw-r--r-- 0 root (0) root (0) 69813 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/util/types/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/util/util/\n -rw-r--r-- 0 root (0) root (0) 48331 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/util/util/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/contact/\n--rw-r--r-- 0 root (0) root (0) 97797 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/contact/index.html\n+-rw-r--r-- 0 root (0) root (0) 97435 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/contact/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/gateway/\n -rw-r--r-- 0 root (0) root (0) 76788 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/gateway/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/group/\n--rw-r--r-- 0 root (0) root (0) 117648 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/group/index.html\n+-rw-r--r-- 0 root (0) root (0) 117286 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/group/index.html\n -rw-r--r-- 0 root (0) root (0) 18059 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/legacy_client/\n -rw-r--r-- 0 root (0) root (0) 15738 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/legacy_client/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/session/\n--rw-r--r-- 0 root (0) root (0) 82001 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/session/index.html\n+-rw-r--r-- 0 root (0) root (0) 81842 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/session/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/util/\n -rw-r--r-- 0 root (0) root (0) 15675 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/util/index.html\n -rw-r--r-- 0 root (0) root (0) 21932 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/contributing.html\n -rw-r--r-- 0 root (0) root (0) 24720 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/design.html\n -rw-r--r-- 0 root (0) root (0) 16277 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/howto.html\n -rw-r--r-- 0 root (0) root (0) 18679 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/index.html\n -rw-r--r-- 0 root (0) root (0) 32866 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/tutorial.html\n--rw-r--r-- 0 root (0) root (0) 214435 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/genindex.html\n+-rw-r--r-- 0 root (0) root (0) 207271 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/genindex.html\n -rw-r--r-- 0 root (0) root (0) 20735 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/glossary.html\n--rw-r--r-- 0 root (0) root (0) 100665 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/index.html\n--rw-r--r-- 0 root (0) root (0) 11227 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/objects.inv\n+-rw-r--r-- 0 root (0) root (0) 95146 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/index.html\n+-rw-r--r-- 0 root (0) root (0) 10991 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/objects.inv\n -rw-r--r-- 0 root (0) root (0) 31403 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/py-modindex.html\n -rw-r--r-- 0 root (0) root (0) 15250 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/search.html\n--rw-r--r-- 0 root (0) root (0) 248762 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/searchindex.js\n+-rw-r--r-- 0 root (0) root (0) 241092 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/searchindex.js\n drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/\n -rw-r--r-- 0 root (0) root (0) 20135 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/commands.html\n -rw-r--r-- 0 root (0) root (0) 17984 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/contacts.html\n -rw-r--r-- 0 root (0) root (0) 20204 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/index.html\n -rw-r--r-- 0 root (0) root (0) 17322 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/low_profile.html\n -rw-r--r-- 0 root (0) root (0) 16204 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/note.html\n -rw-r--r-- 0 root (0) root (0) 20373 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/register.html\n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/contact/index.rst.txt", "source2": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/contact/index.rst.txt", "unified_diff": "@@ -55,34 +55,14 @@\n This will use :xep:`0363` to impersonate the XMPP user in order.\n \n .. py:property:: name\n \n Friendly name of the contact, as it should appear in the user's roster\n \n \n- .. py:property:: avatar_id\n- :type: Optional[slidge.util.types.AvatarIdType]\n-\n- The unique ID of this entity's avatar.\n-\n-\n- .. py:property:: avatar\n- :type: Optional[slidge.util.types.AvatarIdType]\n-\n- This property can be used to set the avatar, but\n- :py:meth:`~.AvatarMixin.set_avatar()` should be preferred because you can\n- provide a unique ID for the avatar for efficient caching.\n- Setting this is OKish in case the avatar type is a URL or a local path\n- that can act as a legacy ID.\n-\n- Python's ``property`` is abused here to maintain backwards\n- compatibility, but when getting it you actually get the avatar legacy\n- ID.\n-\n-\n .. py:attribute:: RESOURCE\n :type: str\n :value: 'slidge'\n \n A full JID, including a resource part is required for chat states (and maybe other stuff)\n to work properly. This is the name of the resource the contacts will use.\n \n@@ -207,226 +187,8 @@\n \n It the legacy network doesn't like that you fetch too many profiles on startup,\n it's also possible to fetch it here, which will be called when XMPP clients\n of the user request the vcard, if it hasn't been fetched before\n :return:\n \n \n- .. py:method:: set_avatar(a, avatar_unique_id = None, blocking=False, cancel=True)\n- :async:\n-\n- Set an avatar for this entity\n-\n- :param a:\n- :param avatar_unique_id:\n- :param blocking:\n- :param cancel:\n-\n-\n- .. py:method:: invite_to(muc, reason = None, password = None, **send_kwargs)\n-\n- Send an invitation to join a group (:xep:`0249`) from this :term:`XMPP Entity`.\n-\n- :param muc: the muc the user is invited to\n- :param reason: a text explaining why the user should join this muc\n- :param password: maybe this will make sense later? not sure\n- :param send_kwargs: additional kwargs to be passed to _send()\n- (internal use by slidge)\n-\n-\n- .. py:method:: active(**kwargs)\n-\n- Send an \"active\" chat state (:xep:`0085`) from this\n- :term:`XMPP Entity`.\n-\n-\n- .. py:method:: composing(**kwargs)\n-\n- Send a \"composing\" (ie \"typing notification\") chat state (:xep:`0085`)\n- from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: paused(**kwargs)\n-\n- Send a \"paused\" (ie \"typing paused notification\") chat state\n- (:xep:`0085`) from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: inactive(**kwargs)\n-\n- Send an \"inactive\" (ie \"contact has not interacted with the chat session\n- interface for an intermediate period of time\") chat state (:xep:`0085`)\n- from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: gone(**kwargs)\n-\n- Send a \"gone\" (ie \"contact has not interacted with the chat session interface,\n- system, or device for a relatively long period of time\") chat state\n- (:xep:`0085`) from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: send_text(body, legacy_msg_id = None, *, when = None, reply_to = None, thread = None, hints = None, carbon=False, archive_only=False, correction=False, correction_event_id = None, link_previews = None, **send_kwargs)\n-\n- Send a text message from this :term:`XMPP Entity`.\n-\n- :param body: Content of the message\n- :param legacy_msg_id: If you want to be able to transport read markers from the gateway\n- user to the legacy network, specify this\n- :param when: when the message was sent, for a \"delay\" tag (:xep:`0203`)\n- :param reply_to: Quote another message (:xep:`0461`)\n- :param hints:\n- :param thread:\n- :param carbon: (only used if called on a :class:`LegacyContact`)\n- Set this to ``True`` if this is actually a message sent **to** the\n- :class:`LegacyContact` by the :term:`User`.\n- Use this to synchronize outgoing history for legacy official apps.\n- :param correction: whether this message is a correction or not\n- :param correction_event_id: in the case where an ID is associated with the legacy\n- 'correction event', specify it here to use it on the XMPP side. If not specified,\n- a random ID will be used.\n- :param link_previews: A little of sender (or server, or gateway)-generated\n- previews of URLs linked in the body.\n- :param archive_only: (only in groups) Do not send this message to user,\n- but store it in the archive. Meant to be used during ``MUC.backfill()``\n-\n-\n- .. py:method:: correct(legacy_msg_id, new_text, *, when = None, reply_to = None, thread = None, hints = None, carbon=False, archive_only=False, correction_event_id = None, link_previews = None, **send_kwargs)\n-\n- Modify a message that was previously sent by this :term:`XMPP Entity`.\n-\n- Uses last message correction (:xep:`0308`)\n-\n- :param new_text: New content of the message\n- :param legacy_msg_id: The legacy message ID of the message to correct\n- :param when: when the message was sent, for a \"delay\" tag (:xep:`0203`)\n- :param reply_to: Quote another message (:xep:`0461`)\n- :param hints:\n- :param thread:\n- :param carbon: (only in 1:1) Reflect a message sent to this ``Contact`` by the user.\n- Use this to synchronize outgoing history for legacy official apps.\n- :param archive_only: (only in groups) Do not send this message to user,\n- but store it in the archive. Meant to be used during ``MUC.backfill()``\n- :param correction_event_id: in the case where an ID is associated with the legacy\n- 'correction event', specify it here to use it on the XMPP side. If not specified,\n- a random ID will be used.\n- :param link_previews: A little of sender (or server, or gateway)-generated\n- previews of URLs linked in the body.\n-\n-\n- .. py:method:: react(legacy_msg_id, emojis = (), thread = None, **kwargs)\n-\n- Send a reaction (:xep:`0444`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: The message which the reaction refers to.\n- :param emojis: An iterable of emojis used as reactions\n- :param thread:\n-\n-\n- .. py:method:: retract(legacy_msg_id, thread = None, **kwargs)\n-\n- Send a message retraction (:XEP:`0424`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: Legacy ID of the message to delete\n- :param thread:\n-\n-\n- .. py:method:: send_file(file_path = None, legacy_msg_id = None, *, data_stream = None, data = None, file_url = None, file_name = None, content_type = None, reply_to = None, when = None, caption = None, legacy_file_id = None, thread = None, **kwargs)\n- :async:\n-\n- Send a single file from this :term:`XMPP Entity`.\n-\n- :param file_path: Path to the attachment\n- :param data_stream: Alternatively, a stream of bytes (such as a File object)\n- :param data: Alternatively, a bytes object\n- :param file_url: Alternatively, a URL\n- :param file_name: How the file should be named.\n- :param content_type: MIME type, inferred from filename if not given\n- :param legacy_msg_id: If you want to be able to transport read markers from the gateway\n- user to the legacy network, specify this\n- :param reply_to: Quote another message (:xep:`0461`)\n- :param when: when the file was sent, for a \"delay\" tag (:xep:`0203`)\n- :param caption: an optional text that is linked to the file\n- :param legacy_file_id: A unique identifier for the file on the legacy network.\n- Plugins should try their best to provide it, to avoid duplicates.\n- :param thread:\n-\n-\n- .. py:method:: ack(legacy_msg_id, **kwargs)\n-\n- Send an \"acknowledged\" message marker (:xep:`0333`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: The message this marker refers to\n-\n-\n- .. py:method:: received(legacy_msg_id, **kwargs)\n-\n- Send a \"received\" message marker (:xep:`0333`) from this :term:`XMPP Entity`.\n- If called on a :class:`LegacyContact`, also send a delivery receipt\n- marker (:xep:`0184`).\n-\n- :param legacy_msg_id: The message this marker refers to\n-\n-\n- .. py:method:: displayed(legacy_msg_id, **kwargs)\n-\n- Send a \"displayed\" message marker (:xep:`0333`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: The message this marker refers to\n-\n-\n- .. py:method:: online(status = None, last_seen = None)\n-\n- Send an \"online\" presence from this contact to the user.\n-\n- :param status: Arbitrary text, details of the status, eg: \"Listening to Britney Spears\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: away(status = None, last_seen = None)\n-\n- Send an \"away\" presence from this contact to the user.\n-\n- This is a global status, as opposed to :meth:`.LegacyContact.inactive`\n- which concerns a specific conversation, ie a specific \"chat window\"\n-\n- :param status: Arbitrary text, details of the status, eg: \"Gone to fight capitalism\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: extended_away(status = None, last_seen = None)\n-\n- Send an \"extended away\" presence from this contact to the user.\n-\n- This is a global status, as opposed to :meth:`.LegacyContact.inactive`\n- which concerns a specific conversation, ie a specific \"chat window\"\n-\n- :param status: Arbitrary text, details of the status, eg: \"Gone to fight capitalism\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: busy(status = None, last_seen = None)\n-\n- Send a \"busy\" (ie, \"dnd\") presence from this contact to the user,\n-\n- :param status: eg: \"Trying to make sense of XEP-0100\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: offline(status = None, last_seen = None)\n-\n- Send an \"offline\" presence from this contact to the user.\n-\n- :param status: eg: \"Trying to make sense of XEP-0100\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: available_emojis(legacy_msg_id = None)\n- :async:\n-\n- Override this to restrict the subset of reactions this recipient\n- can handle.\n-\n- :return: A set of emojis or None if any emoji is allowed\n-\n-\n \n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/index.rst.txt", "source2": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/index.rst.txt", "unified_diff": "@@ -59,34 +59,14 @@\n This will use :xep:`0363` to impersonate the XMPP user in order.\n \n .. py:property:: name\n \n Friendly name of the contact, as it should appear in the user's roster\n \n \n- .. py:property:: avatar_id\n- :type: Optional[slidge.util.types.AvatarIdType]\n-\n- The unique ID of this entity's avatar.\n-\n-\n- .. py:property:: avatar\n- :type: Optional[slidge.util.types.AvatarIdType]\n-\n- This property can be used to set the avatar, but\n- :py:meth:`~.AvatarMixin.set_avatar()` should be preferred because you can\n- provide a unique ID for the avatar for efficient caching.\n- Setting this is OKish in case the avatar type is a URL or a local path\n- that can act as a legacy ID.\n-\n- Python's ``property`` is abused here to maintain backwards\n- compatibility, but when getting it you actually get the avatar legacy\n- ID.\n-\n-\n .. py:attribute:: RESOURCE\n :type: str\n :value: 'slidge'\n \n A full JID, including a resource part is required for chat states (and maybe other stuff)\n to work properly. This is the name of the resource the contacts will use.\n \n@@ -211,232 +191,14 @@\n \n It the legacy network doesn't like that you fetch too many profiles on startup,\n it's also possible to fetch it here, which will be called when XMPP clients\n of the user request the vcard, if it hasn't been fetched before\n :return:\n \n \n- .. py:method:: set_avatar(a, avatar_unique_id = None, blocking=False, cancel=True)\n- :async:\n-\n- Set an avatar for this entity\n-\n- :param a:\n- :param avatar_unique_id:\n- :param blocking:\n- :param cancel:\n-\n-\n- .. py:method:: invite_to(muc, reason = None, password = None, **send_kwargs)\n-\n- Send an invitation to join a group (:xep:`0249`) from this :term:`XMPP Entity`.\n-\n- :param muc: the muc the user is invited to\n- :param reason: a text explaining why the user should join this muc\n- :param password: maybe this will make sense later? not sure\n- :param send_kwargs: additional kwargs to be passed to _send()\n- (internal use by slidge)\n-\n-\n- .. py:method:: active(**kwargs)\n-\n- Send an \"active\" chat state (:xep:`0085`) from this\n- :term:`XMPP Entity`.\n-\n-\n- .. py:method:: composing(**kwargs)\n-\n- Send a \"composing\" (ie \"typing notification\") chat state (:xep:`0085`)\n- from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: paused(**kwargs)\n-\n- Send a \"paused\" (ie \"typing paused notification\") chat state\n- (:xep:`0085`) from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: inactive(**kwargs)\n-\n- Send an \"inactive\" (ie \"contact has not interacted with the chat session\n- interface for an intermediate period of time\") chat state (:xep:`0085`)\n- from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: gone(**kwargs)\n-\n- Send a \"gone\" (ie \"contact has not interacted with the chat session interface,\n- system, or device for a relatively long period of time\") chat state\n- (:xep:`0085`) from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: send_text(body, legacy_msg_id = None, *, when = None, reply_to = None, thread = None, hints = None, carbon=False, archive_only=False, correction=False, correction_event_id = None, link_previews = None, **send_kwargs)\n-\n- Send a text message from this :term:`XMPP Entity`.\n-\n- :param body: Content of the message\n- :param legacy_msg_id: If you want to be able to transport read markers from the gateway\n- user to the legacy network, specify this\n- :param when: when the message was sent, for a \"delay\" tag (:xep:`0203`)\n- :param reply_to: Quote another message (:xep:`0461`)\n- :param hints:\n- :param thread:\n- :param carbon: (only used if called on a :class:`LegacyContact`)\n- Set this to ``True`` if this is actually a message sent **to** the\n- :class:`LegacyContact` by the :term:`User`.\n- Use this to synchronize outgoing history for legacy official apps.\n- :param correction: whether this message is a correction or not\n- :param correction_event_id: in the case where an ID is associated with the legacy\n- 'correction event', specify it here to use it on the XMPP side. If not specified,\n- a random ID will be used.\n- :param link_previews: A little of sender (or server, or gateway)-generated\n- previews of URLs linked in the body.\n- :param archive_only: (only in groups) Do not send this message to user,\n- but store it in the archive. Meant to be used during ``MUC.backfill()``\n-\n-\n- .. py:method:: correct(legacy_msg_id, new_text, *, when = None, reply_to = None, thread = None, hints = None, carbon=False, archive_only=False, correction_event_id = None, link_previews = None, **send_kwargs)\n-\n- Modify a message that was previously sent by this :term:`XMPP Entity`.\n-\n- Uses last message correction (:xep:`0308`)\n-\n- :param new_text: New content of the message\n- :param legacy_msg_id: The legacy message ID of the message to correct\n- :param when: when the message was sent, for a \"delay\" tag (:xep:`0203`)\n- :param reply_to: Quote another message (:xep:`0461`)\n- :param hints:\n- :param thread:\n- :param carbon: (only in 1:1) Reflect a message sent to this ``Contact`` by the user.\n- Use this to synchronize outgoing history for legacy official apps.\n- :param archive_only: (only in groups) Do not send this message to user,\n- but store it in the archive. Meant to be used during ``MUC.backfill()``\n- :param correction_event_id: in the case where an ID is associated with the legacy\n- 'correction event', specify it here to use it on the XMPP side. If not specified,\n- a random ID will be used.\n- :param link_previews: A little of sender (or server, or gateway)-generated\n- previews of URLs linked in the body.\n-\n-\n- .. py:method:: react(legacy_msg_id, emojis = (), thread = None, **kwargs)\n-\n- Send a reaction (:xep:`0444`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: The message which the reaction refers to.\n- :param emojis: An iterable of emojis used as reactions\n- :param thread:\n-\n-\n- .. py:method:: retract(legacy_msg_id, thread = None, **kwargs)\n-\n- Send a message retraction (:XEP:`0424`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: Legacy ID of the message to delete\n- :param thread:\n-\n-\n- .. py:method:: send_file(file_path = None, legacy_msg_id = None, *, data_stream = None, data = None, file_url = None, file_name = None, content_type = None, reply_to = None, when = None, caption = None, legacy_file_id = None, thread = None, **kwargs)\n- :async:\n-\n- Send a single file from this :term:`XMPP Entity`.\n-\n- :param file_path: Path to the attachment\n- :param data_stream: Alternatively, a stream of bytes (such as a File object)\n- :param data: Alternatively, a bytes object\n- :param file_url: Alternatively, a URL\n- :param file_name: How the file should be named.\n- :param content_type: MIME type, inferred from filename if not given\n- :param legacy_msg_id: If you want to be able to transport read markers from the gateway\n- user to the legacy network, specify this\n- :param reply_to: Quote another message (:xep:`0461`)\n- :param when: when the file was sent, for a \"delay\" tag (:xep:`0203`)\n- :param caption: an optional text that is linked to the file\n- :param legacy_file_id: A unique identifier for the file on the legacy network.\n- Plugins should try their best to provide it, to avoid duplicates.\n- :param thread:\n-\n-\n- .. py:method:: ack(legacy_msg_id, **kwargs)\n-\n- Send an \"acknowledged\" message marker (:xep:`0333`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: The message this marker refers to\n-\n-\n- .. py:method:: received(legacy_msg_id, **kwargs)\n-\n- Send a \"received\" message marker (:xep:`0333`) from this :term:`XMPP Entity`.\n- If called on a :class:`LegacyContact`, also send a delivery receipt\n- marker (:xep:`0184`).\n-\n- :param legacy_msg_id: The message this marker refers to\n-\n-\n- .. py:method:: displayed(legacy_msg_id, **kwargs)\n-\n- Send a \"displayed\" message marker (:xep:`0333`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: The message this marker refers to\n-\n-\n- .. py:method:: online(status = None, last_seen = None)\n-\n- Send an \"online\" presence from this contact to the user.\n-\n- :param status: Arbitrary text, details of the status, eg: \"Listening to Britney Spears\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: away(status = None, last_seen = None)\n-\n- Send an \"away\" presence from this contact to the user.\n-\n- This is a global status, as opposed to :meth:`.LegacyContact.inactive`\n- which concerns a specific conversation, ie a specific \"chat window\"\n-\n- :param status: Arbitrary text, details of the status, eg: \"Gone to fight capitalism\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: extended_away(status = None, last_seen = None)\n-\n- Send an \"extended away\" presence from this contact to the user.\n-\n- This is a global status, as opposed to :meth:`.LegacyContact.inactive`\n- which concerns a specific conversation, ie a specific \"chat window\"\n-\n- :param status: Arbitrary text, details of the status, eg: \"Gone to fight capitalism\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: busy(status = None, last_seen = None)\n-\n- Send a \"busy\" (ie, \"dnd\") presence from this contact to the user,\n-\n- :param status: eg: \"Trying to make sense of XEP-0100\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: offline(status = None, last_seen = None)\n-\n- Send an \"offline\" presence from this contact to the user.\n-\n- :param status: eg: \"Trying to make sense of XEP-0100\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: available_emojis(legacy_msg_id = None)\n- :async:\n-\n- Override this to restrict the subset of reactions this recipient\n- can handle.\n-\n- :return: A set of emojis or None if any emoji is allowed\n-\n-\n \n .. py:class:: LegacyRoster(session)\n \n \n \n \n Virtual roster of a gateway user, that allows to represent all\n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/contact/index.html", "source2": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/contact/index.html", "unified_diff": "@@ -271,43 +271,14 @@\n \n
\n
\n property name#
\n

Friendly name of the contact, as it should appear in the user\u2019s roster

\n
\n \n-
\n-
\n-property avatar_id: slidge.util.types.AvatarIdType | None#
\n-

The unique ID of this entity\u2019s avatar.

\n-
\n-
Return type:
\n-

Optional[slidge.util.types.AvatarIdType]

\n-
\n-
\n-
\n-\n-
\n-
\n-property avatar: slidge.util.types.AvatarIdType | None#
\n-

This property can be used to set the avatar, but\n-set_avatar() should be preferred because you can\n-provide a unique ID for the avatar for efficient caching.\n-Setting this is OKish in case the avatar type is a URL or a local path\n-that can act as a legacy ID.

\n-

Python\u2019s property is abused here to maintain backwards\n-compatibility, but when getting it you actually get the avatar legacy\n-ID.

\n-
\n-
Return type:
\n-

Optional[slidge.util.types.AvatarIdType]

\n-
\n-
\n-
\n-\n
\n
\n RESOURCE: str = 'slidge'#
\n

A full JID, including a resource part is required for chat states (and maybe other stuff)\n to work properly. This is the name of the resource the contacts will use.

\n
\n \n@@ -437,331 +408,14 @@\n async fetch_vcard()#\n

It the legacy network doesn\u2019t like that you fetch too many profiles on startup,\n it\u2019s also possible to fetch it here, which will be called when XMPP clients\n of the user request the vcard, if it hasn\u2019t been fetched before\n :return:

\n
\n \n-
\n-
\n-async set_avatar(a, avatar_unique_id=None, blocking=False, cancel=True)#
\n-

Set an avatar for this entity

\n-
\n-
Parameters:
\n-
    \n-
  • a (Optional[slidge.util.types.AvatarType]) \u2013

  • \n-
  • avatar_unique_id (Optional[slidge.util.types.LegacyFileIdType]) \u2013

  • \n-
  • blocking \u2013

  • \n-
  • cancel \u2013

  • \n-
\n-
\n-
Return type:
\n-

None

\n-
\n-
\n-
\n-\n-
\n-
\n-invite_to(muc, reason=None, password=None, **send_kwargs)#
\n-

Send an invitation to join a group (XEP-0249) from this XMPP Entity.

\n-
\n-
Parameters:
\n-
    \n-
  • muc (slidge.group.LegacyMUC) \u2013 the muc the user is invited to

  • \n-
  • reason (Optional[str]) \u2013 a text explaining why the user should join this muc

  • \n-
  • password (Optional[str]) \u2013 maybe this will make sense later? not sure

  • \n-
  • send_kwargs \u2013 additional kwargs to be passed to _send()\n-(internal use by slidge)

  • \n-
\n-
\n-
\n-
\n-\n-
\n-
\n-active(**kwargs)#
\n-

Send an \u201cactive\u201d chat state (XEP-0085) from this\n-XMPP Entity.

\n-
\n-\n-
\n-
\n-composing(**kwargs)#
\n-

Send a \u201ccomposing\u201d (ie \u201ctyping notification\u201d) chat state (XEP-0085)\n-from this XMPP Entity.

\n-
\n-\n-
\n-
\n-paused(**kwargs)#
\n-

Send a \u201cpaused\u201d (ie \u201ctyping paused notification\u201d) chat state\n-(XEP-0085) from this XMPP Entity.

\n-
\n-\n-
\n-
\n-inactive(**kwargs)#
\n-

Send an \u201cinactive\u201d (ie \u201ccontact has not interacted with the chat session\n-interface for an intermediate period of time\u201d) chat state (XEP-0085)\n-from this XMPP Entity.

\n-
\n-\n-
\n-
\n-gone(**kwargs)#
\n-

Send a \u201cgone\u201d (ie \u201ccontact has not interacted with the chat session interface,\n-system, or device for a relatively long period of time\u201d) chat state\n-(XEP-0085) from this XMPP Entity.

\n-
\n-\n-
\n-
\n-send_text(body, legacy_msg_id=None, *, when=None, reply_to=None, thread=None, hints=None, carbon=False, archive_only=False, correction=False, correction_event_id=None, link_previews=None, **send_kwargs)#
\n-

Send a text message from this XMPP Entity.

\n-
\n-
Parameters:
\n-
    \n-
  • body (str) \u2013 Content of the message

  • \n-
  • legacy_msg_id (Optional[slidge.util.types.LegacyMessageType]) \u2013 If you want to be able to transport read markers from the gateway\n-user to the legacy network, specify this

  • \n-
  • when (Optional[datetime.datetime]) \u2013 when the message was sent, for a \u201cdelay\u201d tag (XEP-0203)

  • \n-
  • reply_to (Optional[slidge.util.types.MessageReference]) \u2013 Quote another message (XEP-0461)

  • \n-
  • hints (Optional[Iterable[slidge.util.types.ProcessingHint]]) \u2013

  • \n-
  • thread (Optional[slidge.util.types.LegacyThreadType]) \u2013

  • \n-
  • carbon \u2013 (only used if called on a LegacyContact)\n-Set this to True if this is actually a message sent to the\n-LegacyContact by the User.\n-Use this to synchronize outgoing history for legacy official apps.

  • \n-
  • correction \u2013 whether this message is a correction or not

  • \n-
  • correction_event_id (Optional[slidge.util.types.LegacyMessageType]) \u2013 in the case where an ID is associated with the legacy\n-\u2018correction event\u2019, specify it here to use it on the XMPP side. If not specified,\n-a random ID will be used.

  • \n-
  • link_previews (Optional[list[slidge.util.types.LinkPreview]]) \u2013 A little of sender (or server, or gateway)-generated\n-previews of URLs linked in the body.

  • \n-
  • archive_only \u2013 (only in groups) Do not send this message to user,\n-but store it in the archive. Meant to be used during MUC.backfill()

  • \n-
\n-
\n-
\n-
\n-\n-
\n-
\n-correct(legacy_msg_id, new_text, *, when=None, reply_to=None, thread=None, hints=None, carbon=False, archive_only=False, correction_event_id=None, link_previews=None, **send_kwargs)#
\n-

Modify a message that was previously sent by this XMPP Entity.

\n-

Uses last message correction (XEP-0308)

\n-
\n-
Parameters:
\n-
    \n-
  • new_text (str) \u2013 New content of the message

  • \n-
  • legacy_msg_id (slidge.util.types.LegacyMessageType) \u2013 The legacy message ID of the message to correct

  • \n-
  • when (Optional[datetime.datetime]) \u2013 when the message was sent, for a \u201cdelay\u201d tag (XEP-0203)

  • \n-
  • reply_to (Optional[slidge.util.types.MessageReference]) \u2013 Quote another message (XEP-0461)

  • \n-
  • hints (Optional[Iterable[slidge.util.types.ProcessingHint]]) \u2013

  • \n-
  • thread (Optional[slidge.util.types.LegacyThreadType]) \u2013

  • \n-
  • carbon \u2013 (only in 1:1) Reflect a message sent to this Contact by the user.\n-Use this to synchronize outgoing history for legacy official apps.

  • \n-
  • archive_only \u2013 (only in groups) Do not send this message to user,\n-but store it in the archive. Meant to be used during MUC.backfill()

  • \n-
  • correction_event_id (Optional[slidge.util.types.LegacyMessageType]) \u2013 in the case where an ID is associated with the legacy\n-\u2018correction event\u2019, specify it here to use it on the XMPP side. If not specified,\n-a random ID will be used.

  • \n-
  • link_previews (Optional[list[slidge.util.types.LinkPreview]]) \u2013 A little of sender (or server, or gateway)-generated\n-previews of URLs linked in the body.

  • \n-
\n-
\n-
\n-
\n-\n-
\n-
\n-react(legacy_msg_id, emojis=(), thread=None, **kwargs)#
\n-

Send a reaction (XEP-0444) from this XMPP Entity.

\n-
\n-
Parameters:
\n-
    \n-
  • legacy_msg_id (slidge.util.types.LegacyMessageType) \u2013 The message which the reaction refers to.

  • \n-
  • emojis (Iterable[str]) \u2013 An iterable of emojis used as reactions

  • \n-
  • thread (Optional[slidge.util.types.LegacyThreadType]) \u2013

  • \n-
\n-
\n-
\n-
\n-\n-
\n-
\n-retract(legacy_msg_id, thread=None, **kwargs)#
\n-

Send a message retraction (XEP-0424) from this XMPP Entity.

\n-
\n-
Parameters:
\n-
    \n-
  • legacy_msg_id (slidge.util.types.LegacyMessageType) \u2013 Legacy ID of the message to delete

  • \n-
  • thread (Optional[slidge.util.types.LegacyThreadType]) \u2013

  • \n-
\n-
\n-
\n-
\n-\n-
\n-
\n-async send_file(file_path=None, legacy_msg_id=None, *, data_stream=None, data=None, file_url=None, file_name=None, content_type=None, reply_to=None, when=None, caption=None, legacy_file_id=None, thread=None, **kwargs)#
\n-

Send a single file from this XMPP Entity.

\n-
\n-
Parameters:
\n-
    \n-
  • file_path (Optional[Union[pathlib.Path, str]]) \u2013 Path to the attachment

  • \n-
  • data_stream (Optional[IO[bytes]]) \u2013 Alternatively, a stream of bytes (such as a File object)

  • \n-
  • data (Optional[bytes]) \u2013 Alternatively, a bytes object

  • \n-
  • file_url (Optional[str]) \u2013 Alternatively, a URL

  • \n-
  • file_name (Optional[str]) \u2013 How the file should be named.

  • \n-
  • content_type (Optional[str]) \u2013 MIME type, inferred from filename if not given

  • \n-
  • legacy_msg_id (Optional[slidge.util.types.LegacyMessageType]) \u2013 If you want to be able to transport read markers from the gateway\n-user to the legacy network, specify this

  • \n-
  • reply_to (Optional[slidge.util.types.MessageReference]) \u2013 Quote another message (XEP-0461)

  • \n-
  • when (Optional[datetime.datetime]) \u2013 when the file was sent, for a \u201cdelay\u201d tag (XEP-0203)

  • \n-
  • caption (Optional[str]) \u2013 an optional text that is linked to the file

  • \n-
  • legacy_file_id (Optional[Union[str, int]]) \u2013 A unique identifier for the file on the legacy network.\n-Plugins should try their best to provide it, to avoid duplicates.

  • \n-
  • thread (Optional[slidge.util.types.LegacyThreadType]) \u2013

  • \n-
\n-
\n-
Return type:
\n-

tuple[Optional[str], list[slixmpp.Message]]

\n-
\n-
\n-
\n-\n-
\n-
\n-ack(legacy_msg_id, **kwargs)#
\n-

Send an \u201cacknowledged\u201d message marker (XEP-0333) from this XMPP Entity.

\n-
\n-
Parameters:
\n-

legacy_msg_id (slidge.util.types.LegacyMessageType) \u2013 The message this marker refers to

\n-
\n-
\n-
\n-\n-
\n-
\n-received(legacy_msg_id, **kwargs)#
\n-

Send a \u201creceived\u201d message marker (XEP-0333) from this XMPP Entity.\n-If called on a LegacyContact, also send a delivery receipt\n-marker (XEP-0184).

\n-
\n-
Parameters:
\n-

legacy_msg_id (slidge.util.types.LegacyMessageType) \u2013 The message this marker refers to

\n-
\n-
\n-
\n-\n-
\n-
\n-displayed(legacy_msg_id, **kwargs)#
\n-

Send a \u201cdisplayed\u201d message marker (XEP-0333) from this XMPP Entity.

\n-
\n-
Parameters:
\n-

legacy_msg_id (slidge.util.types.LegacyMessageType) \u2013 The message this marker refers to

\n-
\n-
\n-
\n-\n-
\n-
\n-online(status=None, last_seen=None)#
\n-

Send an \u201conline\u201d presence from this contact to the user.

\n-
\n-
Parameters:
\n-
    \n-
  • status (Optional[str]) \u2013 Arbitrary text, details of the status, eg: \u201cListening to Britney Spears\u201d

  • \n-
  • last_seen (Optional[datetime.datetime]) \u2013 For XEP-0319

  • \n-
\n-
\n-
\n-
\n-\n-
\n-
\n-away(status=None, last_seen=None)#
\n-

Send an \u201caway\u201d presence from this contact to the user.

\n-

This is a global status, as opposed to LegacyContact.inactive()\n-which concerns a specific conversation, ie a specific \u201cchat window\u201d

\n-
\n-
Parameters:
\n-
    \n-
  • status (Optional[str]) \u2013 Arbitrary text, details of the status, eg: \u201cGone to fight capitalism\u201d

  • \n-
  • last_seen (Optional[datetime.datetime]) \u2013 For XEP-0319

  • \n-
\n-
\n-
\n-
\n-\n-
\n-
\n-extended_away(status=None, last_seen=None)#
\n-

Send an \u201cextended away\u201d presence from this contact to the user.

\n-

This is a global status, as opposed to LegacyContact.inactive()\n-which concerns a specific conversation, ie a specific \u201cchat window\u201d

\n-
\n-
Parameters:
\n-
    \n-
  • status (Optional[str]) \u2013 Arbitrary text, details of the status, eg: \u201cGone to fight capitalism\u201d

  • \n-
  • last_seen (Optional[datetime.datetime]) \u2013 For XEP-0319

  • \n-
\n-
\n-
\n-
\n-\n-
\n-
\n-busy(status=None, last_seen=None)#
\n-

Send a \u201cbusy\u201d (ie, \u201cdnd\u201d) presence from this contact to the user,

\n-
\n-
Parameters:
\n-
    \n-
  • status (Optional[str]) \u2013 eg: \u201cTrying to make sense of XEP-0100\u201d

  • \n-
  • last_seen (Optional[datetime.datetime]) \u2013 For XEP-0319

  • \n-
\n-
\n-
\n-
\n-\n-
\n-
\n-offline(status=None, last_seen=None)#
\n-

Send an \u201coffline\u201d presence from this contact to the user.

\n-
\n-
Parameters:
\n-
    \n-
  • status (Optional[str]) \u2013 eg: \u201cTrying to make sense of XEP-0100\u201d

  • \n-
  • last_seen (Optional[datetime.datetime]) \u2013 For XEP-0319

  • \n-
\n-
\n-
\n-
\n-\n-
\n-
\n-async available_emojis(legacy_msg_id=None)#
\n-

Override this to restrict the subset of reactions this recipient\n-can handle.

\n-
\n-
Returns:
\n-

A set of emojis or None if any emoji is allowed

\n-
\n-
Parameters:
\n-

legacy_msg_id (Optional[slidge.util.types.LegacyMessageType]) \u2013

\n-
\n-
Return type:
\n-

Optional[set[str]]

\n-
\n-
\n-
\n-\n \n \n \n \n \n \n \n@@ -802,49 +456,26 @@\n
\n