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

1# Copyright © Michal Čihař <michal@weblate.org> 

2# 

3# SPDX-License-Identifier: GPL-3.0-or-later 

4 

5import platform 

6import sys 

7 

8from django import db 

9from django.conf import settings 

10 

11from weblate.utils.db import using_postgresql 

12from weblate.utils.management.base import BaseCommand 

13from weblate.utils.requirements import get_versions_list 

14 

15 

16class Command(BaseCommand): 

17 help = "lists versions of required software components" 

18 

19 def write_item(self, prefix, value) -> None: 

20 self.stdout.write(f" * {prefix}: {value}") 

21 

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 

32 

33 if is_psycopg3: 

34 from psycopg.pq import __impl__ 

35 

36 pg_engine = f"psycopg3 ({__impl__})" 

37 else: 

38 pg_engine = "psycopg2" 

39 self.write_item("PostgreSQL implementation", pg_engine) 

40 

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 )