slidge 0.2.0a5__py3-none-any.whl → 0.2.0a8__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- slidge/__version__.py +1 -1
- slidge/command/chat_command.py +15 -1
- slidge/command/user.py +2 -0
- slidge/contact/contact.py +43 -11
- slidge/contact/roster.py +0 -3
- slidge/core/gateway/base.py +15 -7
- slidge/core/gateway/session_dispatcher.py +16 -7
- slidge/core/mixins/attachment.py +44 -44
- slidge/core/mixins/avatar.py +11 -7
- slidge/core/pubsub.py +55 -68
- slidge/core/session.py +4 -4
- slidge/db/alembic/versions/3071e0fa69d4_add_contact_client_type.py +52 -0
- slidge/db/alembic/versions/5bd48bfdffa2_lift_room_legacy_id_constraint.py +19 -13
- slidge/db/alembic/versions/aa9d82a7f6ef_db_creation.py +5 -1
- slidge/db/alembic/versions/abba1ae0edb3_store_avatar_legacy_id_in_the_contact_.py +78 -0
- slidge/db/avatar.py +14 -49
- slidge/db/models.py +8 -5
- slidge/db/store.py +30 -16
- slidge/group/room.py +18 -4
- slidge/main.py +8 -3
- slidge/migration.py +15 -1
- slidge/util/test.py +8 -1
- slidge/util/types.py +4 -0
- {slidge-0.2.0a5.dist-info → slidge-0.2.0a8.dist-info}/METADATA +6 -2
- {slidge-0.2.0a5.dist-info → slidge-0.2.0a8.dist-info}/RECORD +28 -26
- {slidge-0.2.0a5.dist-info → slidge-0.2.0a8.dist-info}/LICENSE +0 -0
- {slidge-0.2.0a5.dist-info → slidge-0.2.0a8.dist-info}/WHEEL +0 -0
- {slidge-0.2.0a5.dist-info → slidge-0.2.0a8.dist-info}/entry_points.txt +0 -0
slidge/db/store.py
CHANGED
@@ -13,7 +13,7 @@ from sqlalchemy.orm import Session, attributes
|
|
13
13
|
from sqlalchemy.sql.functions import count
|
14
14
|
|
15
15
|
from ..util.archive_msg import HistoryMessage
|
16
|
-
from ..util.types import URL, CachedPresence
|
16
|
+
from ..util.types import URL, CachedPresence, ClientType
|
17
17
|
from ..util.types import Hat as HatTuple
|
18
18
|
from ..util.types import MamMetadata, MucAffiliation, MucRole
|
19
19
|
from .meta import Base
|
@@ -65,9 +65,6 @@ class UpdatedMixin(EngineMixin):
|
|
65
65
|
def __init__(self, *a, **kw):
|
66
66
|
super().__init__(*a, **kw)
|
67
67
|
with self.session() as session:
|
68
|
-
session.execute(
|
69
|
-
delete(self.model).where(~self.model.updated) # type:ignore
|
70
|
-
)
|
71
68
|
session.execute(update(self.model).values(updated=False)) # type:ignore
|
72
69
|
session.commit()
|
73
70
|
|
@@ -133,18 +130,19 @@ class UserStore(EngineMixin):
|
|
133
130
|
session.delete(self.get(jid))
|
134
131
|
session.commit()
|
135
132
|
|
133
|
+
def set_avatar_hash(self, pk: int, h: str | None = None) -> None:
|
134
|
+
with self.session() as session:
|
135
|
+
session.execute(
|
136
|
+
update(GatewayUser).where(GatewayUser.id == pk).values(avatar_hash=h)
|
137
|
+
)
|
138
|
+
session.commit()
|
139
|
+
|
136
140
|
|
137
141
|
class AvatarStore(EngineMixin):
|
138
142
|
def get_by_url(self, url: URL | str) -> Optional[Avatar]:
|
139
143
|
with self.session() as session:
|
140
144
|
return session.execute(select(Avatar).where(Avatar.url == url)).scalar()
|
141
145
|
|
142
|
-
def get_by_legacy_id(self, legacy_id: str) -> Optional[Avatar]:
|
143
|
-
with self.session() as session:
|
144
|
-
return session.execute(
|
145
|
-
select(Avatar).where(Avatar.legacy_id == legacy_id)
|
146
|
-
).scalar()
|
147
|
-
|
148
146
|
def get_by_pk(self, pk: int) -> Optional[Avatar]:
|
149
147
|
with self.session() as session:
|
150
148
|
return session.execute(select(Avatar).where(Avatar.id == pk)).scalar()
|
@@ -344,12 +342,14 @@ class ContactStore(UpdatedMixin):
|
|
344
342
|
)
|
345
343
|
session.commit()
|
346
344
|
|
347
|
-
def set_avatar(
|
345
|
+
def set_avatar(
|
346
|
+
self, contact_pk: int, avatar_pk: Optional[int], avatar_legacy_id: Optional[str]
|
347
|
+
):
|
348
348
|
with self.session() as session:
|
349
349
|
session.execute(
|
350
350
|
update(Contact)
|
351
351
|
.where(Contact.id == contact_pk)
|
352
|
-
.values(avatar_id=avatar_pk)
|
352
|
+
.values(avatar_id=avatar_pk, avatar_legacy_id=avatar_legacy_id)
|
353
353
|
)
|
354
354
|
session.commit()
|
355
355
|
|
@@ -360,7 +360,7 @@ class ContactStore(UpdatedMixin):
|
|
360
360
|
).scalar()
|
361
361
|
if contact is None or contact.avatar is None:
|
362
362
|
return None
|
363
|
-
return contact.
|
363
|
+
return contact.avatar_legacy_id
|
364
364
|
|
365
365
|
def update(self, contact: "LegacyContact", commit=True) -> int:
|
366
366
|
with self.session() as session:
|
@@ -390,6 +390,7 @@ class ContactStore(UpdatedMixin):
|
|
390
390
|
row.caps_ver = contact._caps_ver
|
391
391
|
row.vcard = contact._vcard
|
392
392
|
row.vcard_fetched = contact._vcard_fetched
|
393
|
+
row.client_type = contact.client_type
|
393
394
|
session.add(row)
|
394
395
|
if commit:
|
395
396
|
session.commit()
|
@@ -450,6 +451,15 @@ class ContactStore(UpdatedMixin):
|
|
450
451
|
session.execute(delete(Contact).where(Contact.id == contact_pk))
|
451
452
|
session.commit()
|
452
453
|
|
454
|
+
def set_client_type(self, contact_pk: int, value: ClientType):
|
455
|
+
with self.session() as session:
|
456
|
+
session.execute(
|
457
|
+
update(Contact)
|
458
|
+
.where(Contact.id == contact_pk)
|
459
|
+
.values(client_type=value)
|
460
|
+
)
|
461
|
+
session.commit()
|
462
|
+
|
453
463
|
|
454
464
|
class MAMStore(EngineMixin):
|
455
465
|
def __init__(self, *a, **kw):
|
@@ -795,10 +805,14 @@ class RoomStore(UpdatedMixin):
|
|
795
805
|
)
|
796
806
|
session.commit()
|
797
807
|
|
798
|
-
def set_avatar(
|
808
|
+
def set_avatar(
|
809
|
+
self, room_pk: int, avatar_pk: int | None, avatar_legacy_id: str | None
|
810
|
+
) -> None:
|
799
811
|
with self.session() as session:
|
800
812
|
session.execute(
|
801
|
-
update(Room)
|
813
|
+
update(Room)
|
814
|
+
.where(Room.id == room_pk)
|
815
|
+
.values(avatar_id=avatar_pk, avatar_legacy_id=avatar_legacy_id)
|
802
816
|
)
|
803
817
|
session.commit()
|
804
818
|
|
@@ -807,7 +821,7 @@ class RoomStore(UpdatedMixin):
|
|
807
821
|
room = session.execute(select(Room).where(Room.id == room_pk)).scalar()
|
808
822
|
if room is None or room.avatar is None:
|
809
823
|
return None
|
810
|
-
return room.
|
824
|
+
return room.avatar_legacy_id
|
811
825
|
|
812
826
|
def get_by_jid(self, user_pk: int, jid: JID) -> Optional[Room]:
|
813
827
|
if jid.resource:
|
slidge/group/room.py
CHANGED
@@ -238,7 +238,9 @@ class LegacyMUC(
|
|
238
238
|
for db_participant in self.xmpp.store.participants.get_all(
|
239
239
|
self.pk, user_included=True
|
240
240
|
):
|
241
|
-
participant = self.Participant.from_store(
|
241
|
+
participant = self.Participant.from_store(
|
242
|
+
self.session, db_participant, muc=self
|
243
|
+
)
|
242
244
|
yield participant
|
243
245
|
return
|
244
246
|
|
@@ -250,7 +252,9 @@ class LegacyMUC(
|
|
250
252
|
for db_participant in self.xmpp.store.participants.get_all(
|
251
253
|
self.pk, user_included=True
|
252
254
|
):
|
253
|
-
participant = self.Participant.from_store(
|
255
|
+
participant = self.Participant.from_store(
|
256
|
+
self.session, db_participant, muc=self
|
257
|
+
)
|
254
258
|
resources.add(participant.jid.resource)
|
255
259
|
yield participant
|
256
260
|
async for p in self.fill_participants():
|
@@ -570,7 +574,11 @@ class LegacyMUC(
|
|
570
574
|
if self.pk is None:
|
571
575
|
return
|
572
576
|
assert self.pk is not None
|
573
|
-
self.xmpp.store.rooms.set_avatar(
|
577
|
+
self.xmpp.store.rooms.set_avatar(
|
578
|
+
self.pk,
|
579
|
+
self._avatar_pk,
|
580
|
+
None if self.avatar_id is None else str(self.avatar_id),
|
581
|
+
)
|
574
582
|
self.__send_configuration_change((104,))
|
575
583
|
self._send_room_presence()
|
576
584
|
|
@@ -758,6 +766,7 @@ class LegacyMUC(
|
|
758
766
|
await self.session.contacts.ready
|
759
767
|
|
760
768
|
if self.pk is not None:
|
769
|
+
c._LegacyContact__ensure_pk() # type: ignore
|
761
770
|
assert c.contact_pk is not None
|
762
771
|
with self.__store.session():
|
763
772
|
stored = self.__participants_store.get_by_contact(self.pk, c.contact_pk)
|
@@ -1215,7 +1224,12 @@ class LegacyMUC(
|
|
1215
1224
|
muc._subject_setter = stored.subject_setter
|
1216
1225
|
muc.archive = MessageArchive(muc.pk, session.xmpp.store.mam)
|
1217
1226
|
muc._set_logger_name()
|
1218
|
-
muc.
|
1227
|
+
muc._AvatarMixin__avatar_unique_id = ( # type:ignore
|
1228
|
+
None
|
1229
|
+
if stored.avatar_legacy_id is None
|
1230
|
+
else session.xmpp.AVATAR_ID_TYPE(stored.avatar_legacy_id)
|
1231
|
+
)
|
1232
|
+
muc._avatar_pk = stored.avatar_id
|
1219
1233
|
return muc
|
1220
1234
|
|
1221
1235
|
|
slidge/main.py
CHANGED
@@ -15,6 +15,7 @@ https://git.sr.ht/~nicoco/slidge/tree/master/item/dev/confs/slidge-example.ini
|
|
15
15
|
|
16
16
|
import asyncio
|
17
17
|
import importlib
|
18
|
+
import inspect
|
18
19
|
import logging
|
19
20
|
import os
|
20
21
|
import re
|
@@ -140,6 +141,11 @@ def main():
|
|
140
141
|
if plugin_config_obj := getattr(
|
141
142
|
legacy_module, "config", getattr(legacy_module, "Config", None)
|
142
143
|
):
|
144
|
+
# If the legacy module has default parameters that depend on dynamic defaults
|
145
|
+
# of the slidge main config, it needs to be refreshed at this point, because
|
146
|
+
# now the dynamic defaults are set.
|
147
|
+
if inspect.ismodule(plugin_config_obj):
|
148
|
+
importlib.reload(plugin_config_obj)
|
143
149
|
logging.debug("Found a config object in plugin: %r", plugin_config_obj)
|
144
150
|
ConfigModule.ENV_VAR_PREFIX += (
|
145
151
|
f"_{config.LEGACY_MODULE.split('.')[-1].upper()}_"
|
@@ -152,12 +158,11 @@ def main():
|
|
152
158
|
|
153
159
|
migrate()
|
154
160
|
|
155
|
-
|
161
|
+
store = SlidgeStore(get_engine(config.DB_URL))
|
162
|
+
BaseGateway.store = store
|
156
163
|
gateway: BaseGateway = BaseGateway.get_unique_subclass()()
|
157
|
-
avatar_cache.http = gateway.http
|
158
164
|
avatar_cache.store = gateway.store.avatars
|
159
165
|
avatar_cache.set_dir(config.HOME_DIR / "slidge_avatars_v3")
|
160
|
-
avatar_cache.legacy_avatar_type = gateway.AVATAR_ID_TYPE
|
161
166
|
|
162
167
|
PepAvatar.store = gateway.store
|
163
168
|
PepNick.contact_store = gateway.store.contacts
|
slidge/migration.py
CHANGED
@@ -5,8 +5,12 @@ from pathlib import Path
|
|
5
5
|
|
6
6
|
from alembic import command
|
7
7
|
from alembic.config import Config
|
8
|
+
from slixmpp import JID
|
8
9
|
|
9
10
|
from .core import config
|
11
|
+
from .db.meta import get_engine
|
12
|
+
from .db.models import GatewayUser
|
13
|
+
from .db.store import SlidgeStore
|
10
14
|
|
11
15
|
|
12
16
|
def remove_avatar_cache_v1():
|
@@ -26,9 +30,19 @@ def get_alembic_cfg() -> Config:
|
|
26
30
|
return alembic_cfg
|
27
31
|
|
28
32
|
|
29
|
-
def
|
33
|
+
def remove_resource_parts_from_users() -> None:
|
34
|
+
with SlidgeStore(get_engine(config.DB_URL)).session() as orm:
|
35
|
+
for user in orm.query(GatewayUser).all():
|
36
|
+
if user.jid.resource:
|
37
|
+
user.jid = JID(user.jid.bare)
|
38
|
+
orm.add(user)
|
39
|
+
orm.commit()
|
40
|
+
|
41
|
+
|
42
|
+
def migrate() -> None:
|
30
43
|
remove_avatar_cache_v1()
|
31
44
|
command.upgrade(get_alembic_cfg(), "head")
|
45
|
+
remove_resource_parts_from_users()
|
32
46
|
|
33
47
|
|
34
48
|
def main():
|
slidge/util/test.py
CHANGED
@@ -215,9 +215,16 @@ class SlidgeTest(SlixTestPlus):
|
|
215
215
|
self.plugin, LegacyBookmarks, base_ok=True
|
216
216
|
)
|
217
217
|
|
218
|
-
|
218
|
+
from sqlalchemy import log as sqlalchemy_log
|
219
|
+
|
220
|
+
sqlalchemy_log._add_default_handler = lambda x: None
|
221
|
+
|
222
|
+
engine = self.db_engine = create_engine(
|
223
|
+
"sqlite+pysqlite:///:memory:", echo=True
|
224
|
+
)
|
219
225
|
Base.metadata.create_all(engine)
|
220
226
|
BaseGateway.store = SlidgeStore(engine)
|
227
|
+
BaseGateway._test_mode = True
|
221
228
|
try:
|
222
229
|
self.xmpp = BaseGateway.get_self_or_unique_subclass()()
|
223
230
|
except Exception:
|
slidge/util/types.py
CHANGED
@@ -75,6 +75,10 @@ FieldType = Literal[
|
|
75
75
|
]
|
76
76
|
MucAffiliation = Literal["owner", "admin", "member", "outcast", "none"]
|
77
77
|
MucRole = Literal["visitor", "participant", "moderator", "none"]
|
78
|
+
# https://xmpp.org/registrar/disco-categories.html#client
|
79
|
+
ClientType = Literal[
|
80
|
+
"bot", "console", "game", "handheld", "pc", "phone", "sms", "tablet", "web"
|
81
|
+
]
|
78
82
|
|
79
83
|
|
80
84
|
@dataclass
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: slidge
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.0a8
|
4
4
|
Summary: XMPP bridging framework
|
5
5
|
Home-page: https://sr.ht/~nicoco/slidge/
|
6
6
|
License: AGPL-3.0-or-later
|
@@ -10,16 +10,20 @@ 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
12
|
Classifier: Programming Language :: Python :: 3.11
|
13
|
+
Classifier: Topic :: Internet :: XMPP
|
14
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
13
15
|
Requires-Dist: ConfigArgParse (>=1.5.3,<2.0.0)
|
14
16
|
Requires-Dist: Pillow (>=10,<11)
|
15
17
|
Requires-Dist: aiohttp[speedups] (>=3.8.3,<4.0.0)
|
16
18
|
Requires-Dist: alembic (>=1.13.1,<2.0.0)
|
17
|
-
Requires-Dist: blurhash-python (>=1.2.1,<2.0.0)
|
18
19
|
Requires-Dist: pickle-secure (>=0.99.9,<0.100.0)
|
19
20
|
Requires-Dist: python-magic (>=0.4.27,<0.5.0)
|
20
21
|
Requires-Dist: qrcode (>=7.4.1,<8.0.0)
|
21
22
|
Requires-Dist: slixmpp (>=1.8.5,<2.0.0)
|
22
23
|
Requires-Dist: sqlalchemy (>=2.0.29,<3.0.0)
|
24
|
+
Requires-Dist: thumbhash (>=0.1.2,<0.2.0)
|
25
|
+
Project-URL: Bug tracker, https://todo.sr.ht/~nicoco/slidge
|
26
|
+
Project-URL: Chat room, https://conference.nicoco.fr:5281/muc_log/slidge/
|
23
27
|
Project-URL: Documentation, https://slidge.im/
|
24
28
|
Project-URL: Repository, https://git.sr.ht/~nicoco/slidge/
|
25
29
|
Description-Content-Type: text/markdown
|
@@ -1,21 +1,21 @@
|
|
1
1
|
slidge/__init__.py,sha256=S0tUjqpZlzsr8G4Y_1Xt-KCYB07qaknTB0OwHU8k29U,1587
|
2
2
|
slidge/__main__.py,sha256=Y12eh1TD_C5MB50KgEAuMffGnRFCvKYFKHD4UYSmHA0,72
|
3
|
-
slidge/__version__.py,sha256=
|
3
|
+
slidge/__version__.py,sha256=qap3pTXnZj5_Gq_Mgl7kcZK8XTWRiGg1h_7knTHmSlQ,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
6
|
slidge/command/admin.py,sha256=x_kJ0TJhzf6d3OBIOXFjudZFO8bRYUG919td7OjMCug,6008
|
7
7
|
slidge/command/base.py,sha256=xTlzxAbTWTpbFgQ0FxKjmp3ZImzempwJvGn9UiVUUTc,13044
|
8
8
|
slidge/command/categories.py,sha256=BJCfaga2qoAxnHfgHD7I_RKZuBA5nnNOukkWHJwsUFE,99
|
9
|
-
slidge/command/chat_command.py,sha256=
|
9
|
+
slidge/command/chat_command.py,sha256=VBs6IuDka1IyyMzz0ZyE9zMImaEzUZLcnffxq_vwb4M,10565
|
10
10
|
slidge/command/register.py,sha256=fzPcGUoJtainnDOiC13gWV-uYLuJcsmdKGJ-jXT1qIo,6697
|
11
|
-
slidge/command/user.py,sha256=
|
11
|
+
slidge/command/user.py,sha256=uFheYOprhypkHEEl6qSTEM7T2N28xXaDi7v1he-AET8,11512
|
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=h1_outxzNidJrN4iwcaekyymhuLWruY92JCd1Yfz4-4,23088
|
14
|
+
slidge/contact/roster.py,sha256=YF5NiParDKYNqW52fu1xSVW1skR-guy7YzIQ5kDYoDk,9874
|
15
15
|
slidge/core/__init__.py,sha256=RG7Jj5JCJERjhqJ31lOLYV-7bH_oblClQD1KF9LsTXo,68
|
16
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=
|
18
|
+
slidge/core/gateway/base.py,sha256=Dxy39bAgOvJ-vN1RA9PU821YYuvkp_V06y_-vUDW7bU,38752
|
19
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
|
@@ -25,11 +25,11 @@ slidge/core/gateway/ping.py,sha256=_zzPkjqvxjTxLNP1jbj0WVLMaybxbYqrKDRM5jHSDjs,1
|
|
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=
|
28
|
+
slidge/core/gateway/session_dispatcher.py,sha256=FBCbMNNa3SQCd2n_NEdD5q7cjdEgUHGuI_DIWh5cTUY,33202
|
29
29
|
slidge/core/gateway/vcard_temp.py,sha256=cnzHZO6qF8OUWSvBieEdNAV_Ndv1ixZOzBCBXy2Vopw,4637
|
30
30
|
slidge/core/mixins/__init__.py,sha256=muReAzgvENgMvlfm0Fpe6BQFfm2EMjoDe9ZhGgo6Vig,627
|
31
|
-
slidge/core/mixins/attachment.py,sha256=
|
32
|
-
slidge/core/mixins/avatar.py,sha256=
|
31
|
+
slidge/core/mixins/attachment.py,sha256=4p8cPPz1rqqTqOhkuSS-UW2anJMULxuvnmIPsUUxcds,18792
|
32
|
+
slidge/core/mixins/avatar.py,sha256=kGIIZzLSNuxF9bIvt5Bv03_uT_pU5QV1kS7cRu6-GUA,7874
|
33
33
|
slidge/core/mixins/base.py,sha256=9hjf2Pw5r0poSi1Abv-_znk83Kngsu9EXTf05gpFDdI,768
|
34
34
|
slidge/core/mixins/db.py,sha256=5Qpegd7D8e5TLXLLINYcf_DuVdN-7wNmsfztUuFYPcU,442
|
35
35
|
slidge/core/mixins/disco.py,sha256=jk3Z1B6zTuisHv8VKNRJodIo0ee5btYHh2ZrlflPj_Q,3670
|
@@ -38,8 +38,8 @@ slidge/core/mixins/message.py,sha256=jJz_peNQmDf0uVQcI7TWG7oUaSGjUL8eiulNicGgWhI
|
|
38
38
|
slidge/core/mixins/message_maker.py,sha256=TcCutHi0sIwL6beJNkN7XyR0aDIbA0xZyxd2Gc9ulG4,6022
|
39
39
|
slidge/core/mixins/presence.py,sha256=yywo6KAw8C7GaZSMrSMuioNfhW08MrnobHt8XbHd0q8,7891
|
40
40
|
slidge/core/mixins/recipient.py,sha256=U-YppozUO8pA94jmD3-qmhkykTebPNaOVWc3JDPC9w8,1302
|
41
|
-
slidge/core/pubsub.py,sha256=
|
42
|
-
slidge/core/session.py,sha256=
|
41
|
+
slidge/core/pubsub.py,sha256=ITOhgUKdYh6oJBpmZ8nevDQlYT4WJMC-k7Z76YchXqY,11906
|
42
|
+
slidge/core/session.py,sha256=iYRdG_CZYiH-a4A69vqKLf-vnSF_N-XnxEF1veBMCWk,27182
|
43
43
|
slidge/db/__init__.py,sha256=EBDH1JSEhgqYcli2Bw11CRC749wJk8AOucgBzmhDSvU,105
|
44
44
|
slidge/db/alembic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
45
|
slidge/db/alembic/env.py,sha256=hsBlRNs0zF5diSHGRSa8Fi3qRVQDA2rJdR41AEIdvxc,1642
|
@@ -49,26 +49,28 @@ slidge/db/alembic/versions/09f27f098baa_add_missing_attributes_in_room.py,sha256
|
|
49
49
|
slidge/db/alembic/versions/2461390c0af2_store_contacts_caps_verstring_in_db.py,sha256=CLB-kOP9Rc0FJIKDLef912L5sYkjpTIPC8fhrIdrC7k,1084
|
50
50
|
slidge/db/alembic/versions/29f5280c61aa_store_subject_setter_in_room.py,sha256=f8TFS28CXjGhvIn41UYMoHYeODfqhKfo4O7gk-JwA1E,1134
|
51
51
|
slidge/db/alembic/versions/2b1f45ab7379_store_room_subject_setter_by_nickname.py,sha256=CMVP2wFz6s7t57eWdSaGtck8BXzfVPJhHE5AoWi34tI,1359
|
52
|
-
slidge/db/alembic/versions/
|
52
|
+
slidge/db/alembic/versions/3071e0fa69d4_add_contact_client_type.py,sha256=O5BY1vpbtuYT5j6i3EMuuJAf6loIYT1kco8c-c6TF5g,1391
|
53
|
+
slidge/db/alembic/versions/5bd48bfdffa2_lift_room_legacy_id_constraint.py,sha256=cObfqUzqdNezIeJdHe7YKFwRwtelXk8y1PwZ75chXDc,1629
|
53
54
|
slidge/db/alembic/versions/82a4af84b679_add_muc_history_filled.py,sha256=g37po0ydp8ZmzJrE5oFV7GscnploxjCtPDpw28SqVGk,1429
|
54
55
|
slidge/db/alembic/versions/8b993243a536_add_vcard_content_to_contact_table.py,sha256=18tG8B03Kq8Qz_-mMd28Beed6jow8XNTtrz7gT5QY3g,1210
|
55
56
|
slidge/db/alembic/versions/8d2ced764698_rely_on_db_to_store_contacts_rooms_and_.py,sha256=olXaOEEsUSasqaaKdlP1cBODsMhmV1i90qbpDM2vTm4,4696
|
56
|
-
slidge/db/alembic/versions/aa9d82a7f6ef_db_creation.py,sha256=
|
57
|
+
slidge/db/alembic/versions/aa9d82a7f6ef_db_creation.py,sha256=XFHaHjPMoxKxKRjNBnYHBzMtS6K38ENcsGzgzlyp60g,2649
|
58
|
+
slidge/db/alembic/versions/abba1ae0edb3_store_avatar_legacy_id_in_the_contact_.py,sha256=tLnVrbtWzxSPXACIhWPeLxxCIFdnVxK-izoNZxbvA3A,2701
|
57
59
|
slidge/db/alembic/versions/b33993e87db3_move_everything_to_persistent_db.py,sha256=2tiRxoC9PYOQn6XQrwK0JTEsb45Pzp2PsKoZSS4rcIA,7564
|
58
60
|
slidge/db/alembic/versions/b64b1a793483_add_source_and_legacy_id_for_archived_.py,sha256=N6HYpFBhMckAFLZFW8PY8Us1qzXlauEQiDwEYwd9_K8,1422
|
59
61
|
slidge/db/alembic/versions/c4a8ec35a0e8_per_room_user_nick.py,sha256=jjQmlRv6nqdm5q6LbwVpSUSkTBj1c76Hiq8e8q77q3g,933
|
60
62
|
slidge/db/alembic/versions/e91195719c2c_store_users_avatars_persistently.py,sha256=8Ga3VFgKrzMs_-B8OPtfP-0rey_MFaDg-QGtSbaft3o,640
|
61
|
-
slidge/db/avatar.py,sha256=
|
63
|
+
slidge/db/avatar.py,sha256=FfRt2Vu11ZKD9F3x1_drawvUd-TDE3mp7SE3BZ9hOOg,6467
|
62
64
|
slidge/db/meta.py,sha256=v1Jf-npZ28QwdGpsLQWLBHEbEP3-jnPrygRg05tJ_Iw,1831
|
63
|
-
slidge/db/models.py,sha256=
|
64
|
-
slidge/db/store.py,sha256=
|
65
|
+
slidge/db/models.py,sha256=yO4hM0VE1cQdDqWiZU1YW5ZjzwSnHUTavkGbkAMEB9A,13297
|
66
|
+
slidge/db/store.py,sha256=jBkjTVXIg_N558rEfaDWzQ7mnIYMp2ziTk0o9KRVioo,42071
|
65
67
|
slidge/group/__init__.py,sha256=yFt7cHqeaKIMN6f9ZyhhspOcJJvBtLedGv-iICG7lto,258
|
66
68
|
slidge/group/archive.py,sha256=xGPkdSk8-BT6t6lNVo1FEwiFVAttoxCma8Tsyk5r8Kg,5279
|
67
69
|
slidge/group/bookmarks.py,sha256=_LDf7A7aWkwPH88v7c-mOp8VJs3gSFM1-uCqSb4ThO8,5825
|
68
70
|
slidge/group/participant.py,sha256=VNMtqr98QVuYgiTsJ9BaaIG1noz-xe3ewyKhLeDRhBk,17033
|
69
|
-
slidge/group/room.py,sha256=
|
70
|
-
slidge/main.py,sha256=
|
71
|
-
slidge/migration.py,sha256=
|
71
|
+
slidge/group/room.py,sha256=v5mCV7ZrCdgXtDu_K7oDTdtjNYJV-y9wPmlg_RN_4s4,45789
|
72
|
+
slidge/main.py,sha256=8oND7xpR3eLw7b62fT61UhYlmNp_9gv3tNz2N3xR7-c,6232
|
73
|
+
slidge/migration.py,sha256=4BJmPIRB56_WIhRTqBFIIBXuvnhhBjjOMl4CE7jY6oc,1541
|
72
74
|
slidge/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
73
75
|
slidge/slixfix/__init__.py,sha256=7GevigEt68hwgwHqXcsFogN5jRXRHPeqR6kwODCH4hc,3055
|
74
76
|
slidge/slixfix/link_preview/__init__.py,sha256=TDPTSEH5FQxgGpQpQIde-D72AHg-6YVWG-tOj4KpKmU,290
|
@@ -108,11 +110,11 @@ slidge/util/__init__.py,sha256=BELovoTMPcPPGz3D48esBr8A4BRRHXTvavfgnArBgEc,301
|
|
108
110
|
slidge/util/archive_msg.py,sha256=xXAR0BI5r3d6KKWjae9594izCOv6iI03z2WLuTecNw8,1724
|
109
111
|
slidge/util/conf.py,sha256=1j2OnOsCBar1tOObErhXR5RC3Vl3faliOZ1U8J3My58,6613
|
110
112
|
slidge/util/db.py,sha256=4LxZj8oBYgiSnyBUnF_ALjr0TblkfNQq_p28sCfkHMY,242
|
111
|
-
slidge/util/test.py,sha256=
|
112
|
-
slidge/util/types.py,sha256=
|
113
|
+
slidge/util/test.py,sha256=S8Kp5uJlWYPvnw8HMHUPlbrvsqwdBLs9MI99svMfjLg,13832
|
114
|
+
slidge/util/types.py,sha256=o_5rbwfL_3e73JPT1t9o3kyDpJscFHzn4_bt8i3LoSk,5386
|
113
115
|
slidge/util/util.py,sha256=8JeE0QObNGQr_Tw4OFPwQSz_EB_zh_0t9IJmNNhW0ic,9114
|
114
|
-
slidge-0.2.
|
115
|
-
slidge-0.2.
|
116
|
-
slidge-0.2.
|
117
|
-
slidge-0.2.
|
118
|
-
slidge-0.2.
|
116
|
+
slidge-0.2.0a8.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
117
|
+
slidge-0.2.0a8.dist-info/METADATA,sha256=RQ4klx0IU7DLwRKiBTAfX-LWye5v9RzSBK8CpAgJgJY,4962
|
118
|
+
slidge-0.2.0a8.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
119
|
+
slidge-0.2.0a8.dist-info/entry_points.txt,sha256=SNl72KSocF5plsu_67xyH6wVWfGTXQbzkQgXbLtzDrQ,47
|
120
|
+
slidge-0.2.0a8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|