Coverage for app/venv/lib/python3.14/site-packages/weblate/trans/management/commands/list_versions.py: 0%
27 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
1# Copyright © Michal Čihař <michal@weblate.org>
2#
3# SPDX-License-Identifier: GPL-3.0-or-later
5import platform
6import sys
8from django import db
9from django.conf import settings
11from weblate.utils.db import using_postgresql
12from weblate.utils.management.base import BaseCommand
13from weblate.utils.requirements import get_versions_list
16class Command(BaseCommand):
17 help = "lists versions of required software components"
19 def write_item(self, prefix, value) -> None:
20 self.stdout.write(f" * {prefix}: {value}")
22 def handle(self, *args, **options) -> None:
23 """Print versions of dependencies."""
24 for version in get_versions_list():
25 self.write_item(version[0], version[2])
26 self.write_item(
27 "Database backends",
28 ", ".join(conn["ENGINE"] for conn in db.connections.databases.values()),
29 )
30 if using_postgresql():
31 from django.db.backends.postgresql.psycopg_any import is_psycopg3
33 if is_psycopg3:
34 from psycopg.pq import __impl__
36 pg_engine = f"psycopg3 ({__impl__})"
37 else:
38 pg_engine = "psycopg2"
39 self.write_item("PostgreSQL implementation", pg_engine)
41 self.write_item(
42 "Cache backends",
43 ", ".join(
44 "{}:{}".format(key, value["BACKEND"].split(".")[-1])
45 for key, value in settings.CACHES.items()
46 ),
47 )
48 self.write_item(
49 "Email setup", f"{settings.EMAIL_BACKEND}: {settings.EMAIL_HOST}"
50 )
51 self.write_item(
52 "OS encoding",
53 f"filesystem={sys.getfilesystemencoding()}, default={sys.getdefaultencoding()}",
54 )
55 self.write_item(
56 "Celery",
57 "{}, {}, {}".format(
58 getattr(settings, "CELERY_BROKER_URL", "N/A"),
59 getattr(settings, "CELERY_RESULT_BACKEND", "N/A"),
60 "eager" if settings.CELERY_TASK_ALWAYS_EAGER else "regular",
61 ),
62 )
63 self.write_item(
64 "Platform",
65 f"{platform.system()} {platform.release()} ({platform.machine()})",
66 )