slidge 0.2.0b1__py3-none-any.whl → 0.2.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- slidge/__version__.py +1 -1
- slidge/command/base.py +1 -1
- slidge/command/chat_command.py +5 -2
- slidge/command/register.py +3 -2
- slidge/command/user.py +1 -1
- slidge/contact/contact.py +3 -3
- slidge/contact/roster.py +3 -3
- slidge/core/dispatcher/presence.py +4 -5
- slidge/core/dispatcher/session_dispatcher.py +2 -2
- slidge/core/gateway.py +6 -3
- slidge/core/mixins/attachment.py +14 -3
- slidge/core/mixins/message.py +1 -1
- slidge/db/models.py +7 -1
- slidge/group/room.py +2 -2
- slidge/main.py +1 -1
- slidge/slixfix/__init__.py +29 -32
- {slidge-0.2.0b1.dist-info → slidge-0.2.2.dist-info}/METADATA +1 -1
- {slidge-0.2.0b1.dist-info → slidge-0.2.2.dist-info}/RECORD +21 -21
- {slidge-0.2.0b1.dist-info → slidge-0.2.2.dist-info}/LICENSE +0 -0
- {slidge-0.2.0b1.dist-info → slidge-0.2.2.dist-info}/WHEEL +0 -0
- {slidge-0.2.0b1.dist-info → slidge-0.2.2.dist-info}/entry_points.txt +0 -0
slidge/__version__.py
CHANGED
slidge/command/base.py
CHANGED
slidge/command/chat_command.py
CHANGED
@@ -175,7 +175,9 @@ class ChatCommandProvider:
|
|
175
175
|
else:
|
176
176
|
if f.type == "list-multi":
|
177
177
|
msg.reply(
|
178
|
-
"Multiple selection allowed, use
|
178
|
+
"Multiple selection allowed, use new lines as a separator, ie, "
|
179
|
+
"one selected item per line. To select no item, reply with a space "
|
180
|
+
"(the punctuation)."
|
179
181
|
).send()
|
180
182
|
if f.options:
|
181
183
|
for o in f.options:
|
@@ -202,7 +204,8 @@ class ChatCommandProvider:
|
|
202
204
|
ans = "false"
|
203
205
|
|
204
206
|
if f.type.endswith("multi"):
|
205
|
-
|
207
|
+
choices = [] if ans == " " else ans.split("\n")
|
208
|
+
form_values[f.var] = f.validate(choices)
|
206
209
|
else:
|
207
210
|
form_values[f.var] = f.validate(ans)
|
208
211
|
result = await self.__wrap_handler(
|
slidge/command/register.py
CHANGED
@@ -75,7 +75,8 @@ class Register(Command):
|
|
75
75
|
self.xmpp.event("user_register", Iq(sfrom=ifrom.bare))
|
76
76
|
return self.SUCCESS_MESSAGE
|
77
77
|
|
78
|
-
async def run(self, _session,
|
78
|
+
async def run(self, _session, ifrom: JID, *_):
|
79
|
+
self.xmpp.raise_if_not_allowed_jid(ifrom)
|
79
80
|
return Form(
|
80
81
|
title=f"Registration to '{self.xmpp.COMPONENT_NAME}'",
|
81
82
|
instructions=self.xmpp.REGISTRATION_INSTRUCTIONS,
|
@@ -97,7 +98,7 @@ class Register(Command):
|
|
97
98
|
raise
|
98
99
|
|
99
100
|
user = GatewayUser(
|
100
|
-
jid=ifrom.bare,
|
101
|
+
jid=JID(ifrom.bare),
|
101
102
|
legacy_module_data=form_values if data is None else data,
|
102
103
|
)
|
103
104
|
|
slidge/command/user.py
CHANGED
@@ -292,7 +292,7 @@ class Unregister(Command):
|
|
292
292
|
user = self.xmpp.store.users.get(session.user_jid)
|
293
293
|
assert user is not None
|
294
294
|
await self.xmpp.unregister_user(user)
|
295
|
-
return "
|
295
|
+
return "You are not registered anymore. Bye!"
|
296
296
|
|
297
297
|
|
298
298
|
class LeaveGroup(Command):
|
slidge/contact/contact.py
CHANGED
@@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Generic, Iterable, Optional, Self, Union
|
|
6
6
|
from xml.etree import ElementTree as ET
|
7
7
|
|
8
8
|
from slixmpp import JID, Message, Presence
|
9
|
-
from slixmpp.exceptions import IqError
|
9
|
+
from slixmpp.exceptions import IqError, IqTimeout
|
10
10
|
from slixmpp.plugins.xep_0292.stanza import VCard4
|
11
11
|
from slixmpp.types import MessageTypes
|
12
12
|
|
@@ -454,7 +454,7 @@ class LegacyContact(
|
|
454
454
|
except PermissionError:
|
455
455
|
warnings.warn(
|
456
456
|
"Slidge does not have privileges to add contacts to the roster. Refer"
|
457
|
-
" to https://slidge.
|
457
|
+
" to https://slidge.im/core/admin/privilege.html for"
|
458
458
|
" more info."
|
459
459
|
)
|
460
460
|
if config.ROSTER_PUSH_PRESENCE_SUBSCRIPTION_REQUEST_FALLBACK:
|
@@ -463,7 +463,7 @@ class LegacyContact(
|
|
463
463
|
"slidge is not allowed to manage your roster."
|
464
464
|
)
|
465
465
|
return
|
466
|
-
except IqError as e:
|
466
|
+
except (IqError, IqTimeout) as e:
|
467
467
|
self.log.warning("Could not add to roster", exc_info=e)
|
468
468
|
else:
|
469
469
|
# we only broadcast pubsub events for contacts added to the roster
|
slidge/contact/roster.py
CHANGED
@@ -4,7 +4,7 @@ import warnings
|
|
4
4
|
from typing import TYPE_CHECKING, AsyncIterator, Generic, Iterator, Optional, Type
|
5
5
|
|
6
6
|
from slixmpp import JID
|
7
|
-
from slixmpp.exceptions import IqError, XMPPError
|
7
|
+
from slixmpp.exceptions import IqError, IqTimeout, XMPPError
|
8
8
|
from slixmpp.jid import JID_UNESCAPE_TRANSFORMATIONS, _unescape_node
|
9
9
|
|
10
10
|
from ..core.mixins.lock import NamedLockMixin
|
@@ -210,7 +210,7 @@ class LegacyRoster(
|
|
210
210
|
self.session.user_jid.bare
|
211
211
|
)
|
212
212
|
user_roster = iq["roster"]["items"]
|
213
|
-
except (PermissionError, IqError):
|
213
|
+
except (PermissionError, IqError, IqTimeout):
|
214
214
|
user_roster = None
|
215
215
|
|
216
216
|
with self.__store.session() as orm:
|
@@ -232,7 +232,7 @@ class LegacyRoster(
|
|
232
232
|
self.session.user_jid.bare,
|
233
233
|
item,
|
234
234
|
)
|
235
|
-
except (PermissionError, IqError) as e:
|
235
|
+
except (PermissionError, IqError, IqTimeout) as e:
|
236
236
|
warnings.warn(f"Could not add to roster: {e}")
|
237
237
|
else:
|
238
238
|
contact._added_to_roster = True
|
@@ -154,14 +154,13 @@ class PresenceHandlerMixin(DispatcherMixin):
|
|
154
154
|
# when setting a status message, or going away, etc.
|
155
155
|
return
|
156
156
|
|
157
|
-
# We can't use XMPPError here because
|
157
|
+
# We can't use XMPPError here because XMPPError does not have a way to
|
158
|
+
# add the <x xmlns="http://jabber.org/protocol/muc" /> element
|
158
159
|
|
159
|
-
error_from = JID(muc.jid)
|
160
|
-
error_from.resource = muc.user_nick
|
161
160
|
error_stanza = p.error()
|
162
161
|
error_stanza.set_to(p.get_from())
|
163
|
-
error_stanza.set_from(
|
164
|
-
error_stanza.enable("muc_join")
|
162
|
+
error_stanza.set_from(pto)
|
163
|
+
error_stanza.enable("muc_join") # <x xmlns="http://jabber.org/protocol/muc" />
|
165
164
|
error_stanza.enable("error")
|
166
165
|
error_stanza["error"]["type"] = "cancel"
|
167
166
|
error_stanza["error"]["by"] = muc.jid
|
@@ -2,7 +2,7 @@ import logging
|
|
2
2
|
from typing import TYPE_CHECKING
|
3
3
|
|
4
4
|
from slixmpp import Message
|
5
|
-
from slixmpp.exceptions import IqError
|
5
|
+
from slixmpp.exceptions import IqError, IqTimeout
|
6
6
|
from slixmpp.plugins.xep_0084.stanza import Info
|
7
7
|
|
8
8
|
from ..session import BaseSession
|
@@ -59,7 +59,7 @@ class SessionDispatcher(
|
|
59
59
|
iq = await self.xmpp.plugin["xep_0084"].retrieve_avatar(
|
60
60
|
session.user_jid, hash_, ifrom=self.xmpp.boundjid.bare
|
61
61
|
)
|
62
|
-
except IqError as e:
|
62
|
+
except (IqError, IqTimeout) as e:
|
63
63
|
session.log.warning("Could not fetch the user's avatar: %s", e)
|
64
64
|
return
|
65
65
|
bytes_ = iq["pubsub"]["items"]["item"]["avatar_data"]["value"]
|
slidge/core/gateway.py
CHANGED
@@ -429,7 +429,7 @@ class BaseGateway(
|
|
429
429
|
try:
|
430
430
|
await self["xep_0100"].add_component_to_roster(user.jid)
|
431
431
|
await self.__add_component_to_mds_whitelist(user.jid)
|
432
|
-
except IqError as e:
|
432
|
+
except (IqError, IqTimeout) as e:
|
433
433
|
# TODO: remove the user when this happens? or at least
|
434
434
|
# this can happen when the user has unsubscribed from the XMPP server
|
435
435
|
log.warning(
|
@@ -464,7 +464,7 @@ class BaseGateway(
|
|
464
464
|
"create the MDS node of %s",
|
465
465
|
user_jid,
|
466
466
|
)
|
467
|
-
except IqError as e:
|
467
|
+
except (IqError, IqTimeout) as e:
|
468
468
|
# conflict this means the node already exists, we can ignore that
|
469
469
|
if e.condition != "conflict":
|
470
470
|
log.exception(
|
@@ -548,7 +548,7 @@ class BaseGateway(
|
|
548
548
|
self.xmpp.plugin["xep_0084"].stanza.MetaData.namespace,
|
549
549
|
ifrom=self.boundjid.bare,
|
550
550
|
)
|
551
|
-
except IqError:
|
551
|
+
except (IqError, IqTimeout):
|
552
552
|
self.xmpp.store.users.set_avatar_hash(session.user_pk, None)
|
553
553
|
return
|
554
554
|
await self.__dispatcher.on_avatar_metadata_info(
|
@@ -797,6 +797,9 @@ class BaseGateway(
|
|
797
797
|
fut.set_exception(exception)
|
798
798
|
|
799
799
|
async def unregister_user(self, user: GatewayUser):
|
800
|
+
self.send_presence(
|
801
|
+
pshow="busy", pstatus="You are not registered to this gateway anymore."
|
802
|
+
)
|
800
803
|
await self.xmpp.plugin["xep_0077"].api["user_remove"](None, None, user.jid)
|
801
804
|
await self.xmpp.session_cls.kill_by_jid(user.jid)
|
802
805
|
|
slidge/core/mixins/attachment.py
CHANGED
@@ -19,7 +19,7 @@ from xml.etree import ElementTree as ET
|
|
19
19
|
import thumbhash
|
20
20
|
from PIL import Image, ImageOps
|
21
21
|
from slixmpp import JID, Message
|
22
|
-
from slixmpp.exceptions import IqError
|
22
|
+
from slixmpp.exceptions import IqError, IqTimeout
|
23
23
|
from slixmpp.plugins.xep_0363 import FileUploadError
|
24
24
|
from slixmpp.plugins.xep_0447.stanza import StatelessFileSharing
|
25
25
|
|
@@ -65,7 +65,7 @@ class AttachmentMixin(TextMessageMixin):
|
|
65
65
|
ifrom=config.UPLOAD_REQUESTER or self.xmpp.boundjid,
|
66
66
|
domain=JID(domain),
|
67
67
|
)
|
68
|
-
except (FileUploadError, IqError) as e:
|
68
|
+
except (FileUploadError, IqError, IqTimeout) as e:
|
69
69
|
warnings.warn(f"Something is wrong with the upload service: {e!r}")
|
70
70
|
return None
|
71
71
|
finally:
|
@@ -374,9 +374,20 @@ class AttachmentMixin(TextMessageMixin):
|
|
374
374
|
if xmpp_id == original_xmpp_id:
|
375
375
|
continue
|
376
376
|
self.retract(xmpp_id, thread)
|
377
|
+
|
378
|
+
if reply_to is not None and reply_to.body:
|
379
|
+
# We cannot have a "quote fallback" for attachments since most (all?)
|
380
|
+
# XMPP clients will only treat a message as an attachment if the
|
381
|
+
# body is the URL and nothing else.
|
382
|
+
reply_to_for_attachment: MessageReference | None = MessageReference(
|
383
|
+
reply_to.legacy_id, reply_to.author
|
384
|
+
)
|
385
|
+
else:
|
386
|
+
reply_to_for_attachment = reply_to
|
387
|
+
|
377
388
|
msg = self._make_message(
|
378
389
|
when=when,
|
379
|
-
reply_to=
|
390
|
+
reply_to=reply_to_for_attachment,
|
380
391
|
carbon=carbon,
|
381
392
|
mto=mto,
|
382
393
|
thread=thread,
|
slidge/core/mixins/message.py
CHANGED
@@ -172,7 +172,7 @@ class CarbonMessageMixin(ContentMessageMixin, MarkerMixin):
|
|
172
172
|
warnings.warn(
|
173
173
|
"Slidge does not have privileges to send message on behalf of"
|
174
174
|
" user.Refer to"
|
175
|
-
" https://slidge.
|
175
|
+
" https://slidge.im/core/admin/privilege.html"
|
176
176
|
" for more info."
|
177
177
|
)
|
178
178
|
|
slidge/db/models.py
CHANGED
@@ -235,11 +235,17 @@ class Room(Base):
|
|
235
235
|
updated: Mapped[bool] = mapped_column(default=False)
|
236
236
|
|
237
237
|
participants: Mapped[list["Participant"]] = relationship(
|
238
|
-
back_populates="room",
|
238
|
+
back_populates="room",
|
239
|
+
primaryjoin="Participant.room_id == Room.id",
|
240
|
+
cascade="all, delete-orphan",
|
239
241
|
)
|
240
242
|
|
241
243
|
avatar_legacy_id: Mapped[Optional[str]] = mapped_column(nullable=True)
|
242
244
|
|
245
|
+
archive: Mapped[list["ArchivedMessage"]] = relationship(
|
246
|
+
cascade="all, delete-orphan"
|
247
|
+
)
|
248
|
+
|
243
249
|
|
244
250
|
class ArchivedMessage(Base):
|
245
251
|
"""
|
slidge/group/room.py
CHANGED
@@ -9,7 +9,7 @@ from typing import TYPE_CHECKING, AsyncIterator, Generic, Optional, Self, Union
|
|
9
9
|
from uuid import uuid4
|
10
10
|
|
11
11
|
from slixmpp import JID, Iq, Message, Presence
|
12
|
-
from slixmpp.exceptions import IqError, XMPPError
|
12
|
+
from slixmpp.exceptions import IqError, IqTimeout, XMPPError
|
13
13
|
from slixmpp.jid import _unescape_node
|
14
14
|
from slixmpp.plugins.xep_0004 import Form
|
15
15
|
from slixmpp.plugins.xep_0060.stanza import Item
|
@@ -1029,7 +1029,7 @@ class LegacyMUC(
|
|
1029
1029
|
# (slixmpp annoying magic)
|
1030
1030
|
item = ans["pubsub"]["items"]["item"]
|
1031
1031
|
item["id"] = self.jid
|
1032
|
-
except IqError:
|
1032
|
+
except (IqError, IqTimeout):
|
1033
1033
|
item["conference"]["autojoin"] = auto_join
|
1034
1034
|
except PermissionError:
|
1035
1035
|
warnings.warn(
|
slidge/main.py
CHANGED
slidge/slixfix/__init__.py
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# This module contains patches for slixmpp; some have pending requests upstream
|
2
2
|
# and should be removed on the next slixmpp release.
|
3
|
-
|
4
|
-
|
3
|
+
|
4
|
+
# ruff: noqa: F401
|
5
5
|
|
6
6
|
import slixmpp.plugins
|
7
|
-
from slixmpp import Message
|
7
|
+
from slixmpp import Iq, Message
|
8
|
+
from slixmpp.exceptions import XMPPError
|
8
9
|
from slixmpp.plugins.xep_0050 import XEP_0050, Command
|
9
|
-
from slixmpp.plugins.
|
10
|
+
from slixmpp.plugins.xep_0231 import XEP_0231
|
10
11
|
from slixmpp.xmlstream import StanzaBase
|
11
12
|
|
12
13
|
from . import ( # xep_0356,
|
@@ -23,36 +24,33 @@ from . import ( # xep_0356,
|
|
23
24
|
xep_0490,
|
24
25
|
)
|
25
26
|
|
26
|
-
# ruff: noqa: F401
|
27
27
|
|
28
|
+
async def _handle_bob_iq(self, iq: Iq):
|
29
|
+
cid = iq["bob"]["cid"]
|
28
30
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
"""
|
33
|
-
|
31
|
+
if iq["type"] == "result":
|
32
|
+
await self.api["set_bob"](iq["from"], None, iq["to"], args=iq["bob"])
|
33
|
+
self.xmpp.event("bob", iq)
|
34
|
+
elif iq["type"] == "get":
|
35
|
+
data = await self.api["get_bob"](iq["to"], None, iq["from"], args=cid)
|
34
36
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
if
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
self.xmpp.event("privileges_advertised")
|
53
|
-
|
54
|
-
|
55
|
-
XEP_0356._handle_privilege = _handle_privilege
|
37
|
+
if data is None:
|
38
|
+
raise XMPPError(
|
39
|
+
"item-not-found",
|
40
|
+
f"Bits of binary '{cid}' is not available.",
|
41
|
+
)
|
42
|
+
|
43
|
+
if isinstance(data, Iq):
|
44
|
+
data["id"] = iq["id"]
|
45
|
+
data.send()
|
46
|
+
return
|
47
|
+
|
48
|
+
iq = iq.reply()
|
49
|
+
iq.append(data)
|
50
|
+
iq.send()
|
51
|
+
|
52
|
+
|
53
|
+
XEP_0231._handle_bob_iq = _handle_bob_iq
|
56
54
|
|
57
55
|
|
58
56
|
def session_bind(self, jid):
|
@@ -98,4 +96,3 @@ slixmpp.plugins.PLUGINS.extend(
|
|
98
96
|
|
99
97
|
|
100
98
|
Message.reply = reply # type: ignore
|
101
|
-
log = logging.getLogger(__name__)
|
@@ -1,17 +1,17 @@
|
|
1
1
|
slidge/__init__.py,sha256=S0tUjqpZlzsr8G4Y_1Xt-KCYB07qaknTB0OwHU8k29U,1587
|
2
2
|
slidge/__main__.py,sha256=ydjUklOoavS4YlGfjRX_8BQN2DaSbaXPMi47RkOgcFI,37
|
3
|
-
slidge/__version__.py,sha256=
|
3
|
+
slidge/__version__.py,sha256=7B4XHb2FWMm2Pq-Bo548FLUn87ezWnj1aoWxA4jTkZs,164
|
4
4
|
slidge/command/__init__.py,sha256=UYf1mjCYbZ5G7PIgaFTWSQRAzEJkQ6dTH8Fu_e_XnO0,613
|
5
5
|
slidge/command/adhoc.py,sha256=-AO4h1N6owSuuqZon5tDL29O6qmEeAd1pcPjGCkzKRs,10065
|
6
6
|
slidge/command/admin.py,sha256=TYrzgCIhjcTIwl1IUaFlUd3D98SPyao10gB20zo8b3Q,6187
|
7
|
-
slidge/command/base.py,sha256=
|
7
|
+
slidge/command/base.py,sha256=S-4WnxDuGE3sQTca5L6DjHVBsHqpNuf6zvXffYoP46c,13159
|
8
8
|
slidge/command/categories.py,sha256=vF0KGDV9sEn8TNkcMoDRw-u3gEyNHSXghOU2JRHQtKs,351
|
9
|
-
slidge/command/chat_command.py,sha256=
|
10
|
-
slidge/command/register.py,sha256=
|
11
|
-
slidge/command/user.py,sha256=
|
9
|
+
slidge/command/chat_command.py,sha256=z-4qp03rK7kCh3_kEozDViwkDg_hVjHvRCiYYJxedBQ,11153
|
10
|
+
slidge/command/register.py,sha256=Zlh5PufPE8EeHLNrFgn3adSPsq-erMpW8uOVYRqFOy8,6756
|
11
|
+
slidge/command/user.py,sha256=aksfkRUK7xj9n0XM-IfUSS5LrTp0qIHt5K2UkBBT1UE,12099
|
12
12
|
slidge/contact/__init__.py,sha256=WMMaHk7UW7YT9EH2LtPdkU0bHQaOp4ikBhbBQskmoc8,191
|
13
|
-
slidge/contact/contact.py,sha256=
|
14
|
-
slidge/contact/roster.py,sha256
|
13
|
+
slidge/contact/contact.py,sha256=fFWnjgf6HKi782htDyDNS_YVx_baHT24oqjBIruuRRQ,23109
|
14
|
+
slidge/contact/roster.py,sha256=x3speGdHbZ-VTLoQLQW4s53rBeBvW87W8ZibCCZSLDA,10300
|
15
15
|
slidge/core/__init__.py,sha256=RG7Jj5JCJERjhqJ31lOLYV-7bH_oblClQD1KF9LsTXo,68
|
16
16
|
slidge/core/config.py,sha256=WP3-ScXqdAhJBX7IRB5pBi_tAV_vE6G5W3Z-LGGULQw,7691
|
17
17
|
slidge/core/dispatcher/__init__.py,sha256=1EXcjXietUKlxEqdrCWCV3xZ3q_DSsjHoqWrPMbtYao,84
|
@@ -27,21 +27,21 @@ slidge/core/dispatcher/muc/mam.py,sha256=1ROVP4ZPEVEH-HR5qRV4YwHz-V15uu5gyhv1Zww
|
|
27
27
|
slidge/core/dispatcher/muc/misc.py,sha256=bHBjMC-Pu3jR5hAPGMzXf-C05UbACIwg38YbJUxHIxk,4068
|
28
28
|
slidge/core/dispatcher/muc/owner.py,sha256=1a6YV7b_mmi1jC6q1ko8weeL8imQA-s-hYGPLIHd10I,3308
|
29
29
|
slidge/core/dispatcher/muc/ping.py,sha256=lb1VQPhiUPZ19KhbofRXMVCcY6wwQ2w-asnqtANaAwA,1660
|
30
|
-
slidge/core/dispatcher/presence.py,sha256=
|
30
|
+
slidge/core/dispatcher/presence.py,sha256=062I98OR2-iJOwU_UT2DHMxK4YlEo6Sbot282ab_-zo,6419
|
31
31
|
slidge/core/dispatcher/registration.py,sha256=Xmbw9NF3LUppCOa3XzreopdKDitZnwl_5HE-kds74n8,3155
|
32
32
|
slidge/core/dispatcher/search.py,sha256=9cGj0wwvyYlP_Yk440Y12sgo4Y1p-JWUDSJP5Zxch0M,3296
|
33
|
-
slidge/core/dispatcher/session_dispatcher.py,sha256=
|
33
|
+
slidge/core/dispatcher/session_dispatcher.py,sha256=vNaOJpHKGTzIyQJX457IvhbooKFN5JR3HA7XW0AArFI,2868
|
34
34
|
slidge/core/dispatcher/util.py,sha256=YtXyVxM3orE7aYWs-GbJumtLTI63OpaQY_t4FMTjoZo,5754
|
35
35
|
slidge/core/dispatcher/vcard.py,sha256=Rmx-wCz6Lps0mXCO48HppNQlS3GOgMuzuw9hZYBdlVU,5130
|
36
|
-
slidge/core/gateway.py,sha256=
|
36
|
+
slidge/core/gateway.py,sha256=m7XN4ACd_txLl4zoAJNJjKT0BFJu6yUfJmhVfUkV7XM,36512
|
37
37
|
slidge/core/mixins/__init__.py,sha256=muReAzgvENgMvlfm0Fpe6BQFfm2EMjoDe9ZhGgo6Vig,627
|
38
|
-
slidge/core/mixins/attachment.py,sha256=
|
38
|
+
slidge/core/mixins/attachment.py,sha256=LLZ_BFJfYIFtmzX4N2rhBARppyHz5AMLGkspMixkxmg,20128
|
39
39
|
slidge/core/mixins/avatar.py,sha256=kGIIZzLSNuxF9bIvt5Bv03_uT_pU5QV1kS7cRu6-GUA,7874
|
40
40
|
slidge/core/mixins/base.py,sha256=MOd-pas38_52VawQVlxWtBtmTKC6My9G0ZaCeQxOJbs,748
|
41
41
|
slidge/core/mixins/db.py,sha256=5Qpegd7D8e5TLXLLINYcf_DuVdN-7wNmsfztUuFYPcU,442
|
42
42
|
slidge/core/mixins/disco.py,sha256=jk3Z1B6zTuisHv8VKNRJodIo0ee5btYHh2ZrlflPj_Q,3670
|
43
43
|
slidge/core/mixins/lock.py,sha256=Vf1rrkbyNbSprr38WGfZiMgTB7AdbqH8ppFHY8N2yXE,975
|
44
|
-
slidge/core/mixins/message.py,sha256=
|
44
|
+
slidge/core/mixins/message.py,sha256=z_uyWkQXXya4yjpPzFmbyTQMIBM1SpUJfcIuysC8NFY,7532
|
45
45
|
slidge/core/mixins/message_maker.py,sha256=TcCutHi0sIwL6beJNkN7XyR0aDIbA0xZyxd2Gc9ulG4,6022
|
46
46
|
slidge/core/mixins/message_text.py,sha256=pCY4tezEuwB2ZuUyUi72i4v9AJkxp_SWF1jrFsn94Ns,8096
|
47
47
|
slidge/core/mixins/presence.py,sha256=yywo6KAw8C7GaZSMrSMuioNfhW08MrnobHt8XbHd0q8,7891
|
@@ -72,17 +72,17 @@ slidge/db/alembic/versions/c4a8ec35a0e8_per_room_user_nick.py,sha256=jjQmlRv6nqd
|
|
72
72
|
slidge/db/alembic/versions/e91195719c2c_store_users_avatars_persistently.py,sha256=8Ga3VFgKrzMs_-B8OPtfP-0rey_MFaDg-QGtSbaft3o,640
|
73
73
|
slidge/db/avatar.py,sha256=FfRt2Vu11ZKD9F3x1_drawvUd-TDE3mp7SE3BZ9hOOg,6467
|
74
74
|
slidge/db/meta.py,sha256=v1Jf-npZ28QwdGpsLQWLBHEbEP3-jnPrygRg05tJ_Iw,1831
|
75
|
-
slidge/db/models.py,sha256=
|
75
|
+
slidge/db/models.py,sha256=0NUJfa3lPKHhwV2zE4p7QVYCVs3yn9egFg2u9mssk5c,13964
|
76
76
|
slidge/db/store.py,sha256=KDQ0rp7h6FHgONTYBvucytE7n6Fhsgxgo0pgX18dsTA,46696
|
77
77
|
slidge/group/__init__.py,sha256=yFt7cHqeaKIMN6f9ZyhhspOcJJvBtLedGv-iICG7lto,258
|
78
78
|
slidge/group/archive.py,sha256=xGPkdSk8-BT6t6lNVo1FEwiFVAttoxCma8Tsyk5r8Kg,5279
|
79
79
|
slidge/group/bookmarks.py,sha256=AvFL34bEX6n3OP1Np309T5hrLK9GnjkjdyLJ3uiLZyc,6616
|
80
80
|
slidge/group/participant.py,sha256=Wtq03Ix55AxlK4pvYVIalLwmKklJiIAsZdeLADJNJgU,17138
|
81
|
-
slidge/group/room.py,sha256=
|
82
|
-
slidge/main.py,sha256=
|
81
|
+
slidge/group/room.py,sha256=kPy-5bWT8215I1MPJnCCPcaDfSRMiqXx6Fta9BRpLVk,46043
|
82
|
+
slidge/main.py,sha256=30cxsolnw-CjCp94jhSjKotCem9rZHCQBpGMP5Ttoos,6237
|
83
83
|
slidge/migration.py,sha256=4BJmPIRB56_WIhRTqBFIIBXuvnhhBjjOMl4CE7jY6oc,1541
|
84
84
|
slidge/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
85
|
-
slidge/slixfix/__init__.py,sha256=
|
85
|
+
slidge/slixfix/__init__.py,sha256=A1481U6RCfcJUvKF_Lkek5VI5vKbI0cN12KgQ6rk8GE,2576
|
86
86
|
slidge/slixfix/delivery_receipt.py,sha256=3bWdZH3-X3CZJXmnI_TpjkTUUK-EY4Ktm78lW0-40fc,1366
|
87
87
|
slidge/slixfix/link_preview/__init__.py,sha256=TDPTSEH5FQxgGpQpQIde-D72AHg-6YVWG-tOj4KpKmU,290
|
88
88
|
slidge/slixfix/link_preview/link_preview.py,sha256=9PgdfnoyVMHnXS0w5OFp0wz3ku96Ck-HtRXbVUlDi1U,448
|
@@ -124,8 +124,8 @@ slidge/util/db.py,sha256=4LxZj8oBYgiSnyBUnF_ALjr0TblkfNQq_p28sCfkHMY,242
|
|
124
124
|
slidge/util/test.py,sha256=xnGXK0wvua49ncQm4linIfH24Ux6oCkm5A71k2V80zI,14007
|
125
125
|
slidge/util/types.py,sha256=R_xfS5mRL0XUJIoDpnaAkZlTOoLPerduXBFftaVwIAI,5489
|
126
126
|
slidge/util/util.py,sha256=An4BRIHktZGXnu4kCwaKYaSye_PlyuxEm_4SC9YvPhc,9594
|
127
|
-
slidge-0.2.
|
128
|
-
slidge-0.2.
|
129
|
-
slidge-0.2.
|
130
|
-
slidge-0.2.
|
131
|
-
slidge-0.2.
|
127
|
+
slidge-0.2.2.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
128
|
+
slidge-0.2.2.dist-info/METADATA,sha256=RtbebnKhLTIHGQxNMCKlDIL0xGE37uiDZoAswMjRA6k,5003
|
129
|
+
slidge-0.2.2.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
130
|
+
slidge-0.2.2.dist-info/entry_points.txt,sha256=btz6mbzx1X6fjFWAS_Bo5qNi8PtxUsDgunt-6r4JDHw,43
|
131
|
+
slidge-0.2.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|