slidge 0.2.0a10__py3-none-any.whl → 0.2.0b1__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/__main__.py +2 -3
- slidge/__version__.py +1 -1
- slidge/command/adhoc.py +31 -15
- slidge/command/admin.py +11 -4
- slidge/command/base.py +5 -2
- slidge/command/categories.py +13 -3
- slidge/command/chat_command.py +14 -1
- slidge/command/user.py +22 -10
- slidge/contact/roster.py +2 -0
- slidge/core/config.py +6 -3
- slidge/core/dispatcher/message/marker.py +2 -7
- slidge/core/dispatcher/muc/misc.py +3 -0
- slidge/core/dispatcher/muc/owner.py +1 -1
- slidge/core/dispatcher/util.py +23 -23
- slidge/core/mixins/attachment.py +24 -8
- slidge/core/mixins/lock.py +10 -8
- slidge/core/mixins/message.py +5 -205
- slidge/core/mixins/message_text.py +211 -0
- slidge/db/alembic/versions/15b0bd83407a_remove_bogus_unique_constraints_on_room_.py +85 -0
- slidge/db/alembic/versions/3071e0fa69d4_add_contact_client_type.py +1 -1
- slidge/db/alembic/versions/5bd48bfdffa2_lift_room_legacy_id_constraint.py +12 -1
- slidge/db/alembic/versions/8d2ced764698_rely_on_db_to_store_contacts_rooms_and_.py +6 -0
- slidge/db/alembic/versions/abba1ae0edb3_store_avatar_legacy_id_in_the_contact_.py +7 -6
- slidge/db/alembic/versions/b64b1a793483_add_source_and_legacy_id_for_archived_.py +4 -0
- slidge/db/models.py +4 -2
- slidge/db/store.py +18 -11
- slidge/group/bookmarks.py +23 -1
- slidge/group/participant.py +5 -5
- slidge/group/room.py +10 -1
- slidge/util/test.py +4 -4
- slidge/util/util.py +18 -0
- {slidge-0.2.0a10.dist-info → slidge-0.2.0b1.dist-info}/METADATA +1 -1
- {slidge-0.2.0a10.dist-info → slidge-0.2.0b1.dist-info}/RECORD +36 -34
- slidge-0.2.0b1.dist-info/entry_points.txt +3 -0
- slidge-0.2.0a10.dist-info/entry_points.txt +0 -3
- {slidge-0.2.0a10.dist-info → slidge-0.2.0b1.dist-info}/LICENSE +0 -0
- {slidge-0.2.0a10.dist-info → slidge-0.2.0b1.dist-info}/WHEEL +0 -0
slidge/db/store.py
CHANGED
@@ -251,15 +251,6 @@ class SentStore(EngineMixin):
|
|
251
251
|
.where(XmppToLegacyIds.type == XmppToLegacyEnum.THREAD)
|
252
252
|
).scalar()
|
253
253
|
|
254
|
-
def get_xmpp_thread(self, user_pk: int, legacy_id: str) -> Optional[str]:
|
255
|
-
with self.session() as session:
|
256
|
-
return session.execute(
|
257
|
-
select(XmppToLegacyIds.xmpp_id)
|
258
|
-
.where(XmppToLegacyIds.user_account_id == user_pk)
|
259
|
-
.where(XmppToLegacyIds.legacy_id == legacy_id)
|
260
|
-
.where(XmppToLegacyIds.type == XmppToLegacyEnum.THREAD)
|
261
|
-
).scalar()
|
262
|
-
|
263
254
|
def was_sent_by_user(self, user_pk: int, legacy_id: str) -> bool:
|
264
255
|
with self.session() as session:
|
265
256
|
return (
|
@@ -414,6 +405,16 @@ class ContactStore(UpdatedMixin):
|
|
414
405
|
|
415
406
|
def add_to_sent(self, contact_pk: int, msg_id: str) -> None:
|
416
407
|
with self.session() as session:
|
408
|
+
if (
|
409
|
+
session.query(ContactSent.id)
|
410
|
+
.where(ContactSent.contact_id == contact_pk)
|
411
|
+
.where(ContactSent.msg_id == msg_id)
|
412
|
+
.first()
|
413
|
+
) is not None:
|
414
|
+
log.warning(
|
415
|
+
"Contact %s has already sent message %s", contact_pk, msg_id
|
416
|
+
)
|
417
|
+
return
|
417
418
|
new = ContactSent(contact_id=contact_pk, msg_id=msg_id)
|
418
419
|
session.add(new)
|
419
420
|
session.commit()
|
@@ -504,6 +505,12 @@ class MAMStore(EngineMixin):
|
|
504
505
|
.where(ArchivedMessage.room_id == room_pk)
|
505
506
|
.where(ArchivedMessage.stanza_id == message.id)
|
506
507
|
).scalar()
|
508
|
+
if existing is None and legacy_msg_id is not None:
|
509
|
+
existing = session.execute(
|
510
|
+
select(ArchivedMessage)
|
511
|
+
.where(ArchivedMessage.room_id == room_pk)
|
512
|
+
.where(ArchivedMessage.legacy_id == legacy_msg_id)
|
513
|
+
).scalar()
|
507
514
|
if existing is not None:
|
508
515
|
log.debug("Updating message %s in room %s", message.id, room_pk)
|
509
516
|
existing.timestamp = message.when
|
@@ -994,9 +1001,9 @@ class ParticipantStore(EngineMixin):
|
|
994
1001
|
def __init__(self, *a, **kw):
|
995
1002
|
super().__init__(*a, **kw)
|
996
1003
|
with self.session() as session:
|
997
|
-
session.execute(delete(Participant))
|
998
|
-
session.execute(delete(Hat))
|
999
1004
|
session.execute(delete(participant_hats))
|
1005
|
+
session.execute(delete(Hat))
|
1006
|
+
session.execute(delete(Participant))
|
1000
1007
|
session.commit()
|
1001
1008
|
|
1002
1009
|
def add(self, room_pk: int, nickname: str) -> int:
|
slidge/group/bookmarks.py
CHANGED
@@ -133,6 +133,8 @@ class LegacyBookmarks(
|
|
133
133
|
try:
|
134
134
|
with muc.updating_info():
|
135
135
|
await muc.avatar_wrap_update_info()
|
136
|
+
except XMPPError:
|
137
|
+
raise
|
136
138
|
except Exception as e:
|
137
139
|
raise XMPPError("internal-server-error", str(e))
|
138
140
|
if not muc.user_nick:
|
@@ -160,6 +162,26 @@ class LegacyBookmarks(
|
|
160
162
|
" LegacyBookmarks.fill() was not overridden."
|
161
163
|
)
|
162
164
|
|
163
|
-
def remove(
|
165
|
+
async def remove(
|
166
|
+
self,
|
167
|
+
muc: LegacyMUC,
|
168
|
+
reason="You left this group from the official client.",
|
169
|
+
kick=True,
|
170
|
+
) -> None:
|
171
|
+
"""
|
172
|
+
Delete everything about a specific group.
|
173
|
+
|
174
|
+
This should be called when the user leaves the group from the official
|
175
|
+
app.
|
176
|
+
|
177
|
+
:param muc: The MUC to remove.
|
178
|
+
:param reason: Optionally, a reason why this group was removed.
|
179
|
+
:param kick: Whether the user should be kicked from this group. Set this
|
180
|
+
to False in case you do this somewhere else in your code, eg, on
|
181
|
+
receiving the confirmation that the group was deleted.
|
182
|
+
"""
|
164
183
|
assert muc.pk is not None
|
184
|
+
if kick:
|
185
|
+
user_participant = await muc.get_user_participant()
|
186
|
+
user_participant.kick(reason)
|
165
187
|
self.__store.delete(muc.pk)
|
slidge/group/participant.py
CHANGED
@@ -324,7 +324,7 @@ class LegacyParticipant(
|
|
324
324
|
) -> MessageOrPresenceTypeVar:
|
325
325
|
stanza["occupant-id"]["id"] = self.__occupant_id
|
326
326
|
self.__add_nick_element(stanza)
|
327
|
-
if isinstance(stanza, Presence):
|
327
|
+
if not self.is_user and isinstance(stanza, Presence):
|
328
328
|
if stanza["type"] == "unavailable" and not self._presence_sent:
|
329
329
|
return stanza # type:ignore
|
330
330
|
self._presence_sent = True
|
@@ -432,17 +432,17 @@ class LegacyParticipant(
|
|
432
432
|
"""
|
433
433
|
self.muc.remove_participant(self)
|
434
434
|
|
435
|
-
def kick(self):
|
435
|
+
def kick(self, reason: str | None = None):
|
436
436
|
"""
|
437
437
|
Call this when the participant is kicked from the room
|
438
438
|
"""
|
439
|
-
self.muc.remove_participant(self, kick=True)
|
439
|
+
self.muc.remove_participant(self, kick=True, reason=reason)
|
440
440
|
|
441
|
-
def ban(self):
|
441
|
+
def ban(self, reason: str | None = None):
|
442
442
|
"""
|
443
443
|
Call this when the participant is banned from the room
|
444
444
|
"""
|
445
|
-
self.muc.remove_participant(self, ban=True)
|
445
|
+
self.muc.remove_participant(self, ban=True, reason=reason)
|
446
446
|
|
447
447
|
def get_disco_info(self, jid: OptJid = None, node: Optional[str] = None):
|
448
448
|
if self.contact is not None:
|
slidge/group/room.py
CHANGED
@@ -814,13 +814,20 @@ class LegacyMUC(
|
|
814
814
|
return await self.get_user_participant(**kwargs)
|
815
815
|
return await self.get_participant_by_contact(c, **kwargs)
|
816
816
|
|
817
|
-
def remove_participant(
|
817
|
+
def remove_participant(
|
818
|
+
self,
|
819
|
+
p: "LegacyParticipantType",
|
820
|
+
kick=False,
|
821
|
+
ban=False,
|
822
|
+
reason: str | None = None,
|
823
|
+
):
|
818
824
|
"""
|
819
825
|
Call this when a participant leaves the room
|
820
826
|
|
821
827
|
:param p: The participant
|
822
828
|
:param kick: Whether the participant left because they were kicked
|
823
829
|
:param ban: Whether the participant left because they were banned
|
830
|
+
:param reason: Optionally, a reason why the participant was removed.
|
824
831
|
"""
|
825
832
|
if kick and ban:
|
826
833
|
raise TypeError("Either kick or ban")
|
@@ -834,6 +841,8 @@ class LegacyMUC(
|
|
834
841
|
presence = p._make_presence(ptype="unavailable", status_codes=codes)
|
835
842
|
p._affiliation = "outcast" if ban else "none"
|
836
843
|
p._role = "none"
|
844
|
+
if reason:
|
845
|
+
presence["muc"].set_item_attr("reason", reason)
|
837
846
|
p._send(presence)
|
838
847
|
|
839
848
|
def rename_participant(self, old_nickname: str, new_nickname: str):
|
slidge/util/test.py
CHANGED
@@ -215,13 +215,13 @@ class SlidgeTest(SlixTestPlus):
|
|
215
215
|
self.plugin, LegacyBookmarks, base_ok=True
|
216
216
|
)
|
217
217
|
|
218
|
+
# workaround for duplicate output of sql alchemy's log, cf
|
219
|
+
# https://stackoverflow.com/a/76498428/5902284
|
218
220
|
from sqlalchemy import log as sqlalchemy_log
|
219
221
|
|
220
222
|
sqlalchemy_log._add_default_handler = lambda x: None
|
221
223
|
|
222
|
-
engine = self.db_engine = create_engine(
|
223
|
-
"sqlite+pysqlite:///:memory:", echo=True
|
224
|
-
)
|
224
|
+
engine = self.db_engine = create_engine("sqlite+pysqlite:///:memory:")
|
225
225
|
Base.metadata.create_all(engine)
|
226
226
|
BaseGateway.store = SlidgeStore(engine)
|
227
227
|
BaseGateway._test_mode = True
|
@@ -293,7 +293,7 @@ class SlidgeTest(SlixTestPlus):
|
|
293
293
|
)
|
294
294
|
)
|
295
295
|
welcome = self.next_sent()
|
296
|
-
assert welcome["body"]
|
296
|
+
assert welcome["body"], welcome
|
297
297
|
stanza = self.next_sent()
|
298
298
|
assert "logging in" in stanza["status"].lower(), stanza
|
299
299
|
stanza = self.next_sent()
|
slidge/util/util.py
CHANGED
@@ -9,6 +9,13 @@ from pathlib import Path
|
|
9
9
|
from time import time
|
10
10
|
from typing import TYPE_CHECKING, Callable, NamedTuple, Optional, Type, TypeVar
|
11
11
|
|
12
|
+
try:
|
13
|
+
import emoji
|
14
|
+
except ImportError:
|
15
|
+
EMOJI_LIB_AVAILABLE = False
|
16
|
+
else:
|
17
|
+
EMOJI_LIB_AVAILABLE = True
|
18
|
+
|
12
19
|
from .types import Mention, ResourceDict
|
13
20
|
|
14
21
|
if TYPE_CHECKING:
|
@@ -318,3 +325,14 @@ def timeit(func):
|
|
318
325
|
return r
|
319
326
|
|
320
327
|
return wrapped
|
328
|
+
|
329
|
+
|
330
|
+
def strip_leading_emoji(text: str) -> str:
|
331
|
+
if not EMOJI_LIB_AVAILABLE:
|
332
|
+
return text
|
333
|
+
words = text.split(" ")
|
334
|
+
# is_emoji returns False for 🛷️ for obscure reasons,
|
335
|
+
# purely_emoji seems better
|
336
|
+
if len(words) > 1 and emoji.purely_emoji(words[0]):
|
337
|
+
return " ".join(words[1:])
|
338
|
+
return text
|
@@ -1,48 +1,49 @@
|
|
1
1
|
slidge/__init__.py,sha256=S0tUjqpZlzsr8G4Y_1Xt-KCYB07qaknTB0OwHU8k29U,1587
|
2
|
-
slidge/__main__.py,sha256=
|
3
|
-
slidge/__version__.py,sha256=
|
2
|
+
slidge/__main__.py,sha256=ydjUklOoavS4YlGfjRX_8BQN2DaSbaXPMi47RkOgcFI,37
|
3
|
+
slidge/__version__.py,sha256=o9z5MY6bh2r2Gr5POdoOH_xk8Y3xIorqS2ZH6xZtwD4,169
|
4
4
|
slidge/command/__init__.py,sha256=UYf1mjCYbZ5G7PIgaFTWSQRAzEJkQ6dTH8Fu_e_XnO0,613
|
5
|
-
slidge/command/adhoc.py,sha256
|
6
|
-
slidge/command/admin.py,sha256=
|
7
|
-
slidge/command/base.py,sha256=
|
8
|
-
slidge/command/categories.py,sha256=
|
9
|
-
slidge/command/chat_command.py,sha256=
|
5
|
+
slidge/command/adhoc.py,sha256=-AO4h1N6owSuuqZon5tDL29O6qmEeAd1pcPjGCkzKRs,10065
|
6
|
+
slidge/command/admin.py,sha256=TYrzgCIhjcTIwl1IUaFlUd3D98SPyao10gB20zo8b3Q,6187
|
7
|
+
slidge/command/base.py,sha256=S_bKUJB0fnKs58PvjgFf15_6cw-8k2bMeSECTmFxQGQ,13155
|
8
|
+
slidge/command/categories.py,sha256=vF0KGDV9sEn8TNkcMoDRw-u3gEyNHSXghOU2JRHQtKs,351
|
9
|
+
slidge/command/chat_command.py,sha256=8_1mqXNLlcwzozbNhZAAYwxavG09rNR_o9G3TwY-lO8,10941
|
10
10
|
slidge/command/register.py,sha256=fzPcGUoJtainnDOiC13gWV-uYLuJcsmdKGJ-jXT1qIo,6697
|
11
|
-
slidge/command/user.py,sha256=
|
11
|
+
slidge/command/user.py,sha256=0pt9k41npv7MRI_0vauuR1JPb7Gf7UE2lOQeL2XNd7U,12065
|
12
12
|
slidge/contact/__init__.py,sha256=WMMaHk7UW7YT9EH2LtPdkU0bHQaOp4ikBhbBQskmoc8,191
|
13
13
|
slidge/contact/contact.py,sha256=kKtJ9NPLS9DPVyyahx_K-Mtp5k5UQdQJZavC1XCmWlc,23104
|
14
|
-
slidge/contact/roster.py,sha256
|
14
|
+
slidge/contact/roster.py,sha256=-Ei0f0cXX1LFpY29u4Ik68ikno3m2WRA5n5l8Nbjd_E,10267
|
15
15
|
slidge/core/__init__.py,sha256=RG7Jj5JCJERjhqJ31lOLYV-7bH_oblClQD1KF9LsTXo,68
|
16
|
-
slidge/core/config.py,sha256=
|
16
|
+
slidge/core/config.py,sha256=WP3-ScXqdAhJBX7IRB5pBi_tAV_vE6G5W3Z-LGGULQw,7691
|
17
17
|
slidge/core/dispatcher/__init__.py,sha256=1EXcjXietUKlxEqdrCWCV3xZ3q_DSsjHoqWrPMbtYao,84
|
18
18
|
slidge/core/dispatcher/caps.py,sha256=vzCAXo_bhALuLEpJWtyJTzVfWx96g1AsWD8_wkoDl0Y,2028
|
19
19
|
slidge/core/dispatcher/disco.py,sha256=j56VY9NIFzwPEWFKQQZ7YIqS9GdD-ZaF_K8a2L-JvRk,2006
|
20
20
|
slidge/core/dispatcher/message/__init__.py,sha256=vpDGOc_U9XvkUU_ws9n9-5M2NPJ87XGTVpuIxM7Z99k,223
|
21
21
|
slidge/core/dispatcher/message/chat_state.py,sha256=sCdEpzbgmvBmTovNOCv9uY6v0eJZcWVvDYAGlAV3FJ4,1735
|
22
|
-
slidge/core/dispatcher/message/marker.py,sha256=
|
22
|
+
slidge/core/dispatcher/message/marker.py,sha256=f1ezaMoHupBFZY7aUMsWLAQG7G1J9b3ihxICCkpGtis,2411
|
23
23
|
slidge/core/dispatcher/message/message.py,sha256=HwauW2kGionLyDWG01OSa9a14gYzoovJuJvGbfB4nt4,15296
|
24
24
|
slidge/core/dispatcher/muc/__init__.py,sha256=V8URHLJ_y7mk-7Id6FzRuczb1Uq_Z69fhxvzHuVLH1w,269
|
25
25
|
slidge/core/dispatcher/muc/admin.py,sha256=s21V2LEqc0e_DIpipEhhQdpae762lW1lVqj4wjFhX8M,3364
|
26
26
|
slidge/core/dispatcher/muc/mam.py,sha256=1ROVP4ZPEVEH-HR5qRV4YwHz-V15uu5gyhv1ZwwKhk8,2821
|
27
|
-
slidge/core/dispatcher/muc/misc.py,sha256=
|
28
|
-
slidge/core/dispatcher/muc/owner.py,sha256=
|
27
|
+
slidge/core/dispatcher/muc/misc.py,sha256=bHBjMC-Pu3jR5hAPGMzXf-C05UbACIwg38YbJUxHIxk,4068
|
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
30
|
slidge/core/dispatcher/presence.py,sha256=ZxAmC34yxKxbk_-h6g_S8pTssL7ovULm3q2ishpYaB4,6393
|
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
33
|
slidge/core/dispatcher/session_dispatcher.py,sha256=_njTftgpUKKMP-hgAo99Hu0YrIa6E9OTzSYdiMW000w,2844
|
34
|
-
slidge/core/dispatcher/util.py,sha256=
|
34
|
+
slidge/core/dispatcher/util.py,sha256=YtXyVxM3orE7aYWs-GbJumtLTI63OpaQY_t4FMTjoZo,5754
|
35
35
|
slidge/core/dispatcher/vcard.py,sha256=Rmx-wCz6Lps0mXCO48HppNQlS3GOgMuzuw9hZYBdlVU,5130
|
36
36
|
slidge/core/gateway.py,sha256=NhIgxZKPnOpwsx50OKgyZyk9nfU8ZlUSMddwIDIhFcw,36351
|
37
37
|
slidge/core/mixins/__init__.py,sha256=muReAzgvENgMvlfm0Fpe6BQFfm2EMjoDe9ZhGgo6Vig,627
|
38
|
-
slidge/core/mixins/attachment.py,sha256=
|
38
|
+
slidge/core/mixins/attachment.py,sha256=qHtv2I1buTmPO1jwRIpq2rixq5XTAljeWYj2eMWSw2k,19623
|
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
|
-
slidge/core/mixins/lock.py,sha256=
|
44
|
-
slidge/core/mixins/message.py,sha256=
|
43
|
+
slidge/core/mixins/lock.py,sha256=Vf1rrkbyNbSprr38WGfZiMgTB7AdbqH8ppFHY8N2yXE,975
|
44
|
+
slidge/core/mixins/message.py,sha256=FB3VoaT81xUNVnaBMSwNJoHfrVv4Iv2678yDQH-23Rw,7551
|
45
45
|
slidge/core/mixins/message_maker.py,sha256=TcCutHi0sIwL6beJNkN7XyR0aDIbA0xZyxd2Gc9ulG4,6022
|
46
|
+
slidge/core/mixins/message_text.py,sha256=pCY4tezEuwB2ZuUyUi72i4v9AJkxp_SWF1jrFsn94Ns,8096
|
46
47
|
slidge/core/mixins/presence.py,sha256=yywo6KAw8C7GaZSMrSMuioNfhW08MrnobHt8XbHd0q8,7891
|
47
48
|
slidge/core/mixins/recipient.py,sha256=U-YppozUO8pA94jmD3-qmhkykTebPNaOVWc3JDPC9w8,1302
|
48
49
|
slidge/core/pubsub.py,sha256=oTiS5KFQJAmsgkhOsvfvthT-LkuZGQSCrrUG0JskNkI,11907
|
@@ -53,30 +54,31 @@ slidge/db/alembic/env.py,sha256=hsBlRNs0zF5diSHGRSa8Fi3qRVQDA2rJdR41AEIdvxc,1642
|
|
53
54
|
slidge/db/alembic/old_user_store.py,sha256=zFOv0JEWQQK0_TMRlU4Z0G5Mc9pxvEErLyOzXmRAe5Q,5209
|
54
55
|
slidge/db/alembic/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
|
55
56
|
slidge/db/alembic/versions/09f27f098baa_add_missing_attributes_in_room.py,sha256=mUL-0Io6ZPd_QbnKfwGYyjdMcM2uxQ0Wg72H23-2t_E,1033
|
57
|
+
slidge/db/alembic/versions/15b0bd83407a_remove_bogus_unique_constraints_on_room_.py,sha256=kzHuHGhzey5CY0p_OsKf5a-3zSk2649wqg2ToLiSD1I,2927
|
56
58
|
slidge/db/alembic/versions/2461390c0af2_store_contacts_caps_verstring_in_db.py,sha256=CLB-kOP9Rc0FJIKDLef912L5sYkjpTIPC8fhrIdrC7k,1084
|
57
59
|
slidge/db/alembic/versions/29f5280c61aa_store_subject_setter_in_room.py,sha256=f8TFS28CXjGhvIn41UYMoHYeODfqhKfo4O7gk-JwA1E,1134
|
58
60
|
slidge/db/alembic/versions/2b1f45ab7379_store_room_subject_setter_by_nickname.py,sha256=CMVP2wFz6s7t57eWdSaGtck8BXzfVPJhHE5AoWi34tI,1359
|
59
|
-
slidge/db/alembic/versions/3071e0fa69d4_add_contact_client_type.py,sha256=
|
61
|
+
slidge/db/alembic/versions/3071e0fa69d4_add_contact_client_type.py,sha256=jCdwCOnX9VDgnqIFFHGKaPA7w87Hm9nvR1rMY0LrA30,1394
|
60
62
|
slidge/db/alembic/versions/45c24cc73c91_add_bob.py,sha256=UjMySZ5LaInyPt0KbAxx0rF4GQhZh8CwBeqHtNPdG1c,1249
|
61
|
-
slidge/db/alembic/versions/5bd48bfdffa2_lift_room_legacy_id_constraint.py,sha256=
|
63
|
+
slidge/db/alembic/versions/5bd48bfdffa2_lift_room_legacy_id_constraint.py,sha256=m3USa76h0O2Xut-NePXIOZfkXl0bx0d5FyjOYpd34Jo,1977
|
62
64
|
slidge/db/alembic/versions/82a4af84b679_add_muc_history_filled.py,sha256=g37po0ydp8ZmzJrE5oFV7GscnploxjCtPDpw28SqVGk,1429
|
63
65
|
slidge/db/alembic/versions/8b993243a536_add_vcard_content_to_contact_table.py,sha256=18tG8B03Kq8Qz_-mMd28Beed6jow8XNTtrz7gT5QY3g,1210
|
64
|
-
slidge/db/alembic/versions/8d2ced764698_rely_on_db_to_store_contacts_rooms_and_.py,sha256=
|
66
|
+
slidge/db/alembic/versions/8d2ced764698_rely_on_db_to_store_contacts_rooms_and_.py,sha256=ikoAlRV3_BJcDcFRANF-9HTB--0xpY0C5XdGuMuW9c0,4866
|
65
67
|
slidge/db/alembic/versions/aa9d82a7f6ef_db_creation.py,sha256=XFHaHjPMoxKxKRjNBnYHBzMtS6K38ENcsGzgzlyp60g,2649
|
66
|
-
slidge/db/alembic/versions/abba1ae0edb3_store_avatar_legacy_id_in_the_contact_.py,sha256=
|
68
|
+
slidge/db/alembic/versions/abba1ae0edb3_store_avatar_legacy_id_in_the_contact_.py,sha256=VprqEVHipYuM-ea-CIM4_ubOD5zJ9inLTbhXc869n3A,2779
|
67
69
|
slidge/db/alembic/versions/b33993e87db3_move_everything_to_persistent_db.py,sha256=2tiRxoC9PYOQn6XQrwK0JTEsb45Pzp2PsKoZSS4rcIA,7564
|
68
|
-
slidge/db/alembic/versions/b64b1a793483_add_source_and_legacy_id_for_archived_.py,sha256=
|
70
|
+
slidge/db/alembic/versions/b64b1a793483_add_source_and_legacy_id_for_archived_.py,sha256=r2sOgR5HcfueJyc3cWNDRmlZzdHOSX6nl2gef54wDbk,1559
|
69
71
|
slidge/db/alembic/versions/c4a8ec35a0e8_per_room_user_nick.py,sha256=jjQmlRv6nqdm5q6LbwVpSUSkTBj1c76Hiq8e8q77q3g,933
|
70
72
|
slidge/db/alembic/versions/e91195719c2c_store_users_avatars_persistently.py,sha256=8Ga3VFgKrzMs_-B8OPtfP-0rey_MFaDg-QGtSbaft3o,640
|
71
73
|
slidge/db/avatar.py,sha256=FfRt2Vu11ZKD9F3x1_drawvUd-TDE3mp7SE3BZ9hOOg,6467
|
72
74
|
slidge/db/meta.py,sha256=v1Jf-npZ28QwdGpsLQWLBHEbEP3-jnPrygRg05tJ_Iw,1831
|
73
|
-
slidge/db/models.py,sha256=
|
74
|
-
slidge/db/store.py,sha256=
|
75
|
+
slidge/db/models.py,sha256=ZbnoUK2yajUJXzyCAWlkTQtkuJAaH1gc9G0ilRpfADg,13812
|
76
|
+
slidge/db/store.py,sha256=KDQ0rp7h6FHgONTYBvucytE7n6Fhsgxgo0pgX18dsTA,46696
|
75
77
|
slidge/group/__init__.py,sha256=yFt7cHqeaKIMN6f9ZyhhspOcJJvBtLedGv-iICG7lto,258
|
76
78
|
slidge/group/archive.py,sha256=xGPkdSk8-BT6t6lNVo1FEwiFVAttoxCma8Tsyk5r8Kg,5279
|
77
|
-
slidge/group/bookmarks.py,sha256=
|
78
|
-
slidge/group/participant.py,sha256=
|
79
|
-
slidge/group/room.py,sha256=
|
79
|
+
slidge/group/bookmarks.py,sha256=AvFL34bEX6n3OP1Np309T5hrLK9GnjkjdyLJ3uiLZyc,6616
|
80
|
+
slidge/group/participant.py,sha256=Wtq03Ix55AxlK4pvYVIalLwmKklJiIAsZdeLADJNJgU,17138
|
81
|
+
slidge/group/room.py,sha256=IizSwUBoKLvcvLpDseHIW_2KAky38uWsSv-poJuCAF0,46019
|
80
82
|
slidge/main.py,sha256=8oND7xpR3eLw7b62fT61UhYlmNp_9gv3tNz2N3xR7-c,6232
|
81
83
|
slidge/migration.py,sha256=4BJmPIRB56_WIhRTqBFIIBXuvnhhBjjOMl4CE7jY6oc,1541
|
82
84
|
slidge/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -119,11 +121,11 @@ slidge/util/__init__.py,sha256=BELovoTMPcPPGz3D48esBr8A4BRRHXTvavfgnArBgEc,301
|
|
119
121
|
slidge/util/archive_msg.py,sha256=xXAR0BI5r3d6KKWjae9594izCOv6iI03z2WLuTecNw8,1724
|
120
122
|
slidge/util/conf.py,sha256=1j2OnOsCBar1tOObErhXR5RC3Vl3faliOZ1U8J3My58,6613
|
121
123
|
slidge/util/db.py,sha256=4LxZj8oBYgiSnyBUnF_ALjr0TblkfNQq_p28sCfkHMY,242
|
122
|
-
slidge/util/test.py,sha256=
|
124
|
+
slidge/util/test.py,sha256=xnGXK0wvua49ncQm4linIfH24Ux6oCkm5A71k2V80zI,14007
|
123
125
|
slidge/util/types.py,sha256=R_xfS5mRL0XUJIoDpnaAkZlTOoLPerduXBFftaVwIAI,5489
|
124
|
-
slidge/util/util.py,sha256=
|
125
|
-
slidge-0.2.
|
126
|
-
slidge-0.2.
|
127
|
-
slidge-0.2.
|
128
|
-
slidge-0.2.
|
129
|
-
slidge-0.2.
|
126
|
+
slidge/util/util.py,sha256=An4BRIHktZGXnu4kCwaKYaSye_PlyuxEm_4SC9YvPhc,9594
|
127
|
+
slidge-0.2.0b1.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
128
|
+
slidge-0.2.0b1.dist-info/METADATA,sha256=PnfXeM1xUbngKwoPBAuBeiIJ70jxdX7rUcnr2Lq2f0w,5005
|
129
|
+
slidge-0.2.0b1.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
130
|
+
slidge-0.2.0b1.dist-info/entry_points.txt,sha256=btz6mbzx1X6fjFWAS_Bo5qNi8PtxUsDgunt-6r4JDHw,43
|
131
|
+
slidge-0.2.0b1.dist-info/RECORD,,
|
File without changes
|
File without changes
|