slidge 0.2.2__py3-none-any.whl → 0.2.3.post1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. slidge/__version__.py +1 -1
  2. slidge/command/register.py +1 -3
  3. slidge/contact/contact.py +1 -1
  4. slidge/core/dispatcher/muc/admin.py +3 -4
  5. slidge/core/dispatcher/presence.py +3 -3
  6. slidge/core/mixins/attachment.py +1 -1
  7. slidge/core/mixins/avatar.py +6 -0
  8. slidge/core/mixins/message.py +13 -2
  9. slidge/db/store.py +9 -3
  10. slidge/group/archive.py +3 -3
  11. slidge/group/participant.py +11 -5
  12. slidge/main.py +1 -1
  13. slidge/slixfix/__init__.py +5 -16
  14. slidge/slixfix/xep_0153/__init__.py +0 -1
  15. slidge/slixfix/xep_0153/vcard_avatar.py +1 -10
  16. slidge/util/test.py +9 -2
  17. slidge-0.2.3.post1.dist-info/METADATA +793 -0
  18. {slidge-0.2.2.dist-info → slidge-0.2.3.post1.dist-info}/RECORD +35 -51
  19. {slidge-0.2.2.dist-info → slidge-0.2.3.post1.dist-info}/WHEEL +2 -1
  20. slidge-0.2.3.post1.dist-info/entry_points.txt +2 -0
  21. slidge-0.2.3.post1.dist-info/top_level.txt +1 -0
  22. slidge/slixfix/xep_0153/stanza.py +0 -25
  23. slidge/slixfix/xep_0264/__init__.py +0 -5
  24. slidge/slixfix/xep_0264/stanza.py +0 -36
  25. slidge/slixfix/xep_0264/thumbnail.py +0 -23
  26. slidge/slixfix/xep_0313/__init__.py +0 -12
  27. slidge/slixfix/xep_0313/mam.py +0 -262
  28. slidge/slixfix/xep_0313/stanza.py +0 -359
  29. slidge/slixfix/xep_0317/__init__.py +0 -5
  30. slidge/slixfix/xep_0317/hats.py +0 -17
  31. slidge/slixfix/xep_0317/stanza.py +0 -28
  32. slidge/slixfix/xep_0424/__init__.py +0 -9
  33. slidge/slixfix/xep_0424/retraction.py +0 -77
  34. slidge/slixfix/xep_0424/stanza.py +0 -28
  35. slidge/slixfix/xep_0490/__init__.py +0 -8
  36. slidge/slixfix/xep_0490/mds.py +0 -47
  37. slidge/slixfix/xep_0490/stanza.py +0 -17
  38. slidge-0.2.2.dist-info/LICENSE +0 -661
  39. slidge-0.2.2.dist-info/METADATA +0 -116
  40. slidge-0.2.2.dist-info/entry_points.txt +0 -3
