Mercurial > libervia-backend
annotate setup.py @ 3254:6cf4bd6972c2
core, frontends: avatar refactoring:
/!\ huge commit
Avatar logic has been reworked around the IDENTITY plugin: plugins able to handle avatar
or other identity related metadata (like nicknames) register to IDENTITY plugin in the
same way as for other features like download/upload. Once registered, IDENTITY plugin will
call them when suitable in order of priority, and handle caching.
Methods to manage those metadata from frontend now use serialised data.
For now `avatar` and `nicknames` are handled:
- `avatar` is now a dict with `path` + metadata like `media_type`, instead of just a string
path
- `nicknames` is now a list of nicknames in order of priority. This list is never empty,
and `nicknames[0]` should be the preferred nickname to use by frontends in most cases.
In addition to contact specified nicknames, user set nickname (the one set in roster) is
used in priority when available.
Among the side changes done with this commit, there are:
- a new `contactGet` bridge method to get roster metadata for a single contact
- SatPresenceProtocol.send returns a Deferred to check when it has actually been sent
- memory's methods to handle entities data now use `client` as first argument
- metadata filter can be specified with `getIdentity`
- `getAvatar` and `setAvatar` are now part of the IDENTITY plugin instead of XEP-0054 (and
there signature has changed)
- `isRoom` and `getBareOrFull` are now part of XEP-0045 plugin
- jp avatar/get command uses `xdg-open` first when available for `--show` flag
- `--no-cache` has been added to jp avatar/get and identity/get
- jp identity/set has been simplified, explicit options (`--nickname` only for now) are
used instead of `--field`. `--field` may come back in the future if necessary for extra
data.
- QuickContactList `SetContact` now handle None as a value, and doesn't use it to delete the
metadata anymore
- improved cache handling for `metadata` and `nicknames` in quick frontend
- new `default` argument in QuickContactList `getCache`
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 14 Apr 2020 21:00:33 +0200 |
parents | 330a5f1d9eea |
children | f300d78f08f3 |
rev | line source |
---|---|
3028 | 1 #!/usr/bin/env python3 |
225 | 2 |
2574 | 3 # SAT: an XMPP client |
3136 | 4 # Copyright (C) 2009-2020 Jérôme Poisson (goffi@goffi.org) |
1766 | 5 # Copyright (C) 2013-2016 Adrien Cossa (souliane@mailoo.org) |
238
83d2bc0abf2a
version, README, CHANGELOG and INSTALL updates
Goffi <goffi@goffi.org>
parents:
237
diff
changeset
|
6 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
10 # (at your option) any later version. |
238
83d2bc0abf2a
version, README, CHANGELOG and INSTALL updates
Goffi <goffi@goffi.org>
parents:
237
diff
changeset
|
11 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
15 # GNU Affero General Public License for more details. |
238
83d2bc0abf2a
version, README, CHANGELOG and INSTALL updates
Goffi <goffi@goffi.org>
parents:
237
diff
changeset
|
16 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
607
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
238
83d2bc0abf2a
version, README, CHANGELOG and INSTALL updates
Goffi <goffi@goffi.org>
parents:
237
diff
changeset
|
19 |
2562 | 20 from setuptools import setup, find_packages |
586
6a718ede8be1
Fix coding style in setup.py.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
581
diff
changeset
|
21 import os |
2562 | 22 |
23 NAME = 'sat' | |
1100
2be46f391cfa
setup: SAT_INSTALL environment variable handles "clean" and "purge" options
souliane <souliane@mailoo.org>
parents:
1054
diff
changeset
|
24 |
2562 | 25 install_requires = [ |
26 'babel', | |
27 'dbus-python', | |
28 'html2text', | |
3061
948833e3b542
tools (common/template): removed warning catches, jinja2>=2.10.3 now handles them correctly
Goffi <goffi@goffi.org>
parents:
3053
diff
changeset
|
29 'jinja2>=2.10.3', |
2562 | 30 'langid', |
31 'lxml >= 3.1.0', | |
2874
da0193ae1c24
misc (setup): minimum markdown version is not 3.0
Goffi <goffi@goffi.org>
parents:
2857
diff
changeset
|
32 'markdown >= 3.0', |
2562 | 33 'miniupnpc', |
34 'mutagen', | |
35 'netifaces', | |
36 'pillow', | |
3111
5d3b6efac044
install (setup.py): use progressbar2 instead of progressbar
Goffi <goffi@goffi.org>
parents:
3090
diff
changeset
|
37 'progressbar2', |
3090
4f8bdf50593f
plugin sec aesgcm: new plugin handling `aesgcm:` scheme for e2e encrypted media sharing:
Goffi <goffi@goffi.org>
parents:
3089
diff
changeset
|
38 'cryptography', |
2562 | 39 'pygments', |
40 'pygobject', | |
41 'PyOpenSSL', | |
2611
c180ca699e72
install (setup): added python-dateutil as dependency (was already a dependency of Wokkel)
Goffi <goffi@goffi.org>
parents:
2576
diff
changeset
|
42 'python-dateutil', |
2562 | 43 'python-potr', |
44 'pyxdg', | |
2962
b2c9b85372de
install: updated minimal version for sat_tmp and urwid-satext
Goffi <goffi@goffi.org>
parents:
2906
diff
changeset
|
45 'sat_tmp >= 0.7.0a4', |
2562 | 46 'shortuuid', |
3044
691283719bb2
core (patches): updated TLS patches:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
47 'twisted[tls] >= 19.7.0', |
3089
e75024e41f81
plugin upload, XEP-0363: code modernisation + preparation for extension:
Goffi <goffi@goffi.org>
parents:
3085
diff
changeset
|
48 'treq', |
2562 | 49 'urwid >= 1.2.0', |
2962
b2c9b85372de
install: updated minimal version for sat_tmp and urwid-satext
Goffi <goffi@goffi.org>
parents:
2906
diff
changeset
|
50 'urwid-satext >= 0.7.0a2', |
2562 | 51 'wokkel >= 0.7.1', |
3085
c048fc192739
plugin XEP-0384: update to latest python-omemo + better trust management:
Goffi <goffi@goffi.org>
parents:
3084
diff
changeset
|
52 'omemo >= 0.11.0', |
3084
ffcdd93b61fa
plugin XEP-0384: specific warning on missing omemo-backend-signal + fixed encoding following Python 3 port
Goffi <goffi@goffi.org>
parents:
3073
diff
changeset
|
53 'omemo-backend-signal', |
2562 | 54 ] |
1123 | 55 |
1150
beaf8d4475e4
misc (D-Bus, installation): added a .service file for D-Bus auto-launch feature + installation from setup.py (path adaptation now use regex).
Goffi <goffi@goffi.org>
parents:
1138
diff
changeset
|
56 DBUS_DIR = 'dbus-1/services' |
2637 | 57 DBUS_FILE = 'misc/org.salutatoi.SAT.service' |
2574 | 58 with open(os.path.join(NAME, 'VERSION')) as f: |
2571
4aca060075b7
setup: version is now set in SAT/VERSION, sat is not imported anymore in setup
Goffi <goffi@goffi.org>
parents:
2567
diff
changeset
|
59 VERSION = f.read().strip() |
2572 | 60 is_dev_version = VERSION.endswith('D') |
61 | |
62 | |
63 def sat_dev_version(): | |
64 """Use mercurial data to compute version""" | |
65 def version_scheme(version): | |
2576
cb7bf936d8e8
setup, tools(utils): fixed versioning in setup and getRepositoryData
Goffi <goffi@goffi.org>
parents:
2574
diff
changeset
|
66 return VERSION.replace('D', '.dev0') |
2572 | 67 |
68 def local_scheme(version): | |
2576
cb7bf936d8e8
setup, tools(utils): fixed versioning in setup and getRepositoryData
Goffi <goffi@goffi.org>
parents:
2574
diff
changeset
|
69 return "+{rev}.{distance}".format( |
2572 | 70 rev=version.node[1:], |
71 distance=version.distance) | |
72 | |
3053
8b36e5c3f28f
misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents:
3044
diff
changeset
|
73 return { |
8b36e5c3f28f
misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents:
3044
diff
changeset
|
74 'version_scheme': version_scheme, |
8b36e5c3f28f
misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents:
3044
diff
changeset
|
75 'local_scheme': local_scheme |
8b36e5c3f28f
misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents:
3044
diff
changeset
|
76 } |
1150
beaf8d4475e4
misc (D-Bus, installation): added a .service file for D-Bus auto-launch feature + installation from setup.py (path adaptation now use regex).
Goffi <goffi@goffi.org>
parents:
1138
diff
changeset
|
77 |
2565
ea106dfa2145
setup, constant: use https address in APP_URL, and keep pypi NAME separated from constants
Goffi <goffi@goffi.org>
parents:
2564
diff
changeset
|
78 |
3036
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
79 setup( |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
80 name=NAME, |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
81 version=VERSION, |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
82 description="Salut à Toi multipurpose and multi frontend XMPP client", |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
83 long_description="Salut à Toi (SàT) is a XMPP client based on a daemon/frontend " |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
84 "architecture. Its multi frontend (desktop, web, console " |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
85 "interface, CLI, etc) and multipurpose (instant messaging, " |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
86 "microblogging, games, file sharing, etc).", |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
87 author="Association « Salut à Toi »", |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
88 author_email="contact@goffi.org", |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
89 url="https://salut-a-toi.org", |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
90 classifiers=[ |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
91 "Programming Language :: Python :: 3 :: Only", |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
92 "Programming Language :: Python :: 3.7", |
3073
daed12db819d
install (setup): added Python 3.8 classifier
Goffi <goffi@goffi.org>
parents:
3061
diff
changeset
|
93 "Programming Language :: Python :: 3.8", |
3036
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
94 "Development Status :: 5 - Production/Stable", |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
95 "Environment :: Console", |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
96 "Framework :: Twisted", |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
97 "License :: OSI Approved :: GNU Affero General Public License v3 " |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
98 "or later (AGPLv3+)", |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
99 "Operating System :: POSIX :: Linux", |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
100 "Topic :: Communications :: Chat" |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
101 ], |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
102 packages=find_packages() + ["twisted.plugins"], |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
103 data_files=[("share/locale/fr/LC_MESSAGES", |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
104 ["i18n/fr/LC_MESSAGES/sat.mo"]), |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
105 (os.path.join("share/doc", NAME), |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
106 ["CHANGELOG", "COPYING", "INSTALL", "README", "README4TRANSLATORS"]), |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
107 (os.path.join("share", DBUS_DIR), [DBUS_FILE]), |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
108 ], |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
109 scripts=["sat_frontends/jp/jp", "sat_frontends/primitivus/primitivus", "bin/sat"], |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
110 zip_safe=False, |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
111 setup_requires=["setuptools_scm"] if is_dev_version else [], |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
112 use_scm_version=sat_dev_version if is_dev_version else False, |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
113 install_requires=install_requires, |
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
114 package_data={"sat": ["VERSION"]}, |
3040 | 115 python_requires=">=3.7", |
3036
3338c6a634f5
install (setup.py): updated classifiers
Goffi <goffi@goffi.org>
parents:
3035
diff
changeset
|
116 ) |