slidge 0.2.0a10__py3-none-any.whl → 0.2.0b1__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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
|