[CI] Format code with Black

This commit is contained in:
yunohost-bot 2022-01-20 18:43:33 +00:00
parent 3779b9203a
commit b9060da750
19 changed files with 106 additions and 92 deletions

View file

@ -60,7 +60,8 @@ def autofix_i18n_placeholders():
k[0] for k in re.findall(r"{(\w+)(:\w)?}", this_locale[key])
]
if any(k not in subkeys_in_ref for k in subkeys_in_this_locale):
raise Exception("""\n
raise Exception(
"""\n
==========================
Format inconsistency for string {key} in {locale_file}:"
en.json -> {string}
@ -71,7 +72,8 @@ Please fix it manually !
string=string.encode("utf-8"),
locale_file=locale_file,
translated_string=this_locale[key].encode("utf-8"),
))
)
)
if fixed_stuff:
json.dump(
@ -86,7 +88,6 @@ Please fix it manually !
def autofix_orthotypography_and_standardized_words():
def reformat(lang, transformations):
locale = open(f"{LOCALE_FOLDER}{lang}.json").read()

View file

@ -28,7 +28,7 @@ def cli(debug, quiet, output_as, timeout, args, parser):
locales_dir="/usr/share/yunohost/locales/",
output_as=output_as,
timeout=timeout,
top_parser=parser
top_parser=parser,
)
sys.exit(ret)

View file

@ -1425,7 +1425,7 @@ def app_action_run(operation_logger, app, action, args=None):
actions = {x["id"]: x for x in actions}
if action not in actions:
available_actions = ", ".join(actions.keys()),
available_actions = (", ".join(actions.keys()),)
raise YunohostValidationError(
f"action '{action}' not available for app '{app}', available actions are: {available_actions}",
raw_msg=True,
@ -2416,10 +2416,15 @@ def unstable_apps():
for infos in app_list(full=True)["apps"]:
if not infos.get("from_catalog") or infos.get("from_catalog").get("state") in [
if (
not infos.get("from_catalog")
or infos.get("from_catalog").get("state")
in [
"inprogress",
"notworking",
] or infos["id"] in deprecated_apps:
]
or infos["id"] in deprecated_apps
):
output.append(infos["id"])
return output

View file

@ -103,7 +103,9 @@ def _initialize_apps_catalog_system():
)
write_to_yaml(APPS_CATALOG_CONF, default_apps_catalog_list)
except Exception as e:
raise YunohostError(f"Could not initialize the apps catalog system... : {e}", raw_msg=True)
raise YunohostError(
f"Could not initialize the apps catalog system... : {e}", raw_msg=True
)
logger.success(m18n.n("apps_catalog_init_success"))
@ -119,7 +121,9 @@ def _read_apps_catalog_list():
# by returning [] if list_ is None
return list_ if list_ else []
except Exception as e:
raise YunohostError(f"Could not read the apps_catalog list ... : {e}", raw_msg=True)
raise YunohostError(
f"Could not read the apps_catalog list ... : {e}", raw_msg=True
)
def _actual_apps_catalog_api_url(base_url):
@ -172,7 +176,10 @@ def _update_apps_catalog():
try:
write_to_json(cache_file, apps_catalog_content)
except Exception as e:
raise YunohostError(f"Unable to write cache data for {apps_catalog_id} apps_catalog : {e}", raw_msg=True)
raise YunohostError(
f"Unable to write cache data for {apps_catalog_id} apps_catalog : {e}",
raw_msg=True,
)
logger.success(m18n.n("apps_catalog_update_success"))
@ -220,7 +227,9 @@ def _load_apps_catalog():
# in which case we keep only the first one found)
if app in merged_catalog["apps"]:
other_catalog = merged_catalog["apps"][app]["repository"]
logger.warning(f"Duplicate app {app} found between apps catalog {apps_catalog_id} and {other_catalog}")
logger.warning(
f"Duplicate app {app} found between apps catalog {apps_catalog_id} and {other_catalog}"
)
continue
info["repository"] = apps_catalog_id

View file

@ -866,7 +866,7 @@ class RestoreManager:
from_version = self.info.get("from_yunohost_version", "")
# Remove any '~foobar' in the version ... c.f ~alpha, ~beta version during
# early dev for next debian version
from_version = re.sub(r'~\w+', '', from_version)
from_version = re.sub(r"~\w+", "", from_version)
if not from_version or version.parse(from_version) < version.parse("4.2.0"):
raise YunohostValidationError("restore_backup_too_old")
@ -2403,10 +2403,9 @@ def backup_list(with_info=False, human_readable=False):
logger.warning(str(e))
except Exception:
import traceback
trace_ = "\n" + traceback.format_exc()
logger.warning(
f"Could not check infos for archive {archive}: {trace_}"
)
logger.warning(f"Could not check infos for archive {archive}: {trace_}")
archives = d

