slidge 0.2.0a0__py3-none-any.whl → 0.2.0a1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. slidge/__version__.py +1 -1
  2. slidge/command/admin.py +1 -1
  3. slidge/command/user.py +0 -1
  4. slidge/contact/contact.py +86 -32
  5. slidge/contact/roster.py +79 -19
  6. slidge/core/config.py +1 -4
  7. slidge/core/gateway/base.py +9 -2
  8. slidge/core/gateway/caps.py +7 -5
  9. slidge/core/gateway/muc_admin.py +1 -1
  10. slidge/core/gateway/session_dispatcher.py +20 -6
  11. slidge/core/gateway/vcard_temp.py +1 -1
  12. slidge/core/mixins/attachment.py +17 -4
  13. slidge/core/mixins/avatar.py +26 -9
  14. slidge/core/mixins/db.py +18 -0
  15. slidge/core/mixins/disco.py +0 -10
  16. slidge/core/mixins/message.py +7 -1
  17. slidge/core/mixins/presence.py +6 -3
  18. slidge/core/pubsub.py +7 -15
  19. slidge/core/session.py +6 -3
  20. slidge/db/alembic/versions/2461390c0af2_store_contacts_caps_verstring_in_db.py +36 -0
  21. slidge/db/alembic/versions/2b1f45ab7379_store_room_subject_setter_by_nickname.py +41 -0
  22. slidge/db/alembic/versions/82a4af84b679_add_muc_history_filled.py +48 -0
  23. slidge/db/alembic/versions/aa9d82a7f6ef_db_creation.py +11 -2
  24. slidge/db/alembic/versions/b64b1a793483_add_source_and_legacy_id_for_archived_.py +48 -0
  25. slidge/db/alembic/versions/c4a8ec35a0e8_per_room_user_nick.py +34 -0
  26. slidge/db/avatar.py +20 -9
  27. slidge/db/models.py +16 -6
  28. slidge/db/store.py +217 -115
  29. slidge/group/archive.py +46 -1
  30. slidge/group/bookmarks.py +17 -5
  31. slidge/group/participant.py +10 -3
  32. slidge/group/room.py +183 -125
  33. slidge/main.py +3 -3
  34. slidge/slixfix/xep_0292/vcard4.py +2 -0
  35. slidge/util/archive_msg.py +2 -1
  36. slidge/util/test.py +54 -4
  37. slidge/util/types.py +5 -0
  38. slidge/util/util.py +22 -0
  39. {slidge-0.2.0a0.dist-info → slidge-0.2.0a1.dist-info}/METADATA +2 -4
  40. {slidge-0.2.0a0.dist-info → slidge-0.2.0a1.dist-info}/RECORD +43 -37
  41. {slidge-0.2.0a0.dist-info → slidge-0.2.0a1.dist-info}/LICENSE +0 -0
  42. {slidge-0.2.0a0.dist-info → slidge-0.2.0a1.dist-info}/WHEEL +0 -0
  43. {slidge-0.2.0a0.dist-info → slidge-0.2.0a1.dist-info}/entry_points.txt +0 -0
slidge/util/test.py CHANGED
@@ -7,6 +7,7 @@ from xml.dom.minidom import parseString
7
7
 
8
8
  import xmldiff.main