@@ -0,0 +1,793 @@
1
+ Metadata-Version: 2.2
2
+ Name: slidge
3
+ Version: 0.2.3.post1
4
+ Summary: XMPP bridging framework
5
+ Author-email: Nicolas Cedilnik <nicoco@nicoco.fr>
6
+ License: GNU AFFERO GENERAL PUBLIC LICENSE
7
+ Version 3, 19 November 2007
8
+
9
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
10
+ Everyone is permitted to copy and distribute verbatim copies
11
+ of this license document, but changing it is not allowed.
12
+
13
+ Preamble
14
+
15
+ The GNU Affero General Public License is a free, copyleft license for
16
+ software and other kinds of works, specifically designed to ensure
17
+ cooperation with the community in the case of network server software.
18
+
19
+ The licenses for most software and other practical works are designed
20
+ to take away your freedom to share and change the works. By contrast,
21
+ our General Public Licenses are intended to guarantee your freedom to
22
+ share and change all versions of a program--to make sure it remains free
23
+ software for all its users.
24
+
25
+ When we speak of free software, we are referring to freedom, not
26
+ price. Our General Public Licenses are designed to make sure that you
27
+ have the freedom to distribute copies of free software (and charge for
28
+ them if you wish), that you receive source code or can get it if you
29
+ want it, that you can change the software or use pieces of it in new
30
+ free programs, and that you know you can do these things.
31
+
32
+ Developers that use our General Public Licenses protect your rights
33
+ with two steps: (1) assert copyright on the software, and (2) offer
34
+ you this License which gives you legal permission to copy, distribute
35
+ and/or modify the software.
36
+
37
+ A secondary benefit of defending all users' freedom is that
38
+ improvements made in alternate versions of the program, if they
39
+ receive widespread use, become available for other developers to
40
+ incorporate. Many developers of free software are heartened and
41
+ encouraged by the resulting cooperation. However, in the case of
42
+ software used on network servers, this result may fail to come about.
43
+ The GNU General Public License permits making a modified version and
44
+ letting the public access it on a server without ever releasing its
45
+ source code to the public.
46
+
47
+ The GNU Affero General Public License is designed specifically to
48
+ ensure that, in such cases, the modified source code becomes available
49
+ to the community. It requires the operator of a network server to
50
+ provide the source code of the modified version running there to the
51
+ users of that server. Therefore, public use of a modified version, on
52
+ a publicly accessible server, gives the public access to the source
53
+ code of the modified version.
54
+
55
+ An older license, called the Affero General Public License and
56
+ published by Affero, was designed to accomplish similar goals. This is
57
+ a different license, not a version of the Affero GPL, but Affero has
58
+ released a new version of the Affero GPL which permits relicensing under
59
+ this license.
60
+
61
+ The precise terms and conditions for copying, distribution and
62
+ modification follow.
63
+
64
+ TERMS AND CONDITIONS
65
+
66
+ 0. Definitions.
67
+
68
+ "This License" refers to version 3 of the GNU Affero General Public License.
69
+
70
+ "Copyright" also means copyright-like laws that apply to other kinds of
71
+ works, such as semiconductor masks.
72
+
73
+ "The Program" refers to any copyrightable work licensed under this
74
+ License. Each licensee is addressed as "you". "Licensees" and
75
+ "recipients" may be individuals or organizations.
76
+
77
+ To "modify" a work means to copy from or adapt all or part of the work
78
+ in a fashion requiring copyright permission, other than the making of an
79
+ exact copy. The resulting work is called a "modified version" of the
80
+ earlier work or a work "based on" the earlier work.
81
+
82
+ A "covered work" means either the unmodified Program or a work based
83
+ on the Program.
84
+
85
+ To "propagate" a work means to do anything with it that, without
86
+ permission, would make you directly or secondarily liable for
87
+ infringement under applicable copyright law, except executing it on a
88
+ computer or modifying a private copy. Propagation includes copying,
89
+ distribution (with or without modification), making available to the
90
+ public, and in some countries other activities as well.
91
+
92
+ To "convey" a work means any kind of propagation that enables other
93
+ parties to make or receive copies. Mere interaction with a user through
94
+ a computer network, with no transfer of a copy, is not conveying.
95
+
96
+ An interactive user interface displays "Appropriate Legal Notices"
97
+ to the extent that it includes a convenient and prominently visible
98
+ feature that (1) displays an appropriate copyright notice, and (2)
99
+ tells the user that there is no warranty for the work (except to the
100
+ extent that warranties are provided), that licensees may convey the
101
+ work under this License, and how to view a copy of this License. If
102
+ the interface presents a list of user commands or options, such as a
103
+ menu, a prominent item in the list meets this criterion.
104
+
105
+ 1. Source Code.
106
+
107
+ The "source code" for a work means the preferred form of the work
108
+ for making modifications to it. "Object code" means any non-source
109
+ form of a work.
110
+
111
+ A "Standard Interface" means an interface that either is an official
112
+ standard defined by a recognized standards body, or, in the case of
113
+ interfaces specified for a particular programming language, one that
114
+ is widely used among developers working in that language.
115
+
116
+ The "System Libraries" of an executable work include anything, other
117
+ than the work as a whole, that (a) is included in the normal form of
118
+ packaging a Major Component, but which is not part of that Major
119
+ Component, and (b) serves only to enable use of the work with that
120
+ Major Component, or to implement a Standard Interface for which an
121
+ implementation is available to the public in source code form. A
122
+ "Major Component", in this context, means a major essential component
123
+ (kernel, window system, and so on) of the specific operating system
124
+ (if any) on which the executable work runs, or a compiler used to
125
+ produce the work, or an object code interpreter used to run it.
126
+
127
+ The "Corresponding Source" for a work in object code form means all
128
+ the source code needed to generate, install, and (for an executable
129
+ work) run the object code and to modify the work, including scripts to
130
+ control those activities. However, it does not include the work's
131
+ System Libraries, or general-purpose tools or generally available free
132
+ programs which are used unmodified in performing those activities but
133
+ which are not part of the work. For example, Corresponding Source
134
+ includes interface definition files associated with source files for
135
+ the work, and the source code for shared libraries and dynamically
136
+ linked subprograms that the work is specifically designed to require,
137
+ such as by intimate data communication or control flow between those
138
+ subprograms and other parts of the work.
139
+
140
+ The Corresponding Source need not include anything that users
141
+ can regenerate automatically from other parts of the Corresponding
142
+ Source.
143
+
144
+ The Corresponding Source for a work in source code form is that
145
+ same work.
146
+
147
+ 2. Basic Permissions.
148
+
149
+ All rights granted under this License are granted for the term of
150
+ copyright on the Program, and are irrevocable provided the stated
151
+ conditions are met. This License explicitly affirms your unlimited
152
+ permission to run the unmodified Program. The output from running a
153
+ covered work is covered by this License only if the output, given its
154
+ content, constitutes a covered work. This License acknowledges your
155
+ rights of fair use or other equivalent, as provided by copyright law.
156
+
157
+ You may make, run and propagate covered works that you do not
158
+ convey, without conditions so long as your license otherwise remains
159
+ in force. You may convey covered works to others for the sole purpose
160
+ of having them make modifications exclusively for you, or provide you
161
+ with facilities for running those works, provided that you comply with
162
+ the terms of this License in conveying all material for which you do
163
+ not control copyright. Those thus making or running the covered works
164
+ for you must do so exclusively on your behalf, under your direction
165
+ and control, on terms that prohibit them from making any copies of
166
+ your copyrighted material outside their relationship with you.
167
+
168
+ Conveying under any other circumstances is permitted solely under
169
+ the conditions stated below. Sublicensing is not allowed; section 10
170
+ makes it unnecessary.
171
+
172
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
173
+
174
+ No covered work shall be deemed part of an effective technological
175
+ measure under any applicable law fulfilling obligations under article
176
+ 11 of the WIPO copyright treaty adopted on 20 December 1996, or
177
+ similar laws prohibiting or restricting circumvention of such
178
+ measures.
179
+
180
+ When you convey a covered work, you waive any legal power to forbid
181
+ circumvention of technological measures to the extent such circumvention
182
+ is effected by exercising rights under this License with respect to
183
+ the covered work, and you disclaim any intention to limit operation or
184
+ modification of the work as a means of enforcing, against the work's
185
+ users, your or third parties' legal rights to forbid circumvention of
186
+ technological measures.
187
+
188
+ 4. Conveying Verbatim Copies.
189
+
190
+ You may convey verbatim copies of the Program's source code as you
191
+ receive it, in any medium, provided that you conspicuously and
192
+ appropriately publish on each copy an appropriate copyright notice;
193
+ keep intact all notices stating that this License and any
194
+ non-permissive terms added in accord with section 7 apply to the code;
195
+ keep intact all notices of the absence of any warranty; and give all
196
+ recipients a copy of this License along with the Program.
197
+
198
+ You may charge any price or no price for each copy that you convey,
199
+ and you may offer support or warranty protection for a fee.
200
+
201
+ 5. Conveying Modified Source Versions.
202
+
203
+ You may convey a work based on the Program, or the modifications to
204
+ produce it from the Program, in the form of source code under the
205
+ terms of section 4, provided that you also meet all of these conditions:
206
+
207
+ a) The work must carry prominent notices stating that you modified
208
+ it, and giving a relevant date.
209
+
210
+ b) The work must carry prominent notices stating that it is
211
+ released under this License and any conditions added under section
212
+ 7. This requirement modifies the requirement in section 4 to
213
+ "keep intact all notices".
214
+
215
+ c) You must license the entire work, as a whole, under this
216
+ License to anyone who comes into possession of a copy. This
217
+ License will therefore apply, along with any applicable section 7
218
+ additional terms, to the whole of the work, and all its parts,
219
+ regardless of how they are packaged. This License gives no
220
+ permission to license the work in any other way, but it does not
221
+ invalidate such permission if you have separately received it.
222
+
223
+ d) If the work has interactive user interfaces, each must display
224
+ Appropriate Legal Notices; however, if the Program has interactive
225
+ interfaces that do not display Appropriate Legal Notices, your
226
+ work need not make them do so.
227
+
228
+ A compilation of a covered work with other separate and independent
229
+ works, which are not by their nature extensions of the covered work,
230
+ and which are not combined with it such as to form a larger program,
231
+ in or on a volume of a storage or distribution medium, is called an
232
+ "aggregate" if the compilation and its resulting copyright are not
233
+ used to limit the access or legal rights of the compilation's users
234
+ beyond what the individual works permit. Inclusion of a covered work
235
+ in an aggregate does not cause this License to apply to the other
236
+ parts of the aggregate.
237
+
238
+ 6. Conveying Non-Source Forms.
239
+
240
+ You may convey a covered work in object code form under the terms
241
+ of sections 4 and 5, provided that you also convey the
242
+ machine-readable Corresponding Source under the terms of this License,
243
+ in one of these ways:
244
+
245
+ a) Convey the object code in, or embodied in, a physical product
246
+ (including a physical distribution medium), accompanied by the
247
+ Corresponding Source fixed on a durable physical medium
248
+ customarily used for software interchange.
249
+
250
+ b) Convey the object code in, or embodied in, a physical product
251
+ (including a physical distribution medium), accompanied by a
252
+ written offer, valid for at least three years and valid for as
253
+ long as you offer spare parts or customer support for that product
254
+ model, to give anyone who possesses the object code either (1) a
255
+ copy of the Corresponding Source for all the software in the
256
+ product that is covered by this License, on a durable physical
257
+ medium customarily used for software interchange, for a price no
258
+ more than your reasonable cost of physically performing this
259
+ conveying of source, or (2) access to copy the
260
+ Corresponding Source from a network server at no charge.
261
+
262
+ c) Convey individual copies of the object code with a copy of the
263
+ written offer to provide the Corresponding Source. This
264
+ alternative is allowed only occasionally and noncommercially, and
265
+ only if you received the object code with such an offer, in accord
266
+ with subsection 6b.
267
+
268
+ d) Convey the object code by offering access from a designated
269
+ place (gratis or for a charge), and offer equivalent access to the
270
+ Corresponding Source in the same way through the same place at no
271
+ further charge. You need not require recipients to copy the
272
+ Corresponding Source along with the object code. If the place to
273
+ copy the object code is a network server, the Corresponding Source
274
+ may be on a different server (operated by you or a third party)
275
+ that supports equivalent copying facilities, provided you maintain
276
+ clear directions next to the object code saying where to find the
277
+ Corresponding Source. Regardless of what server hosts the
278
+ Corresponding Source, you remain obligated to ensure that it is
279
+ available for as long as needed to satisfy these requirements.
280
+
281
+ e) Convey the object code using peer-to-peer transmission, provided
282
+ you inform other peers where the object code and Corresponding
283
+ Source of the work are being offered to the general public at no
284
+ charge under subsection 6d.
285
+
286
+ A separable portion of the object code, whose source code is excluded
287
+ from the Corresponding Source as a System Library, need not be
288
+ included in conveying the object code work.
289
+
290
+ A "User Product" is either (1) a "consumer product", which means any
291
+ tangible personal property which is normally used for personal, family,
292
+ or household purposes, or (2) anything designed or sold for incorporation
293
+ into a dwelling. In determining whether a product is a consumer product,
294
+ doubtful cases shall be resolved in favor of coverage. For a particular
295
+ product received by a particular user, "normally used" refers to a
296
+ typical or common use of that class of product, regardless of the status
297
+ of the particular user or of the way in which the particular user
298
+ actually uses, or expects or is expected to use, the product. A product
299
+ is a consumer product regardless of whether the product has substantial
300
+ commercial, industrial or non-consumer uses, unless such uses represent
301
+ the only significant mode of use of the product.
302
+
303
+ "Installation Information" for a User Product means any methods,
304
+ procedures, authorization keys, or other information required to install
305
+ and execute modified versions of a covered work in that User Product from
306
+ a modified version of its Corresponding Source. The information must
307
+ suffice to ensure that the continued functioning of the modified object
308
+ code is in no case prevented or interfered with solely because
309
+ modification has been made.
310
+
311
+ If you convey an object code work under this section in, or with, or
312
+ specifically for use in, a User Product, and the conveying occurs as
313
+ part of a transaction in which the right of possession and use of the
314
+ User Product is transferred to the recipient in perpetuity or for a
315
+ fixed term (regardless of how the transaction is characterized), the
316
+ Corresponding Source conveyed under this section must be accompanied
317
+ by the Installation Information. But this requirement does not apply
318
+ if neither you nor any third party retains the ability to install
319
+ modified object code on the User Product (for example, the work has
320
+ been installed in ROM).
321
+
322
+ The requirement to provide Installation Information does not include a
323
+ requirement to continue to provide support service, warranty, or updates
324
+ for a work that has been modified or installed by the recipient, or for
325
+ the User Product in which it has been modified or installed. Access to a
326
+ network may be denied when the modification itself materially and
327
+ adversely affects the operation of the network or violates the rules and
328
+ protocols for communication across the network.
329
+
330
+ Corresponding Source conveyed, and Installation Information provided,
331
+ in accord with this section must be in a format that is publicly
332
+ documented (and with an implementation available to the public in
333
+ source code form), and must require no special password or key for
334
+ unpacking, reading or copying.
335
+
336
+ 7. Additional Terms.
337
+
338
+ "Additional permissions" are terms that supplement the terms of this
339
+ License by making exceptions from one or more of its conditions.
340
+ Additional permissions that are applicable to the entire Program shall
341
+ be treated as though they were included in this License, to the extent
342
+ that they are valid under applicable law. If additional permissions
343
+ apply only to part of the Program, that part may be used separately
344
+ under those permissions, but the entire Program remains governed by
345
+ this License without regard to the additional permissions.
346
+
347
+ When you convey a copy of a covered work, you may at your option
348
+ remove any additional permissions from that copy, or from any part of
349
+ it. (Additional permissions may be written to require their own
350
+ removal in certain cases when you modify the work.) You may place
351
+ additional permissions on material, added by you to a covered work,
352
+ for which you have or can give appropriate copyright permission.
353
+
354
+ Notwithstanding any other provision of this License, for material you
355
+ add to a covered work, you may (if authorized by the copyright holders of
356
+ that material) supplement the terms of this License with terms:
357
+
358
+ a) Disclaiming warranty or limiting liability differently from the
359
+ terms of sections 15 and 16 of this License; or
360
+
361
+ b) Requiring preservation of specified reasonable legal notices or
362
+ author attributions in that material or in the Appropriate Legal
363
+ Notices displayed by works containing it; or
364
+
365
+ c) Prohibiting misrepresentation of the origin of that material, or
366
+ requiring that modified versions of such material be marked in
367
+ reasonable ways as different from the original version; or
368
+
369
+ d) Limiting the use for publicity purposes of names of licensors or
370
+ authors of the material; or
371
+
372
+ e) Declining to grant rights under trademark law for use of some
373
+ trade names, trademarks, or service marks; or
374
+
375
+ f) Requiring indemnification of licensors and authors of that
376
+ material by anyone who conveys the material (or modified versions of
377
+ it) with contractual assumptions of liability to the recipient, for
378
+ any liability that these contractual assumptions directly impose on
379
+ those licensors and authors.
380
+
381
+ All other non-permissive additional terms are considered "further
382
+ restrictions" within the meaning of section 10. If the Program as you
383
+ received it, or any part of it, contains a notice stating that it is
384
+ governed by this License along with a term that is a further
385
+ restriction, you may remove that term. If a license document contains
386
+ a further restriction but permits relicensing or conveying under this
387
+ License, you may add to a covered work material governed by the terms
388
+ of that license document, provided that the further restriction does
389
+ not survive such relicensing or conveying.
390
+
391
+ If you add terms to a covered work in accord with this section, you
392
+ must place, in the relevant source files, a statement of the
393
+ additional terms that apply to those files, or a notice indicating
394
+ where to find the applicable terms.
395
+
396
+ Additional terms, permissive or non-permissive, may be stated in the
397
+ form of a separately written license, or stated as exceptions;
398
+ the above requirements apply either way.
399
+
400
+ 8. Termination.
401
+
402
+ You may not propagate or modify a covered work except as expressly
403
+ provided under this License. Any attempt otherwise to propagate or
404
+ modify it is void, and will automatically terminate your rights under
405
+ this License (including any patent licenses granted under the third
406
+ paragraph of section 11).
407
+
408
+ However, if you cease all violation of this License, then your
409
+ license from a particular copyright holder is reinstated (a)
410
+ provisionally, unless and until the copyright holder explicitly and
411
+ finally terminates your license, and (b) permanently, if the copyright
412
+ holder fails to notify you of the violation by some reasonable means
413
+ prior to 60 days after the cessation.
414
+
415
+ Moreover, your license from a particular copyright holder is
416
+ reinstated permanently if the copyright holder notifies you of the
417
+ violation by some reasonable means, this is the first time you have
418
+ received notice of violation of this License (for any work) from that
419
+ copyright holder, and you cure the violation prior to 30 days after
420
+ your receipt of the notice.
421
+
422
+ Termination of your rights under this section does not terminate the
423
+ licenses of parties who have received copies or rights from you under
424
+ this License. If your rights have been terminated and not permanently
425
+ reinstated, you do not qualify to receive new licenses for the same
426
+ material under section 10.
427
+
428
+ 9. Acceptance Not Required for Having Copies.
429
+
430
+ You are not required to accept this License in order to receive or
431
+ run a copy of the Program. Ancillary propagation of a covered work
432
+ occurring solely as a consequence of using peer-to-peer transmission
433
+ to receive a copy likewise does not require acceptance. However,
434
+ nothing other than this License grants you permission to propagate or
435
+ modify any covered work. These actions infringe copyright if you do
436
+ not accept this License. Therefore, by modifying or propagating a
437
+ covered work, you indicate your acceptance of this License to do so.
438
+
439
+ 10. Automatic Licensing of Downstream Recipients.
440
+
441
+ Each time you convey a covered work, the recipient automatically
442
+ receives a license from the original licensors, to run, modify and
443
+ propagate that work, subject to this License. You are not responsible
444
+ for enforcing compliance by third parties with this License.
445
+
446
+ An "entity transaction" is a transaction transferring control of an
447
+ organization, or substantially all assets of one, or subdividing an
448
+ organization, or merging organizations. If propagation of a covered
449
+ work results from an entity transaction, each party to that
450
+ transaction who receives a copy of the work also receives whatever
451
+ licenses to the work the party's predecessor in interest had or could
452
+ give under the previous paragraph, plus a right to possession of the
453
+ Corresponding Source of the work from the predecessor in interest, if
454
+ the predecessor has it or can get it with reasonable efforts.
455
+
456
+ You may not impose any further restrictions on the exercise of the
457
+ rights granted or affirmed under this License. For example, you may
458
+ not impose a license fee, royalty, or other charge for exercise of
459
+ rights granted under this License, and you may not initiate litigation
460
+ (including a cross-claim or counterclaim in a lawsuit) alleging that
461
+ any patent claim is infringed by making, using, selling, offering for
462
+ sale, or importing the Program or any portion of it.
463
+
464
+ 11. Patents.
465
+
466
+ A "contributor" is a copyright holder who authorizes use under this
467
+ License of the Program or a work on which the Program is based. The
468
+ work thus licensed is called the contributor's "contributor version".
469
+
470
+ A contributor's "essential patent claims" are all patent claims
471
+ owned or controlled by the contributor, whether already acquired or
472
+ hereafter acquired, that would be infringed by some manner, permitted
473
+ by this License, of making, using, or selling its contributor version,
474
+ but do not include claims that would be infringed only as a
475
+ consequence of further modification of the contributor version. For
476
+ purposes of this definition, "control" includes the right to grant
477
+ patent sublicenses in a manner consistent with the requirements of
478
+ this License.
479
+
480
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
481
+ patent license under the contributor's essential patent claims, to
482
+ make, use, sell, offer for sale, import and otherwise run, modify and
483
+ propagate the contents of its contributor version.
484
+
485
+ In the following three paragraphs, a "patent license" is any express
486
+ agreement or commitment, however denominated, not to enforce a patent
487
+ (such as an express permission to practice a patent or covenant not to
488
+ sue for patent infringement). To "grant" such a patent license to a
489
+ party means to make such an agreement or commitment not to enforce a
490
+ patent against the party.
491
+
492
+ If you convey a covered work, knowingly relying on a patent license,
493
+ and the Corresponding Source of the work is not available for anyone
494
+ to copy, free of charge and under the terms of this License, through a
495
+ publicly available network server or other readily accessible means,
496
+ then you must either (1) cause the Corresponding Source to be so
497
+ available, or (2) arrange to deprive yourself of the benefit of the
498
+ patent license for this particular work, or (3) arrange, in a manner
499
+ consistent with the requirements of this License, to extend the patent
500
+ license to downstream recipients. "Knowingly relying" means you have
501
+ actual knowledge that, but for the patent license, your conveying the
502
+ covered work in a country, or your recipient's use of the covered work
503
+ in a country, would infringe one or more identifiable patents in that
504
+ country that you have reason to believe are valid.
505
+
506
+ If, pursuant to or in connection with a single transaction or
507
+ arrangement, you convey, or propagate by procuring conveyance of, a
508
+ covered work, and grant a patent license to some of the parties
509
+ receiving the covered work authorizing them to use, propagate, modify
510
+ or convey a specific copy of the covered work, then the patent license
511
+ you grant is automatically extended to all recipients of the covered
512
+ work and works based on it.
513
+
514
+ A patent license is "discriminatory" if it does not include within
515
+ the scope of its coverage, prohibits the exercise of, or is
516
+ conditioned on the non-exercise of one or more of the rights that are
517
+ specifically granted under this License. You may not convey a covered
518
+ work if you are a party to an arrangement with a third party that is
519
+ in the business of distributing software, under which you make payment
520
+ to the third party based on the extent of your activity of conveying
521
+ the work, and under which the third party grants, to any of the
522
+ parties who would receive the covered work from you, a discriminatory
523
+ patent license (a) in connection with copies of the covered work
524
+ conveyed by you (or copies made from those copies), or (b) primarily
525
+ for and in connection with specific products or compilations that
526
+ contain the covered work, unless you entered into that arrangement,
527
+ or that patent license was granted, prior to 28 March 2007.
528
+
529
+ Nothing in this License shall be construed as excluding or limiting
530
+ any implied license or other defenses to infringement that may
531
+ otherwise be available to you under applicable patent law.
532
+
533
+ 12. No Surrender of Others' Freedom.
534
+
535
+ If conditions are imposed on you (whether by court order, agreement or
536
+ otherwise) that contradict the conditions of this License, they do not
537
+ excuse you from the conditions of this License. If you cannot convey a
538
+ covered work so as to satisfy simultaneously your obligations under this
539
+ License and any other pertinent obligations, then as a consequence you may
540
+ not convey it at all. For example, if you agree to terms that obligate you
541
+ to collect a royalty for further conveying from those to whom you convey
542
+ the Program, the only way you could satisfy both those terms and this
543
+ License would be to refrain entirely from conveying the Program.
544
+
545
+ 13. Remote Network Interaction; Use with the GNU General Public License.
546
+
547
+ Notwithstanding any other provision of this License, if you modify the
548
+ Program, your modified version must prominently offer all users
549
+ interacting with it remotely through a computer network (if your version
550
+ supports such interaction) an opportunity to receive the Corresponding
551
+ Source of your version by providing access to the Corresponding Source
552
+ from a network server at no charge, through some standard or customary
553
+ means of facilitating copying of software. This Corresponding Source
554
+ shall include the Corresponding Source for any work covered by version 3
555
+ of the GNU General Public License that is incorporated pursuant to the
556
+ following paragraph.
557
+
558
+ Notwithstanding any other provision of this License, you have
559
+ permission to link or combine any covered work with a work licensed
560
+ under version 3 of the GNU General Public License into a single
561
+ combined work, and to convey the resulting work. The terms of this
562
+ License will continue to apply to the part which is the covered work,
563
+ but the work with which it is combined will remain governed by version
564
+ 3 of the GNU General Public License.
565
+
566
+ 14. Revised Versions of this License.
567
+
568
+ The Free Software Foundation may publish revised and/or new versions of
569
+ the GNU Affero General Public License from time to time. Such new versions
570
+ will be similar in spirit to the present version, but may differ in detail to
571
+ address new problems or concerns.
572
+
573
+ Each version is given a distinguishing version number. If the
574
+ Program specifies that a certain numbered version of the GNU Affero General
575
+ Public License "or any later version" applies to it, you have the
576
+ option of following the terms and conditions either of that numbered
577
+ version or of any later version published by the Free Software
578
+ Foundation. If the Program does not specify a version number of the
579
+ GNU Affero General Public License, you may choose any version ever published
580
+ by the Free Software Foundation.
581
+
582
+ If the Program specifies that a proxy can decide which future
583
+ versions of the GNU Affero General Public License can be used, that proxy's
584
+ public statement of acceptance of a version permanently authorizes you
585
+ to choose that version for the Program.
586
+
587
+ Later license versions may give you additional or different
588
+ permissions. However, no additional obligations are imposed on any
589
+ author or copyright holder as a result of your choosing to follow a
590
+ later version.
591
+
592
+ 15. Disclaimer of Warranty.
593
+
594
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
595
+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
596
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
597
+ OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
598
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
599
+ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
600
+ IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
601
+ ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
602
+
603
+ 16. Limitation of Liability.
604
+
605
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
606
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
607
+ THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
608
+ GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
609
+ USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
610
+ DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
611
+ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
612
+ EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
613
+ SUCH DAMAGES.
614
+
615
+ 17. Interpretation of Sections 15 and 16.
616
+
617
+ If the disclaimer of warranty and limitation of liability provided
618
+ above cannot be given local legal effect according to their terms,
619
+ reviewing courts shall apply local law that most closely approximates
620
+ an absolute waiver of all civil liability in connection with the
621
+ Program, unless a warranty or assumption of liability accompanies a
622
+ copy of the Program in return for a fee.
623
+
624
+ END OF TERMS AND CONDITIONS
625
+
626
+ How to Apply These Terms to Your New Programs
627
+
628
+ If you develop a new program, and you want it to be of the greatest
629
+ possible use to the public, the best way to achieve this is to make it
630
+ free software which everyone can redistribute and change under these terms.
631
+
632
+ To do so, attach the following notices to the program. It is safest
633
+ to attach them to the start of each source file to most effectively
634
+ state the exclusion of warranty; and each file should have at least
635
+ the "copyright" line and a pointer to where the full notice is found.
636
+
637
+ <one line to give the program's name and a brief idea of what it does.>
638
+ Copyright (C) <year> <name of author>
639
+
640
+ This program is free software: you can redistribute it and/or modify
641
+ it under the terms of the GNU Affero General Public License as published by
642
+ the Free Software Foundation, either version 3 of the License, or
643
+ (at your option) any later version.
644
+
645
+ This program is distributed in the hope that it will be useful,
646
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
647
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
648
+ GNU Affero General Public License for more details.
649
+
650
+ You should have received a copy of the GNU Affero General Public License
651
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
652
+
653
+ Also add information on how to contact you by electronic and paper mail.
654
+
655
+ If your software can interact with users remotely through a computer
656
+ network, you should also make sure that it provides a way for users to
657
+ get its source. For example, if your program is a web application, its
658
+ interface could display a "Source" link that leads users to an archive
659
+ of the code. There are many ways you could offer source, and different
660
+ solutions will be better for different programs; see section 13 for the
661
+ specific requirements.
662
+
663
+ You should also get your employer (if you work as a programmer) or school,
664
+ if any, to sign a "copyright disclaimer" for the program, if necessary.
665
+ For more information on this, and how to apply and follow the GNU AGPL, see
666
+ <https://www.gnu.org/licenses/>.
667
+
668
+ Project-URL: Homepage, https://codeberg.org/slidge/
669
+ Project-URL: Issues, https://codeberg.org/slidge/slidge/issues
670
+ Project-URL: Repository, https://codeberg.org/slidge/slidge/
671
+ Project-URL: Chat room, https://conference.nicoco.fr:5281/muc_log/slidge/
672
+ Project-URL: Documentation, https://slidge.codeberg.page/docs/main
673
+ Keywords: xmpp,gateway,bridge,instant messaging
674
+ Classifier: Topic :: Internet :: XMPP
675
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
676
+ Requires-Python: >=3.11
677
+ Description-Content-Type: text/markdown
678
+ Requires-Dist: aiohttp[speedups]>=3.11.11
679
+ Requires-Dist: alembic>=1.14.0
680
+ Requires-Dist: configargparse>=1.7
681
+ Requires-Dist: defusedxml>=0.7.1
682
+ Requires-Dist: pickle-secure>=0.99.9
683
+ Requires-Dist: pillow>=11.0.0
684
+ Requires-Dist: python-magic>=0.4.27
685
+ Requires-Dist: qrcode>=8.0
686
+ Requires-Dist: slixmpp>=1.8.6
687
+ Requires-Dist: sqlalchemy>=2.0.36
688
+ Requires-Dist: thumbhash>=0.1.2
689
+
690
+ ![Slidge logo](https://codeberg.org/slidge/slidge/raw/branch/main/dev/assets/slidge-color-small.png)
691
+
692
+ [![Chat](https://conference.nicoco.fr:5281/muc_badge/slidge@conference.nicoco.fr)](https://conference.nicoco.fr:5281/muc_log/slidge/)
693
+
694
+
695
+ [![woodpecker CI status](https://ci.codeberg.org/api/badges/14027/status.svg)](https://ci.codeberg.org/repos/14027)
696
+ [![coverage](https://slidge.codeberg.page/coverage/main/coverage.svg)](https://slidge.im/coverage)
697
+
698
+ [![pypi version](https://badge.fury.io/py/slidge.svg)](https://pypi.org/project/slidge/)
699
+ [![debian unstable version](https://badges.debian.net/badges/debian/unstable/python3-slidge/version.svg)](https://packages.debian.org/unstable/python3-slidge)
700
+
701
+ Slidge is an XMPP (puppeteer) gateway library in python.
702
+ It makes
703
+ [writing gateways to other chat networks](https://slidge.im/core/dev/tutorial.html)
704
+ (*legacy modules*) as frictionless as possible.
705
+ It supports fancy IM features, such as
706
+ [(emoji) reactions](https://xmpp.org/extensions/xep-0444.html),
707
+ [replies](https://xmpp.org/extensions/xep-0461.html), and
708
+ [retractions](https://xmpp.org/extensions/xep-0424.html).
709
+ The full list of supported XEPs in on [xmpp.org](https://xmpp.org/software/slidge/).
710
+
711
+ Status
712
+ ------
713
+
714
+ Slidge is **beta**-grade software. It support groups and 1:1 chats.
715
+ Try slidge and give us some
716
+ feedback, through the [MUC](xmpp:slidge@conference.nicoco.fr?join) or the
717
+ [issue tracker](https://codeberg.org/slidge/slidge/issues).
718
+ Don't be shy!
719
+
720
+ Usage
721
+ -----
722
+
723
+ A minimal (and fictional!) slidge-powered "legacy module" looks like this:
724
+
725
+ ```python
726
+ from cool_chat_lib import CoolClient
727
+ from slidge import BaseGateway, BaseSession
728
+ from slidge.contact import LegacyContact
729
+ from slidge.group import LegacyMUC
730
+ from slidge.db import GatewayUser
731
+
732
+
733
+ class Gateway(BaseGateway):
734
+ # Various aspects of the gateway component are configured as class
735
+ # attributes of the concrete Gateway class
736
+ COMPONENT_NAME = "Gateway to the super duper chat network"
737
+
738
+
739
+ class Session(BaseSession):
740
+ def __init__(self, user: GatewayUser):
741
+ super().__init__(user)
742
+ self.legacy_client = CoolClient(
743
+ login=user.legacy_module_data["username"],
744
+ password=user.legacy_module_data["password"],
745
+ )
746
+
747
+ async def on_text(self, chat: LegacyContact | LegacyMUC, text: str, **kwargs):
748
+ """
749
+ Triggered when the slidge user sends an XMPP message through the gateway
750
+ """
751
+ self.legacy_client.send_message(text=text, destination=chat.legacy_id)
752
+ ```
753
+
754
+ There's more in [the tutorial](https://slidge.codeberg.page/docs/main/dev/tutorial.html)!
755
+
756
+ Installation
757
+ ------------
758
+
759
+ ⚠️ Slidge is a lib for gateway developers, if you are an XMPP server admin and
760
+ want to install gateways on your server, you are looking for a
761
+ [slidge-based gateway](https://codeberg.org/explore/repos?q=slidge&topic=1).
762
+ or the
763
+ [slidge-debian](https://git.sr.ht/~nicoco/slidge-debian)
764
+ bundle.
765
+
766
+ Slidge is available on
767
+ [codeberg](https://codeberg.org/slidge/-/packages) (python packages and containers)
768
+ and [pypi](https://pypi.org/project/slidge/).
769
+ Refer to [the docs](https://slidge.codeberg.page/docs/main/admin/install.html) for details.
770
+
771
+ About privacy
772
+ -------------
773
+
774
+ Slidge (and most if not all XMPP gateway that I know of) will break
775
+ end-to-end encryption, or more precisely one of the 'ends' become the
776
+ gateway itself. If privacy is a major concern for you, my advice would
777
+ be to:
778
+
779
+ - use XMPP + OMEMO
780
+ - self-host your gateways
781
+ - have your gateways hosted by someone you know AFK and trust
782
+
783
+ Related projects
784
+ ----------------
785
+
786
+ - [Spectrum](https://www.spectrum.im/)
787
+ - [telegabber](https://dev.narayana.im/narayana/telegabber)
788
+ - [biboumi](https://biboumi.louiz.org/)
789
+ - [Bifröst](https://github.com/matrix-org/matrix-bifrost)
790
+ - [Mautrix](https://github.com/mautrix)
791
+ - [matterbridge](https://github.com/42wim/matterbridge)
792
+
793
+ Thank you, [Trung](https://trung.fun/), for the slidge logo!