View file

@ -415,9 +415,7 @@ def certificate_renew(
traceback.print_exc(file=stack)
msg = f"Certificate renewing for {domain} failed!"
if no_checks:
msg += (
f"\nPlease consider checking the 'DNS records' (basic) and 'Web' categories of the diagnosis to check for possible issues that may prevent installing a Let's Encrypt certificate on domain {domain}."
)
msg += f"\nPlease consider checking the 'DNS records' (basic) and 'Web' categories of the diagnosis to check for possible issues that may prevent installing a Let's Encrypt certificate on domain {domain}."
logger.error(msg)
operation_logger.error(msg)
logger.error(stack.getvalue())
@ -788,7 +786,10 @@ def _enable_certificate(domain, new_cert_folder):
for service in ("postfix", "dovecot", "metronome"):
# Ugly trick to not restart metronome if it's not installed
if service == "metronome" and os.system("dpkg --list | grep -q 'ii *metronome'") != 0:
if (
service == "metronome"
and os.system("dpkg --list | grep -q 'ii *metronome'") != 0
):
continue
_run_service_command("restart", service)

View file

@ -155,9 +155,7 @@ class MyDiagnoser(Diagnoser):
return None
# We use the resolver file as a list of well-known, trustable (ie not google ;)) IPs that we can ping
resolver_file = (
"/usr/share/yunohost/conf/dnsmasq/plain/resolv.dnsmasq.conf"
)
resolver_file = "/usr/share/yunohost/conf/dnsmasq/plain/resolv.dnsmasq.conf"
resolvers = [
r.split(" ")[1]
for r in read_file(resolver_file).split("\n")

View file

@ -419,10 +419,7 @@ class Diagnoser:
def diagnose(self, force=False):
if (
not force
and self.cached_time_ago() < self.cache_duration
):
if not force and self.cached_time_ago() < self.cache_duration:
logger.debug(f"Cache still valid : {self.cache_file}")
logger.info(
m18n.n("diagnosis_cache_still_valid", category=self.description)
@ -659,7 +656,9 @@ class Diagnoser:
def _list_diagnosis_categories():
paths = glob.glob(os.path.dirname(__file__) + "/diagnosers/??-*.py")
names = sorted([os.path.basename(path)[: -len(".py")].split("-")[-1] for path in paths])
names = sorted(
[os.path.basename(path)[: -len(".py")].split("-")[-1] for path in paths]
)
return names
@ -671,7 +670,10 @@ def _load_diagnoser(diagnoser_name):
paths = glob.glob(os.path.dirname(__file__) + f"/diagnosers/??-{diagnoser_name}.py")
if len(paths) != 1:
raise YunohostError(f"Uhoh, found several matches (or none?) for diagnoser {diagnoser_name} : {paths}", raw_msg=True)
raise YunohostError(
f"Uhoh, found several matches (or none?) for diagnoser {diagnoser_name} : {paths}",
raw_msg=True,
)
module_id = os.path.basename(paths[0][: -len(".py")])
@ -686,7 +688,9 @@ def _load_diagnoser(diagnoser_name):
traceback.print_exc()
raise YunohostError(f"Failed to load diagnoser {diagnoser_name} : {e}", raw_msg=True)
raise YunohostError(
f"Failed to load diagnoser {diagnoser_name} : {e}", raw_msg=True
)
def _email_diagnosis_issues():

View file

@ -68,9 +68,7 @@ def domain_list(exclude_subdomains=False):
ldap = _get_ldap_interface()
result = [
entry["virtualdomain"][0]
for entry in ldap.search(
"ou=domains", "virtualdomain=*", ["virtualdomain"]
)
for entry in ldap.search("ou=domains", "virtualdomain=*", ["virtualdomain"])
]
result_list = []

View file

@ -190,7 +190,6 @@ def dyndns_update(
import dns.tsigkeyring
import dns.update
# If domain is not given, try to guess it from keys available...
key = None
if domain is None:
@ -227,7 +226,7 @@ def dyndns_update(
with open(key) as f:
key = f.readline().strip().split(" ", 6)[-1]
keyring = dns.tsigkeyring.from_text({f'{domain}.': key})
keyring = dns.tsigkeyring.from_text({f"{domain}.": key})
# Python's dns.update is similar to the old nsupdate cli tool
update = dns.update.Update(zone, keyring=keyring, keyalgorithm=dns.tsig.HMAC_SHA512)
@ -300,7 +299,9 @@ def dyndns_update(
# [{"name": "...", "ttl": "...", "type": "...", "value": "..."}]
for records in dns_conf.values():
for record in records:
name = f"{record['name']}.{domain}." if record['name'] != "@" else f"{domain}."
name = (
f"{record['name']}.{domain}." if record["name"] != "@" else f"{domain}."
)
update.delete(name)
# Add the new records for all domain/subdomains
@ -313,9 +314,11 @@ def dyndns_update(
if record["value"] == "@":
record["value"] = domain
record["value"] = record["value"].replace(";", r"\;")
name = f"{record['name']}.{domain}." if record['name'] != "@" else f"{domain}."
name = (
f"{record['name']}.{domain}." if record["name"] != "@" else f"{domain}."
)
update.add(name, record['ttl'], record['type'], record['value'])
update.add(name, record["ttl"], record["type"], record["value"])
logger.debug("Now pushing new conf to DynDNS host...")
logger.debug(update)
@ -347,9 +350,7 @@ def _guess_current_dyndns_domain():
dynette...)
"""
DYNDNS_KEY_REGEX = re.compile(
r".*/K(?P<domain>[^\s\+]+)\.\+165.+\.key$"
)
DYNDNS_KEY_REGEX = re.compile(r".*/K(?P<domain>[^\s\+]+)\.\+165.+\.key$")
# Retrieve the first registered domain
paths = list(glob.iglob("/etc/yunohost/dyndns/K*.key"))

View file

@ -406,9 +406,7 @@ def permission_create(
permission = permission + ".main"
# Validate uniqueness of permission in LDAP
if ldap.get_conflict(
{"cn": permission}, base_dn="ou=permission"
):
if ldap.get_conflict({"cn": permission}, base_dn="ou=permission"):
raise YunohostValidationError("permission_already_exist", permission=permission)
# Get random GID
@ -678,8 +676,7 @@ def permission_sync_to_user():
new_inherited_perms = {
"inheritPermission": [
f"uid={u},ou=users,dc=yunohost,dc=org"
for u in should_be_allowed_users
f"uid={u},ou=users,dc=yunohost,dc=org" for u in should_be_allowed_users
],
"memberUid": should_be_allowed_users,
}

View file

@ -505,9 +505,7 @@ def _calculate_hash(path):
return hasher.hexdigest()
except IOError as e:
logger.warning(
f"Error while calculating file '{path}' hash: {e}", exc_info=1
)
logger.warning(f"Error while calculating file '{path}' hash: {e}", exc_info=1)
return None

View file

@ -695,19 +695,25 @@ def _get_services():
if "log" not in services["ynh-vpnclient"]:
services["ynh-vpnclient"]["log"] = ["/var/log/ynh-vpnclient.log"]
services_with_package_condition = [name for name, infos in services.items() if infos.get("ignore_if_package_is_not_installed")]
services_with_package_condition = [
name
for name, infos in services.items()
if infos.get("ignore_if_package_is_not_installed")
]
for name in services_with_package_condition:
package = services[name]["ignore_if_package_is_not_installed"]
if os.system(f"dpkg --list | grep -q 'ii *{package}'") != 0:
del services[name]
php_fpm_versions = check_output(r"dpkg --list | grep -P 'ii php\d.\d-fpm' | awk '{print $2}' | grep -o -P '\d.\d' || true")
php_fpm_versions = [v for v in php_fpm_versions.split('\n') if v.strip()]
php_fpm_versions = check_output(
r"dpkg --list | grep -P 'ii php\d.\d-fpm' | awk '{print $2}' | grep -o -P '\d.\d' || true"
)
php_fpm_versions = [v for v in php_fpm_versions.split("\n") if v.strip()]
for version in php_fpm_versions:
services[f"php{version}-fpm"] = {
"log": f"/var/log/php{version}-fpm.log",
"test_conf": f"php-fpm{version} --test", # ofc the service is phpx.y-fpm but the program is php-fpmx.y because why not ...
"category": "web"
"category": "web",
}
# Remove legacy /var/log/daemon.log and /var/log/syslog from log entries
@ -833,7 +839,6 @@ def _get_journalctl_logs(service, number="all"):
)
except Exception:
import traceback
trace_ = traceback.format_exc()
return (
f"error while get services logs from journalctl:\n{trace_}"
)
return f"error while get services logs from journalctl:\n{trace_}"

View file

@ -341,9 +341,7 @@ def _get_settings():
_save_settings(unknown_settings, location=unknown_settings_path)
_save_settings(settings)
except Exception as e:
logger.warning(
f"Failed to save unknown settings (because {e}), aborting."
)
logger.warning(f"Failed to save unknown settings (because {e}), aborting.")
return settings
@ -373,12 +371,12 @@ post_change_hooks = {}
def post_change_hook(setting_name):
def decorator(func):
assert setting_name in DEFAULTS.keys(), (
f"The setting {setting_name} does not exists"
)
assert setting_name not in post_change_hooks, (
f"You can only register one post change hook per setting (in particular for {setting_name})"
)
assert (
setting_name in DEFAULTS.keys()
), f"The setting {setting_name} does not exists"
assert (
setting_name not in post_change_hooks
), f"You can only register one post change hook per setting (in particular for {setting_name})"
post_change_hooks[setting_name] = func
return func

View file

@ -536,9 +536,7 @@ def tools_upgrade(operation_logger, target=None):
# Restart the API after 10 sec (at now doesn't support sub-minute times...)
# We do this so that the API / webadmin still gets the proper HTTP response
# It's then up to the webadmin to implement a proper UX process to wait 10 sec and then auto-fresh the webadmin
cmd = (
"at -M now >/dev/null 2>&1 <<< \"sleep 10; systemctl restart yunohost-api\""
)
cmd = 'at -M now >/dev/null 2>&1 <<< "sleep 10; systemctl restart yunohost-api"'
# For some reason subprocess doesn't like the redirections so we have to use bash -c explicity...
subprocess.check_call(["bash", "-c", cmd])
@ -894,9 +892,9 @@ def _get_migration_by_name(migration_name):
if re.match(r"^\d+_%s\.py$" % migration_name, x)
]
assert len(migrations_found) == 1, (
f"Unable to find migration with name {migration_name}"
)
assert (
len(migrations_found) == 1
), f"Unable to find migration with name {migration_name}"
return _load_migration(migrations_found[0])

View file

@ -254,9 +254,7 @@ def user_create(
logger.warning(m18n.n("user_home_creation_failed", home=home), exc_info=1)
try:
subprocess.check_call(
["setfacl", "-m", "g:all_users:---", f"/home/{username}"]
)
subprocess.check_call(["setfacl", "-m", "g:all_users:---", f"/home/{username}"])
except subprocess.CalledProcessError:
logger.warning(f"Failed to protect /home/{username}", exc_info=1)
@ -986,9 +984,7 @@ def user_group_create(
ldap = _get_ldap_interface()
# Validate uniqueness of groupname in LDAP
conflict = ldap.get_conflict(
{"cn": groupname}, base_dn="ou=groups"
)
conflict = ldap.get_conflict({"cn": groupname}, base_dn="ou=groups")
if conflict:
raise YunohostValidationError("group_already_exist", group=groupname)

View file

@ -65,4 +65,3 @@ class YunohostValidationError(YunohostError):
class YunohostAuthenticationError(MoulinetteAuthenticationError):
pass

View file

@ -116,10 +116,7 @@ def _patch_legacy_php_versions(app_folder):
c = (
"sed -i "
+ "".join(
f"-e 's@{p}@{r}@g' "
for p, r in LEGACY_PHP_VERSION_REPLACEMENTS
)
+ "".join(f"-e 's@{p}@{r}@g' " for p, r in LEGACY_PHP_VERSION_REPLACEMENTS)
+ "%s" % filename
)
os.system(c)
@ -137,7 +134,11 @@ def _patch_legacy_php_versions_in_settings(app_folder):
settings["phpversion"] = "7.4"
# We delete these checksums otherwise the file will appear as manually modified
list_to_remove = ["checksum__etc_php_7.3_fpm_pool", "checksum__etc_php_7.0_fpm_pool", "checksum__etc_nginx_conf.d"]
list_to_remove = [
"checksum__etc_php_7.3_fpm_pool",
"checksum__etc_php_7.0_fpm_pool",
"checksum__etc_nginx_conf.d",
]
settings = {
k: v
for k, v in settings.items()
@ -168,9 +169,15 @@ def _patch_legacy_helpers(app_folder):
"important": False,
},
# Old $1, $2 in backup/restore scripts...
"app=$2": {"only_for": ["scripts/backup", "scripts/restore"], "important": True},
"app=$2": {
"only_for": ["scripts/backup", "scripts/restore"],
"important": True,
},
# Old $1, $2 in backup/restore scripts...
"backup_dir=$1": {"only_for": ["scripts/backup", "scripts/restore"], "important": True},
"backup_dir=$1": {
"only_for": ["scripts/backup", "scripts/restore"],
"important": True,
},
# Old $1, $2 in backup/restore scripts...
"restore_dir=$1": {"only_for": ["scripts/restore"], "important": True},
# Old $1, $2 in install scripts...