{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.C5ZQczt3/b1/slidge_0.1.0-1_amd64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.C5ZQczt3/b2/slidge_0.1.0-1_amd64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,3 +1,3 @@\n \n- 26049eb30b4953fc627e6e38cdf80748 2115552 python optional python-slidge-doc_0.1.0-1_all.deb\n+ 065a28c2c6f0bdf736f19c7504bb0aae 2113192 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 5776 2024-04-09 06:27:33.000000 control.tar.xz\n--rw-r--r-- 0 0 0 2109584 2024-04-09 06:27:33.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 5772 2024-04-09 06:27:33.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 2107228 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: 7180\n+Installed-Size: 6949\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": "xz --list", "source2": "xz --list", "unified_diff": "@@ -1,13 +1,13 @@\n Streams: 1\n Blocks: 1\n- Compressed size: 5776 B\n+ Compressed size: 5772 B\n Uncompressed size: 30.0 KiB (30720 B)\n Ratio: 0.188\n Check: CRC64\n Stream Padding: 0 B\n Streams:\n Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding\n- 1 1 0 0 5776 30720 0.188 CRC64 0\n+ 1 1 0 0 5772 30720 0.188 CRC64 0\n Blocks:\n Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check\n- 1 1 12 0 5740 30720 0.187 CRC64\n+ 1 1 12 0 5736 30720 0.187 CRC64\n"}]}, {"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": "@@ -29,30 +29,30 @@\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/\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/__main__/\n -rw-r--r-- 0 root (0) root (0) 1075 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/__main__/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/\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/adhoc/\n -rw-r--r-- 0 root (0) root (0) 900 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/adhoc/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/admin/\n--rw-r--r-- 0 root (0) root (0) 111 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/admin/index.rst.txt\n+-rw-r--r-- 0 root (0) root (0) 6583 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/admin/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/base/\n -rw-r--r-- 0 root (0) root (0) 7474 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/base/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/categories/\n -rw-r--r-- 0 root (0) root (0) 126 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/categories/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/chat_command/\n -rw-r--r-- 0 root (0) root (0) 132 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/chat_command/index.rst.txt\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@@ -108,19 +108,19 @@\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/session/\n -rw-r--r-- 0 root (0) root (0) 13578 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/session/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/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/_sources/dev/api/slidge/group/archive/\n -rw-r--r-- 0 root (0) root (0) 372 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/archive/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/group/bookmarks/\n -rw-r--r-- 0 root (0) root (0) 1181 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/bookmarks/index.rst.txt\n--rw-r--r-- 0 root (0) root (0) 21516 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/index.rst.txt\n+-rw-r--r-- 0 root (0) root (0) 12180 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/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/group/participant/\n--rw-r--r-- 0 root (0) root (0) 9383 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/participant/index.rst.txt\n+-rw-r--r-- 0 root (0) root (0) 1184 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/participant/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/group/room/\n--rw-r--r-- 0 root (0) root (0) 10865 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/room/index.rst.txt\n+-rw-r--r-- 0 root (0) root (0) 9728 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/room/index.rst.txt\n -rw-r--r-- 0 root (0) root (0) 30373 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/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/migration/\n -rw-r--r-- 0 root (0) root (0) 99 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/migration/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/slixfix/\n -rw-r--r-- 0 root (0) root (0) 528 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/slixfix/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/slixfix/link_preview/\n -rw-r--r-- 0 root (0) root (0) 132 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/slixfix/link_preview/index.rst.txt\n@@ -207,30 +207,30 @@\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/\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/__main__/\n -rw-r--r-- 0 root (0) root (0) 23617 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/__main__/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/\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/adhoc/\n -rw-r--r-- 0 root (0) root (0) 26218 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/adhoc/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/admin/\n--rw-r--r-- 0 root (0) root (0) 19934 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/admin/index.html\n+-rw-r--r-- 0 root (0) root (0) 59272 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/admin/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/base/\n -rw-r--r-- 0 root (0) root (0) 71395 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/base/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/categories/\n -rw-r--r-- 0 root (0) root (0) 19974 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/categories/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/chat_command/\n -rw-r--r-- 0 root (0) root (0) 19990 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/chat_command/index.html\n -rw-r--r-- 0 root (0) root (0) 65697 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) 30711 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) 69450 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) 93404 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) 103558 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) 40640 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) 51486 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) 33425 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) 21698 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) 19940 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) 20141 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) 20149 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) 19940 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) 85784 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) 85478 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) 22465 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) 27172 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) 125658 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/index.html\n+-rw-r--r-- 0 root (0) root (0) 73476 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) 73378 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/participant/index.html\n+-rw-r--r-- 0 root (0) root (0) 27413 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) 64737 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) 164339 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) 57705 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) 164045 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) 19795 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) 22526 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) 20012 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) 205200 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) 73993 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) 52489 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) 101950 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) 101588 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) 80927 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) 122119 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) 121448 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) 22158 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) 19853 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) 86302 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) 85982 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) 19781 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) 26021 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) 28801 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) 20354 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) 22756 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) 36954 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) 220583 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) 211121 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) 24821 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) 110283 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) 11260 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) 99217 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) 35253 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) 19143 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) 251642 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) 24221 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) 22065 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) 24282 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) 21406 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) 20280 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) 24458 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/command/admin/index.rst.txt", "source2": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/admin/index.rst.txt", "unified_diff": "@@ -2,7 +2,283 @@\n \n :py:mod:`slidge.command.admin`\n ==============================\n \n .. py:module:: slidge.command.admin\n \n \n+Module Contents\n+---------------\n+\n+Classes\n+~~~~~~~\n+\n+.. autoapisummary::\n+\n+ slidge.command.admin.AdminCommand\n+ slidge.command.admin.ListUsers\n+ slidge.command.admin.SlidgeInfo\n+ slidge.command.admin.DeleteUser\n+ slidge.command.admin.ChangeLoglevel\n+ slidge.command.admin.Exec\n+\n+\n+\n+\n+.. py:class:: AdminCommand(xmpp)\n+\n+\n+\n+\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+\n+ .. py:attribute:: NAME\n+ :type: str\n+\n+ Friendly name of the command, eg: \"do something with stuff\"\n+\n+\n+ .. py:attribute:: HELP\n+ :type: str\n+\n+ Long description of what the command does\n+\n+\n+ .. py:attribute:: NODE\n+ :type: str\n+\n+ Name of the node used for ad-hoc commands\n+\n+\n+ .. py:attribute:: CHAT_COMMAND\n+ :type: str\n+\n+ Text to send to the gateway to trigger the command via a message\n+\n+\n+ .. py:method:: run(session, ifrom, *args)\n+ :async:\n+\n+ Entry point of the command\n+\n+ :param session: If triggered by a registered user, its slidge Session\n+ :param ifrom: JID of the command-triggering entity\n+ :param args: When triggered via chatbot type message, additional words\n+ after the CHAT_COMMAND string was passed\n+\n+ :return: Either a TableResult, a Form, a Confirmation, a text, or None\n+\n+\n+ .. py:method:: raise_if_not_authorized(jid)\n+\n+ Raise an appropriate error is jid is not authorized to use the command\n+\n+ :param jid: jid of the entity trying to access the command\n+ :return:session of JID if it exists\n+\n+\n+\n+.. py:class:: ListUsers(xmpp)\n+\n+\n+\n+\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+\n+ .. py:attribute:: NODE\n+ :type: str\n+\n+ Name of the node used for ad-hoc commands\n+\n+\n+ .. py:attribute:: CHAT_COMMAND\n+ :type: str\n+\n+ Text to send to the gateway to trigger the command via a message\n+\n+\n+ .. py:method:: run(_session, _ifrom, *_)\n+ :async:\n+\n+ Entry point of the command\n+\n+ :param session: If triggered by a registered user, its slidge Session\n+ :param ifrom: JID of the command-triggering entity\n+ :param args: When triggered via chatbot type message, additional words\n+ after the CHAT_COMMAND string was passed\n+\n+ :return: Either a TableResult, a Form, a Confirmation, a text, or None\n+\n+\n+ .. py:method:: raise_if_not_authorized(jid)\n+\n+ Raise an appropriate error is jid is not authorized to use the command\n+\n+ :param jid: jid of the entity trying to access the command\n+ :return:session of JID if it exists\n+\n+\n+\n+.. py:class:: SlidgeInfo(xmpp)\n+\n+\n+\n+\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+\n+ .. py:attribute:: NODE\n+ :type: str\n+\n+ Name of the node used for ad-hoc commands\n+\n+\n+ .. py:attribute:: CHAT_COMMAND\n+ :type: str\n+\n+ Text to send to the gateway to trigger the command via a message\n+\n+\n+ .. py:method:: run(_session, _ifrom, *_)\n+ :async:\n+\n+ Entry point of the command\n+\n+ :param session: If triggered by a registered user, its slidge Session\n+ :param ifrom: JID of the command-triggering entity\n+ :param args: When triggered via chatbot type message, additional words\n+ after the CHAT_COMMAND string was passed\n+\n+ :return: Either a TableResult, a Form, a Confirmation, a text, or None\n+\n+\n+ .. py:method:: raise_if_not_authorized(jid)\n+\n+ Raise an appropriate error is jid is not authorized to use the command\n+\n+ :param jid: jid of the entity trying to access the command\n+ :return:session of JID if it exists\n+\n+\n+\n+.. py:class:: DeleteUser(xmpp)\n+\n+\n+\n+\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+\n+ .. py:attribute:: NODE\n+ :type: str\n+\n+ Name of the node used for ad-hoc commands\n+\n+\n+ .. py:attribute:: CHAT_COMMAND\n+ :type: str\n+\n+ Text to send to the gateway to trigger the command via a message\n+\n+\n+ .. py:method:: run(_session, _ifrom, *_)\n+ :async:\n+\n+ Entry point of the command\n+\n+ :param session: If triggered by a registered user, its slidge Session\n+ :param ifrom: JID of the command-triggering entity\n+ :param args: When triggered via chatbot type message, additional words\n+ after the CHAT_COMMAND string was passed\n+\n+ :return: Either a TableResult, a Form, a Confirmation, a text, or None\n+\n+\n+ .. py:method:: raise_if_not_authorized(jid)\n+\n+ Raise an appropriate error is jid is not authorized to use the command\n+\n+ :param jid: jid of the entity trying to access the command\n+ :return:session of JID if it exists\n+\n+\n+\n+.. py:class:: ChangeLoglevel(xmpp)\n+\n+\n+\n+\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+\n+ .. py:attribute:: NODE\n+ :type: str\n+\n+ Name of the node used for ad-hoc commands\n+\n+\n+ .. py:attribute:: CHAT_COMMAND\n+ :type: str\n+\n+ Text to send to the gateway to trigger the command via a message\n+\n+\n+ .. py:method:: run(_session, _ifrom, *_)\n+ :async:\n+\n+ Entry point of the command\n+\n+ :param session: If triggered by a registered user, its slidge Session\n+ :param ifrom: JID of the command-triggering entity\n+ :param args: When triggered via chatbot type message, additional words\n+ after the CHAT_COMMAND string was passed\n+\n+ :return: Either a TableResult, a Form, a Confirmation, a text, or None\n+\n+\n+ .. py:method:: raise_if_not_authorized(jid)\n+\n+ Raise an appropriate error is jid is not authorized to use the command\n+\n+ :param jid: jid of the entity trying to access the command\n+ :return:session of JID if it exists\n+\n+\n+\n+.. py:class:: Exec(xmpp)\n+\n+\n+\n+\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+\n+ .. py:attribute:: NAME\n+ :type: str\n+\n+ Friendly name of the command, eg: \"do something with stuff\"\n+\n+\n+ .. py:attribute:: HELP\n+ :type: str\n+\n+ Long description of what the command does\n+\n+\n+ .. py:method:: run(session, ifrom, *args)\n+ :async:\n+\n+ Entry point of the command\n+\n+ :param session: If triggered by a registered user, its slidge Session\n+ :param ifrom: JID of the command-triggering entity\n+ :param args: When triggered via chatbot type message, additional words\n+ after the CHAT_COMMAND string was passed\n+\n+ :return: Either a TableResult, a Form, a Confirmation, a text, or None\n+\n+\n+ .. py:method:: raise_if_not_authorized(jid)\n+\n+ Raise an appropriate error is jid is not authorized to use the command\n+\n+ :param jid: jid of the entity trying to access the command\n+ :return:session of JID if it exists\n+\n+\n+\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/_sources/dev/api/slidge/group/index.rst.txt", "source2": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/index.rst.txt", "unified_diff": "@@ -123,243 +123,25 @@\n \n \n .. py:method:: ban()\n \n Call this when the participant is banned from the room\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:: 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:: 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:: 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 \n .. py:class:: LegacyMUC(session, legacy_id, jid)\n \n \n \n \n A room, a.k.a. a Multi-User Chat.\n \n MUC instances are obtained by calling :py:meth:`slidge.group.bookmarks.LegacyBookmarks`\n on the user's :py:class:`slidge.core.session.BaseSession`.\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:: STABLE_ARCHIVE\n :value: False\n \n Because legacy events like reactions, editions, etc. don't all map to a stanza\n with a proper legacy ID, slidge usually cannot guarantee the stability of the archive\n across restarts.\n \n@@ -615,28 +397,8 @@\n \n The legacy module is responsible for updating :attr:`.subject` of this\n instance.\n \n :param subject: The new subject for this room.\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:: 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/group/participant/index.rst.txt", "source2": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/participant/index.rst.txt", "unified_diff": "@@ -49,206 +49,8 @@\n \n \n .. py:method:: ban()\n \n Call this when the participant is banned from the room\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:: 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:: 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:: 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 \n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/room/index.rst.txt", "source2": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/room/index.rst.txt", "unified_diff": "@@ -25,34 +25,14 @@\n \n \n A room, a.k.a. a Multi-User Chat.\n \n MUC instances are obtained by calling :py:meth:`slidge.group.bookmarks.LegacyBookmarks`\n on the user's :py:class:`slidge.core.session.BaseSession`.\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:: STABLE_ARCHIVE\n :value: False\n \n Because legacy events like reactions, editions, etc. don't all map to a stanza\n with a proper legacy ID, slidge usually cannot guarantee the stability of the archive\n across restarts.\n \n@@ -308,28 +288,8 @@\n \n The legacy module is responsible for updating :attr:`.subject` of this\n instance.\n \n :param subject: The new subject for this room.\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:: 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/dev/api/slidge/command/admin/index.html", "source2": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/admin/index.html", "unified_diff": "@@ -188,15 +188,15 @@\n
Toggle Light / Dark / Auto color theme
\n \n \n \n \n \n \n-