9
9
  from slixmpp import (
10
+ JID,
10
11
  ElementBase,
11
12
  Iq,
12
13
  MatcherId,
@@ -20,7 +21,7 @@ from slixmpp.stanza.error import Error
20
21
  from slixmpp.test import SlixTest, TestTransport
21
22
  from slixmpp.xmlstream import highlight, tostring
22
23
  from slixmpp.xmlstream.matcher import MatchIDSender
23
- from sqlalchemy import create_engine
24
+ from sqlalchemy import create_engine, delete
24
25
 
25
26
  from slidge import (
26
27
  BaseGateway,
@@ -39,6 +40,7 @@ from ..core.pubsub import PepAvatar, PepNick
39
40
  from ..db import SlidgeStore
40
41
  from ..db.avatar import avatar_cache
41
42
  from ..db.meta import Base
43
+ from ..db.models import Contact
42
44
 
43
45
 
44
46
  class SlixTestPlus(SlixTest):
@@ -213,14 +215,17 @@ class SlidgeTest(SlixTestPlus):
213
215
  self.plugin, LegacyBookmarks, base_ok=True
214
216
  )
215
217
 
216
- self.xmpp = BaseGateway.get_self_or_unique_subclass()()
217
- engine = create_engine("sqlite+pysqlite:///:memory:", echo=True)
218
+ engine = self.db_engine = create_engine("sqlite+pysqlite:///:memory:")
218
219
  Base.metadata.create_all(engine)
219
- self.xmpp.store = SlidgeStore(engine)
220
+ BaseGateway.store = SlidgeStore(engine)
221
+ self.xmpp = BaseGateway.get_self_or_unique_subclass()()
222
+ self.xmpp.TEST_MODE = True
220
223
  PepNick.contact_store = self.xmpp.store.contacts
221
224
  PepAvatar.store = self.xmpp.store
222
225
  avatar_cache.store = self.xmpp.store.avatars
226
+ avatar_cache.set_dir(Path(tempfile.mkdtemp()))
223
227
  self.xmpp._always_send_everything = True
228
+ engine.echo = True
224
229
 
225
230
  self.xmpp.connection_made(TestTransport(self.xmpp))
226
231
  self.xmpp.session_bind_event.set()
@@ -252,6 +257,7 @@ class SlidgeTest(SlixTestPlus):
252
257
  Error.namespace = "jabber:component:accept"
253
258
 
254
259
  def tearDown(self):
260
+ self.db_engine.echo = False
255
261
  super().tearDown()
256
262
  import slidge.db.store
257
263
 
@@ -260,6 +266,50 @@ class SlidgeTest(SlixTestPlus):
260
266
  slidge.db.store._session = None
261
267
  Base.metadata.drop_all(self.xmpp.store._engine)
262
268
 
269
+ def setup_logged_session(self):
270
+ user = self.xmpp.store.users.new(
271
+ JID("romeo@montague.lit/gajim"), {"username": "romeo", "city": ""}
272
+ )
273
+ user.preferences = {"sync_avatar": True, "sync_presence": True}
274
+ self.xmpp.store.users.update(user)
275
+
276
+ with self.xmpp.store.session() as session:
277
+ session.execute(delete(Contact))
278
+ session.commit()
279
+
280
+ self.run_coro(self.xmpp._on_user_register(Iq(sfrom="romeo@montague.lit/gajim")))
281
+ welcome = self.next_sent()
282
+ assert welcome["body"]
283
+ stanza = self.next_sent()
284
+ assert "logging in" in stanza["status"].lower(), stanza
285
+ stanza = self.next_sent()
286
+ assert "syncing contacts" in stanza["status"].lower(), stanza
287
+ stanza = self.next_sent()
288
+ assert "yup" in stanza["status"].lower(), stanza
289
+
290
+ self.romeo = BaseSession.get_self_or_unique_subclass().from_jid(
291
+ JID("romeo@montague.lit")
292
+ )
293
+ self.juliet: LegacyContact = self.run_coro(
294
+ self.romeo.contacts.by_legacy_id("juliet")
295
+ )
296
+ self.room: LegacyMUC = self.run_coro(self.romeo.bookmarks.by_legacy_id("room"))
297
+ self.first_witch: LegacyParticipant = self.run_coro(
298
+ self.room.get_participant("firstwitch")
299
+ )
300
+ self.send( # language=XML
301
+ """
302
+ <iq type="get"
303
+ to="romeo@montague.lit"
304
+ id="1"
305
+ from="aim.shakespeare.lit">
306
+ <pubsub xmlns="http://jabber.org/protocol/pubsub">
307
+ <items node="urn:xmpp:avatar:metadata" />
308
+ </pubsub>
309
+ </iq>
310
+ """
311
+ )
312
+
263
313
  @classmethod
264
314
  def tearDownClass(cls):
265
315
  reset_subclasses()
slidge/util/types.py CHANGED
@@ -193,6 +193,11 @@ class MamMetadata(NamedTuple):
193
193
  sent_on: datetime
194
194
 
195
195
 
196
+ class HoleBound(NamedTuple):
197
+ id: int | str
198
+ timestamp: datetime
199
+
200
+
196
201
  class CachedPresence(NamedTuple):
197
202
  last_seen: Optional[datetime] = None
198
203
  ptype: Optional[PresenceTypes] = None
slidge/util/util.py CHANGED
@@ -4,7 +4,9 @@ import re
4
4
  import subprocess
5
5
  import warnings
6
6
  from abc import ABCMeta
7
+ from functools import wraps
7
8
  from pathlib import Path
9
+ from time import time
8
10
  from typing import TYPE_CHECKING, Callable, NamedTuple, Optional, Type
9
11
 
10
12
  from .types import Mention, ResourceDict
@@ -293,3 +295,23 @@ def replace_mentions(
293
295
  cursor = mention.end
294
296
  pieces.append(text[cursor:])
295
297
  return "".join(pieces)
298
+
299
+
300
+ def with_session(func):
301
+ @wraps(func)
302
+ async def wrapped(self, *args, **kwargs):
303
+ with self.xmpp.store.session():
304
+ return await func(self, *args, **kwargs)
305
+
306
+ return wrapped
307
+
308
+
309
+ def timeit(func):
310
+ @wraps(func)
311
+ async def wrapped(self, *args, **kwargs):
312
+ start = time()
313
+ r = await func(self, *args, **kwargs)
314
+ self.log.info("%s took %s ms", func.__name__, round((time() - start) * 1000))
315
+ return r
316
+
317
+ return wrapped
@@ -1,16 +1,14 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: slidge
3
- Version: 0.2.0a0
3
+ Version: 0.2.0a1
4
4
  Summary: XMPP bridging framework
5
5
  Home-page: https://sr.ht/~nicoco/slidge/
6
6
  License: AGPL-3.0-or-later
7
7
  Author: Nicolas Cedilnik
8
8
  Author-email: nicoco@nicoco.fr
9
- Requires-Python: >=3.9,<4.0
9
+ Requires-Python: >=3.11,<4.0
10
10
  Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
11
11
  Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.9
13
- Classifier: Programming Language :: Python :: 3.10
14
12
  Classifier: Programming Language :: Python :: 3.11
15
13
  Requires-Dist: ConfigArgParse (>=1.5.3,<2.0.0)
16
14
  Requires-Dist: Pillow (>=10,<11)
@@ -1,63 +1,69 @@
1
1
  slidge/__init__.py,sha256=S0tUjqpZlzsr8G4Y_1Xt-KCYB07qaknTB0OwHU8k29U,1587
2
2
  slidge/__main__.py,sha256=Y12eh1TD_C5MB50KgEAuMffGnRFCvKYFKHD4UYSmHA0,72
3
- slidge/__version__.py,sha256=NGiTlFQJwfeI5FYgTxAr8mGPL4FIT28Fk_rnNgPCUBY,170
3
+ slidge/__version__.py,sha256=I-T5nrkdyqNFMxbn8y7FgSsLGaj0eM2dLL9f5LDsI2Q,170
4
4
  slidge/command/__init__.py,sha256=UYf1mjCYbZ5G7PIgaFTWSQRAzEJkQ6dTH8Fu_e_XnO0,613
5
5
  slidge/command/adhoc.py,sha256=5xLLoWyUJqCJB7kAwD2VKYTl_7MObCsgdz-qg_WkWGs,9417
6
- slidge/command/admin.py,sha256=MJ4nRQHqqGP3DeEvm3tSYoT4dGbLiPcOgqBxhf20Idw,5753
6
+ slidge/command/admin.py,sha256=JAN8s-b2KckgUozAQNBGOzkrEaQv-LtwezYgOsAR6Ng,5768
7
7
  slidge/command/base.py,sha256=xTlzxAbTWTpbFgQ0FxKjmp3ZImzempwJvGn9UiVUUTc,13044
8
8
  slidge/command/categories.py,sha256=BJCfaga2qoAxnHfgHD7I_RKZuBA5nnNOukkWHJwsUFE,99
9
9
  slidge/command/chat_command.py,sha256=kMnxrzmD7LhWgyO1w9Rgz1eA7PhfAJ2Rf34YWjoKrwQ,9975
10
10
  slidge/command/register.py,sha256=fzPcGUoJtainnDOiC13gWV-uYLuJcsmdKGJ-jXT1qIo,6697
11
- slidge/command/user.py,sha256=EqvMrCxWyKWm-qCsQJCD_pV3DwxlWt8MQQA54kUaF58,11460
11
+ slidge/command/user.py,sha256=nJnoU4t1r9oPkFFHSHHwSY8WOQNLQn9mMcwZp-yZaKA,11422
12
12
  slidge/contact/__init__.py,sha256=WMMaHk7UW7YT9EH2LtPdkU0bHQaOp4ikBhbBQskmoc8,191
13
- slidge/contact/contact.py,sha256=9ew0vNr5pmp6bCLg4og6o2yYli3PqlVZZ55JB0XU0d8,18428
14
- slidge/contact/roster.py,sha256=zRlQnlmyxlWOBTRqZLMSbnIjCDyuusYkt3WX9AI9As8,8230
13
+ slidge/contact/contact.py,sha256=Ag4Gq81jlEsz8MMXyU_VcLGJY7_IUgY76jOMlmAQpJc,20237
14
+ slidge/contact/roster.py,sha256=2EGV7q0km6JEahn2brr-td0KJILtXQGFWiSPuORA86I,10756
15
15
  slidge/core/__init__.py,sha256=RG7Jj5JCJERjhqJ31lOLYV-7bH_oblClQD1KF9LsTXo,68
16
- slidge/core/config.py,sha256=lUO_aSu7bZUWWiFAKPwKMtbeUc7CwDzUrf0UQ2-SIB4,7694
16
+ slidge/core/config.py,sha256=leNcN_TI0Ka1hhzOHx7cBW3fNj5xZwsiv9l8AfRY_vU,7630
17
17
  slidge/core/gateway/__init__.py,sha256=rZckY2gAE-mon77_DSsAW1XtWqhBAETE2d4FqZ8pJXk,58
18
- slidge/core/gateway/base.py,sha256=9FgJ_CTnXMA6iu5xpKN0TMKp0v3kPLQUmY5WHdZqxTc,38375
19
- slidge/core/gateway/caps.py,sha256=Qosd3cZ356mGzzQkdP6Y8OZ5c0l7H3Lr2wptoFrD1qU,1919
18
+ slidge/core/gateway/base.py,sha256=V-9HMokUfeTpIO_dqU1ONDMXnNMBCEJJbmob-oYjD8s,38600
19
+ slidge/core/gateway/caps.py,sha256=jemB4tB_2MTAxqQw5Bs4b7qNQ8gLPuAve0aoH6TzLEs,1937
20
20
  slidge/core/gateway/delivery_receipt.py,sha256=AT_9gvZrtWpSRsDJcYjE8CmF7TW-YBbUPdqNW5zWAdo,1352
21
21
  slidge/core/gateway/disco.py,sha256=uazgDXSDb5KrardjPCvElItARcxkeBRohtx82A2BlCQ,2203
22
22
  slidge/core/gateway/mam.py,sha256=ZUZXX7YcpK1WHq8RlgYrXo2zrLm5pOM1sVzON61mXYQ,2418
23
- slidge/core/gateway/muc_admin.py,sha256=z2l4Zt0h-Z9WzEcA6MEiPNPrbYwggEqBVXpia5HtpLI,1033
23
+ slidge/core/gateway/muc_admin.py,sha256=PslX1gZK_PhY2VaeAPP1nEzThMaBBGPRgs-wiJ35zJQ,1033
24
24
  slidge/core/gateway/ping.py,sha256=_zzPkjqvxjTxLNP1jbj0WVLMaybxbYqrKDRM5jHSDjs,1729
25
25
  slidge/core/gateway/presence.py,sha256=Ls8IY4uNQaW8F3F1CpRhfyFIVbd_py_VkZyJKMMei8s,2732
26
26
  slidge/core/gateway/registration.py,sha256=JXwIQ-QqZCPXEmCU2G8FvIYDGvD8L8CqGb_Qkbycgt0,2303
27
27
  slidge/core/gateway/search.py,sha256=08ds6gvzX3EnTH-AU8X8J8JKEKYaSrRGTFwwClTT-Rc,3495
28
- slidge/core/gateway/session_dispatcher.py,sha256=0F7riSSvgHdaPTzetjaQ6mGk2mhoil9SFD8jGq0Ea7c,31860
29
- slidge/core/gateway/vcard_temp.py,sha256=p84mqrxJYxqUr0L9RcpPZPKNTbuPoq96Sq2rQVEY780,4687
28
+ slidge/core/gateway/session_dispatcher.py,sha256=mV3ds7zulD1_ivaV-QfilRKk2aN8T0XgcicCYOiYfx0,32306
29
+ slidge/core/gateway/vcard_temp.py,sha256=5Trs0O240mpOoFeRzprAYX86W7Qaq9hFhi06437w0Yg,4694
30
30
  slidge/core/mixins/__init__.py,sha256=muReAzgvENgMvlfm0Fpe6BQFfm2EMjoDe9ZhGgo6Vig,627
31
- slidge/core/mixins/attachment.py,sha256=x6R0F3ON_DWDKuf3l0OBmcOkwHA_xGfButn6hnZEIuQ,17966
32
- slidge/core/mixins/avatar.py,sha256=u2DvJuP7bhmPR6utlj4qs1e9ySmcfGjfWwP-tHu_hhA,7093
31
+ slidge/core/mixins/attachment.py,sha256=YXuObz68eem2AND1q-RBeZ-X9Zi_IlUgx0DRMiwM3Xw,18706
32
+ slidge/core/mixins/avatar.py,sha256=ke3cwm6Iiz1AM0_SiARTUTU2nGYskPZlxtFrXKQT5fI,7812
33
33
  slidge/core/mixins/base.py,sha256=9hjf2Pw5r0poSi1Abv-_znk83Kngsu9EXTf05gpFDdI,768
34
- slidge/core/mixins/disco.py,sha256=SKPVRVq8NUcc-zerHit7_K3Xmo1yJF1ipYN9lhHUDBU,3935
34
+ slidge/core/mixins/db.py,sha256=5Qpegd7D8e5TLXLLINYcf_DuVdN-7wNmsfztUuFYPcU,442
35
+ slidge/core/mixins/disco.py,sha256=jk3Z1B6zTuisHv8VKNRJodIo0ee5btYHh2ZrlflPj_Q,3670
35
36
  slidge/core/mixins/lock.py,sha256=mVzwVVEoq1hrAMgGLh4K84BTLt7JTJ33B8HSGSorTdY,913
36
- slidge/core/mixins/message.py,sha256=xncQEBaFsnJdyAZB8RXuYR3tYE6_cNX7v9bX8mL8rYg,14971
37
+ slidge/core/mixins/message.py,sha256=jJz_peNQmDf0uVQcI7TWG7oUaSGjUL8eiulNicGgWhI,15071
37
38
  slidge/core/mixins/message_maker.py,sha256=TcCutHi0sIwL6beJNkN7XyR0aDIbA0xZyxd2Gc9ulG4,6022
38
- slidge/core/mixins/presence.py,sha256=9B-F3ihU-vlLN020V0JFXt7YOEmKHXbZsIPvWbn5i4s,7672
39
+ slidge/core/mixins/presence.py,sha256=yywo6KAw8C7GaZSMrSMuioNfhW08MrnobHt8XbHd0q8,7891
39
40
  slidge/core/mixins/recipient.py,sha256=U-YppozUO8pA94jmD3-qmhkykTebPNaOVWc3JDPC9w8,1302
40
- slidge/core/pubsub.py,sha256=RF9Jkn5QzsjshkNmxrabbdWFwpksIODls8-R9kMH1VU,12625
41
- slidge/core/session.py,sha256=bulAYyjuSlhJ2IKXScyvQGtxYWZrSf7Z91dEkM8ZcYM,27055
41
+ slidge/core/pubsub.py,sha256=QUwh1o5n9SVn1QBuflgfP4GR5yx6AJqRByDD3AGVCTY,12298
42
+ slidge/core/session.py,sha256=IUZur7huNj066uy-Nh-I-R0etYmPJccgXFIimcSQ148,27161
42
43
  slidge/db/__init__.py,sha256=EBDH1JSEhgqYcli2Bw11CRC749wJk8AOucgBzmhDSvU,105
43
44
  slidge/db/alembic/env.py,sha256=hsBlRNs0zF5diSHGRSa8Fi3qRVQDA2rJdR41AEIdvxc,1642
44
45
  slidge/db/alembic/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
45
46
  slidge/db/alembic/versions/09f27f098baa_add_missing_attributes_in_room.py,sha256=mUL-0Io6ZPd_QbnKfwGYyjdMcM2uxQ0Wg72H23-2t_E,1033
47
+ slidge/db/alembic/versions/2461390c0af2_store_contacts_caps_verstring_in_db.py,sha256=CLB-kOP9Rc0FJIKDLef912L5sYkjpTIPC8fhrIdrC7k,1084
46
48
  slidge/db/alembic/versions/29f5280c61aa_store_subject_setter_in_room.py,sha256=f8TFS28CXjGhvIn41UYMoHYeODfqhKfo4O7gk-JwA1E,1134
49
+ slidge/db/alembic/versions/2b1f45ab7379_store_room_subject_setter_by_nickname.py,sha256=CMVP2wFz6s7t57eWdSaGtck8BXzfVPJhHE5AoWi34tI,1359
50
+ slidge/db/alembic/versions/82a4af84b679_add_muc_history_filled.py,sha256=g37po0ydp8ZmzJrE5oFV7GscnploxjCtPDpw28SqVGk,1429
47
51
  slidge/db/alembic/versions/8d2ced764698_rely_on_db_to_store_contacts_rooms_and_.py,sha256=olXaOEEsUSasqaaKdlP1cBODsMhmV1i90qbpDM2vTm4,4696
48
- slidge/db/alembic/versions/aa9d82a7f6ef_db_creation.py,sha256=2Bf9BA41eIWVvlPHsa67X7rnPe0KT9D0qcySrVyR6WE,2083
52
+ slidge/db/alembic/versions/aa9d82a7f6ef_db_creation.py,sha256=qBEw4KSf8NLn9piRxCn7VQbNS4XJQAfHIKmc2Rj1H5U,2320
49
53
  slidge/db/alembic/versions/b33993e87db3_move_everything_to_persistent_db.py,sha256=2tiRxoC9PYOQn6XQrwK0JTEsb45Pzp2PsKoZSS4rcIA,7564
54
+ slidge/db/alembic/versions/b64b1a793483_add_source_and_legacy_id_for_archived_.py,sha256=N6HYpFBhMckAFLZFW8PY8Us1qzXlauEQiDwEYwd9_K8,1422
55
+ slidge/db/alembic/versions/c4a8ec35a0e8_per_room_user_nick.py,sha256=jjQmlRv6nqdm5q6LbwVpSUSkTBj1c76Hiq8e8q77q3g,933
50
56
  slidge/db/alembic/versions/e91195719c2c_store_users_avatars_persistently.py,sha256=8Ga3VFgKrzMs_-B8OPtfP-0rey_MFaDg-QGtSbaft3o,640
51
- slidge/db/avatar.py,sha256=KVLHgcGAhyzD8vZ9EKzA8ZIxjjctTsZFAaz3XvmNm44,7098
57
+ slidge/db/avatar.py,sha256=khMqkhUSLOOAulhWHUtkIlE8asdqUuaY8cieij97Hsw,7640
52
58
  slidge/db/meta.py,sha256=-MxJ66fI2hUs86geCTC4PSFDlRfJTvqJYvhdXydO6w8,1538
53
- slidge/db/models.py,sha256=cvFYXQ4PDPAwcer1qY1cH3kkTMBtA0vgnj_JzQLjqqk,12467
54
- slidge/db/store.py,sha256=foTMbm34-jfbdDUex--ZwOdUXga_kZJvh2BBxrTCAnc,36594
59
+ slidge/db/models.py,sha256=r6AyhSJ18kOiEgiArZLhBxMD6a07xbZVOIQ0RsQ8Tmo,12834
60
+ slidge/db/store.py,sha256=4QplqGaU8IPPf9MZU_P2LLZkbQB60GXDkxQrkkemfbc,40329
55
61
  slidge/group/__init__.py,sha256=yFt7cHqeaKIMN6f9ZyhhspOcJJvBtLedGv-iICG7lto,258
56
- slidge/group/archive.py,sha256=v3Qt-IuWNciH7Y5I6N1YIbM8zsVT663ni9QRdN6s1yQ,3441
57
- slidge/group/bookmarks.py,sha256=CfzbAojyYEQ4BFX9G_hpRMtznhOs2qadiYAjhUozUDU,6140
58
- slidge/group/participant.py,sha256=TYknjNLMWUhI6c4VAijU8hY-FF3KZZQwWbQKPBj3ATI,16470
59
- slidge/group/room.py,sha256=P1t4iKYdDQw8ao5h__oSINgF199zAuZ6OlRSByzKfYY,42642
60
- slidge/main.py,sha256=QG7L5BkHB3hXVedwFr7xklt-8vGro54aGWnCW_4hCkg,6085
62
+ slidge/group/archive.py,sha256=xGPkdSk8-BT6t6lNVo1FEwiFVAttoxCma8Tsyk5r8Kg,5279
63
+ slidge/group/bookmarks.py,sha256=NGEOTSrIIzSYVxUp2QlbW4cRNavPCaFLo21WrOjxBPc,6647
64
+ slidge/group/participant.py,sha256=FhI8RjVMp5fpYMLxG38wWPI3GEke8rTs-tmLklCIpzA,16764
65
+ slidge/group/room.py,sha256=Y5-0u7erskQF9L68htc4Yh6MnrzQwpT5zvIOrOah6fA,45032
66
+ slidge/main.py,sha256=gIlF9MEtychpdeUcOE1PWe_QPlOmsQAYvpcOfwRNoQo,6119
61
67
  slidge/migration.py,sha256=qUrux9dYCtOfFjPIlvGfWjoyqhkdxzaOByJRqTmCoUI,1072
62
68
  slidge/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
69
  slidge/slixfix/__init__.py,sha256=7GevigEt68hwgwHqXcsFogN5jRXRHPeqR6kwODCH4hc,3055
@@ -78,7 +84,7 @@ slidge/slixfix/xep_0264/__init__.py,sha256=c6g_y-PAwQJZ4ZLWcwXc6Q5xRPeXTvvvJH4ZK
78
84
  slidge/slixfix/xep_0264/stanza.py,sha256=YvkI9rsGztkc9yOZBjf5PNKReW8aeGdF6MnrsfDckYs,864
79
85
  slidge/slixfix/xep_0264/thumbnail.py,sha256=6ukgPCWJTFUnew4USB6hNtEk_ZcpWcFAvHr2r0T5znw,456
80
86
  slidge/slixfix/xep_0292/__init__.py,sha256=_MvS9wGra6ig3P_dPAVlCPDJkiOFvUWGjaRsHj1woUg,98
81
- slidge/slixfix/xep_0292/vcard4.py,sha256=leP2klQAjftK76TU0zRn0U_JTHFB-Esk4Q-Rlvoi4LE,3161
87
+ slidge/slixfix/xep_0292/vcard4.py,sha256=uuZp_6DR1_-QuRNV-IfYwu9eX-wBT1jxh5p-PO92Nm8,3211
82
88
  slidge/slixfix/xep_0313/__init__.py,sha256=rpvXxN4Fi-ey4Ww39OEAXoiaeWs3XMqvzR64hA6j_x4,368
83
89
  slidge/slixfix/xep_0313/mam.py,sha256=2USgMGgklnGXPcw_1F3482HxIyd41TLx0uit43_RthA,9211
84
90
  slidge/slixfix/xep_0313/stanza.py,sha256=WriAx6XKiiyZTkoTw5RHcgu3ZYdkDd6hjQ0wHqDkXE0,10249
@@ -95,14 +101,14 @@ slidge/slixfix/xep_0490/__init__.py,sha256=Rhu_1h1P34LfIP_yr4JQ_PBHcuNBLDzLdJMnN
95
101
  slidge/slixfix/xep_0490/mds.py,sha256=KaITeEzSWgpGyU7RP-iwipjSyCEdVMPiVIT5vHVK-RM,1527
96
102
  slidge/slixfix/xep_0490/stanza.py,sha256=ztec_ipyhUFz_uWQYkS0Q6LlsNiSBBC5aZK-qSmhHXk,443
97
103
  slidge/util/__init__.py,sha256=BELovoTMPcPPGz3D48esBr8A4BRRHXTvavfgnArBgEc,301
98
- slidge/util/archive_msg.py,sha256=2gq0N8GMVN8PKB0HxkWJza5FdgCDob_WPo0yVcx7DJk,1686
104
+ slidge/util/archive_msg.py,sha256=xXAR0BI5r3d6KKWjae9594izCOv6iI03z2WLuTecNw8,1724
99
105
  slidge/util/conf.py,sha256=1j2OnOsCBar1tOObErhXR5RC3Vl3faliOZ1U8J3My58,6613
100
106
  slidge/util/db.py,sha256=zFOv0JEWQQK0_TMRlU4Z0G5Mc9pxvEErLyOzXmRAe5Q,5209
101
- slidge/util/test.py,sha256=-iBzeY9RX1o8K_nyBIP4UUTuFAodTr9IjDxZH67EsC4,11372
102
- slidge/util/types.py,sha256=68wrehrMrRH3AxJ1Gs6r5XtvN5E4nZo1o1nbMHzNn4E,5151
103
- slidge/util/util.py,sha256=t8t1nPybcitpmuSlYsOwZ8gDjfiEwTjaa4D7vtzrvQ8,8587
104
- slidge-0.2.0a0.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
105
- slidge-0.2.0a0.dist-info/METADATA,sha256=GV1PE5-H9VqBRT_Vd9sV4tPPtGjbd7PC5XKUX5wA350,4823
106
- slidge-0.2.0a0.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
107
- slidge-0.2.0a0.dist-info/entry_points.txt,sha256=SNl72KSocF5plsu_67xyH6wVWfGTXQbzkQgXbLtzDrQ,47
108
- slidge-0.2.0a0.dist-info/RECORD,,
107
+ slidge/util/test.py,sha256=yRl3_dmNrn_v-FtOsRo_9eZr3Owj5JB5YIS0PozFU0E,13266
108
+ slidge/util/types.py,sha256=Gif-Z9NVd_eTei1uM3_KOsdok3B1yMQwdOkOzf9vheE,5224
109
+ slidge/util/util.py,sha256=8JeE0QObNGQr_Tw4OFPwQSz_EB_zh_0t9IJmNNhW0ic,9114
110
+ slidge-0.2.0a1.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
111
+ slidge-0.2.0a1.dist-info/METADATA,sha256=_6VENlq93oEe42OuGW4DM-Riq0-08DziC-hTrb0fl5s,4723
112
+ slidge-0.2.0a1.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
113
+ slidge-0.2.0a1.dist-info/entry_points.txt,sha256=SNl72KSocF5plsu_67xyH6wVWfGTXQbzkQgXbLtzDrQ,47
114
+ slidge-0.2.0a1.dist-info/RECORD,,