slidge 0.2.0a6__py3-none-any.whl → 0.2.0a9__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/chat_command.py +15 -1
- slidge/command/user.py +2 -0
- slidge/contact/contact.py +46 -13
- 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 +51 -46
- 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 +17 -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.0a6.dist-info → slidge-0.2.0a9.dist-info}/METADATA +6 -2
- {slidge-0.2.0a6.dist-info → slidge-0.2.0a9.dist-info}/RECORD +28 -26
- {slidge-0.2.0a6.dist-info → slidge-0.2.0a9.dist-info}/LICENSE +0 -0
- {slidge-0.2.0a6.dist-info → slidge-0.2.0a9.dist-info}/WHEEL +0 -0
- {slidge-0.2.0a6.dist-info → slidge-0.2.0a9.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
|
|
@@ -1216,7 +1224,12 @@ class LegacyMUC(
|
|
1216
1224
|
muc._subject_setter = stored.subject_setter
|
1217
1225
|
muc.archive = MessageArchive(muc.pk, session.xmpp.store.mam)
|
1218
1226
|
muc._set_logger_name()
|
1219
|
-
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
|
1220
1233
|
return muc
|
1221
1234
|
|
1222
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.0a9
|
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=9y4M-LYXgK7-PIasL6QWLN6L5LRaek-yXy_SekzwWrg,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=kKtJ9NPLS9DPVyyahx_K-Mtp5k5UQdQJZavC1XCmWlc,23104
|
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=5Xa_GkSL_rRTC45TRjW98jztk__4M5P-3EG4IF91K0c,19022
|
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.0a9.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
117
|
+
slidge-0.2.0a9.dist-info/METADATA,sha256=UYbPeUa9y7-m4f1ulm4CFYAdKYoGbf53gC-n_lf6aoI,4962
|
118
|
+
slidge-0.2.0a9.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
119
|
+
slidge-0.2.0a9.dist-info/entry_points.txt,sha256=SNl72KSocF5plsu_67xyH6wVWfGTXQbzkQgXbLtzDrQ,47
|
120
|
+
slidge-0.2.0a9.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|